From 561be7c734e83cfdb68963f0ae0f28068ee5fd52 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?=
<3161880837@qq.com>
Date: Fri, 6 Mar 2026 23:19:22 +0800
Subject: [PATCH 001/100] =?UTF-8?q?feat(=E6=AD=A6=E5=99=A8):=20=E5=AE=9E?=
=?UTF-8?q?=E7=8E=B0=E9=85=B8=E8=9A=80=E9=A3=8E=E6=9A=B4=E6=AD=A6=E5=99=A8?=
=?UTF-8?q?=E5=8F=8A=E5=85=B6=E7=9B=B8=E5=85=B3=E5=AD=90=E5=BC=B9=E6=95=88?=
=?UTF-8?q?=E6=9E=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加酸蚀风暴武器,它会发射一个吸引五种不同类型酸液子弹的风暴中心
修改酸液子弹基类以支持风暴效果
调整酸风武器的属性值和描述
移除旧版随机发射酸液子弹的逻辑
---
components/Bullets/AcidBulletBase.tscn | 5 +-
components/Bullets/AcidC.tscn | 1 -
components/Bullets/AcidStorm.tscn | 125 +++++++++++++++++++++
components/Characters/Rooster.tscn | 6 +-
components/Weapons/AcidWind.tscn | 36 +++---
scripts/Contents/Bullets/AcidBulletBase.gd | 16 ++-
scripts/Contents/Bullets/AcidC.gd | 10 +-
scripts/Contents/Bullets/AcidN.gd | 2 +-
scripts/Contents/Bullets/AcidP.gd | 4 -
scripts/Contents/Bullets/AcidStorm.gd | 45 ++++++++
scripts/Contents/Bullets/AcidStorm.gd.uid | 1 +
scripts/Contents/Weapons/AcidWind.gd | 62 +++++-----
12 files changed, 241 insertions(+), 72 deletions(-)
create mode 100644 components/Bullets/AcidStorm.tscn
create mode 100644 scripts/Contents/Bullets/AcidStorm.gd
create mode 100644 scripts/Contents/Bullets/AcidStorm.gd.uid
diff --git a/components/Bullets/AcidBulletBase.tscn b/components/Bullets/AcidBulletBase.tscn
index 2ac7d10..08b5215 100644
--- a/components/Bullets/AcidBulletBase.tscn
+++ b/components/Bullets/AcidBulletBase.tscn
@@ -19,10 +19,7 @@ animations = [{
script = ExtResource("2_y4hkm")
acidType = 0
displayName = "酸液"
-lifeTime = 2000.0
+lifeTime = 1000.0
[node name="texture" parent="." index="0"]
sprite_frames = SubResource("SpriteFrames_3gf7s")
-
-[node name="hitbox" parent="." index="1"]
-visible = false
diff --git a/components/Bullets/AcidC.tscn b/components/Bullets/AcidC.tscn
index 2035409..e60c451 100644
--- a/components/Bullets/AcidC.tscn
+++ b/components/Bullets/AcidC.tscn
@@ -7,7 +7,6 @@
script = ExtResource("2_nxpf5")
speed = 5.0
penerate = 1.0
-lifeTime = 4000.0
canDoDuplicate = false
[node name="texture" parent="." index="0"]
diff --git a/components/Bullets/AcidStorm.tscn b/components/Bullets/AcidStorm.tscn
new file mode 100644
index 0000000..c3eab9f
--- /dev/null
+++ b/components/Bullets/AcidStorm.tscn
@@ -0,0 +1,125 @@
+[gd_scene load_steps=9 format=3 uid="uid://clr5pbkifgear"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_qpsi6"]
+[ext_resource type="Script" uid="uid://dl7d0v7f2uute" path="res://scripts/Contents/Bullets/AcidStorm.gd" id="2_daxsl"]
+[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_ivaud"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_daxsl"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("2_ivaud")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="Animation" id="Animation_hfcmp"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:rotation")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.2, 0.2)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_daxsl"]
+resource_name = "spawn"
+length = 5.0
+step = 0.1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.2, 0.2), Vector2(1, 1)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:modulate")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:rotation")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 12.566370614359172]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_5atmc"]
+_data = {
+&"RESET": SubResource("Animation_hfcmp"),
+&"spawn": SubResource("Animation_daxsl")
+}
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_daxsl"]
+radius = 59.008472
+
+[node name="AcidStorm" instance=ExtResource("1_qpsi6")]
+script = ExtResource("2_daxsl")
+speed = 2.5
+penerate = 1.0
+autoSpawnAnimation = true
+freeAfterSpawn = true
+
+[node name="texture" parent="." index="0"]
+scale = Vector2(0.2, 0.2)
+sprite_frames = SubResource("SpriteFrames_daxsl")
+
+[node name="animator" parent="texture" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_5atmc")
+}
+
+[node name="hitbox" parent="." index="1"]
+shape = SubResource("CircleShape2D_daxsl")
+disabled = true
diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn
index f6ff70e..43f72d9 100644
--- a/components/Characters/Rooster.tscn
+++ b/components/Characters/Rooster.tscn
@@ -2,7 +2,7 @@
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"]
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
-[ext_resource type="PackedScene" uid="uid://dqywctcj4y2xi" path="res://components/Weapons/Cogwheel.tscn" id="3_da2ca"]
+[ext_resource type="PackedScene" uid="uid://yq7vmijwvgx1" path="res://components/Weapons/AcidWind.tscn" id="3_0omr3"]
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="4_0omr3"]
[ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"]
[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"]
@@ -112,9 +112,11 @@ process_material = SubResource("ParticleProcessMaterial_joj4g")
[node name="weaponStore" parent="." index="2"]
process_mode = 4
-[node name="Cogwheel" parent="weaponStore" index="0" instance=ExtResource("3_da2ca")]
+[node name="AcidWind" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")]
+offset_bottom = 566.0
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("4_0omr3")]
+debugRebuild = false
[node name="sprint" parent="sounds" index="0"]
stream = ExtResource("4_66s6c")
diff --git a/components/Weapons/AcidWind.tscn b/components/Weapons/AcidWind.tscn
index eaaba1a..620e13a 100644
--- a/components/Weapons/AcidWind.tscn
+++ b/components/Weapons/AcidWind.tscn
@@ -12,37 +12,43 @@ quality = 4
typeTopic = 3
costBeachball = 200
store = {
-"atk": 0.5,
-"c-atk": 1.0,
+"atk": 1.0,
+"c-atk": 0.01,
"cl-atkspeed": 0.001,
"cl-speed": 0.001,
-"n-atk": 1.0,
+"f": 30.0,
+"n-atk": 5.0,
"p-offset": 0.1,
"s-count-max": 4.0,
-"weakatk": 0.25
+"weakatk": 0.5
}
storeType = {
"atk": 0,
-"c-atk": 1,
+"c-atk": 2,
"cl-atkspeed": 2,
"cl-speed": 2,
-"n-atk": 1,
+"f": 4,
+"n-atk": 2,
"p-offset": 3,
"s-count-max": 1,
"weakatk": 0
}
-descriptionTemplate = "高速随机喷射以下五种[b]酸[/b]之一,强酸可造成$atk点伤害,弱酸造成$weakatk点伤害。
+descriptionTemplate = "发射一个[b]酸蚀风暴[/b],以$f的频率吸引一下五种[b]酸[/b]到风暴中心,强酸可造成$atk点伤害,弱酸造成$weakatk点伤害。
[color=green][b]硫酸[/b][/color]:命中时溅射1~$s-count-max滴[b]硫酸[/b]。
-[color=lightblue][b]硝酸[/b][/color]:额外造成$n-atk点伤害。
+[color=lightblue][b]硝酸[/b][/color]:额外造成$n-atk伤害。
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低$cl-speed,[i]攻击速度[/i] 降低$cl-atkspeed。
-[color=pink][b]碳酸[/b][/color]:不会发生散射,可无限穿透,碰撞体积会越来越大,但飞行速度稍慢。
-[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset,可无限追踪。"
-cooldown = 0.0
+[color=pink][b]碳酸[/b][/color]:降低敌人$c-atk伤害。
+[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加$p-offset。"
+needEnergy = 10.0
+cooldown = 2000.0
debugRebuild = true
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_pnd3r")
+[node name="energy" parent="container/info/infos/energyInfo" index="1"]
+text = "10.0"
+
[node name="beachball" parent="container/info/infos" index="1"]
count = 200
@@ -52,9 +58,9 @@ quality = 4
typeTopic = 3
[node name="description" parent="container" index="2"]
-text = "[center]高速随机喷射以下五种[b]酸[/b]之一,强酸可造成[color=cyan]0.50[/color]点伤害,弱酸造成[color=cyan]0.25[/color]点伤害。
+text = "[center]发射一个[b]酸蚀风暴[/b],以[color=cyan]30.0Hz[/color]的频率吸引一下五种[b]酸[/b]到风暴中心,强酸可造成[color=cyan]1.00[/color]点伤害,弱酸造成[color=cyan]0.50[/color]点伤害。
[color=green][b]硫酸[/b][/color]:命中时溅射1~[color=cyan]4[/color]滴[b]硫酸[/b]。
-[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]1[/color]点伤害。
+[color=lightblue][b]硝酸[/b][/color]:额外造成[color=cyan]500.0%[/color]伤害。
[color=lightyellow][b]盐酸[/b][/color]:使敌人 [i]移动速度[/i] 降低[color=cyan]0.1%[/color],[i]攻击速度[/i] 降低[color=cyan]0.1%[/color]。
-[color=pink][b]碳酸[/b][/color]:不会发生散射,可无限穿透,碰撞体积会越来越大,但飞行速度稍慢。
-[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加[color=cyan]0.1°[/color],可无限追踪。[/center]"
+[color=pink][b]碳酸[/b][/color]:降低敌人[color=cyan]1.0%[/color]伤害。
+[color=orange][b]磷酸[/b][/color]:使敌人 [i]散射角[/i] 增加[color=cyan]0.1°[/color]。[/center]"
diff --git a/scripts/Contents/Bullets/AcidBulletBase.gd b/scripts/Contents/Bullets/AcidBulletBase.gd
index b9dd8f2..10a0b8b 100644
--- a/scripts/Contents/Bullets/AcidBulletBase.gd
+++ b/scripts/Contents/Bullets/AcidBulletBase.gd
@@ -2,8 +2,8 @@ extends BulletBase
class_name AcidBulletBase
enum AcidType {
- STRONG,
- WEAK,
+ STRONG,
+ WEAK,
}
@export var acidType: AcidType = AcidType.STRONG
@@ -11,7 +11,15 @@ var arg1 = 0
var arg2 = 0
var arg3 = 0
+var randomPercent: float = 0
+var storm: AcidStormBullet = null
+
func register():
- scale.y *= MathTool.randomChoiceFrom([-1, 1])
+ scale.y *= MathTool.randomChoiceFrom([-1, 1])
+ randomPercent = randf_range(0, 1)
func ai():
- PresetBulletAI.forward(self, rotation)
+ if is_instance_valid(storm):
+ position = storm.position + Vector2.from_angle(deg_to_rad((lifeTimePercent() + randomPercent) * 360)) * 150 * (1 - lifeTimePercent())
+ rotation = storm.position.angle_to_point(position) + deg_to_rad(90)
+ else:
+ tryDestroy()
diff --git a/scripts/Contents/Bullets/AcidC.gd b/scripts/Contents/Bullets/AcidC.gd
index 14de7d6..06edfce 100644
--- a/scripts/Contents/Bullets/AcidC.gd
+++ b/scripts/Contents/Bullets/AcidC.gd
@@ -1,10 +1,8 @@
extends AcidBulletBase
class_name AcidC
-func ai():
- super.ai()
- scale *= 1.01
- modulate.a = 1 - timeLived() / lifeTime
+func succeedToHit(_dmg: float, entity: EntityBase):
+ entity.fields[FieldStore.Entity.DAMAGE_MULTIPILER] = clamp(entity.fields[FieldStore.Entity.DAMAGE_MULTIPILER] - arg1, 0.2, INF)
func split(newBullet: BulletBase, _index: int, _total: int, _lastBullet: float):
- newBullet.scale = scale.sign()
- return newBullet
+ newBullet.scale = scale.sign()
+ return newBullet
diff --git a/scripts/Contents/Bullets/AcidN.gd b/scripts/Contents/Bullets/AcidN.gd
index 80ccb25..9f7ff27 100644
--- a/scripts/Contents/Bullets/AcidN.gd
+++ b/scripts/Contents/Bullets/AcidN.gd
@@ -2,4 +2,4 @@ extends AcidBulletBase
class_name AcidN
func succeedToHit(_dmg: float, entity: EntityBase):
- entity.takeDamage(arg1)
+ entity.takeDamage(baseDamage * arg1)
diff --git a/scripts/Contents/Bullets/AcidP.gd b/scripts/Contents/Bullets/AcidP.gd
index 398c0bc..49e73c2 100644
--- a/scripts/Contents/Bullets/AcidP.gd
+++ b/scripts/Contents/Bullets/AcidP.gd
@@ -3,7 +3,3 @@ class_name AcidP
func succeedToHit(_dmg: float, entity: EntityBase):
entity.fields[FieldStore.Entity.OFFSET_SHOOT] = clamp(entity.fields[FieldStore.Entity.OFFSET_SHOOT] + arg1, 0, INF)
-func ai():
- super.ai()
- if is_instance_valid(arg2):
- PresetBulletAI.trace(self, arg2.position, 0.01)
diff --git a/scripts/Contents/Bullets/AcidStorm.gd b/scripts/Contents/Bullets/AcidStorm.gd
new file mode 100644
index 0000000..b4efce1
--- /dev/null
+++ b/scripts/Contents/Bullets/AcidStorm.gd
@@ -0,0 +1,45 @@
+extends BulletBase
+class_name AcidStormBullet
+
+var acids: Array[String] = ["AcidS", "AcidN", "AcidCl", "AcidP", "AcidC"]
+
+var strongAtk: float = 0
+var weakAtk: float = 0
+var sCountMax: int = 0
+var nAtk: float = 0
+var clSpeed: float = 0
+var clAtkSpeed: float = 0
+var cAtk: float = 0
+var pOffset: float = 0
+var f: float = 0
+
+func ai():
+ PresetBulletAI.forward(self , rotation)
+func applyDot():
+ var acid = MathTool.randomChoiceFrom(acids)
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet(acid),
+ launcher,
+ position,
+ 0,
+ ):
+ if bullet is AcidBulletBase:
+ bullet.storm = self
+ if bullet.acidType == AcidBulletBase.AcidType.STRONG:
+ bullet.baseDamage = strongAtk
+ else:
+ bullet.baseDamage = weakAtk
+ if bullet is AcidS:
+ bullet.arg1 = sCountMax
+ if bullet is AcidN:
+ bullet.arg1 = nAtk
+ if bullet is AcidCl:
+ bullet.arg1 = clSpeed
+ bullet.arg2 = clAtkSpeed
+ if bullet is AcidP:
+ bullet.arg1 = pOffset
+ bullet.arg2 = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !launcher.isPlayer(), launcher.isPlayer())
+ if bullet is AcidC:
+ bullet.arg1 = cAtk
+ await TickTool.millseconds(1000.0 / f)
+ return true
diff --git a/scripts/Contents/Bullets/AcidStorm.gd.uid b/scripts/Contents/Bullets/AcidStorm.gd.uid
new file mode 100644
index 0000000..c131493
--- /dev/null
+++ b/scripts/Contents/Bullets/AcidStorm.gd.uid
@@ -0,0 +1 @@
+uid://dl7d0v7f2uute
diff --git a/scripts/Contents/Weapons/AcidWind.gd b/scripts/Contents/Weapons/AcidWind.gd
index 509529d..899fbcb 100644
--- a/scripts/Contents/Weapons/AcidWind.gd
+++ b/scripts/Contents/Weapons/AcidWind.gd
@@ -4,39 +4,31 @@ extends Weapon
var acids: Array[String] = ["AcidS", "AcidN", "AcidCl", "AcidP", "AcidC"]
func update(to: int, origin: Dictionary, _entity: EntityBase):
- origin["atk"] += 0.075 * to * soulLevel
- origin["c-atk"] *= soulLevel
- origin["cl-atkspeed"] *= soulLevel
- origin["cl-speed"] *= soulLevel
- origin["n-atk"] *= soulLevel
- origin["p-offset"] *= soulLevel
- origin["s-count-max"] *= soulLevel
- origin["weakatk"] = 0.05 * soulLevel
- return origin
+ origin["atk"] += 0.15 * to * soulLevel
+ origin["c-atk"] *= soulLevel
+ origin["cl-atkspeed"] *= soulLevel
+ origin["cl-speed"] *= soulLevel
+ origin["n-atk"] *= soulLevel
+ origin["p-offset"] *= soulLevel
+ origin["s-count-max"] *= soulLevel
+ origin["weakatk"] += 0.075 * to * soulLevel
+ origin["f"] += 25 * (soulLevel - 1)
+ return origin
func attack(entity: EntityBase):
- var acid = MathTool.randomChoiceFrom(acids)
- for bullet in BulletBase.generate(
- ComponentManager.getBullet(acid),
- entity,
- entity.findWeaponAnchor("normal"),
- (get_global_mouse_position() - entity.findWeaponAnchor("normal")).angle(),
- true,
- acid == "AcidC"
- ):
- if bullet is AcidBulletBase:
- if bullet.acidType == AcidBulletBase.AcidType.STRONG:
- bullet.baseDamage = readStore("atk")
- else:
- bullet.baseDamage = readStore("weakatk")
- if bullet is AcidS:
- bullet.arg1 = readStore("s-count-max")
- if bullet is AcidN:
- bullet.arg1 = readStore("n-atk")
- if bullet is AcidCl:
- bullet.arg1 = readStore("cl-speed")
- bullet.arg2 = readStore("cl-atkspeed")
- if bullet is AcidP:
- bullet.arg1 = readStore("p-offset")
- bullet.arg2 = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
- if bullet is AcidC:
- pass
+ for bullet in BulletBase.generate(
+ ComponentManager.getBullet("AcidStorm"),
+ entity,
+ entity.findWeaponAnchor("normal"),
+ (get_global_mouse_position() - entity.findWeaponAnchor("normal")).angle(),
+ ):
+ if bullet is AcidStormBullet:
+ bullet.strongAtk = readStore("atk")
+ bullet.weakAtk = readStore("weakatk")
+ bullet.sCountMax = readStore("s-count-max")
+ bullet.nAtk = readStore("n-atk")
+ bullet.clSpeed = readStore("cl-speed")
+ bullet.clAtkSpeed = readStore("cl-atkspeed")
+ bullet.cAtk = readStore("c-atk")
+ bullet.pOffset = readStore("p-offset")
+ bullet.f = readStore("f")
+ return true
From d5a05f8ac94784ba8cf12684f624574eb3b5b43a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?=
<3161880837@qq.com>
Date: Sat, 7 Mar 2026 07:27:57 +0800
Subject: [PATCH 002/100] =?UTF-8?q?fix(Weapons/AcidWind):=20=E8=B0=83?=
=?UTF-8?q?=E6=95=B4=E7=81=B5=E9=AD=82=E7=AD=89=E7=BA=A7=E5=AF=B9f?=
=?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=9A=84=E5=BD=B1=E5=93=8D=E7=B3=BB=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
将f属性受灵魂等级影响的系数从25降低到15,以平衡武器性能
---
scripts/Contents/Weapons/AcidWind.gd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/Contents/Weapons/AcidWind.gd b/scripts/Contents/Weapons/AcidWind.gd
index 899fbcb..79c0a19 100644
--- a/scripts/Contents/Weapons/AcidWind.gd
+++ b/scripts/Contents/Weapons/AcidWind.gd
@@ -12,7 +12,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["p-offset"] *= soulLevel
origin["s-count-max"] *= soulLevel
origin["weakatk"] += 0.075 * to * soulLevel
- origin["f"] += 25 * (soulLevel - 1)
+ origin["f"] += 15 * (soulLevel - 1)
return origin
func attack(entity: EntityBase):
for bullet in BulletBase.generate(
From ca82cbed12df63a22e365bd1d348c894bd5776bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?=
<3161880837@qq.com>
Date: Sat, 7 Mar 2026 09:05:36 +0800
Subject: [PATCH 003/100] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=85=89?=
=?UTF-8?q?=E6=A0=87=E5=88=83=E8=BD=AE=E6=AD=A6=E5=99=A8=E5=8F=8A=E7=9B=B8?=
=?UTF-8?q?=E5=85=B3=E8=B5=84=E6=BA=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
添加光标刃轮武器系统,包括:
- 武器脚本和场景配置
- 子弹动画和特效
- 相关音效和贴图资源
- 武器升级逻辑
- 角色初始武器配置调整
---
components/Bullets/CursorKnife.tscn | 172 ++++++++++++++++++++
components/Characters/Rooster.tscn | 16 +-
components/Feeds/A-Applr.tscn | 25 +++
components/Weapons/CursorKnife.tscn | 40 +++++
resources/bullets/cursor/knife1.png | Bin 0 -> 35181 bytes
resources/bullets/cursor/knife1.png.import | 40 +++++
resources/bullets/cursor/knife2.png | Bin 0 -> 29667 bytes
resources/bullets/cursor/knife2.png.import | 40 +++++
resources/bullets/cursor/knife3.png | Bin 0 -> 26050 bytes
resources/bullets/cursor/knife3.png.import | 40 +++++
resources/bullets/cursor/knife4.png | Bin 0 -> 19973 bytes
resources/bullets/cursor/knife4.png.import | 40 +++++
resources/feeds/apple.png | Bin 0 -> 178987 bytes
resources/feeds/apple.png.import | 40 +++++
resources/sounds/effect/cursor.wav | Bin 0 -> 29164 bytes
resources/sounds/effect/cursor.wav.import | 24 +++
resources/weapons/CursorKnife.png | Bin 0 -> 180508 bytes
resources/weapons/CursorKnife.png.import | 40 +++++
scripts/Contents/Bullets/CursorKnife.gd | 5 +
scripts/Contents/Bullets/CursorKnife.gd.uid | 1 +
scripts/Contents/Weapons/CursorKnife.gd | 18 ++
scripts/Contents/Weapons/CursorKnife.gd.uid | 1 +
scripts/Statemachine/BulletBase.gd | 11 +-
scripts/Structs/Weapon.gd | 7 +-
24 files changed, 540 insertions(+), 20 deletions(-)
create mode 100644 components/Bullets/CursorKnife.tscn
create mode 100644 components/Feeds/A-Applr.tscn
create mode 100644 components/Weapons/CursorKnife.tscn
create mode 100644 resources/bullets/cursor/knife1.png
create mode 100644 resources/bullets/cursor/knife1.png.import
create mode 100644 resources/bullets/cursor/knife2.png
create mode 100644 resources/bullets/cursor/knife2.png.import
create mode 100644 resources/bullets/cursor/knife3.png
create mode 100644 resources/bullets/cursor/knife3.png.import
create mode 100644 resources/bullets/cursor/knife4.png
create mode 100644 resources/bullets/cursor/knife4.png.import
create mode 100644 resources/feeds/apple.png
create mode 100644 resources/feeds/apple.png.import
create mode 100644 resources/sounds/effect/cursor.wav
create mode 100644 resources/sounds/effect/cursor.wav.import
create mode 100644 resources/weapons/CursorKnife.png
create mode 100644 resources/weapons/CursorKnife.png.import
create mode 100644 scripts/Contents/Bullets/CursorKnife.gd
create mode 100644 scripts/Contents/Bullets/CursorKnife.gd.uid
create mode 100644 scripts/Contents/Weapons/CursorKnife.gd
create mode 100644 scripts/Contents/Weapons/CursorKnife.gd.uid
diff --git a/components/Bullets/CursorKnife.tscn b/components/Bullets/CursorKnife.tscn
new file mode 100644
index 0000000..03fd90e
--- /dev/null
+++ b/components/Bullets/CursorKnife.tscn
@@ -0,0 +1,172 @@
+[gd_scene load_steps=16 format=3 uid="uid://cxjsajua2a82n"]
+
+[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_epcdw"]
+[ext_resource type="Script" uid="uid://c337id4kvvj58" path="res://scripts/Contents/Bullets/CursorKnife.gd" id="2_glt8o"]
+[ext_resource type="Texture2D" uid="uid://geax1diwtp48" path="res://resources/bullets/cursor/knife1.png" id="5_aqt0q"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_vdv8l"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("5_aqt0q")
+}],
+"loop": false,
+"name": &"default",
+"speed": 10.0
+}]
+
+[sub_resource type="Animation" id="Animation_glt8o"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_ioc4f"]
+resource_name = "spawn"
+step = 0.1
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:scale:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".:scale:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath(".:modulate")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.7, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_t6dk8"]
+_data = {
+&"RESET": SubResource("Animation_glt8o"),
+&"spawn": SubResource("Animation_ioc4f")
+}
+
+[sub_resource type="Curve" id="Curve_r4tbf"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_3757w"]
+curve = SubResource("Curve_r4tbf")
+
+[sub_resource type="Gradient" id="Gradient_epcdw"]
+colors = PackedColorArray(0, 1, 0, 1, 1, 1, 1, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_ioc4f"]
+gradient = SubResource("Gradient_epcdw")
+
+[sub_resource type="Curve" id="Curve_glt8o"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.7), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_t6dk8"]
+curve = SubResource("Curve_glt8o")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_aqt0q"]
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(1, 80, 1)
+angle_min = 1.0728835e-05
+angle_max = 360.00003
+direction = Vector3(-1, 0, 0)
+spread = 15.0
+initial_velocity_min = 100.0
+initial_velocity_max = 400.0
+gravity = Vector3(0, 0, 0)
+scale_min = 5.0
+scale_max = 10.0
+scale_curve = SubResource("CurveTexture_t6dk8")
+color_initial_ramp = SubResource("GradientTexture1D_ioc4f")
+alpha_curve = SubResource("CurveTexture_3757w")
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_epcdw"]
+size = Vector2(126, 388)
+
+[node name="CursorKnife" instance=ExtResource("1_epcdw")]
+script = ExtResource("2_glt8o")
+speed = 5.0
+penerate = 1.0
+penerateDamageReduction = 0.25
+autoSpawnAnimation = true
+autoDestroyOnHitMap = false
+autoPlayTexture = true
+freeAfterSpawn = true
+knockback = 10.0
+
+[node name="texture" parent="." index="0"]
+position = Vector2(-33, 4)
+rotation = -0.6813664
+scale = Vector2(1e-05, 1e-05)
+sprite_frames = SubResource("SpriteFrames_vdv8l")
+frame_progress = 1.0
+
+[node name="animator" parent="texture" index="0"]
+libraries = {
+&"": SubResource("AnimationLibrary_t6dk8")
+}
+
+[node name="trail" type="GPUParticles2D" parent="texture" index="1"]
+z_index = -1
+position = Vector2(28.85057, 31.122555)
+rotation = 0.6806784
+amount = 100
+preprocess = 1.0
+process_material = SubResource("ParticleProcessMaterial_aqt0q")
+
+[node name="hitbox" parent="." index="1"]
+position = Vector2(45, 30)
+shape = SubResource("RectangleShape2D_epcdw")
diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn
index 43f72d9..33e4583 100644
--- a/components/Characters/Rooster.tscn
+++ b/components/Characters/Rooster.tscn
@@ -2,7 +2,7 @@
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"]
[ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"]
-[ext_resource type="PackedScene" uid="uid://yq7vmijwvgx1" path="res://components/Weapons/AcidWind.tscn" id="3_0omr3"]
+[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_0omr3"]
[ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="4_0omr3"]
[ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"]
[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"]
@@ -88,18 +88,8 @@ radius = 61.204575
[node name="Rooster" instance=ExtResource("1_e5pl8")]
script = ExtResource("2_oqdqd")
-defaultCooldownUnit = null
-isBoss = null
displayName = "公鸡"
-sprintMultiplier = null
-drops = null
-dropCounts = null
-appleCount = null
-level = null
-currentInvinsible = null
useStatic = true
-hurtAudioRate = null
-health = null
metadata/_edit_horizontal_guides_ = [-188.0]
metadata/_edit_vertical_guides_ = [71.0]
@@ -112,8 +102,8 @@ process_material = SubResource("ParticleProcessMaterial_joj4g")
[node name="weaponStore" parent="." index="2"]
process_mode = 4
-[node name="AcidWind" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")]
-offset_bottom = 566.0
+[node name="CursorKnife" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")]
+offset_bottom = 350.0
[node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("4_0omr3")]
debugRebuild = false
diff --git a/components/Feeds/A-Applr.tscn b/components/Feeds/A-Applr.tscn
new file mode 100644
index 0000000..f9dfaaf
--- /dev/null
+++ b/components/Feeds/A-Applr.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=5 format=3 uid="uid://uu0s26ehdr4h"]
+
+[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_cwqpr"]
+[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_cq26m"]
+[ext_resource type="Texture2D" uid="uid://c2q4cf4ivu7o7" path="res://resources/feeds/apple.png" id="2_l1ph2"]
+[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_powvs"]
+
+[node name="Applr" instance=ExtResource("1_cwqpr")]
+avatarTexture = ExtResource("2_l1ph2")
+displayName = "焦糖苹果"
+quality = 2
+topic = 8
+fields = Array[int]([14])
+fieldValues = Array[float]([0.01])
+weapons = Array[PackedScene]([ExtResource("3_powvs")])
+costs = Array[int]([0, 2])
+costCounts = Array[int]([500, 1])
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("2_cq26m")
+
+[node name="name" parent="container/info" index="1"]
+displayName = "酸蚀风暴"
+quality = 2
+topic = 8
diff --git a/components/Weapons/CursorKnife.tscn b/components/Weapons/CursorKnife.tscn
new file mode 100644
index 0000000..38b8f1c
--- /dev/null
+++ b/components/Weapons/CursorKnife.tscn
@@ -0,0 +1,40 @@
+[gd_scene load_steps=5 format=3 uid="uid://dgxvgsipl0gr1"]
+
+[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_bri6r"]
+[ext_resource type="Script" uid="uid://jyalew2bgcnk" path="res://scripts/Contents/Weapons/CursorKnife.gd" id="2_sn7uu"]
+[ext_resource type="Texture2D" uid="uid://blnryfwabfo5v" path="res://resources/weapons/CursorKnife.png" id="3_mdipf"]
+[ext_resource type="AudioStream" uid="uid://b3y226i1875iq" path="res://resources/sounds/effect/cursor.wav" id="4_vttri"]
+
+[node name="CursorKnife" instance=ExtResource("1_bri6r")]
+script = ExtResource("2_sn7uu")
+avatarTexture = ExtResource("3_mdipf")
+displayName = "光标刃轮"
+typeTopic = 1
+costBeachball = 350
+store = {
+"atk": 10,
+"speed": 0.004
+}
+storeType = {
+"atk": 1,
+"speed": 2
+}
+descriptionTemplate = "造成$atk点伤害,攻击速度+$speed。"
+cooldown = 300.0
+debugRebuild = true
+
+[node name="attack" parent="sounds" index="0"]
+stream = ExtResource("4_vttri")
+
+[node name="avatar" parent="container/info" index="0"]
+texture = ExtResource("3_mdipf")
+
+[node name="beachball" parent="container/info/infos" index="1"]
+count = 350
+
+[node name="name" parent="container/info" index="2"]
+displayName = "光标刃轮"
+typeTopic = 1
+
+[node name="description" parent="container" index="2"]
+text = "[center]造成[color=cyan]10[/color]点伤害,攻击速度+[color=cyan]0.4%[/color]。[/center]"
diff --git a/resources/bullets/cursor/knife1.png b/resources/bullets/cursor/knife1.png
new file mode 100644
index 0000000000000000000000000000000000000000..49a13a882c2df608033de0e70306e4b5efd33b08
GIT binary patch
literal 35181
zcmV*FKx)5
EX>4Tx04R}tk-tmBKpe$iQ?()$1q+G@W~fefQ4z;d#UfZJZG~1HOfLN)G-*gu
zTpR`0f`dO6s}3&Cx;nTDg5VDj{{V4PbdeIjmlRsWcyQc@clRE5?*O4*W~$i{1ys#4
zQt_CW&8>)mSNPF|L5!kbVy2!*FJ$03zV6}U>s^Frd7t}p^eTCi0X~s9%5=jbUMHT}
zv~
zby?xO#aS&^S@WL!g~7bGoaQ>s5yY{G1d+gyEO|_lWtNl26VpI_Qx0y*aaFj+x|Yb?ZyelN54hX`hMsiEkQ~WRQz#UG_cQvY958ST^sKtQHTQA)0A#4Er5oVj
z5Ew5~_L|4LyW4yF_e`_DABZz@uZP?UM*si-24YJ`L;(K){{a7>y{D4^000SaNLh0L
z01FcU01FcV0GgZ_00007bV*G`2kHX`7a#zYEhZlT03ZNKL_t(|+U&jAk7QYL=J%PM
z^=`g~$Ci6_^+Gkt84~1Zpn(8E5TO5e-u0@%KoWszl1=tfdsS|+`gXUom>wdss=8TC
zb~V}T&MdcpXC#o3p2+LJ``z!DonuBg#6K5w{{jFa1_{7mWB?fv`EZH;I6kC9eA9&?
zA`xK#8h~Sk!Z?nJvWpoCz=(_*ojC0?lTm>9tH#r1qBDj%*^rr
z>U{a17AMEwpDpLYnwu0t?)Ss6x!UetfBy0x*O&Vb(BfwZcn!gD$a)+g{(W2{%gl47
zXvmU7hGfYQ;Ql4|-xU-X3UaT`fC52-U|?ZkprBDYZ=7?^_`-Yd?Su^<^=-SmzPNrp
zZt)5OE|IZC#DIkS<-c=?1H}KD1s*duf~<%@iWNh#x7Jo7VscIWj_w=9B&H?$bEr=PBR@
zKo7y2C%~Khbwolud_afztrvNG4^RFIA|fKi%$BtBK(+u3fWU$-rZ{H72)P4|6qMZk
zxr4$K3Nrv18UjLQLZ^s>wZ=MU7R2c^rBK8a^BD1R?63vl8X8_(OyYnYdVG$AJ;v`Y
z%m;|SojE3aWrXGHN)5o1218hrKz;4nMgU0Z$1Rg>a^73wHig&6-42{#Z#FbD#H
zLCqe|<_q(mr;G9j^{jj^=5%xMdh|fnKj?@m6`Xs
z_gSTob)w9p3)IzYFts%b>r@`PWR259gmk-@BpWP_9-N#%d;eMEbn*Pfhc7pu{PeRA
zHb33{SFG_1B<#Km6~hC>-{M*kkp@r_Q3XIiSwxWTK@O6?2K295j&FWHhGIs=1`q0~
zKVwgi{LG!zD_>7fYwxCd+VXDR#oaXIp!1kq*A6Bm=~=5y5*phONi_9~qa(L^aI754
z{*(Xl$$x+O53fJO=lE~vaDndK_R9x5@$Eq-A~Hmzv{D5i6%jRx)l@02mEuMq`VMjc
ze4l{(rVwPw2$HcM$GDF|0py*Q0EE$;yi3mcV
zuczqVyk}BE0fYeoTSQ!;#S854X<*GbAIbAf9
z8dq00l2UHluI1b9mG`APe)j%*KYI55lfP(X=XUEB2-pG`kl!7U4@&&66=ntlFhnSX
zpaHNpR2GFjuczgEK+Yi!2z|J1H|f(DagozKNI)VY-0#ScH)*{5)h9zBC}=nU4J=Nf
z@I3%~7_3o4`4z1u59X)G&z6tMBlD-5asA}t>a`t1Ac>S6`F>R&zb>->`|W4D-Sc0(
z{CWFD`hT#;7l>%T>FID#;_sd=3lXwpi~u?ax}4C4kh&NmwBoX^>Iaia^Q0)76YuPK
z2xH7yI@~P^h4`x_p!}0}zt??%Hky6uiupK%4>8~qbhwCH-0UyA>)Y+Enl;mAxmeDo
z(`lGa8sr$q-DbbOy;)zRn9j~m&!5hwllP!=J*Hlzi1qze{Fez$xB$`E7s*w9>B3LLe
zEG!hDm!PvB9zA*Z{^|d`OWWmoeUsL=`(aq8*7y3RKzVDj*-%gM`G=Q(6K?P`1YANe
zysZnrgA)HfWZ{i|W@HFL77Q^+KaMG8f-=?=Rb8EyRq=jCEF)zPU<4t6A@{cf5h=RY
zWrH{(G{PX2%`lOk9Z7NjV5H{%XQQqNVvu-CDLs^&gRpE+Ov9UwnU+g#O
zi*`S3A;U>iH;=tFjybt8W-AdLfcQ45@&V%Ce=r0J0#86rG3|$bTyOW?%Mgc8wIw?{
z@;~GvpNvrqfcRBfPULIKE(A&5BIqFKQC;hYKNtD>fBmA2W3|j&ectMT$KKl6+I-#
zB8D6Z_ipt*ANS>Hk_7Db-Sx}ouYS_?{j1q(>NBS&y|hbi#M*_fs-<6vkq7JjX1eQk
zQCs!8o=rq~`tdLh%M5HJ%NHQBRb7|NsZJ@Id{?UJ--hhP0pfo@h~K;zAj2T9m`Y}j
zDaYHCWY>2C8>MyWYcrcn=GM4rj%lAl?(fUncQ*sk-6kZajDUR_Djb(5)-0aR7V`)5zqs6AoNoH{NJhV^=1nw46@A|>`@XBZEz-Q0
zTywy-yY6ZGa?^F!VeLR|;VM{Yv%T8={q{P36nFRpBd+fIYaEpL5N{Nj1tJj{K@vJi
z*h<884!BMuF2+8+8vFPvMOnv~I}sTKh+Ah&HX9#5et6Um-SG0|Re!Ty@9L?iNAEr4dS06sH?L;9VOLC+6DmsQ
zwB<^W+>kDP89M;skEv{ZfcR|-dIP=)2m&BVk|;?e=S)snNXV~b
z#H%!bhcG^>t8%K8`bF38uVWIk>)J;#4Xf#L5*EitEo<197cUo!<*YPb8RdysC9uv#
zmQ<3W##p^7D}NS32q~b2ApVBp%mLy<{7#ad01Oc9Q%EBTvvIm0#eUodxw^Qy00nh^
zz9{RdU4)@ex7Wk^c6Y6c%B%TuLX%lNeDUJ5I&-S4c{y3ErVA#}z8$&{($+Ymh!dQt6;PM0yM=(?dTSShWw-U(zKVibUi(ibsF_QvuNI9D;@1_8re#sq(`rUD0u
z-@V9pi^bgKoPuVpeWA|0qiLj|_I>MZWhc{RJ@K{Xb{OPpy_4;@nVdd3Rm!WOUAH$E
zuWv6v6laSC7e!ItUT<={?_YqV*IqeW*!hq`&VmHNfQ$&DKS(0(0P(wMo9|!>5Cq8?
znw4Y4TcvrMaw>*AoVvyzO^)i|=DHiX*KJC(m$$F$YFhT?q`r(u`DVMHwcWl}+6>mZ
z*KOAaAt|8Ak!I2bJ1%JvQqBN&h#3D63%&!y@4CGZ^l{Al7*f=VRaMtiHl^;;Zq@7l
z=kNdc{Rdie|NQy-Wv-d-!^H`hOdg1*0VNW1q)i98$<}C}uU8
zxtVf9C%KB#?DJ?Fwcf|E*ysIhdNg;l#qt&u*ZY2N_wBGMy;G9uHbr^aOJX(SKY8^1
zhpT$oq}%Rx41J17*dqV?rr-_`|MA6}z82>G^{Kw&Ne1FSN2`k?z7}#b#{7QPpjjQ#{G+5-25`d@Y)weuoHXU>HZN{TG@%)
zxW;Ofc(2>_x9G9`vbrY+h`-Aq8{GA{cylQAcWx^9*Mx9nJ#+`k{+@J8W#xc$uHg
zHF?EJ<$4%{+FrN)?y|e6s#33xj(k;?CdV`k{VuipG-Z{ua_Vz&B)8pdqZ_JDo}N^v
zPfy;z+`dX-mp2G#k^X(G#R1|!RzC|sDaFj}nfaKR6^Ud9<$q;1OOP-kV4FAC-rj7x
z7y{#&cQsW8L=lN1LLx$n*@%b-kO+4tJ$^T7
zzTXWO(90g%-BrJ7`<9Dx;;gcR4rzCVg*mi5fNfQn3@30~#06l=Ljha|*f1I*}ERsN!
zen*Z80sVJB3d#U@rx66}7
ze)OZql|A7=CYRuCHSrxh&m@ay;$Yw(YlZg9H`xAZ^=qprooS?;m_Tsa>0@G=WTc9iechCcW?KEY?b;549pM{&
z^4AL}3`XHg_dXjn1?O5w9Qe!DwS(+4N!yRK+iXUR*dyF`ACd#a-z`PX2n0mQk_ZAtWJ~X-+G^{)KgvjD4C#jGS9@RH
zcP^y+&zvRa2$h|$?8)r7{xjuqt_qoJj}lsnOei48d5>4aKEJRmwwRU=!Z1*d@*)LX
z<$$tncbN^vW>QV2^XYU5JvnPLvr4<&mZIcjy=GSw^T)Ua)w~ccYTeo`(b~XVjQ*6#yLMvX&h3_33PWR?@iwdz8lv-_o|*G3!tNSrEaum
zm`crzr@3}iXiGMWP!>c2R8gDN{Cu%UoK%d_2usd_G4sf)s@;lEyJ6
zA{9eF=9B^vYp~JeyjQd7v`Ja`_VQ+j?!F(~ze0}>5Wn4#0E{VO8^+ix#jY&N2Swp#
zt}stx3}cGY-cN6$`*|aGw}BuN1CoJEfyuy@jXSr6TKQ56gqN6CoHV3A+xe<8@o
z0;HHF6Gdx0A6cggP*PFGDr-`@%xo%5gO!uccI*~KTP$5co*xZepHjpZV9-dzd*#d*
z!WiS2a=YttYQt{WjxR%>+uf!WB94XkrYWkbsVc99a=&l$=4Q7;k3E3+yMTOv_+9eL
zf-y$frxddB_Q`ZUIV-$7Qx?yLG3-F-AV|!d>CM4^x|>s-1;#s`XrrtUazs+9RujK;
zD>u`N;A7gwypEHhS-rPdEg#HQyM8DA5U;_=VsJtxRm2=Xybs+N*Dp5h?aR&2$94E3
z55hwn{H$s0qMjC&@oqVt7qj_taeI9;Y_4{%@znv;1H|9yV2UZoe%rP$`mVhs4cj#J
zvxLybl#qcSNg@IHYfS@01VoZZAWVv~^2EueI@)1@Db?oK=rE7VJk9^p>~V8){{06!
zA;g<@UE~a<4TjBj>`4jNvl@mBz5eL(_TuB+-^I4Otm~%9IzLg0s8n_=b(soRy0g{k
zDhw%KU0%QLZu=bu?7wZ|?Evw+x9Gd`$_e{0rgcbzna-*|(U!ci_AI6#ImxBG+3!pD
z3%v~F3}i_V&Pscph?63h$zVaHdtgqQA2esQOef~ZOsnJ4no?s-tq*xLV~-15;+IK<
zNip{));L;!y!mPON%*@kLMF>{J~^r%x9tw&CS0nd_eay^Y&Ab#)>UJ=cIaNcxVVYi
zcnSG-{`dg#yPa1~DPrG^`^zjcR8_eIQ8o7C#eECcH=`s0KytzWL7O1NmX_p^-NLtK
zp>3$+gXR14`SN?mT1s)3+e=qYDm7g#bRULdzwHGbK8Kf6@%cgF{m@;GKX0%5JuJ=^
zCzILn`EhZ3ea*Yu-L7)gc)mPaE}CUCDQ0@=rscTn^B2#*_*{DIkiShC{Sfam#sWcz
z0h=(SR22TqJAWKQ*oKfI)0bX4-?xz+Q$iF#vymn0p
z{U88L49S9!;|Oil%$NQLeLuX)3Aguo5rW5!Ck
zqNs#PvmlexMsm)D0j=|d4Tvk05LIYt>KNOiU=o3;;D76
zlq?q^qydC{KZ#5TB=`0rNCvY-VVrJ+vq=<_^A5IfR$I#oDkA5ogi=mP6!
zZeJpx`i%f_QnRu!VGE-x;w*Pnjy(Z{LFxBrqFA0Ym2L{G@h{8vMW8_8%vNR&k+f7xzUVooBILsl@E;`)FWXPM>-JMuI^9g`vw1U{
z&6=65&4df($-APdeWic?k3awD>hk6V0{VYWjSmoiHx_m|3#hF1BkfGRTlasTBVI|C
z+)Ru2j?b3==NR{WjCm*d%TZwIK24V;A!R~>g&~cVE%l`GMclpKy?XUY_i-Gz>-lnV
zGF>&x5W<+-eBEyPR(ctAHfw0O+0neNn&NnKwY%7V5dW^b3D3=xo7IEW54AIOUDVQW
z%@aFu^I~FW^}PE0`SXik{Nk4%#9g{Y{>>Zy4-mg2mf>H*m>EhNd19R_x9k2F5Og9y
zii2h=&Umv`M$ThOF$HV@1Q5~vc@hzZG8UC7_(XZ0&!>yf-wdCxFZwnSCbOe@zF5ts
zV?U0D?0$Q>wbautj_H>Xp<10E9aocTb^G$>Rr_K12kf!tMV_x7t-h}nTP>z*bc2a$
zCd+DRG#lNG%Ld^LtZenXCeSkcNFQ*{0CsR#xV
za7>6PgoCzyO|92cK`s&S;Sk!ZUU23so=oeB
zDQy{se$-9T^t;#l?aR;F*YhJcOqP=$9zR&kub$t0zW!PJ6ZF{WBb*$aEuI3I+uPl+
z@bfq^&GGT{#8~Y~G}Nb`fARc-4?g%fcX|7p)c64LJD|eM+}x$dMB{FBSN;Y|Az5S)
z$(cX|&;%k7!8QiDh&klt$>guJ*UfIX|2zh)ktN^R3d*?qg=5YvDkdN~Z4|27PS~VX
z-}kA#=|A+!g~@y}^}5j4pWnQ`e%}6!e4xkQd-%i2a&A;<8|MUon&-h4luvlB*ZyG
zh%tg==^J&jJe$vy)pYe@zrOgS{r?(k-1(F9^V0hI>eJiLUVps)30Igs`QF(NCyV;1
zZ^!G~&o4e51}Ix_&7{X1W6zn$8CSpm^!?+BpA||JDYjHqmH*(EAAa<~2fzGSMr^;S
z_`wGZ-tsk@h~%6%DTme=rJOfsAkqKi=k7lIQ6jGTzP}=(s1%RjFUQ@qSFdh<(skX(
ze&Xxts`x8t96{YPB9su&Q@|cQHXKzqj>EJl-L!Gl9zCvcf$R0F{Wk1#Z`iZg1KiSKN{KV9R2BqbkHTxXGi
zKmvgCh)tivwp^<7AO86J|Ld!lFJATA^f599f^mh
zO(&A!zDbb*jKdI~Q)V%&CIF@kW&o|UxY&1_JYD*u)x+5%c$|Xavq0hQv~{0G4C8)m
zQ=hNeZQqA9`sTQqoxE56D48&S_4&*F%a31toH^6OXAk~lKA+9@H^b)BzrXyu{$^ND
z7t_h~q&Y5U#R>*21}gjDq94^dT+=@9VxI=dDZ?sD%h|I2kN@E>|9th}_#qU`!A`u(
z{y3xUy6%@mlzm|zvBF%?Bw=a*03ZNKL_t*YH$H81Old75-TjSVMMUl=IEUS>?AmR2
z>%B96itnSu16WMJCPhLV9QJtKe~ypVFLz%c-V2NdHSOt{ouzad4^xRF%J;G8;blUhH=2fIF6yJi=(o%XTv-Kzarr%V)DksH4jXT`n7B{yq*PC|R4!(4uoEc+RI5QO%A&(|S+Ky57
zU);Qkw`m;)HRRp6g<_~D56)Nr<$w84e>R`jXHfW+g{wX=@b(JtudQuFG9nn85F~4*
zxvGn2F~;pMb1$V8hAS2e7Uu=J}yBS|d^hh}W;y
zSNq#`?JA>BpPoFNpEM`1C~}Tt$~ndqB;=leOvE6i6>Fu;$;rvt)A!zcqzkSOO8o9c
z!qS0JW*1?S(8p%?pn3A@L<5rK?lB
zoXo44EmUf^y|u7eE2T4K8q$b}5m5q2DX=gXWl=tU@_6NHKa2bJ6^6V2^8w;_2jX9`
z8p9CQ!w}59ZO|fLW;4DH^4FWG5VK-PCI}(|Hff9+S)_1IrxY|2&EQoUkjI?GYmEsJ
zjKrK$2popql$9q_!i)hEP%gUte(=g+el(dcL!x$m9C?_A^nbwbNPAtg3TiiIPb?
zeC3@n3dAW!#GC~zAR=N#D17DKfB*fb^P~C6{-XT=z<96|@1{Qn1V{<(Fof&A8*f5L
zYXA}7-17C!bS5Q|l!y>AvSjp<5IG4^X7RQdiDkwn723lqhnX-Y09aBQ!Vt!rtIN!W
zrJUMAmslbtdwYGeZMVB!U6*!tJUe54;_W)lICa#>9K6bOlM^Zfb(
z3&}-M`1#qaTwkw09j+d1Rg5YpX~mW1yYeDbvgef=h@ac@WD9`?JfmjZ~O@Au&%
zq-cxAOrg@bE&LpIL>SOyi$WMf4(Nw&+_l@bG0vl07Dw&S+Z1wq_4(xoDrLU78G)80OO@c2P9
znUrrt_yF;{4f3zQ?wYPKTv_?|wBZ@uHJb<`NFvDhoih_LLQFCsW1A9g#v%40rJXTK
z7mYq@mi~#KsRw04$HplihqzzgY`(}TVY-?=SUp%h$T<(&m-xl=&tH6sgfyE>>$yFft8k`oEL?f
zJ8vd>%8o57!s2u~KYlWKGC3}vBoiyJpqbWodNw`Y4Exq=N2HK7F&Q>oXiH-f@R$sP=lT2U%u~K@uT+WNS^zG&D0P$O_r*8@r-&BeFZT>EZ#FN5AGAwB-n3D(4
ziGU$Oq(ER&U}8{iqagH2`T6}qco4lA$mruX<_=mcb
zbJ*mFNXoKw%d^?}zTa@_X-$wVBxOlCldza<5Oa|omE@%&Ert|`zyt{bQVLExUe4z;
z?|lsob%6LS40Sigwj=`Qj9tdR+&S{=i8m2Q$}wuEN-I!M2+Cyx4W_$=9)STNaJs7{
z5HkZgTQJl>Lykq-2bK5xF&j9jR8m2eDw=tt0odBrX?i-HhOT|m>;1$OqzRFnQF^|Z
zPB)v$IBo*PE=8k=9V<{K;b_Q>M3tZOR4=KdhLH(GOkxB=nF{TBR!!@wD(t}%zl{Kc
zD2XU%^jt(Z=d}OU*<&CJ=YcePQ_zfzkXC3(i4k?z1waG@0f<0QL~Ph-liB7}EYO9RMW^0zr$0
z=Za>!RGvMZm|7i)3q@80TUz6St%6D=8&(P`X>DQHk|JVfjG0g77OhZ9%Y2;mX32RhAqZSd+fr%^^rR2@yy$lhuYL3qx>N*uABTI@X36
zccX8=9mWD84XrFY?P$h@94SRr8W0fe2o6pZ3=$X?UYA&vGxJznAXw$Z!H5wDO)D3gc
zAYv4{Buy5a@65SKhJvOfDKqZM=SnMp4odts1`|PpGDK1a@LSsnW~Q7oGr>4#yeW8Y
zYqMlcRm-stW4?xl2g5<2U{KAD{FCWv_5FeR&34%Dw5H6Cl_|CHjkO`z0*S0EY_{4^
z=}Pv-F+(W@mA&@5GIdrVh$GL+db?!nX%+RFi
z?xDbtobO(eh2`EB(LssdLWDtJC;=$ugm0n5lyfH1P{Pp4Doq-N)>5)F9)0wr$+1DD
zEG8*oXKT!>xm~(ORYM5-IL4M(HO8|kYVWE^Wn-TdMN&mkqR^I0~)_7Dl
zkWEP{t^v!rwcC7aOV*;Y$*!nuZ7ex*d>tTkXILrj5KQBa!5l{6!kXc^H@^fK$D2g&1*Qc4OW8g{ars>yOz
z6}2z9A~%j+S@Gh?krqQ1mMj?n49Q9wJ%hHImVU)KM}5mhEL16`^rkYivbHnps3eDi
zEjbWt5bnTz^98;;Bq)+0lEAF^esAkOOXmGw;*b&p+NKwjfb`;-d
zX5?-(*&V|~cZTB-Z&B!?G$%%}$~iOeRRfW4r1yR%on#>>SYprFc5NI7el)skx6C{Gn}(s!HR!N2-|p$y3VoHD*s-B&L`hXm;ytiR29yPCBNrtRgV~iks^VZnTZVw
zU1-lqhLAGGhzOUglv-yejtG@2;ARhI^Tldj)z!ph9+-)VHRp&(S`>NZ$dYFw!Wa^e
zRo3vzb4i{H8q+`;o*b3ztk<<`Oko;jVCb%`^4*pY$^u40rVPH{oliti#0Uh$6jMqm
zAVUri|Nrd0XOkq`aV2=%uL_kqOSE_j00EN2;VhRk+~tbz`!8p|(N@{mP=K=}mjDQY
z;sGE)Xn=U4pK4K}t14AQ+kLu6HVKLtTN5-@g{rFBoXrd}l;EvJc4}&FT!8{cSScIgVM;`sVoVLjR8h?Ws3s;B
z%cZGoVJkDxXb!9llD+%AB>)*B8O#i&>zZI#jjF05SrX_uh<{~B2>{+XOqjS(A~(nr
zhnnZZN;_hZDi{V8SGYS`;I|I%PCw@-=I(B{z1(eZ4njvDQYb3}S;b`o%>*kJ!7qJP
z-ENkB6&DH6rmlUptR}7qAsEluFhngu6PzKgxwMWQ85qqON(t%_;7vgl*JR*eVJNWU
z;0kSg!zGn$)xgj&P)Eui!FtE<z16^@$)etop`FZqe_>IAtH7D8l&CV^E^3kwy3fdOlQ$~6eh
zOOwO#i=#Vj=%-M=3zj@QF*~RdNEn6j##*BdHC&(~zV`1PBtKBjAbQqTnH5kdBnxuxwe7ZT-*w${
z5dTWlav+eD);V-B8|ihUPIf)SB!Q!0KgUQF>!-GW5-hB(;p|91RUXi<+sgfTz1glV
zAFsp`^`(U)M$Jr)6v!eH6>TKUim9n5uZ+v)cGI|-aqK+-Fr_h8QlxFSMOk}w#G;~-
zcRR8+Q1B&N3W5%B*!?70MEoeCv_sKMA+q|+Z1&L#abDKFZe}cQSM87
z2EjlVz--B|1+&MsZulo%83{_FG3R`7b-9W$$LAyazs$9q#X(t@|B)RCg9-N9I`C{c
z{*T6EG}vJyvQZk3t6wY1aF-diA-F*ngD&-0ZPwj8R~MUiuP(Md5jr?%Zb
z8iR?cV~tuWl*KfZ)5B@qG({6*Z+7eLE^hmCinQu?eS(lWW5_^BHB*dH`;>FeDk35|
zXVI)`U^JLwuL%xBFaw1~2Fwl?9s~!50qyTQ=tn&EFl9C%B8@4g)oOE<`}CYA{v{>T
zhzv?&F(TGZ6+u;dGBC!2jf1xqN4>$87|9nrj?%|2_E-D7xKo7%p<+T!f--k1IYBcJ
zH6WNJ?u3cCQ%p;-mC37qTjz*zD3QiTb>j<@CHH;1+Q!{(w|3TVT-kdfH7GM!1t1|I
zLDB>OYS;+?8k!W=1Y2?KChSc`Ry`Pu42FS$v4*Viuw(&P5O@!8y5SR_YS!FvE=oYm
zQLfgj?Sn^;9;KK&;5mqYx$w&%cK8q8SvJ;c?E9?>3K(=CIAh_H_Qn=?ApnsLx=@%o
zG1e*Tr7C(I94;Az(mITsvlYO~jFc261ys!;ZcSbszuYXQ>s@L$`C{FWpq?Hzd30Pe
z8|donYPY($=-QmFj7uvcc5Izi0P;Q{l86uhayCftr9jyj+$u6~Io2s)V6>9RhY|6ry-m)PQN$C3?
z5>*VlRQQ@nnG9PBp`?n(RJxiR1vYZ6XrsYyh|NHuDFbSr#9q>mdvA~-Xj7LSot!>?
zczSXoG4}(X`26}8O%?XXqrUHX1K_Z3!fz}V^OxUw`@OG99_(0|5vKFz_d?CfKDQSs
z_m7R`aR}j-HKy=3IH*l3u!Hf`P{^yn!WA?Y61VO8UL2gM(bPvcoW3$$j$UadJHWKt
zn7b0Y+amj>jXDBtCv{wt0Ae_pYze%qGSbb*R~KRn~=f&KO|Wubca*5|OQQQc*!3
zo(mJG)RHSRB1aWj6kxG1Y@j++tE@v>@eGl;e`8qXqoOb}vUage4^AFFe0+X!rV;5m
zPy8=O_8Kq>8su3)1sBMBuLuSkhuc+f2RY~0@4f!c_xescU`QE_MGZ=pjf<>sSx~Y9
zxzAY$m%X+*_u8vqLkv{`!@&81JPa+!O3i_c9qU9Fm`-09jl+R6U6HWLT~*&{4nDQ;
zT~n02X?M9jztGKQV_kr6>cWAk5yB{xK8(j>Zy83UL+(|&bqkj*O`3%n*_oS!iLJE3
z2qTnKQP2V`1_lfgg;fR_3uDc&7?c=$t@}+wW4}fECO1~i5D2nHM2*<>yY8L)?>xL*
zuh;vT?B|jAlP7y&+2HnM?*Du1xH5(g*6ZCneUBgJh|8wt-=5DG|7&dXw;$bq{O2j^
z`JNIj*rExQTN-a5IfInhl7nPjOGck!>{3LRqO=l+B`kXlxwFC6rr;@jt|`Ewz_dPg
zO*jZ+t+?npvMU@lzN&NZg%fla4^AXr>|%-;-lMj`mPJv7vMznoG|qeP$S|vBMb7G}
z$kqo;{KAgi!q#X^!?l)LYl#X*EIpke7#JvYU&MX2Z&D|@pjh{_jIwiOiyY2_)=j-oE*3I=N
z#+E1JN%1Kg$N^}(E_pH)_q*r_1{PH{c1Ok7+>Jh|1XZd~
znwj@J37!h$tTXJaOK5Z3UT)j%x{IrmD@B`=g+Wn=s;EO*jf$$N%VJcQ&R8~zjIQgm
z?2w(7+SrMig#$mfQ!_C$sN9#;awHmw-o{D=1Pf;@>as3puBKVGT^~JK@+h^$h-z0EZ;UezaT8_p@Ns+k)}vM4M1`O?
z0C8!ZD}pcUqNwY-7}brhi^>R;yA(y+PUBWmktZ}R=5`(q?U-g`(3`@w(?r;aHWd8mkBuQF)kaw^nr_Zn@LjcyH3tE
z;yk6a(u56w9)hex0MmU+X_!!0g6q0?&e=RjR!cDmzM{s>%4L{@+IyeVde^T{R=caW
z&vxCTxFvzD>%cH-y$dE36}zIeMW}3LYc9B;r;ql+6+8(OUY19+D38s=E@^_AJRB@l
zFzSc2K>=lfYJzia-_)RId0@~@CNw-XJf9`QFaw&Q$lAv)zWL_sZ=XGU^Z@$Af9^Sm
zKe@|WOUFbsQB@%|40mu6+A1j`?#C`*+9TV$QqF)AtCA2=4$)K8*kj(uC^D$ey8Uk{-m#Vv+3Uw
zlGSe8y%l3VJ$bbI8;y7uKsy*)55dR~kO%X=5DFZW6(5n+Ny>TG?%LCKCl7OnQ_a|6
z*rNHAc35Z+;X(MrBr!|BUbp9=0R@LUevISEapRlih=ib5k1o2?H%_ZY+wHFN;pZU!gh9Mr=O5;jX=}RB
z_qfs?0I5J$zi&g)Uh~A)pH)_X7={>iRr?pJ#?6c+yWMP7{Z7tPhYJ;Kph%!+R^ZZ8
zMC;z90V+V0gslSOP@uG9Ovkg*Ibu$mjLm~}ckyn2QY7R+u+|}nrr@3DqA2WW)VSGf
z?yDlW;H_~`icv+k5(`_>*pAGUXFPKYuDM}P1p*vVW;|I?`lLy5t$$Er&@-B|y#SsD
zXA~ud3=4WOxDg1H2~g4)V}I|>H}Ac9@6FdGp?ms`eh%VKDlHat5d65^><5Sjt?vg7
zv6%>}MhT@aFbS1C1Z$OI+_jtdUbn>~WL!ZInOQ_ci3|-N@^u|KJO**Q5-bdlF}4$Y
z#xLpC(JKem6)y8e;`;1Dw(ngf*J5KC#s~Jr$T=#kg?FwRHFh$a`4B?z)-iIHoHP1W
zuTzY4BvW3}0pAKQm;-abQ!}O#ju;FwZWu381E|^GsSMEI;sY9H<%Wnn6neT3sX~k>
z8CmH@Lm?@_I)(;w001BWNklkfd)vv$$jd$OD_njM#{W*v~c_0Jmo`S4?
zXa`T#f)HRZa|I53;98k9_j#2%xylJ!RU`wFyq^qJ&H7XnhS1*KXJ~{41dQzn2lbNf
zl=I@iH=(MFdUyF~#k)r<_kjdMlt#i+5(cx)$=iEXOFG7>aF`YtMG
zMr}rz(2OTI;IYoBp()kekV61p8w@EwNpP;!XF81F%bs3S(gExcfQPL}1E}|_81}hE
zR)vE>)IPs^|Ng^oee1j5>^67|c{a&@4&tAd_Z`gmZW>AW=^W7XC$RYpf`i4}msl9j
zWgGh|OUzK4@x*$H@~{Kusfzx_nriTtAXqpwD6tF^9MucDThILQXj0WhsKR#DZqDAh
zJX@Ww`?!S^2F^Oi0u~iYA(T8@PQqe2_S1Ug*nm?K?Yby7S*`7eCdJ%Nc)=4tr^ZaE
z<}nqh$-|O?eTMsen#tI=-Ugu$J(XtcBQ*^((8FlH5y{>ob{`)`t!Rv3m
z@!p&0(LS9IKL_zoP5iaCzy=PrFR-ke;?UUS0py%CiR2F8
z7Mk-@T8rx&=;?kJDS=?%;jkzsxLYo9>?e59H+DW>%(N(~bno6htWVY_+Y4ETfN`io
zNrpX`n2eQXJT{BP%r{l=(4I*Qb-S&g2TIrIEFALG9hj*(G-I=%hUZk!h`a`3a)bOs
z>B-9@!B4$)S$Xd^!C+Mg4g1EjMnn-ky*yig>-*pR?&-{C>uJ}<
za||v&*A}isM7*DD9`w5wq{HuC+6G6XB|cX!&BD*!K{XBr;LYZ;r^~Z;vp&x&%~-oh
z7?tB@q}KRs5>-u&<#OQ`vss~>t!RtwrcHS#C{2U0oAAuf&CDK|2^Kt}1(g_6Nh3Hd
zV21V3c;89!WW-1rZ1|amhRTzB(GWqh03yRy9FrlGk&R&2uH%p1dhP9Redl}M?N+->
zbRXpF{!M~-NDV-MFfkkv#@6B%JIvXjagHnNTnN4_tu+<^sZe{FwvSVk3;h}FC_fN^
z2~ZxUkw;VaTkJFw5!e8#YN4zt%IR+1Kj=EF_y3c5>ff+WodTo^3yTT`7SkoB1f?vTXfO#2
z9=ipP?2@N;L1Ud$&13S~kb{ST->+Iys1V-YQ69F~T<1Lk5J8lnv>(gfuQa{>Cf-*Y
zBpJK7NpHXR=KZgH`LDk6=)uDeuoC|!LA=*A7$OSR+R8ao8{>S=x!Z2rhqd*o>tc$r
z^OqM_-(0QQ?{#f{Cnub%Vhg!B+J6@K(mwwUFsNOLgQ6}Dnn`h76duONZkG_dT`x)W
zy&U_TT5Kgjm;koq>#92HV}IFoxdV`im2^-xRwm$u$%6m8$*r((jl3kB3KHUOn{2Ww
zk+B8m-UckHsTnO_o>j}24i@!jQh^PRnu%B=0_w3|U*)#D5|u<_SJT*!X=-OQ;yF!d
z#tluWlraUV$x{IXzZbR-FH}{Z7-7?s2>dMfICOPXP%IQCa`2aZ#U_k-0M~{JR2;WAto}KV!Vu9e+9u#
zfkXsPj7b>bPP4#o9K2Y3wwSPM(KV#nN@A8wUYS&o6b5EAx09EC>&0ey_i!>jn2fxu
zeDEVR##7g?u-&cX{PJAOV02uJ&D_sS#bd6trU}hx%5#h{q0)@Vqkzd4q{FT--4o-+
zn47Oz1xyz2&%B6e4{}CU0V|M&VX@DPEg_qPUEa#+`N{dKUw!rKkKa3gh`g7YK2IlZ
zcpv#NGHh5zgze8A>4(y=0HZdZN-~(Rp+Z^Nc(!#})@4zcn7Y+&vs?9j+(AhIR*AI9
zkvhqmiC~STNf8Ry_vxbR+Eq^25kpi!WKo40FHH~eo09|cay_9t;-g^|%8XtKB1+OD
zJ9V(ll5y+Phm%{MI-VBOy0L|^&Kd%;wEad_o5ymsI*0dO9Xqxt$x2BDSJYsNF{aee
zm;y?2>R|TM8MJ2~oZWuxz`*W2^hcDt@i
zTg}))HRhZJAW~6Bh8k~eu+Fh6IK|W=nnZP+`*k+NGHvKMMTs+RJ)uk8`*DR){AkRT+
z_&m;yotr5yXv$L>Q9}V9R?VQ1xM^ez0M)1Y-+ek^o(dbZuMBAK6Y*?-zII1ZMD5XQ
zrw`9hFTe8FfBW}u-FxrH=$~yfKL_zI@-kp3tQypz@>u!}HU}U-;5r|LvRq
zbnpAv{p9rSIf#EYrq_T`z+qX|?qED=Ua;0_jD1|MR&NlJ0?0YbF2}qT#ireKU5xoE
z#=OlLabNfuVpPtVxiQ8Pu^~a~``E?UZgSQwF`_DM
zWj&imgC2duPRqMaXO$h8?qOZjHvX7iMLc
zSKMl(ZrAUwHk*VTQ@h(BX=}^ixT>78QBhTLY*A?=Q$I5^x8#{SFeQ!1qamXfduHsZ
zmh#hiFb%e=7$WYo-SsCwBQS%==jke26&Pmd(8ey`KYeie=l|bd{PmB2^xAjOVvV1I
z8F~)lpIo$AHkdc#;&+=#HE-s1CBVItle0HBSDTY=qwk@^27;6c(K!&q7-Q5ZlR=b}
zlSU>m8=8dRXG8=NjeVassY~k^bti-1J?%fS0v0nDaC^GMD~GqMUoU5TknDD@p1e9@
zwP09l#lVqgLqR!lG*wwpS(n0&^+hgv*E4BG&e_0{HO2%GSt7MUM9KhDyGh)=`#9p_N??gv
zWa%}kS{OenQIBh$&E{N{Gh1duC2GvvGB4<^z3X2#2llQ#u*W>-0~%pMq;{CnP=NP9
z)oXRh4Y#m=VqfH419({Br7&io&V}S=Qp2)=?1!?HlJ2^z_`M%|^M`-zn;zr*wB+M9}j!#+T7;%9=`kV^MCRu
zfBwx^|KTg?aXf#&-10eyf5r?#6@@jXRw3PNc5lZdXZz#c5ur3pBQ|{KO4rb^XE*~$
zLc+06eV=nbROFgPq!U3@MXL#G3^GpAp)**K!y*(|6b+6i^YB7F_n$2rUWUd_ZIKI@
zjD)0FNsV!2m<%i%wJ-!CB`6UIF)`REj8Z0mgh(l~F^0T%>Z@SOQB@RG;pjx39X!g8{?AU}QWNv
zOlU%-)MnzQJi=&jZ&!==Ps5p?vIhPrpbzW3hJPh#L_(+AwC?}$hu?Ya5C7y(KL7R`
z@BRQCTKsHn{^ub6i0c}RaSvk4WX8&Ba#jN69vLfDL=_}}^M0aN-&Yip4uw2}V8JMi
z$ATRWiV@!#&)nT|jA_y6v6_DFY82|UN>)q~7D~1!!+Yt$Z~q!)QG9wI7+0o$8dQn9+jfSYUz)&CG-+m{5g=910k+
zATrSXh8hz6kaXf%z+R6Qy+0yf%b#xqKO|5Hwz|vr9=>z_g)e>aE8qIZ?|!pi<;RFW
znNs@~2k~AxhNnsa`BjU|07OK#cp?rM$~oN&35l-f-fmv@zRuyj6}p8%35Tg0;iYQi
zkE^k{Q#82at28ntHEcL=k&TjMWe8Xa%otRNmdntuK7>ufBM3|LPs&k8dykYk`ccs~{Ks|03I)%F=!KdIB9nwf^l8p8~)!=oUBiU|hxt(^2pyU}Q$*x>5^ibd<-r;i;YR0nKx(*t#NFl6Vo~gvD6VpnDU&D!!0wn3vMvw0u7LO
zuvsNQk)IhU`uHM3KmO}I-J5fUP}ZyVGTwXdt^0rRmtXwCSO4zoUvAIZ2WWqOEc{F4
z#3CZQK6Ynh@zP{A{&!VfAFfxc_Uh{DhcTwNB;y>za+UlHYpx%-A%0Q)H@fbcJ{wX%
zc*21apmwj5uuud50T#g-1ZFg3sbL1QBQiz{ay0dY8~e(RLtRXbx07wReZ1>84+PSu
zfH74F&8+c@<-8tMMf32ThmS7K^Ba8&nJjS2jQF-H0s)5iHV(uIVia&r)Dg2~hzD~Z
z606Wcge;TwOx36~^W#OeJUpl-lWA~l46{c-P`9pfEfYN)-{ITk9dj7&@B|AkP=S&G
ziFqc^9dr${@4^Z6X7H0fsxbtWVaw4#mhh7UOFIw^M%fQ8A3px`FZ|_Sec}K8!WSOD
zef}2OpPm!`L_kb~ZO3&Bl8`@mBoIRtxN3LZ-?d#=7<*m^=SO83LRp66uHTJf+;gbI
zG;7+kIm`fyAd*26*&kZ;lmU|70Q~)9^f%+~H`5gghJ}Uhjmq=BO+nW=?#&p{An;*S
zutPe)jK&%EmW*|VEE`iA#|5)ONGKx{Su$!8cGT@+?u3NbRBGcV_^flNn|W!I%8F_!EtfAQCEa%(4bzMhClWG0?^Mm<}h>WVTh-3hfnaO(}45-W^
zDdxUcPQiFH^`1xM$byG@I0u$i5FVRPCHaH|Lk@uinwvz+xKw;rbO4i49bEmIpq}lzTZmBZJ%;s*aReX894#S#xh%DEE{+qoCdZKLjXi`
z%0#SID7z?PRW&7!=+SNaE?)L2ZK6PhAnYI}V8j70)+MIC;c_ys{bX4;)ilVa-8{Z{
z{J3A8Z8zI9Iq%o#3y*qKxypDPu+w8MOaq6CoDo=xnR5igw3@SKwIVFpk}-uf>`Ylt
z%W{4^n=EfFtI2#^)b-c}3dSafyg|09L~Tcym2*BWZkgNuB|fmnT%u+t1BG_I)m|kJ
zt2y-=z)yxZKQM~_Q2~vIK~WJ!;)tvnU`5g%+q6qRdi%BefBfJ6^ow76^{ao=o$c-;
zq5D8e_pg!@JCwe0FOTmwzc>Hv=y%FnWo4)A`qcC4@#bQC*_~Y7U%#<>)V+>#JVJ|0
z2v*3rM2`&wS4ewt_`d72zco2^i2-F8IRDj5nof?y^V(Kq7m>z>s4_NGV-y
zTYV??xVWLv7!@~IE^e96-2K$87hihm&hqeRK0Q4>y?p15w;n%u>-4?LhxtdF$M}&`
z_^QTHJu{!R0d)v&%#Oys_LVD4mALQQ+@~zmi(pWTbGF(?=bX1y?RmT$xy7w{b9m=?
zGM
zoh1r~%+eP7zOdXA@np_>fmj#PE~;(l6DEU^QdK{({gU^G%xaT
zbJvdDjBAXk!ITU)(AkV>0^K>FL$g`t)jbk^0A*f;?AR
zp(!UJ_{Q2|>=dIazi4L3M1+*YS$Ju$;ib^W?Jjq1
z*0GyQZN|DN4$Q6M79aV$cJ2;2pyYrC7GYo@l)yS1OT&2lQyn+R6VXqmr&0y^C{p4B
z8VQ9UA)?nP=a=W}zx%tt``&-~zyIqWzwzxizkwCbKgvJi=g(%9K5BRzqr?mr
zJp_Uc9w6czaW6xpy`xx#1Kh#y@G*YJ-NNVULmY*Pv&LE%ui~z~NS9`dM;5rEj0;w)
z-uTkMyV94gvLox^NqZx^ZI{|jzusN8>+Nd0+Fb1(rd@oLcCwR*#~QJQqP_8f(3@zC
z4^U_RLtf((ij8kxt>T(aGdBx|Jpuw|7~xJi$IIcsz1SRA$J2w+xSUn4n$*^pUX{hg
zF6q7RzjONdoy#}3C;ffB!XsMYya*VFiVs6&mcp@cg(<9sRin&KEg7;LU@4fAN}h&E
zSx%O-a&j~;#z)JdUW|)sQkKrcm4!9fFO?@z%Dt#`sz$5?sc2ao(ZU__VR6iJbI3Eh
z;7S_uT)`p?<|gnTNCU2$7sT{zBO}xMa$bS#cW*rTz9*48C4tzCL>)G=mh;u)&8uI3
z^&9`^AN*f`^p!7s`OhvMtX{(oyI({e{P7^(>son)|4`j_FV8+Td4(7G?&bPYDBAPY
zgZ|C*5U=3^ucO67B=m!z5DpF#jB(c<;DE>G7m;Bhv_r@B1E3P1-zePfp%Gd+X$l(;uC_zWPQ!!;g@_CgApTT-@=c
zZCpunm|Uw%I~|T$7K^M7mIG=k;hI?(AHRHOy0|qznjS9>Cd*kfo{fSD-Wp4k5viAr
zs%A(hsbBX|cSdR&VPvM5xuyTq;oIzx7WSYdo`kP2STI}?6bF%r{Z+zvu|M`Fa&wucZzxl^6UOc$Ghb`7f
zzqmBw<3Ma+&|r#}7Qb2l_NRaUh5yaJ#Gl@z)oyp*w%e2bqJP+*Z{FR#xw?nH#U)-t
zLWW|(1#X8LpBXRxuU9j73rSLq9lWISbCTQq5`o)31O~{pE+Z}0xc)7Q`6T%T??{W_+cQwqTy)^&Llf*ae?
zSR0IWwPzQCSzT@Nqj%3`rF4$(pvMXc@fj;>+`P~Zz#70Q+>ob=>`S-34_&)P
zMK&F1sju*eK0P{U=C+~=KGz#;I&pGlZgGA4e>wc0=l^c{N?MTJ%2raJ#YaOS2iPsA
z{r$#lU)Lz8Z`f_{HUdFfA7jh3Pyp0_mpv5^d+WpaZZBg$9#yx@n3mM&gen^0|8MWjpCh}jGr{ki
zySyb|Zb&S(k`!BNx!n%WOw6<+X8wiwH+#Y{9qt)VPkU^cqScZpisHVCtGHDas!%8(
z6S=(Y-h0mckO{CTu{&h9MA0%|MN}YAQAhy!z5CAcEgqg&9Sj+$CxK1SZ-dN_v3fpd-wEkIAyzs!3KRXznEXl-|OG*@8iu$
z$}#ezVKK@xi7BA951MuV=Hk447!n%FFk*+jYLAYp>G1kwHlB>9qqcB^KV3Ymr<+Hc
zkK0;L5U@Z%dsXmX?&0VvDu5nqxh|g{35vBQY&M&8vgzuN&%62{pWumNOy6t04q6Mc
z25w=_RJhYstPKyy6jccdCb~{SFVrsj`DSspT(zfto93v~2J5uJS*mf?FL7ViIK~DK
z&|{5=1_?bB4g?1S3j+rSiyR|(j3`5?84Af!`3ie}h`rI&U%UCl^`oPkv%Q1c2b1cc
z8V&XaMK&&+S~9CxqYohk=|j`DvfeCH*LBkOy@lp{7hZnht^fGf|M3Sez3|eH=lABnl8vqqf4^ie`*`P0h7Wy~U9*K_41y-p-F@_F
z%PW6>b^FgpPmlHo<;6w+@Zx>^0C(|9L+w*d$^R~c^?i+HsAbtKfVNfT0NL(|n^Rj-
z(`@FSuFlUt?oVWaO&-w68uM!xX&
z&~;4!Bzf;Sv(8jSkxwRjZtACY=*G4%6%R0^0R~j0QZp(kM+LvjQzrg`4-89RK=ZO$
zGrZ$Nd?5f85eV^P4?}aMXePZZH+I7tQLtsG1(F7NaCZOVndg4^v;XI>|N3uVd-3&`
zE>2dTpuu`KG}W&I#M_@CrbS!V;AjShh+N6GGGsEM8(|~+#Z$%f*3*0c+MO@{_lGJ4
z?&03zLH+mW@CY5|h-i0>-sPPakr0uvNiFWJFVfG~_ZIm*vlzo*3X6g9C~}wOhBz2
z3zTB`(B`Enqh0YLbFS89qA0?v(~Guw*mmpVdefbzjccGRaGs16$5Bkkg^`QH1dI{}
zJsdLR7-EQ{av!%x*QdAKzz$q#y~(YM8gt`;q8eo7xG09Ryqp|Os{O-Rndjcyty`O(
z*B4#g)qN9dtwW>h*hrJw_~`sBMU5Q*^4@Y)6}B2xeli%kp&6JVk9a^8St-;;uhuyA
zrl8UesWL;#G$$h#wDU^4bmX}_ZArf%osjTuIky8a3z8_H>9MWdF~+Hth#mM#`MW^MGrA4QARMHQB`GOi!94WKFfwK
zcZGE>85GDgOSu%1Ypw$sU`Qh#Q%Mu5cnqt4$80jY=|b98XnHBgwqHr+`C?AIbLi18
z5aEPwj^e|hIW{GWgIS8x2{t>?Q{I75pDiujKad;YGb
z6I+XaMrk}x-N--L+4i;$a2+>r?fU;zK6Us%R@YJKq_Cy;>#{q2d-dk=YY$(%c&~p2
z=Xf72R+P}H{1a;++Qk8zt&|5DN@SR##L?i8pUwvEI$L(?V2WX}mkqOntn_
zV+vhNT`!2-rw(UzlTJdyS}m9ijPn>1W9A$xW<Mh{$%bA*U811m0=oHUJvV$@+mG
zWP90Q|2wn6^u}m1Ivfw+QK)6_GS7tVW4kB{7$TxAV%V{#)FE<
zP1AGG_tu|Mq#jA5?)X1nH;4hilEuho_Aslm
zCv9m=aKSZ2GnES0a1+(&Y5duDzIXFaW|P^t?8{cqxqa}<^N&A&?fCCcKU}_oCEmey
z8S%TRh3w8eieUk`-DeyehNy7OmbkH7os!SsETOQ(S=-84SK|R9R$y3U$l-Bl#<-mg
zam{$-WRUT;AFAxo7QrPFuWAab)pU^iQ8q9GTjs;uRnws@hj}SRbDLRfGfP>P5s@Lo
ztXo1I$dEE6f+lF+1YJK`wdcoYtJUdpIe%~#C1J&mf_jEz%E&3>(s)y7W((u<+`BR_
zOqu02_n9eO!6QGUiB9Myp28uH==$)<>>xXG`|i+=X-YYUN>!@nBAufUl
zQf%{j#Ih)wX1Gjdc+YL?$GE)=IvSk+5L}Ce)ywjp8vc5^tb=%!#6*E
zwL9+~qQPd{Ba-SDRzUc=%89F`3k37f#&zi8oHm%ak=q;lkrac>G-wafNgF;{-8;LR
zABV|c-0x-6jpVwR+{y=WUH|LG#n4^gSZge>_4@tq8?9_347V{4TSjmIqd~w1HO?aA
zgPoNOcMf@HG4WpZRAH>Zu*1v@+{{w5e6C%?(Ym8xQjamZ*G^s|4Fjl#j$f*wmAx)A}-L0DW{A_u4
zGGFGzVmuL?$;F8^8Cx^pJR9c@UTs$8WO*BDM7<=6f~;^<*~(0K%Gdlg-lyxl?+@L?
z&P+u^a>&V14iXDe*)1V=#Atnd-_A%BzYuY%*)BSEA72K?Y@0ZK?AO25DMVGYsY#FO
z)As#OetGwqAO7u+fB1uE|Mt@lK6@jc$s_bzMj9!7?Xolb6~tx*(1Y*5nMs1}SOOs1ZGS={QQzUJWEKI74Bwgup#I5uaGH
zen2jHkw_vU{kn~3i}U7eF<-7~S-S~4@6Es#>?w1W3U*Xz<_7GIXLiQIszHHVGWb-{
zK=#c6uK89%+O3I$ABF2?PH$^MB6#8(pDe$#e?t*$ABx1904jj
z@NV}hSGE${(CGy5HsupW(NUl7FOOHRzw_!xfA|0W&9l$_=%>#f|LXW%S>qgO*AEF)
zq5200@nfUI1i=OYpM*Ys78bEs9oL5#;h^02`?Kql?-n!j=fv^fq|nS#l47w~tfixK
zQQjord`FJgOP1wtjoq!(ox#Y+V@ekL$Z;KG3^hZcK#m?KsPP$E%puzuw^Ofn#iEGtGD+C4WCLwJoF`;J
z)%7Q5qhU466Nhs*Ts0T%s#%1_CdB}ZY+H~aLavCCzXjin2vEz6Dj&F8ql5APFuI-p
zMgAT8#PEr-Dn?~FKU+My`{Df$&hKnKLId%EV##H1U`CnCMl(l@Og6O6I#VE{T&*&k8e^?-g|p6QCU+%|iwTB2q=W1T
zGc%<k9f#?oKsE~4puMgSwcdDVe`d)NYhovW3Y>=)wB(P2Enk|
zrqb$e+eO>8a?~EOJ$ccmR_5(R|H<87J^1mDfAsUe`Ro7uH=lm^*&Fp)bE-8~NC>1X
zs`3X_uG2s1e{CBr2af?f4!Od9S<+-W9#4(BX$Yz6Hlbe6Hy^bdxsQZ1BrK6ogAjJb
zfc_T6gxSqzkFq2DyXyPye>wdA^!rEOIl8S(RL|Rf{ixooPu7d(tT_vd{y41kVc1}y
z5lLhl+O3Kf2^$C=AmI#x6=Ww&-5pH3xyY7F%qZb8%?cd)!i?Fck{uU)kW~-_ws2fx
z?8a_nhGyi3X2erW2TzpyROwMIZQgcuLe!o?>YRhIYV%>18&8=!vBo>&a%;+JWJkk^
z85Uz2*^!hol$qJbSSQ%iDIa7<_Aoy*Q#&*J?wawM!;>cibLAT)s=vV~dwg_u`Ek;)
zOEL$X+HELwdhFj#MB*L|I;~Tk9$cKP-+brIkDmF5zklw9=U({Ho%iqjGOhFs9a==h
ztAhCte9?dRS8%&C$)bYAbzk6#y@S157cLJaXv2gw8-FafFpdjyotX!{O;^8rq{;Tr$@6g%Q9ZiHz((JPLG%OmLHwpTfWzv
z2SP7{(wG?Y+lzy)MC!+cy-;CD3qZ9{HhQBsB5(h#_Tzu}@iT9}{LU{f9xOk{8q3}ES9Z7m
z9~{8H8xa3GPuJ{Xv=}8hOpDCi8sx>mW;wu=cOf)wUH5(8uVRODBrLzg4Zcjv)Whl>1SCjMF`Lz@`K;aG
zo&+qB5Wq+~;=kXKcLvBXu_X?M6FfCO%DxYuW=hcnf~Yr0EY?&!sAko;n3h%KK+9&O
zUFMSQl9|}ZB+rH0HrVG!TrW5d}#_uj3f!ffRSw!?Y0!z&WRHx
zUB^{?baA?V?Zel9_4hyg!OwpF^Itsw=?9;^*`1{mv}ksx?>7d#zaJ2Px!NW~Fbr~L
z49Vg!A7xLw+>M9B!3=;)DXdZmi@I(WeG``{;37sWp=fp|bwEM_AzjIZwnc_Vh7m^i
zPBz8AwIybG;rAI-I8bW@3ek!sm0K;TCn)1=*?hiQwjYI7kJHvYO~@j%8HP5)C@W3L
z4kKUKkt#Nu%ED`|KIAggah#fiIL1uIG;`lO`cpG?dwyCRWR)4Zk_)!#$dV-$f+c$u
z=6p$JXW&YOMMOw3?zq1e!h|H3?uG_^2qh9dX^Wgaxe)jq^
z&pi9w8*jY*!u(|Uxzt#oL%(}+eWSqp`v>t?ZR2*2YFOOxIlfy}`HkUlu+IkC_aP#M
zRnv!g6XG%?Y@(orphm(15$mf(rUEd?kz>zRxb7>yUR3tB&ul@G($?2mC*GQ|wNw~u
z3k5saY~F^rjv;m`K`oKMD3c>kMlw*$Vc^-RXUjRPco=16-A*2D=HRR)uSOY^OfweWApWZur`<*x6fA-mDUwY-0SDw4~$?=Dqv-l7J&6R>jznK93?WYsJi)$No6(Cq4
z;?vM$)27gtPKLh9hQ6|6q3lM+f|3)GRSuL)gi6zQCw&u-b%lFqaf}*^9k-iPk4>s|
zkwks4(Mk;4&6%b1l$()tJhYxhFjQ%59SrYhIXO1oun_|iqa;>UjLR&PBC{b@N`?
zn4nA=MWIYaNv$eKQc5C{#3nFVhA2f12qej}G5M&n)okQPdqX##j{IaWHb>Qd%q5pn
zD-309Mwrlz@>YK6ZupVivlT|{k&{IRRYiB*((h#5O?Lo)~ICL
zr79DQ>Q;%hbuvawHG1g~IcbyXc(z=u-+up{kACojA3XQUi?6=;+54Zovz~8`wMC7H
z{-3C2{3AYze{&A($YNZS{3lsyC+sL!C;P*L@zMCkcv>BfC&hj-OC0wunkDMZCN!(&
zeEDek(c)qEF&ZooutD1Kd*w=gv?T=4E|!)sgu@61L+_Cr1IGrL&v96d_%O@dD9cT0
zEe#aG5hu%*3=vylu>eE~F{y;WY~j3t1p+0Blr*tKAp|j+#He*cr=x4L!O^X2zzLoH>1aW*p*Rh*$<^bU46c_0O;T=_kyAwt29Eb(@&
z3=XDZ)#a2)g7WGEn>)KGjsE5b6jq~qyB>$#27!Q50`Ce`gZ_Ny6
z`#w@~7n=*Wm@lqfTwGi%H|tfi!3CB$!5Rp<+RRmaShhzzk>BC<>>qN*THNq4!Q#A2C~Dv}8IiM10U8H~$fbTG>IZyn|P
z*AI&6bes?J0S$bKsoCRO*;96p_Nbr%IdyO*Q=^WODz&LY=vr9vTKIyzb!y2H(H4qE
z7}7@-;;kt>UvB9Lq_lG>NZ1PR8A1sWiYOgORg(m1vFab3+?&7r+N+dX4FXtK=9LC6S4JEE)hZiZ@{Fke_ZDPC1}uIzfXcmR4tV$4-gqQ!8tNjKIf%NsaY
za`7~74<$bs=cD1|VCMa-G|@u@EJN&xRi8|Y<-(x;(wBHkIjM?p$N98*duLSiIMoLO;YVMoK<4W{Mb)_0#6
z9~|uu$K!EUl|wV|ITtoZNd@JU^YUy-U_;J$g)*GCu#VLk1C^u~dIlo~oOUy^UO~#+
zQ=2`NegtO(9v&GHtlFy+Kt&-Ep#t>O>ng0%vS0Tnk510td;i^!UijJ1o`3ndpTBhH
zlRNJ=XZ`8UeJTE~TzLK^gZRs>A3#p2$h>o-9m{
zXq8m9dNZUTh+w3oNfZ!DovI?SC*#UIpYBZu`!}x*Za#HuFge^S%kiKXjYh6?1!rX7
z$dOY6vyLXj0pnI^Ij)u>HsQs0Ic`!=+pi(P0TlGKv(R-G%TuvJ#taWN(}6&ZFa
zAR;!~gnC5C&TS8P_~J`%y!zUkpMLnsJN3!>E*fl*
z{y4zto%u
z{k-k!(^cD@v`v57Z2I$V6_=R1faER4*3p28C_zl05~2
zuIu8uuABMld~;b4wECzI?V=tyUMGtqw8f8Ad#k9F{X{s;Qe4)+S#>zzrQ#0
z-?@I%RmISaCu3(^X4p86x((-MWwqp#6~etHPewFp>{FZiwhOCO-Q2x*|Lo3#2PAI4Yx!E}DjGGRde40gknA1IH+uyIj4^
z6smD^v2O0)KY952n{U4Vix+?K>RWHV_4b|5K6`(2)*PeT&DZ-sKJb21L3}y62n4KR
zk0$mwt!>O9810hNdb@9c2}A=b=Jkgh?aR
z2uauVodoGqA40$B`gYZXX1VTG=Zn6rYphl)tm@7BY_a_8;o|h9>AOBa8|3JxS;4N@
z8&tEBQWab*gKvFp*CsQLJTmLl8Vg5Ooj9^K6J<`DvRj|S~B#|HUOUy53PXGW1IY~r8
zRI@wA*;aESJ5CovB|!yn!NT_rL!YOc{V@Hj@yv9Vh`^Saw(2QWL=|co9IWOrVx3FY
znBc65Ce&vQHuKGfgvCYbrHyq;5?L*4RJvGfmh(r8)74^m-qsCLpSswDq)Ac=Q4F&o
z6)T1~80j@rQ_Y6c@wLH?>gI4fxjC8*X4zgo%1dLc4cwbnJGjtDu7!GZYK&LFMmA1u
zigA9vnt$}+r=Ps?;_Gj{^X9v6fAro*@5~>~@5w4H5qX1F0`%+CxP1%a-*($~x$sX{
z-j!b@Y|xk1qT4N#0ilNx1K&2dXj^!1MJ)54W1b2#5i1!cs33`^{^G&XEY6lVy?3Tu
zxai8f6@!hcG!nFq%Wf6w{w%h7p^>`OqYHIh#SSY8+kkOwp9VzR5N-uhf*^4Q$0Z6k
zGZVUIY_?b47~UA(uv4C-0jiBQE*BQ04o*`l9VEf@ZJ!v3ShtJjlLvP$9^5&(|JG~o
zzWL5;zkKc9ClB7+oNbQLV)X?%UGyItX80|LzxsMSLG$;~0ABLk{_9t|0)2o*1mn}N
zW}h;EbP=}BK?23Fu?cd1vEsRjG*=9>0VZXxxhYb?l@_T?zRg3o
zLVJICwr(CBpUscwkB&cn@T<>1_~i4`<42#&AFhwF!8uygNC@cu_)CVb6U0PYRq}R>
zxpkk6yVBqfCSQRdpvQyuA_++dspnIhabYu4sH#dr9b(#qj?QDC^BA`|dr^=Q0NGBj
z;Teem!vs==aDp`!o-7vEP0tMH!-m9
z7$UK6mdkEEzdL_$ac}u>{`vBFe)s&&`n-7<7V#lEtk9u@>?|Drg`K!x*T&9)ksE6U
zL{wR8oNDr-+NDFyQvYKZQeU`cnyc(1x_V2Mwn|Cpml@&&AcH{;i^_P6
zVUQV%f(aHo2Pal^BIr{>FM>|DuASI9VHjsnu){DbXlT3{T91kGCI_o03rpTuFgYQZ
zUHa!XfW$y-=1o2-Off9Iubkzaz463JQ@vR=O}(fWtJC#)ebzi|AEvul;SttYqelzb
zo#Xwtp#A-Wm@x!l3WFP9y2;GmdrRz03t(wLbqKMM7@H7MqkF6#
zc(U*?n79J7yrjKin2oc_PsqY5tJ~c(O%x;%2`XrmxpB^tb&job==&Jj(D!ZMZ2G?6
z^o`bNciAO9HfYg7&?9{d+CLPCi5*?H-rw|j_Jpx~Ad(hM-!w6$j0`g83^B8F&cImH
zgEgtD^nF+*%BbMGnAPV>}VDwQSiM?=qV^>qcZ@L+nCGAq0sbM(tH--8XVB0dt9{q3Cw>
z(6qaWw#I1m&x_{xFAv0D#I-mOa&l(uox7PA#f+UgTT0fCrImSv+n&!^0s
zsirmtX+w*cLTXf~V`kB9jC_(LDgt3<&juM0IT48|CJ~h+B0@wd1_`3thrXXTZF}5D
zoJv9sK@Xro+D!{|OY!|Ct0BGx@ox|4%OGzDpn$^|4hN>7>*cT*W`%dga&E0L%m!eB
zbuME|9)OJ+4FJQAymKZe6-ps=8dIZD*AjHywQbX^n?={kLIV;3WEh5-2hN!h5#=BW
zDik!bkX}W`i-?G-Y%|xkfEHDSinb}qX-c?A5gTk>>w{hfjqT`}SIw#J0>-|b7W|Qc
z_^V%St68?Fz!(BMl`+EsaO7Z(
literal 0
HcmV?d00001
diff --git a/resources/bullets/cursor/knife1.png.import b/resources/bullets/cursor/knife1.png.import
new file mode 100644
index 0000000..8c78568
--- /dev/null
+++ b/resources/bullets/cursor/knife1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://geax1diwtp48"
+path="res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resources/bullets/cursor/knife1.png"
+dest_files=["res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/resources/bullets/cursor/knife2.png b/resources/bullets/cursor/knife2.png
new file mode 100644
index 0000000000000000000000000000000000000000..9736fea8abdf05a8d53827064129e08054d2dd2e
GIT binary patch
literal 29667
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