From 7f458b013950c824c6c4a7fd51f701b951a482f5 Mon Sep 17 00:00:00 2001 From: ZHU MINCHAO <48154958+MinchaoZhu@users.noreply.github.com> Date: Tue, 3 Nov 2026 14:18:01 +0800 Subject: [PATCH] Tiers drive physical traits and serial checks; guide item Fans (1/2/3/3) and power connectors (6/8/8/8+8) follow the real chip's tier, so a fake shows its real tier physically. Serial numbers (brand prefix, tier code, factory code, four digits) are drawn on the sticker from card state; the label bar gets power-and-fans and serial rows, eight in total, with a framed panel. A graphics card appraisal guide item holds the rules. Co-Authored-By: Claude Sonnet 5.5 --- art/__pycache__/big.cpython-314.pyc | Bin 35627 -> 34628 bytes art/__pycache__/sprites.cpython-314.pyc | Bin 46515 -> 48727 bytes art/big.py | 56 +++++---- art/sprites.py | 106 ++++++++++++------ src/Decentralized/GpuInspectView.cs | 88 ++++++++------- src/Decentralized/Items.cs | 33 ++++-- .../ModFiles/Localization/en.csv | 37 ++++-- .../ModFiles/Localization/zh.csv | 37 ++++-- .../Textures/Items/gpu_big_burnt_b.png | Bin 1627 -> 1549 bytes .../Textures/Items/gpu_big_ov_brk_port.png | Bin 409 -> 0 bytes .../Textures/Items/gpu_big_ov_fan_chip_1.png | Bin 0 -> 397 bytes ...fan_chip.png => gpu_big_ov_fan_chip_2.png} | Bin .../Textures/Items/gpu_big_ov_fan_chip_3.png | Bin 0 -> 340 bytes .../Textures/Items/gpu_big_ov_fan_dust1_1.png | Bin 0 -> 462 bytes ...n_dust1.png => gpu_big_ov_fan_dust1_2.png} | Bin .../Textures/Items/gpu_big_ov_fan_dust1_3.png | Bin 0 -> 569 bytes .../Textures/Items/gpu_big_ov_fan_dust2_1.png | Bin 0 -> 1341 bytes ...n_dust2.png => gpu_big_ov_fan_dust2_2.png} | Bin .../Textures/Items/gpu_big_ov_fan_dust2_3.png | Bin 0 -> 1838 bytes .../Textures/Items/gpu_big_ov_fan_oil.png | Bin 432 -> 0 bytes .../Items/gpu_big_ov_print_normal_rz470.png | Bin 437 -> 0 bytes .../Items/gpu_big_ov_print_normal_rz580.png | Bin 431 -> 0 bytes .../Items/gpu_big_ov_print_normal_rz6800.png | Bin 428 -> 0 bytes .../Items/gpu_big_ov_print_normal_rz70.png | Bin 0 -> 402 bytes .../Items/gpu_big_ov_print_normal_rz7900.png | Bin 447 -> 0 bytes .../Items/gpu_big_ov_print_normal_rz80.png | Bin 0 -> 388 bytes .../Items/gpu_big_ov_print_normal_rz800.png | Bin 0 -> 405 bytes .../Items/gpu_big_ov_print_normal_rz900.png | Bin 0 -> 424 bytes .../Items/gpu_big_ov_print_normal_rzx50.png | Bin 451 -> 0 bytes .../Items/gpu_big_ov_print_normal_rzx80.png | Bin 0 -> 428 bytes .../Items/gpu_big_ov_print_normal_rzx80ti.png | Bin 488 -> 0 bytes .../Items/gpu_big_ov_print_skew_rz470.png | Bin 569 -> 0 bytes .../Items/gpu_big_ov_print_skew_rz580.png | Bin 574 -> 0 bytes .../Items/gpu_big_ov_print_skew_rz6800.png | Bin 634 -> 0 bytes .../Items/gpu_big_ov_print_skew_rz70.png | Bin 0 -> 502 bytes .../Items/gpu_big_ov_print_skew_rz7900.png | Bin 626 -> 0 bytes .../Items/gpu_big_ov_print_skew_rz80.png | Bin 0 -> 507 bytes .../Items/gpu_big_ov_print_skew_rz800.png | Bin 0 -> 582 bytes .../Items/gpu_big_ov_print_skew_rz900.png | Bin 0 -> 593 bytes .../Items/gpu_big_ov_print_skew_rzx50.png | Bin 592 -> 0 bytes .../Items/gpu_big_ov_print_skew_rzx80.png | Bin 0 -> 592 bytes .../Items/gpu_big_ov_print_skew_rzx80ti.png | Bin 689 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rz470.png | Bin 865 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rz580.png | Bin 876 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rz6800.png | Bin 929 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rz70.png | Bin 0 -> 805 bytes .../Items/gpu_big_ov_print_stamp_rz7900.png | Bin 905 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rz80.png | Bin 0 -> 848 bytes .../Items/gpu_big_ov_print_stamp_rz800.png | Bin 0 -> 903 bytes .../Items/gpu_big_ov_print_stamp_rz900.png | Bin 0 -> 883 bytes .../Items/gpu_big_ov_print_stamp_rzx50.png | Bin 859 -> 0 bytes .../Items/gpu_big_ov_print_stamp_rzx80.png | Bin 0 -> 881 bytes .../Items/gpu_big_ov_print_stamp_rzx80ti.png | Bin 966 -> 0 bytes .../Items/gpu_big_ov_screw_opened.png | Bin 364 -> 0 bytes .../Items/gpu_big_ov_seal_reglued.png | Bin 419 -> 0 bytes .../Textures/Items/gpu_big_ov_shroud_chip.png | Bin 345 -> 0 bytes .../Items/gpu_big_ov_sticker_hand.png | Bin 441 -> 0 bytes .../Items/gpu_big_ov_sticker_scratch.png | Bin 420 -> 0 bytes .../Items/gpu_big_ov_sticker_torn.png | Bin 1011 -> 0 bytes .../ModFiles/Textures/Items/gpu_big_pmd_b.png | Bin 1581 -> 1501 bytes .../Textures/Items/gpu_big_pmd_f_t0.png | Bin 0 -> 2330 bytes ...gpu_big_pmd_f.png => gpu_big_pmd_f_t1.png} | Bin .../Textures/Items/gpu_big_pmd_f_t2.png | Bin 0 -> 2056 bytes .../Textures/Items/gpu_big_pmd_f_t3.png | Bin 0 -> 2071 bytes .../Textures/Items/gpu_big_probidia_b.png | Bin 1589 -> 1511 bytes .../Textures/Items/gpu_big_probidia_f_t0.png | Bin 0 -> 2355 bytes ...obidia_f.png => gpu_big_probidia_f_t1.png} | Bin .../Textures/Items/gpu_big_probidia_f_t2.png | Bin 0 -> 2073 bytes .../Textures/Items/gpu_big_probidia_f_t3.png | Bin 0 -> 2088 bytes .../ModFiles/Textures/Items/gpu_burnt_f.png | Bin 607 -> 607 bytes .../ModFiles/Textures/Items/gpu_guide.png | Bin 0 -> 137 bytes .../ModFiles/Textures/Items/gpu_ov_brk2.png | Bin 108 -> 0 bytes .../ModFiles/Textures/Items/gpu_ov_fan1_1.png | Bin 0 -> 139 bytes .../{gpu_ov_fan1.png => gpu_ov_fan1_2.png} | Bin .../ModFiles/Textures/Items/gpu_ov_fan1_3.png | Bin 0 -> 157 bytes .../ModFiles/Textures/Items/gpu_ov_fan2_1.png | Bin 0 -> 113 bytes .../{gpu_ov_fan2.png => gpu_ov_fan2_2.png} | Bin .../ModFiles/Textures/Items/gpu_ov_fan2_3.png | Bin 0 -> 118 bytes .../ModFiles/Textures/Items/gpu_ov_stk1.png | Bin 160 -> 0 bytes .../Textures/Items/gpu_ov_txs_rz470.png | Bin 155 -> 0 bytes .../Textures/Items/gpu_ov_txs_rz580.png | Bin 150 -> 0 bytes .../Textures/Items/gpu_ov_txs_rz6800.png | Bin 162 -> 0 bytes .../Textures/Items/gpu_ov_txs_rz70.png | Bin 0 -> 142 bytes .../Textures/Items/gpu_ov_txs_rz7900.png | Bin 156 -> 0 bytes .../Textures/Items/gpu_ov_txs_rz80.png | Bin 0 -> 145 bytes .../Textures/Items/gpu_ov_txs_rz800.png | Bin 0 -> 152 bytes .../Textures/Items/gpu_ov_txs_rz900.png | Bin 0 -> 150 bytes .../Textures/Items/gpu_ov_txs_rzx50.png | Bin 154 -> 0 bytes .../Textures/Items/gpu_ov_txs_rzx80.png | Bin 0 -> 152 bytes .../Textures/Items/gpu_ov_txs_rzx80ti.png | Bin 164 -> 0 bytes .../Textures/Items/gpu_ov_txt_rz470.png | Bin 149 -> 0 bytes .../Textures/Items/gpu_ov_txt_rz580.png | Bin 141 -> 0 bytes .../Textures/Items/gpu_ov_txt_rz6800.png | Bin 144 -> 0 bytes .../Textures/Items/gpu_ov_txt_rz70.png | Bin 0 -> 136 bytes .../Textures/Items/gpu_ov_txt_rz7900.png | Bin 145 -> 0 bytes .../Textures/Items/gpu_ov_txt_rz80.png | Bin 0 -> 138 bytes .../Textures/Items/gpu_ov_txt_rz800.png | Bin 0 -> 139 bytes .../Textures/Items/gpu_ov_txt_rz900.png | Bin 0 -> 140 bytes .../Textures/Items/gpu_ov_txt_rzx50.png | Bin 144 -> 0 bytes .../Textures/Items/gpu_ov_txt_rzx80.png | Bin 0 -> 142 bytes .../Textures/Items/gpu_ov_txt_rzx80ti.png | Bin 153 -> 0 bytes .../ModFiles/Textures/Items/gpu_pmd_f.png | Bin 587 -> 0 bytes .../ModFiles/Textures/Items/gpu_pmd_f_t0.png | Bin 0 -> 582 bytes .../ModFiles/Textures/Items/gpu_pmd_f_t1.png | Bin 0 -> 586 bytes .../ModFiles/Textures/Items/gpu_pmd_f_t2.png | Bin 0 -> 515 bytes .../ModFiles/Textures/Items/gpu_pmd_f_t3.png | Bin 0 -> 521 bytes .../Textures/Items/gpu_probidia_f.png | Bin 580 -> 0 bytes .../Textures/Items/gpu_probidia_f_t0.png | Bin 0 -> 574 bytes .../Textures/Items/gpu_probidia_f_t1.png | Bin 0 -> 580 bytes .../Textures/Items/gpu_probidia_f_t2.png | Bin 0 -> 506 bytes .../Textures/Items/gpu_probidia_f_t3.png | Bin 0 -> 512 bytes src/Decentralized/Unlock.cs | 1 + src/Decentralized/UsedDealerClient.cs | 2 +- 113 files changed, 227 insertions(+), 133 deletions(-) delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_brk_port.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_1.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_big_ov_fan_chip.png => gpu_big_ov_fan_chip_2.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_3.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_1.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_big_ov_fan_dust1.png => gpu_big_ov_fan_dust1_2.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_3.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_1.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_big_ov_fan_dust2.png => gpu_big_ov_fan_dust2_2.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_3.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_oil.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz470.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz580.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz6800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz70.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz7900.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz80.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz900.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx50.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx80.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx80ti.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz470.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz580.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz6800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz70.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz7900.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz80.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz900.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rzx50.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rzx80.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rzx80ti.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz470.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz580.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz6800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz70.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz7900.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz80.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz900.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx50.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80ti.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_screw_opened.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_seal_reglued.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_shroud_chip.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_hand.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_scratch.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_torn.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t0.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_big_pmd_f.png => gpu_big_pmd_f_t1.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t2.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t3.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t0.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_big_probidia_f.png => gpu_big_probidia_f_t1.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t2.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t3.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_guide.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_brk2.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan1_1.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_ov_fan1.png => gpu_ov_fan1_2.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan1_3.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_1.png rename src/Decentralized/ModFiles/Textures/Items/{gpu_ov_fan2.png => gpu_ov_fan2_2.png} (100%) create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_3.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_stk1.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz470.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz580.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz6800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz70.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz7900.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz80.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz900.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx50.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80ti.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz470.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz580.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz6800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz70.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz7900.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz80.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz800.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz900.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rzx50.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rzx80.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rzx80ti.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t0.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t1.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t2.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t3.png delete mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t0.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t1.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t2.png create mode 100644 src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t3.png diff --git a/art/__pycache__/big.cpython-314.pyc b/art/__pycache__/big.cpython-314.pyc index b9d30f2a32df807266ad20d297bd1e883c68684a..cacd793ab06c8e15685eacc8bed86f8d2c2c3575 100644 GIT binary patch delta 7283 zcma)AdvFxTneUm|_j|QkX;-VaKxol(^#BPBcmX40A&>?!LU=VoAdtm#HCnKt&R)rP z2dkWIlxyQCwu!N^V>!9w#H~~25*&+^b0Jl6c?}ZAI_m5cU`OR}7{lf2a`(r5-Ls>8 z;H%0MeEsY0ufJ#a*S-4bOYDa)uw~^IvjM@^e{^n7K`TNxNJsfhad59z_5HGCRU*ST zRWV|59V@c@GJbg#E9L{{su2IsCPsADvDIA2&}|UeiX4RS_n*kp$Q`_obA=DFA!EqI zui#e#GKVbUe(@+EYse-BL-uOK6FI9kF*_Ju1?XXl)PVdHX#lOJNDF8UMLIxhDbfRa zgdzi=brcx^HB)2)6n>OKGr;u}SpYpokrhx2MK(YiD6#`;r6>c?Mv5GOHc^xbsBII& zJE3idHVaxF+H7byL+gUJV-r)YUc-bk_$|CU8-@2VAqOw;IoSwMChy5cAt&F-=hA)_ zzm?CUD4WlR85dsw)Xf(H&EboHdiXBBm~!OuCD6~~7XZ!Y7XmHdOMw>hi+~pKWk8Fo zQK*FX^4s{u{NvSZ+j@jAi|()uty_iAlPp4^g->!oOGAr7W!>H)B&zBeIorVFf|Q=dS8rn8w+HTKqCA zU!9FWU=3N$`zWp@7|bs3uHfq$w<6T{HbS{bL_D*;GE_<1s!&yTbrI^WY}<~{8FOqR zM;VV1Mmjj?aNs97i?yDP@0%a@g);F3XAb-L28d2A9|+Yw;PoTmb$xej5#pD0*C$)9 zM5b+T!fyq2SG9qb^snt;`UpbZK7Q%LX@VgUI=*o!B!qkgsHHg`C8h+tPyF|G zN1svuNySt|4;e~1=Ar1T=4^&p5q;NE%`mI*P3x!3^5_NIZXL5WTH=16WiW)G?)aq{)FlUZBt10nb@89i&lg|)1a^96Ms19J;aCVsNGO0fhcM73^O5q5AJ@Qu{4?s{C zAX4ck=#+RDpa88+WSB~OIiOS|xql&GmDeED`41vfp>&|F$N#a&Vm2o+yn;VpY8o$2Sq0b{h=$wV#`-@BQ-ZDF9?VQEoGPn9`v8=*?d&@E{Jlo3fT+rIOvU66{ z;E}TI#3a5`rd3;83t-Xzlz9MIJFjDp*TY!_9d574RCV4Kthn9lshl@cFo;~TnSx0P z0UW#aV4GQ9YU@13bM^BZ0tPQuIScfuJ_=@DmCobWL-kFH1MsL5JS{Eq#!7@mFp3!! z^HD}fFp@Cg?Tb};mLx8NXh@N2!Xu0GI5Q2To0CJhhM`_-x^8!VEoR^k7Q68Naw|St zYtpJ)^OMGwbGkMM9xQhFjACYr@^m#u(UCH5!gtDZYyqd@VCQaLSCND7E^!t?4Iq0Y zXbai}n~0Kkq+lm~d~to227&`jcw`_;6U-3eX81E8uE{Ylh`JPSGX#^UPUhhC_3;x? zfD|cpM2cb8}ib~1vtK7Mqd zM!+m7x=BgWi>ed@jQI8vx4wbw_zvRg-F!#UA5$Ia`XlVeWY;ZtRb@k~ThZM0w<1GJ zDQrck#gSG<42m5B%d?39BrHg|L?%G5Q!Evn_*|t&ZBfD$wuoB6B5G1BHKZnhHzcGJ z%N1)9ZHFu+J>aQnbc!fpJ3YuC*CY!`sO6J5TYeHx zGnZnPqtzgAaF1ocg-3(TXF|ns!dCcAd@E!HvxO`n8+OY`kqa-+wP=DaMXfeVR0}S_ zfb*(7%BiZOW1@y<5@sfHBxEb)6;$jYIZ|XfveHV2Q&yP;5y?v1TJb5Hs82l#q)dUF z)EXCOUMA{zQ&KJ3CZw-0P&Q|d_xi&QBsT)d1YBbzweNtK!BcK(WB8La}dmMV$2C75`l`NI~1ro8Z*27qFYpt8h z>7Z9fkz2?~(P9#{Dg7M$TCHcf33OVLQnVzVq7NTPQTjClQD|^$&yx5C3i1AiY`f(U zyPR!Y2HP6WZ!Ut-f-O0wekfbHsFf)|opZQID0j{WJ23x-2oytsF48uFFf*7BH)(#? zZNZ#iNIBKnRFDU|>P>E9zahzf&`z=}U!NtGK(P{N-j>8Qsc^}+QnfyzNiZfbL}tF| zC(aXWPPk22*=GDry(%whj|$%vraW2<7my2ZkvZj_vLyF*(Q43A1TUxbfWjpa52y!E zHdy3)cU$M}l-!B&+=b)bsg%cG-@no2rAjQI4)i2$9X<>Co8x^?Fjv`koI~(n{}K z@~yK!`fBu@uSWmn)-OlyTzGlz%nM(R9{=*>-8816`m<*Bk0PO`yPe*zz%xwf9jnLlQGZf>@#szu_HUlt7BiP@V#Y%sL zyBe3|e@|w63Yt0i*@e8$S;IR2#-0uSu1#Ay@av5gD(>h&5MOR=G|#GFX0x<`u;pQU zQ+B?JL}pgKMnHpkf7ap_dqRa?oZD#Ap3*DTgC=J~#{_OZc} z9nbF_@0~FhoGzL%mqgfW@bgDAs)nRab@IUEXXT?|pIG=+4udCyFQboG+PHt;Cv#UJM&hS;fTQn@4_Voa(sb z|8VQMy|K-^FS~Y+8X~Gl-!)t2SZKWW5O)b>$Q7 z|0KL4Os+j&bbiZ}e`;vDvgNuxYb^AVC*r?mGM`vCx^Ap~yy#@(c<QQ|4}#Tn;iUE!%SHttld0q@=y7G({QojQf92J{UcYbV@qsn*Gxy(%=)g_#{a{5e!;Z1h!c||ftn@V2uYODor5F7^ zx^?v?Rp#FSgsn*uEpJn`^a}pPx(eo1{D*aqsDAw zRXRz?ON4Y0@&iJ~2_Z&F@KX=ThLQ+K#4KrwkRK6pijWNmYLeF??I)cBguForb>=OC zeoV;QgiPSxt!vf)3eXz;$<~iKjjSAp11|L?7+o2CHSn0uMxgWxAyGnJ!++{)V&26y zyV}(;7+4!Uwkuc7{4+kYr)+&1Z<_hkz?X>-YA^A|tCfC72B>}S5=4!B8)xn5i27h{}z?dWoGl!R}KZixfqyEFcX3Q#p%BR6+pK*mdna+~>_;3l58esMv zMk193_716CvutmlGzfqer6IyfDv?w}hTxSVlQ)Qe7U&J5=`CWcXM1dS|MZr<64^0F zZT-PRJv#>adlnA$?CuFI?Au8;3H|V?r)n0F+`%p)+N7I6hRE~-D$d~hz^j8PaueJm zp&mv7&?|pD{IQ5<;jgqDuUe|c>yH#`-hdhD1|B?;oAV~I5B_2UOWt%()J<}e+otT7 z7R(fF!fzc3Xyyp#mxPmf3okfY5iJT|WSDpGjp3#2eS~vIo?Ce|OYtHo9o#X{H_$8l za@0&bqi$6N5A=f{s?f^J90B~+85WM}_%rVe=(xh{n^gmEjSqkHY+hImys%s8 zIznKMER=Lakdcu2DPSX#69aPBK*r`tToy5_#s`{+FrQ>jT}MR9(!$B&<~7MGh%(?J z7Ru&Oo4$hp6B(7=0+&H?P27WdZaV6#0ahE4r>J^RKbe+oOK`~{onIt(6;bml(v6Hu zO3{a8cNFy~Oob|<$grF-Ib<}7N>=0Is5&e0;ky(+pi@IdLbf5Nda{aUDxP(QfhUke zSY$#?O?2Z4(2{uvA#^{e2%<@$6NG^Mbb!jHdn6%*x*9i&3Q1T2oGI~-b5T)L098QU zq>JWBa=hfMP|N3|N^|@Gle`6dva3|ImG}>rBza-3qtwetz~Clm6?T-!YjWzF!nfDJHt{I(Uz0a>0 zx6c?oK7 zBzL87?eLn2Wjtd>=eeTFg~wOU4(6^7<+L%wTukNs1Z92ZUZucmdgHL>3(gohI?cI1 zS7m&rHAL!8G>$g@_0!|bwAMY2v%gm+#7*#jX0pdJ7EiR#WK>--Rex%#`@~c?x%$24 zbItEO=*Ak z0K`E$?7t{{Qv=-8~K6ewF)&i(F;3Dbc{d!w=6Nd}#;6d`3FqCpiQjBjJ4I zDj(|d8sq}65lN`~SWCZjKMG4D%4CsjC<)L2Mah8nQIrB`kfKyT z`zcBTbbz9CKtpXT%7FGDw3*Nzg4PV}VQ90UJ<`V33L98&3Ob6ieP-q`>rF++P!2_D zDA&w*(@`GC4CF@nRGWzkpl?PNkXfh@WHu@SnFAKZ)FKy^KtB(ag3L!{APZ1ANDHa} zS%@k@7S%G|Vq`_fQ58~Zx%Q`_68L+4W?wS1xrSkeIfn6;4r@S`dCR>Oy=A@Sy%qHu zR81oE79(44sZAR$Bg2#fBsTRNstH*vTWqndmSOZv0fTDI4EV5(4-=Eo7UE*yVYJ@I*>WNTy|t(XN@PbKucOyq z#GtL=S+wtqScOrqt$i?zBW?Ro1cy;?E!x%qg(Z(H^g7V?6;NRE_$&+!v;);c!q+zN zs`@Vu*Sd7LP_#DGj@C603O@Mzi-UFi$zTX|hTkuav>R6MpOeO&VOOzfw7_~OiTSg7 z{WAYMo~`zG>B}|jYX9j3Gs~{=zm{0bvQOdLru*zF|D~isk=@|eWWCF=0=|`#E?m(v z%&7mjIk!Z%5Koolnff3>9uL%Rl=-D-@PAt3<;HJ37RED7 z(`&G*^U132zSw;gAFEiAZ|uG(Yoa$(Q!3b`QJbrnt;{atcCbj}Htu)|EVX~a(z3z0 z!vZ$?MK+LyJO&BiBdL2_<`*%7tiXG%+bHq4qbHs3z9t#*smk1%g{ex~Sdx+$t}Yxb zEhGWz(B$r2NJEz^B*_AKCH@K}L1v>#NqWS`8>NB~7i)x@tr`cUOS~852kam+? zE}3LK?kLFO-3G`7WK$2GbnvIO;Wa4Ng!GY-lu5dNr)t0wgFK5#X6R=?U7lncM2%2g zn!%kAJ+-I+_%}5PqzVu@Yaw!&KD4q98Su=qG$=I`s>Ce|^6O9sHhS(z8{w!H)IsfJ zEsDx`B-64OK1iTeT_g|cC_#a22qYV#tdqUrPO_{=VoU_sE?U_WeqSex$Qaov+qxH3 zR*cTymhgt}?yTh0C8}!xLdg&q(p@SgNy#yup+qtL zWSPURs_YtLT(TNN$@+18vdB?}uXp8PUwx9s;4HxB>&+>KXSvl})2i^{4%(E)96W!} z$i9s~sjtSS9({r{D?CGIA+|J>Y4nsMoK=z@O54|9rpCEtOw%wpQa1*nrH`s1gdmlH zg$J`MmJH6quv3&2Wj3{71{FQNwDRXo7wo3z+slh(3Du|>6|WgUyE6oawykuq|?c1DngSQ2-2a^ zXC&CFXCz92UD&Di+$ru<^)TS21Stjos4-WQD5cVt^x3K$ULpzrO(;1s>us=&>7IB- zZ6lizOClB`Y`d`zKGH%>NMt z=sA3TWn=0~s?kYe1UGZ=gnzZtCh(h^TRU;as-{w9JJl*jpiz#32pam8zM}&!@4l1X zpwR!Ua@32@t}3rSL<|lSLB8yYhlpiFe2oa00^@>YiAQC)Pe~9NT-Y?%c>k{TyF`|FHHopU4Q> zkbm}E{Wv$?aalW|nd3_*`mPSXIXKxlRW#Lkv*>2$TzT`yiK*utul9_w4@CW0Ex7lb z>ljbD(Diqx#+%1I6CIN&Z+BfjHQ7ArnG@@$I)2!7qw8kY zp@uPKexYSdX~2rTfV3_1WkM;LA|C;0GHF(>`t-@Q7hzI`HH@5NVrvX|y z1um0}LVg-p1?2+%;}#ox5m&Wr621?rPyODOT`cS;`}$n}{MHFJJ?h5G$S33;Bp@EY znOu~8QSOni$a3`O4(VXQi1_UGJvBkCy=Qsz3cCVZfoZk!N)d@lLMY@nu>wE+7|<3I zd=U#f$_zIE!ml^R^B=fj$8_~W9b?M>0@7+6bI@d;oJgDF%N|6Pal?4(c;`L72+t&D z;y{kzPj9`zYX1>@JYoFT+dkC${su5C$mgL^##CHKFj*a-A0YT;ij`Lg{szHG3S8nD z6G6f=n@f^ ziTDmK*}YNtXMm#r@a~T^S~WOsma~L+K)b>(%Ui`{0+kCyTpk)C5@#DnpAvkHIH7#WY^*wEnkXp0s{~P!m+`&B)yAJde>eQ*_slW4 zb$`C!dgP$S7!?A4$6b&dH~bd<&}|of1|tvp+2e1q>^t~vrB3)aP>lFLRwnrj>VPhc z$fQ2N-yXIYqg>(lhF1%-Flf}TIr%>8gD=>^L%uVl|2PN4DB}c%>eJ0iT=>IP!YIo@ zdyQ2lps{Kc1)3n&H=rB`;34DTgjU?=M zKkMor+V3j!xCU|m$f^obIM`Ukukru{`9%pn<6ORh-y5-)>EIQmTnHeVGJ;>Yh(j90 zui$acsbVc%E%$NoR9@C4!X}9h_+Iv8{gh^E_q6wJ(RO_DlvDffpjU##j=hY3f67*n z6ef7=gln+xsADe}EIbOix1~GHw|6b!b7(218PQCY&s3g2p*|;o=i?C1k;$SvSxmC3%>rhzF=y2SGtvB{X+voeXhX~ zJvl}Om${GbhvTDyc;fo^2NM@8j|_m3i5kI9KD3Wm#=hR%YORQX3SVGj6K<8_YSGN`c+==o!kh_=IcQKeia%e8Bzf_i|9?No}7X6&k(E& z3J!Se(Ae#Ehhhd}B|Q@)(SVM=aM%?yKH#(aa)>XTYDG+g0@%RYd@`(%2;xX!U7CiarRHIp`AYDD#D^(i$%^QkQ^3oho%*%HnT6 zZ*KW-vTroXbI>RwM0~6&;P(ro_(23U?K?JFHS-4n&y#z`yc>jdc~Iwa4IJC+aw!AQ zC)fGsi>#5GD<(?vp^mz~Ms9uI!rNcS_f3%3ZxQi*A|f|gvZEDxMY~N9xdJNWHb+lt zh1|##4pJW!hP?ZZc!Hd(AO8A+8du){0I#AUFFDtdpy+ZP?K`s1_aV+vjd-hIox|wF_%kbxV!N84b zA15%zl+pDM8X9M-TShkrjCtSoOw_$GeAie$!&gxCmRR*HUjea=DW8iBpD;FZSCjn- zpZfDeonfs0Y||@EFPs@?@8b7fuJ(zE0aNj;SaM&im=P-`x$C-Xy6Xwo5~ezC8fPmv z-f0e?odL08PVD-*m^gMUV6g}4HUu_FvtsvsanFpnC*YLtJNM2w_uh9Nm~kEm3>^#{ zK0WI^^Etz8=AP!D+0M0c0ddb4@LvIKT*ymfps8h6+cmVaz hu9pLY`vZrM2E^uj;<1Mo#?fQa}41NcB*H#nd&LwKo(ApSGP)Y=SMlR!-3 zkn3ZTN+cQ+ta)g$8`IjXOPB=iYyY8BMxhw)^cQ zod4c)&OMKN&pG$}zvKVTP5+I{ny=MFFz{Qq*T0SHW|()$B>2+>2Db*(!&$km{p~E0 zpl<`@(E)%`^Z-B^dJv!-Jp@pJ1_3J35WooZFhCVL2vCh40jNQb0@R|%0P4^ofO_Nx zXh6dNjp%WJCWKKWI*g*w5fqJ%q8M}x#Uc-iLr)A(KFU6c+u22~r%-tevz>Js?JPQx z$J&*JoSj48LC5nryBx-nJO+){v36-8w?N`Fp{LPG${&gDiea2l=t)#T=h3JV<}v6b zs-p8)vYMm=g5M4%`h1-r1X{m-S%aA z^<0KgGD&y=7w1~QJLjTj0+KUq86bHxT{#zRv1NQoGNEq`(7V4(4@hQgb3oz(urKnTQ=HJ(#$ZGeCGoU zlgQZE`o@sU!BKq^zATMm8?i^3k!Z^eY6(7_dA0?hT~dD!HryYtw@Zk`&Kp!7LGH_r z#E(fdntqC(rubBx!bjp)C8o>*XQ8do%oGKbIg4yrAgst%P{fI-WSG_W5DVsim2JI2 zD??9eN?T4OUdL-B1!yN8sEaJJ%g|{gERqC;R@>=WF~|WMvB$;zZcBA{yH_#sRO|-X2E_xHx z<1B?kzBja4!4a5M8svc(TMaR`)V8$#n?X9m&`Lz6=v(-+y)j*hkPvMB-Vj4@1fsq= zj=t)wN^MJndlgil%v7%x562da6V(DRXg5TJ^M4U9xnFm~N^OBC!S@_hsKeCH4TPx* z*C-T*J5-DD@sBCN4=W=g?QrC4RybGCXPL9iwxWJN*76yU7ylm$Rg$v$13~$7?+e?{ zg79Mwo+7%xh{f;JMJ81z!$E&Fi%VoluPz}h=-I`vcnhRhB2!%sn6SM5zigHkPGnCY zAXd~r7<9ok7;vG221cc`iq@gZU>MoilEYAll(gWif}otG)EI1)b|xo2=qi|c$2^a- zmGuQLSjJWbGYCNOhn|D{sA8COs&$q*SErDt0`sG z4BAKUjCH{crMR8gsG1u`s@QC~5K9*+U)g8I>s6*y_6+XKHM1ASAIu$Ou`VTQX*|@_ z0fq)T(=S7uRhpv;ncFXK3DjkVX_}ieTWIKv!M}H;rdP66&oWHEB8)NWHpZwN%9sU= z_XDG{Y4|qs{_vUb1FH-VJEL;X2Div6&yj}NqqeG%ghr1T%tZ_XD=xbuwM{<=F0pff zO3u%n&xc>;{hFq;aQ)8y>`Vz%t$r;Cl$Kn=$(Ce^r|B#%x5P!sYV>#TN=l44u{2IT z2I|yEi9g6UM|n_0QRve838kp;9E;fua>6yC=n^A@J2e=oiEP|ziCZYIfz~ce!rwrG z#x4tY*Q&Nl!nX%$@e7tX)9rrgtU9E_Z&}QC4~+D;=}H2Ofnqcy*{s^kfd2t&WHlNj zuTgyoe}`?AY;^~N@6V6TB`S70pqRq!wN#K!SG_&2#Btm_dIjvp*pfkUq)gwm#uC7(D`ijswsu4lwWX zx*3IPu0O|(Oqz)*i$f4JX$_dI<3hVWUm>b-NKQ3J;KPnW9-PDX~Vq1@|mdU zBUVqth}F%_=p&Cs3`ckhuIN)o8>aLbgX7wT5>__E+;w2JUBahE5iR3qQS*19CQ6?+H&5OPj zKu2k0Ewh;gp<7!Ki;X1-ELjr8${ufsB>`m&45DUyb^c9x*QC+by@ z#W=Ph88<9m4w~GHmq?@`17x^r9hu|N?l@M3GfI>2AD4DZ3?y!rM@bAV5nz9` z7O6w7iX_&6zq>3mCA?$=t|6-giWzC`4UpvcL|I&vT~^2yvNc6Op$3bT|5z3mVOLPf zoE9y<@l5neGHuZYJ+{Y%+eukD@b8U)f5v`O3yFOCvl`()lbwT#6pJ6JQ_0P6nzDcw z5YWU6>|Lh8J+nAqUZjb~R;h3&2FOIgt8)>-aFv(%e3&PR_Vrw>K;1sl>&8kid z#KmtQF5>Zj7N^PUiDfhaqG){FERKeZdc16oK?mhaA6gsOXc@lQ7|S6&wwHY~>|oRw z7UIw5tGU?&$t&L_m04x5nXfj-;D0X93MMW7ygUw^^R7%VXhDY|q(ig=X#IE7ybiL2 zovX-_5Eiy}>22FX1w%aiab*Jtx~DD@k2YxWJ$D&sg?KtT5|^FPdIxTx>SG)!qnDg zvw{xqugblP&i$n5_`z>R_!)p~KAZFZ^@}gQ5PnW(oS#(cz?eRSUr;=K2*1GBsw~TX zDRQP0&R>gTFpd!*5r~9XGJahgljC#t~*S4-J-%z){vGwkn@^$M3MA%;=fb4((9XyjADf|c?K2=*s zM^~S-wX;p=5nd%2-r3zH2vCz4A)5eVn@`%YV^^Qk$HP78@Nt_3p`4Ipgv9mUC;X7i zE)j5=SqJba8RiozzrAZStn2UYb2uUaL9XA~%Qr9(?_lMY{#~t`g&loP;XPnH3xAIB z@tV~;Sl5g?))P6UP8z7Zrb`}`PU$lCtsba&Pj7Np!1bGTRi8G*53(~_otu5M)7{|S zd8F~t9#7kpCV7y9Yx=O$({|*(XClYg)3I0SHLcbhsvN3xr+Q42>N%dBCw4utYZQ%{ zPg}*kiyxX=U2*f^Nm;jn6Dw-(5 zHG+7R!C5V>Xjv4MU0wZ3weC{6$Y3%i$CIqf2gYji5Z<2o%dAD+4dV z&2VKm(Mrq%4XO<-q*g0OUV*TxUBfk1;frm#k~>fqXB?i}9(yPHW_v8&+pYxN7Dtpx z0(VB(6=~(|JiggZECZ@RV&`wC;{1+y4m69zJC*`54HhGu6eyrULnSLjI}9dX9_>^6&M6_9C3XG{Q;R{4#{iJq^K1yg{2yYVviNb8T zkMHU3>lA)VFtiYd*H^$D1%iVFh*(SU!Y*9~4~CV%pW|J?4>0d3bO)92;$lo4T{vaT z9y3oHbG*hJZ0mZB%^gqKoXDk;a1>J^lm%}Q95LbyFGyHy-q|VNKLH}RDdLqSp35g9p86g>o)qy^4oO~EOL+o$OE;J1ZD6A(!gwZ_Xjl-~tWdVf zSX|vRN2&xXt>e8tYgzU)d~th$R1Jvs@f+LEb1pAPp|t|k5s3mRJ23uB2=7k_;r(+$ zc;U|>yf_w3^{0g4uY~yhsbTnkA>$7rJcu${w?v=)b3;u2jIhO-;sVM~jV5~`{1*VI zfr(@+ZjL`WG#029ikAvxe`!x4mPWeVyO^vG>{}6GpqnQnvBJZYT*qReir8^)tHasd z(F6B?43N9Wr~4cA9LM6^eTD3P+_ujxjR*Wi{ORF8(a|gT=6)~xL;T}!pO+>9cpEwe;|*h@Z^CXNwa}<@A%ONI(6({sH_}7{1s%qf?qtE$bO1{eKgKR z+9X=&saN0tt?K6qmWGssK13|J1AyZVLY!R(2y$2g2~x4Sk_i4;4k8FRXgp{^y`Uq2 zbRF3Wa%td>V~%n|s9@xPKPDsa#h|C_8v@BUsABr#SsZ-L(5FPsxeqV{ zObcP8KfB(p4}L}J$L@LXy2RQwb}hVjN^y%Z2|mZzIXiFHATEfI0zwV{iY5snWI$Kh zrHB_1$#xOJ!`r%4)B<1S^U_~iRT2d_W)$c;;b zmg1irvlQRB^vHV`2i_mObmP*{jZ05{aQ5i?hhP2R$phEV9RjxNFSvo>`ni4nk(1Xi zK6@SS`(Wsi4~M?@{>aleT(I($XFojf@b%+k*I$12-GTkIy%b1@3JLxCiz4{t=d;LXc=sC|2-T($9LQ|pzaPd~##n~aA?61Zp%zw%V8ayj?{$WJMfjloM!#N!_yuh2s3 zg?4Tw-gz>Si{)_6h#CLu$U;J;?T?;p6Q$0LBO9WE`2ce~b~J6&IT@EDwlgGe1(FjT zEdKpdS@Wz6;)4Io25}(?DFQ?OjYwP}8uepbb1JqVi3k>ZpGzAqJ6^BwHZ@Nz+dyUS zF_QMbU)a&!-PzsNy1CUkw^P)T`6VqOgI5!Shz?;5i)&BC%ufzep}d@S+37`hPn9%^ zDl}9@Z>K07uOD53pE?o2%E_LvY4``DjY_clr^N1Bf|I5ZX}I|521O0%$Yup4WlhJ4 zC*$yQCyNwFM8{C{T>SaT!X!IuWr7)>#t38~2qm{OJYvW`%*z6?w<72UU#Plhx!87L zooJwz7zjle-m)yM)c^XC^aS|&94?XQ6q*UxKz&Zh264hhf*>__PneK`Ss~bRDw0*> zs#D4Ae7yOTO>QUrtyBP;GyaEDDH7>6KrI-TKX-+bl1jG%|L)9Cq0eyVxmbL3A4M|@ zS_}4=`h_mAnY_8R?%pBv;kUnAQp1yFJ{^JW-CF`qwTjXLh<>3PR_uukYpcL4~G0tq7VVLWrT zKy`@lttIH=IO=(`>x4)=Nzk-9oE8xy@DK>mUn%*VPI!ro z&yl5E6|HqZr!5PmOMru1d*T&&p0Ww1(DEwUGz&CB6?uR!`>fwY+dX)S4kG^^-`fT)R~O;$B>eog9o>Bb$w8l#CW%kcw?pXdZ*y+- zNp|dV`sCZY9nQ{fLFgdt5e{dY;B@Tn2C_`(>V?-$?0PY2W#}^yeUtFX$%h`H%K=Pn zo!z?}@NEXf2x(N$=DxPxE}zt~b%y}*w{$t%oK68h_u@j;HK4=)jAOlg{DT)8IaeH; ze6xg!iuS~MB1X&IF1XE_&)w(EDZ6a;&ab%K_U78H-fcbJHQT+WUN58nL{`DFnvZKa zmfggDqF4gsy)4VdexlI8FhvC*Q3)WH2cV@mCZd@gkbNwJW?u90Ms6X%epoW^V}+X4 zxNfE}QoTEBhBr)@N-11C!$(d;TV{COgdt~!R}L1=@LIRxrcR;a2ILNJ z&J-`XlDlDGl~oY1{O9w6 zaZ(=V={T|ViLIkMM|#FKO(vD#+6#sFh41Ac^XQ6mHJ6uNQ8Y{|)=wzbd#%mWR@;Qt zHf?R6u(o?UHcxl-Omy^kxA#tU^xb5boop2cMWBgY#lftOt0#~3+!oHOSPxCIax2zc zSXpK;9gBZF-gDQ{WcZk)(;wP9wAWKLtxKEKrOoJ#$CQsNJ*g)$pU6Cs^F+?5W32p2 zeBM?40DuH-qOd;m|~8t7+&E`E1otjnlvrC zSOLl_*{vK@!ev{b#rS@zOUWb@z*c7Gyrey&oz7Z1k+t+{*76B;`e5aRDc!xwV|^>n zaxU}i_KOXZdCQ+@9L+p#yWI48!_PK)8=AcvHcmBc@>aAAu6d+(CczAkb#JE#!)mwG zz3VM~j7K@Ta8jRrML&O9zhFYY;2ig|{Ji{S^?CKhyS*!$y)A8t-j1!_P2E!~yRYPL gyQ=Sj&sJs!3!mPySKNxgjo)7%(aJJ>JiR#o8%?4k5dZ)H delta 7514 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 7.4: continue ang = (math.atan2(dy, dx) / (2 * math.pi)) % 1.0 @@ -164,7 +165,10 @@ def fan(c, cx, cy, accent, burnt=False): c.put(cx - 1, cy - 1, 'w') -def gpu_front(accent, accent_dark, burnt=False): +FAN_LAYOUT_SMALL = {1: ([(26, 13)], 9), 2: ([(17, 13), (34, 13)], 7), 3: ([(14, 13), (26, 13), (38, 13)], 5)} + + +def gpu_front(accent, accent_dark, burnt=False, tier=1): """显卡正面(48×32,3×2 格),略微俯视:石墨色散热罩带斜切角与品牌色斜条,两个七叶风扇, 右端露出鳍片,顶沿露出铜热管和 8 针供电口,前沿是带元件的 PCB 和逐根画出的金手指。每格中心都不透明。""" c = Canvas(W, H) @@ -182,26 +186,33 @@ def gpu_front(accent, accent_dark, burnt=False): for y in range(TOP0 + 2, TOP1): c.put(x, y, 'g' if (x - (R - 4)) % 2 == 0 else 'k') c.rect(R - 5, TOP0 + 2, R - 5, TOP1 - 1, 'x') - # 中间的筋条(两个风扇之间)与上下沿的槽 - for y in range(TOP0 + 3, TOP1 - 2): - c.put(25, y, 'k'); c.put(26, y, 'x') + count = (1, 2, 3, 3)[tier] + fans, fr = FAN_LAYOUT_SMALL[count] + # 风扇之间的筋条 + for a, b in zip(fans, fans[1:]): + mx = (a[0] + b[0]) // 2 + for y in range(TOP0 + 3, TOP1 - 2): + c.put(mx, y, 'k'); c.put(mx + 1, y, 'x') # 品牌色斜条(从前沿向左上延伸)与前沿色条 for x in range(L + 1, R - 5): c.put(x, TOP1 - 1, accent if x % 9 else accent_dark) c.put(x, TOP1, accent_dark) - for cx, cy in FANS: - fan(c, cx, cy, accent) - for dx, dy in ((-7, -7), (7, -7), (-7, 7), (7, 7)): # 风扇四角的固定孔 - c.put(cx + dx, cy + dy, 'n' if dx + dy else 'k') + for cx, cy in fans: + fan(c, cx, cy, accent, R=fr) + if count < 3: + for dx, dy in ((-7, -7), (7, -7), (-7, 7), (7, 7)): # 风扇四角的固定孔 + c.put(cx + dx, cy + dy, 'n' if dx + dy else 'k') # 顶沿:铜热管端头 + 8 针供电口(带针脚) for x0 in (L + 6, L + 8, L + 10, L + 12): c.put(x0, TOP0 - 1, 'p'); c.put(x0 + 1, TOP0 - 1, 'q') - for x in range(L + 18, L + 28): - c.put(x, TOP0 - 1, 'n') - for x in range(L + 18, L + 28, 2): - c.put(x, TOP0 - 2, 'k') - for x in range(L + 19, L + 28, 2): - c.put(x, TOP0 - 2, 'Y') + # 供电口:低端 6 针;中端、高端 8 针;旗舰两个 8 针(每针占两像素) + for left, pins in (((L + 22, 6),) if tier == 0 else ((L + 18, 8),) if tier < 3 else ((L + 8, 8), (L + 25, 8))): + for x in range(left, left + pins * 2): + c.put(x, TOP0 - 1, 'n') + for x in range(left, left + pins * 2, 2): + c.put(x, TOP0 - 2, 'k') + for x in range(left + 1, left + pins * 2, 2): + c.put(x, TOP0 - 2, 'Y') # 前沿:PCB(绿)带元件,之后金手指 for x in range(L, R + 1): c.put(x, TOP1 + 1, 'G' if x % 7 else 'g2'); c.put(x, TOP1 + 2, 'g2') @@ -221,7 +232,7 @@ def gpu_front(accent, accent_dark, burnt=False): c.put(x, y, 'c') for x in range(L + 1, R - 5): c.put(x, TOP1 - 1, 'e') - for cx, cy in FANS: + for cx, cy in fans: for dx, dy in ((0, 0), (1, 1), (-1, 1), (2, -2), (-2, -2)): c.put(cx + dx, cy + dy, 'c') outline(c) @@ -298,10 +309,10 @@ def overlay(): return Canvas(W, H) -def ov_fan(kind): +def ov_fan(kind, count=2): """风扇叠加:1 积灰(叶片上一层灰),2 叶片缺角(边缘缺一块并露出黑底)。""" c = overlay() - for cx, cy in FANS: + for cx, cy in FAN_LAYOUT_SMALL[count][0]: if kind == 1: for dx, dy in ((-4, -2), (-2, -4), (3, -3), (4, 1), (-3, 3), (2, 4), (-5, 0), (0, 5), (1, -5), (-1, 2), (5, -1), (3, 2)): c.put(cx + dx, cy + dy, 'l') @@ -363,7 +374,7 @@ def ov_sticker(kind): return c -MODELS = ['RZX 50', 'RZX 60', 'RZX 70', 'RZX 80 Ti', 'RZX 90', 'RZ 470', 'RZ 580', 'RZ 6800', 'RZ 7900'] +MODELS = ['RZX 60', 'RZX 70', 'RZX 80', 'RZX 90', 'RZ 70', 'RZ 80', 'RZ 800', 'RZ 900'] def rig(): @@ -503,24 +514,43 @@ def key(model): return model.replace(' ', '').lower() +def guide(): + """鉴定手册(16×16,一格):竖放的小册子,封面带品牌色条,书脊在左。""" + c = Canvas(16, 16) + c.box(2, 1, 13, 14, 'b') + c.rect(3, 2, 4, 13, 'd') # 书脊 + c.rect(5, 2, 12, 2, 'h') + c.rect(6, 4, 11, 5, 'G') # 封面色块 + c.rect(6, 4, 11, 4, 'g2') + for y in (7, 9, 11): # 文字行 + c.rect(6, y, 11 if y != 11 else 9, y, 'm') + c.put(12, 13, 'd') + outline(c) + return c + + SPRITES = { - 'gpu_probidia_f': lambda: gpu_front('G', 'g2'), - 'gpu_probidia_b': lambda: gpu_back('G', 'g2'), - 'gpu_pmd_f': lambda: gpu_front('R', 'r2'), - 'gpu_pmd_b': lambda: gpu_back('R', 'r2'), + 'gpu_guide': guide, 'gpu_burnt_f': lambda: gpu_front('e', 'c', burnt=True), 'gpu_burnt_b': lambda: gpu_back('e', 'c', burnt=True), + 'gpu_probidia_b': lambda: gpu_back('G', 'g2'), + 'gpu_pmd_b': lambda: gpu_back('R', 'r2'), 'rig': rig, 'terminal': terminal, } +for _tier in range(4): + SPRITES['gpu_probidia_f_t%d' % _tier] = (lambda t=_tier: gpu_front('G', 'g2', tier=t)) + SPRITES['gpu_pmd_f_t%d' % _tier] = (lambda t=_tier: gpu_front('R', 'r2', tier=t)) # 叠加图:和底图同尺寸,位置 (0,0) 对齐,只画变化的像素,不参与判格 OVERLAYS = { - 'gpu_ov_fan1': lambda: ov_fan(1), 'gpu_ov_fan2': lambda: ov_fan(2), 'gpu_ov_fin1': lambda: ov_fingers(1), 'gpu_ov_fin2': lambda: ov_fingers(2), - 'gpu_ov_brk1': lambda: ov_bracket(1), 'gpu_ov_brk2': lambda: ov_bracket(2), - 'gpu_ov_stk1': lambda: ov_sticker(1), 'gpu_ov_stk2': lambda: ov_sticker(2), + 'gpu_ov_brk1': lambda: ov_bracket(1), + 'gpu_ov_stk2': lambda: ov_sticker(2), } +for _n in (1, 2, 3): + OVERLAYS['gpu_ov_fan1_%d' % _n] = (lambda n=_n: ov_fan(1, n)) + OVERLAYS['gpu_ov_fan2_%d' % _n] = (lambda n=_n: ov_fan(2, n)) for _m in MODELS: OVERLAYS['gpu_ov_txt_' + key(_m)] = (lambda m=_m: ov_text(m, False)) OVERLAYS['gpu_ov_txs_' + key(_m)] = (lambda m=_m: ov_text(m, True)) @@ -551,13 +581,13 @@ if __name__ == '__main__': if oc.px[y][x] is not None: b.px[y][x] = oc.px[y][x] return b - stack('gpu_probidia_f', 'gpu_ov_fan1', 'gpu_ov_fin1', 'gpu_ov_brk1').png(os.path.join(sys.argv[2], 'prev_front_worn.png'), scale=6, bg=(0xA0, 0xA8, 0x9C)) - stack('gpu_pmd_f', 'gpu_ov_fan2', 'gpu_ov_fin2', 'gpu_ov_brk2').png(os.path.join(sys.argv[2], 'prev_front_fake.png'), scale=6, bg=(0xA0, 0xA8, 0x9C)) - stack('gpu_probidia_b', 'gpu_ov_txt_rzx80ti').png(os.path.join(sys.argv[2], 'prev_back_ok.png'), scale=6, bg=(0xA0, 0xA8, 0x9C)) - stack('gpu_pmd_b', 'gpu_ov_txs_rz6800', 'gpu_ov_stk1', 'gpu_ov_stk2').png(os.path.join(sys.argv[2], 'prev_back_fake.png'), scale=6, bg=(0xA0, 0xA8, 0x9C)) + stack('gpu_probidia_f_t1', 'gpu_ov_fan2_2', 'gpu_ov_fin1', 'gpu_ov_brk1').png(os.path.join(sys.argv[2], 'prev_front_worn.png'), scale=6, bg=(0xA0, 0xA8, 0x9C)) print(sys.argv[2]) else: out = os.path.normpath(os.path.join(here, '..', 'src', 'Decentralized', 'ModFiles', 'Textures', 'Items')) + for f in os.listdir(out): # 清掉旧的显卡图,避免留下不再使用的文件 + if f.startswith('gpu_'): + os.remove(os.path.join(out, f)) for name, make in SPRITES.items(): canvas = make() check_cells(canvas, name) @@ -568,8 +598,16 @@ if __name__ == '__main__': for name, make in big.BIG.items(): make().png(os.path.join(out, name + '.png')) for name, make in big_cases.CASES.items(): - if not name.startswith('gpu_big_ov_print_'): + if name.startswith('gpu_big_ov_fan_'): + continue + if not name.startswith('gpu_big_ov_print_') and name in ('gpu_big_ov_fin_dim', 'gpu_big_ov_fin_oxide', 'gpu_big_ov_brk_scratch', 'gpu_big_ov_seal_missing'): make().png(os.path.join(out, name + '.png')) + # 风扇叠加按风扇数各出一套:叠加模块里的风扇位置是模块级变量,换成对应布局后再画 + for count, (centres, radius) in big.FAN_LAYOUT.items(): + big_cases.FANS = list(centres) if len(centres) > 1 else [centres[0], centres[0]] + big_cases.FR = radius + for fname, short in (('fan_dust1', 'fan_dust1'), ('fan_dust2', 'fan_dust2'), ('fan_chip', 'fan_chip')): + getattr(big_cases, fname)().png(os.path.join(out, 'gpu_big_ov_%s_%d.png' % (short, count))) for m in MODELS: for style in ('normal', 'skew', 'stamp'): big_cases.print_overlay(m, style).png(os.path.join(out, 'gpu_big_ov_print_%s_%s.png' % (style, key(m)))) diff --git a/src/Decentralized/GpuInspectView.cs b/src/Decentralized/GpuInspectView.cs index eff3ea7..308a085 100644 --- a/src/Decentralized/GpuInspectView.cs +++ b/src/Decentralized/GpuInspectView.cs @@ -16,7 +16,8 @@ namespace Decentralized /// public sealed class GpuInspectView : MonoBehaviour { - private const float RowH = 30f, CardScale = 3f; + private const float RowH = 27f, CardScale = 2.7f, PanelTop = -86f; + private const int RowCount = 8; private static GpuInspectView instance; private RectTransform root, cardRoot; private Button flip; @@ -26,9 +27,10 @@ namespace Decentralized private bool hidGlass; private Transform buttonTemplate; private TMP_FontAsset font; - private readonly TextMeshProUGUI[] rowName = new TextMeshProUGUI[6], rowText = new TextMeshProUGUI[6]; - private readonly Button[] rowButton = new Button[6]; - private readonly TextMeshProUGUI[] rowButtonText = new TextMeshProUGUI[6]; + private readonly TextMeshProUGUI[] rowName = new TextMeshProUGUI[RowCount], rowText = new TextMeshProUGUI[RowCount]; + private readonly Button[] rowButton = new Button[RowCount]; + private readonly TextMeshProUGUI[] rowButtonText = new TextMeshProUGUI[RowCount]; + private TextMeshProUGUI serialText; public static void Ensure() { @@ -83,18 +85,17 @@ namespace Decentralized string P = "gpu_big_ov_"; if (!Items.IsBack(item)) { - if (l.Fan == 1) o.Add(P + "fan_dust2"); - if (l.Fan == 2) { o.Add(P + "fan_dust1"); o.Add(P + "fan_chip"); } + int n = Items.FansOf(u); + if (l.Fan == 1) o.Add(P + "fan_dust2_" + n); + if (l.Fan == 2) { o.Add(P + "fan_dust1_" + n); o.Add(P + "fan_chip_" + n); } if (l.Fingers == 1) o.Add(P + "fin_dim"); if (l.Fingers == 2) o.Add(P + "fin_oxide"); if (l.Bracket == 1) o.Add(P + "brk_scratch"); - if (l.Bracket == 2) o.Add(P + "brk_port"); } else { string model = (l.Print == 1 && u.FakeOf != null ? u.FakeOf : u.Model).ToLowerInvariant(); o.Add(P + "print_" + (l.Print == 2 ? "skew_" : l.Print == 1 ? "stamp_" : "normal_") + model); - if (l.Sticker == 1) o.Add(P + "sticker_hand"); if (l.Sticker == 2) o.Add(P + "seal_missing"); } return o; @@ -160,30 +161,40 @@ namespace Decentralized root.localPosition = Vector3.zero; cardRoot = new GameObject("Card", typeof(RectTransform)).GetComponent(); cardRoot.SetParent(root, false); - cardRoot.localPosition = new Vector3(0, 85, 0); + cardRoot.localPosition = new Vector3(0, 95, 0); buttonTemplate = m.appraisalPanel.transform.Find("buttonSend"); + // 贴纸上的序列号:随卡变化,运行时用文字写在贴纸的空白处 + serialText = MakeText(root, "Serial", Vector2.zero, new Vector2(48 * CardScale, 8 * CardScale), TextAlignmentOptions.Center, 20); + serialText.color = new Color(0.1f, 0.1f, 0.13f); + serialText.fontStyle = FontStyles.Bold; + serialText.overflowMode = TextOverflowModes.Overflow; + serialText.rectTransform.sizeDelta = new Vector2(48 * CardScale, 14 * CardScale); if (buttonTemplate == null) return; font = buttonTemplate.GetComponentInChildren()?.font; + if (font != null) serialText.font = font; // 标签区:深色底加浅色边框,和上面的大图分开 - MakeRect(root, "LabelFrame", new Vector2(0, -201), new Vector2(648, 194), new Color(0.78f, 0.68f, 0.45f, 1f)); - MakeRect(root, "LabelBack", new Vector2(0, -201), new Vector2(640, 186), new Color(0.10f, 0.11f, 0.14f, 0.96f)); - flip = MakeButton(root, "Flip", new Vector2(0, -326), new Vector2(200, 34), out flipText); + float panelH = RowCount * RowH + 10f, panelY = PanelTop - panelH / 2; + MakeRect(root, "LabelFrame", new Vector2(0, panelY), new Vector2(648, panelH + 8), new Color(0.78f, 0.68f, 0.45f, 1f)); + MakeRect(root, "LabelBack", new Vector2(0, panelY), new Vector2(640, panelH), new Color(0.10f, 0.11f, 0.14f, 0.96f)); + flip = MakeButton(root, "Flip", new Vector2(0, PanelTop - panelH - 24), new Vector2(200, 30), out flipText); flip.onClick.AddListener(() => { if (shown != null) Items.Flip(shown); }); - for (int i = 0; i < 6; i++) + for (int i = 0; i < RowCount; i++) { int row = CardLabels.Rows[i]; - float y = -126 - i * RowH; - rowName[i] = MakeText(root, "RowName" + i, new Vector2(-255, y), new Vector2(110, RowH), TextAlignmentOptions.Left, 24); - rowText[i] = MakeText(root, "RowText" + i, new Vector2(-30, y), new Vector2(330, RowH), TextAlignmentOptions.Left, 24); - rowButton[i] = MakeButton(root, "RowButton" + i, new Vector2(245, y), new Vector2(110, RowH - 4), out rowButtonText[i]); + float y = PanelTop - 5 - RowH * (i + 0.5f); + rowName[i] = MakeText(root, "RowName" + i, new Vector2(-255, y), new Vector2(110, RowH), TextAlignmentOptions.Left, 22); + rowText[i] = MakeText(root, "RowText" + i, new Vector2(-30, y), new Vector2(330, RowH), TextAlignmentOptions.Left, 22); + rowButton[i] = MakeButton(root, "RowButton" + i, new Vector2(245, y), new Vector2(110, RowH - 3), out rowButtonText[i]); rowButton[i].onClick.AddListener(() => Log.Guard("标签栏", () => OnRowButton(row))); } } - private static string ValueText(int row, int value) => - row == CardLabels.RowSpec ? "" : L.T("lbl." + (row == CardLabels.RowFan ? "fan" : row == CardLabels.RowFingers ? "fingers" : row == CardLabels.RowBracket ? "bracket" : row == CardLabels.RowPrint ? "print" : "sticker") + "." + value); + private static string RowKey(int row) => row == CardLabels.RowSpec ? "spec" : row == CardLabels.RowBuild ? "build" : row == CardLabels.RowFan ? "fan" : row == CardLabels.RowFingers ? "fingers" + : row == CardLabels.RowBracket ? "bracket" : row == CardLabels.RowPrint ? "print" : row == CardLabels.RowSerial ? "serial" : "seal"; - private static string RowName(int row) => L.T("lbl.row." + (row == CardLabels.RowSpec ? "spec" : row == CardLabels.RowFan ? "fan" : row == CardLabels.RowFingers ? "fingers" : row == CardLabels.RowBracket ? "bracket" : row == CardLabels.RowPrint ? "print" : "sticker")); + private static string ValueText(int row, int value) => row == CardLabels.RowSpec ? "" : L.T("lbl." + RowKey(row) + "." + (row == CardLabels.RowSeal && value == 1 ? 0 : value)); + + private static string RowName(int row) => L.T("lbl.row." + RowKey(row)); /// 现场有没有卖家 / 鉴定客户在:决定"指出"按钮是否出现。 private static bool CanPoint(GameItem item) @@ -203,37 +214,38 @@ namespace Decentralized int exposed = Items.Exposed(item); bool owned = GeneralHelper.IsItemOwned(item); bool canPoint = CanPoint(item), canEdit = owned && HasLabeler(); - for (int i = 0; i < 6; i++) + for (int i = 0; i < RowCount; i++) { int row = CardLabels.Rows[i]; rowName[i].text = RowName(row); rowName[i].color = new Color(1f, 0.85f, 0.45f); string text; Color color = new Color(0.96f, 0.98f, 1f); - if (claim == null) - { - text = row == CardLabels.RowSpec ? DisplayModel(real.Model) : ValueText(row, real.Get(row)); - } + string Show(Claim c) => row == CardLabels.RowSpec ? DisplayModel(c.Model) : ValueText(row, c.Get(row)); + if (claim == null) text = Show(real); else if ((exposed & row) != 0) { - int r = row == CardLabels.RowSpec ? 0 : real.Get(row); - text = row == CardLabels.RowSpec ? DisplayModel(real.Model) : ValueText(row, r); - bool lied = row == CardLabels.RowSpec ? claim.Value.Model != real.Model : claim.Value.Get(row) != r; - if (lied) { color = new Color(1f, 0.45f, 0.4f); text += L.T("lbl.said", row == CardLabels.RowSpec ? DisplayModel(claim.Value.Model) : ValueText(row, claim.Value.Get(row))); } + text = Show(real); + bool lied = row == CardLabels.RowSpec ? claim.Value.Model != real.Model : claim.Value.Get(row) != real.Get(row); + if (lied) { color = new Color(1f, 0.45f, 0.4f); text += L.T("lbl.said", row == CardLabels.RowBuild ? L.T("lbl.tier." + claim.Value.Tier) : Show(claim.Value)); } else color = new Color(0.5f, 1f, 0.55f); } - else - { - text = row == CardLabels.RowSpec ? DisplayModel(claim.Value.Model) : ValueText(row, claim.Value.Get(row)); - } + else text = Show(claim.Value); rowText[i].text = text; rowText[i].color = color; - bool show = row != CardLabels.RowSpec && ((canPoint && claim != null && (exposed & row) == 0) || canEdit || (canPoint && claim == null)); - bool point = canPoint && !canEdit; - rowButton[i].gameObject.SetActive(row != CardLabels.RowSpec ? ((canPoint && (exposed & row) == 0) || canEdit) : canEdit); + bool editable = row != CardLabels.RowBuild; + rowButton[i].gameObject.SetActive(canEdit ? editable : canPoint && (exposed & row) == 0); rowButtonText[i].text = L.T(canEdit ? "lbl.edit" : "lbl.point"); } if (flipText != null) flipText.text = L.T(Items.IsBack(item) ? "inspect.flip.front" : "inspect.flip.back"); + // 贴纸上的序列号:只在背面显示 + if (serialText != null) + { + serialText.gameObject.SetActive(Items.IsBack(item) && !u.Dead); + serialText.text = CardLabels.SerialText(u); + // 贴纸空白处中心在大图 (142, 91):卡片坐标以图中心为原点,y 向上 + serialText.rectTransform.localPosition = new Vector3((142 - 96) * CardScale, 95 + (64 - 91) * CardScale, 0); + } } private static string DisplayModel(string model) => Items.DisplayModel(model); @@ -244,7 +256,7 @@ namespace Decentralized var item = shown; if (GeneralHelper.IsItemOwned(item)) { - // 标签机:改说法,每按一次换下一个取值(型号是在九个型号里轮换) + // 标签机:改说法,每按一次换下一个取值(型号是在八个型号里轮换) var u = Items.ToUnit(item); var cur = Items.GetClaim(item) ?? Claim.Truth(u); if (row == CardLabels.RowSpec) @@ -252,7 +264,7 @@ namespace Decentralized var models = Hardware.Specs.Values.Where(s => !s.Asic).Select(s => s.Model).ToList(); Items.EditClaim(item, row, 0, models[(models.IndexOf(cur.Model) + 1) % models.Count]); } - else Items.EditClaim(item, row, (cur.Get(row) + 1) % 3); + else Items.EditClaim(item, row, row == CardLabels.RowSeal ? (cur.Get(row) == 0 ? 2 : 0) : row == CardLabels.RowBracket ? (cur.Get(row) + 1) % 2 : (cur.Get(row) + 1) % 3); EmporiumAudioPlayer.Instance?.audioLabeler?.Play(); return; } diff --git a/src/Decentralized/Items.cs b/src/Decentralized/Items.cs index e4762d7..2d2d653 100644 --- a/src/Decentralized/Items.cs +++ b/src/Decentralized/Items.cs @@ -15,6 +15,7 @@ namespace Decentralized { public const string Terminal = "pd_terminal"; public const string Rig = "pd_rig"; + public const string Guide = "pd_gpu_guide"; public const string GpuPrefix = "pd_gpu_"; public const string HealthTag = "PD_HEALTH"; @@ -36,6 +37,7 @@ namespace Decentralized { dir.Add(Terminal, CreateTerminal); dir.Add(Rig, CreateRig); + dir.Add(Guide, CreateGuide); foreach (var spec in Hardware.Specs.Values.Where(s => !s.Asic)) { var s = spec; @@ -61,6 +63,20 @@ namespace Decentralized return item; } + /// 显卡鉴定手册:档次对照、序列号规则、外观折扣。和游戏里的鉴定手册一样,是一件物品,说明里就是内容。 + private static GameItem CreateGuide() + { + var item = ItemDirectory.CreateEmptyItem(Guide); + item.SetSpriteAndShapeFromMod(ModInfo.Id, "gpu_guide"); + item.name = L.T("item.guide.name"); + item.shortDescription = L.T("item.guide.desc"); + item.unitValue = 0; + item.EnableTag(GeneralHelper.IMPORTANT_TAG); + item.EnableTag(TypeHelper.NOT_FOR_RESALE); + ModHelper.SetSource(item, ModInfo.Id, ModInfo.Name); + return item; + } + // ---------- 显卡 ---------- /// RZX70 → "RZX 70",RZ800 → "RZ 800"。 @@ -129,7 +145,7 @@ namespace Decentralized if ((lies & r) != 0 && rng.Chance(CustomerSpotChance)) { found |= r; - if (r != CardLabels.RowSpec && CardLabels.IsFakeSign(r, Claim.Truth(u).Get(r))) found |= CardLabels.RowSpec; + if (r != CardLabels.RowSpec && CardLabels.IsEvidence(r, claim.Value, Claim.Truth(u))) found |= CardLabels.RowSpec | CardLabels.RowBuild; } if (found == 0) return; item.ModifyTag(ExposedTag, t => t.Enable().SetInt(exposed | found)); @@ -217,7 +233,7 @@ namespace Decentralized public static Unit ToUnit(GameItem item) { string model = item.identifier.Substring(GpuPrefix.Length); - model = Hardware.Specs.Keys.First(k => k.ToLowerInvariant() == model); + model = Hardware.Specs.Keys.FirstOrDefault(k => k.ToLowerInvariant() == model) ?? "RZX60"; // 旧版本存档里的型号已改名,当作低端卡 var u = new Unit { Model = model, Health = 100 }; if (item.IsTag(HealthTag)) u.Health = item.GetTagReadonly(HealthTag).GetDouble(); if (item.IsTag(FakeTag)) u.FakeOf = item.GetTagReadonly(FakeTag).GetString(); @@ -253,7 +269,7 @@ namespace Decentralized item.SetSpriteAndShapeFromMod(ModInfo.Id, item.IsTag(BackTag) ? "gpu_burnt_b" : "gpu_burnt_f"); return; } - item.SetSpriteAndShapeFromMod(ModInfo.Id, (label.Brand == Hardware.Probidia ? "gpu_probidia" : "gpu_pmd") + (item.IsTag(BackTag) ? "_b" : "_f")); + item.SetSpriteAndShapeFromMod(ModInfo.Id, LookKeys(item, new List())); SyncValue(item); } @@ -266,6 +282,9 @@ namespace Decentralized } /// 当前面的底图名与叠加图名:正面三个维度,背面丝印与贴纸;烧毁的卡不叠。 + /// 实物上的风扇数:由真实芯片的档次决定(低档次的板子套高档次的壳,风扇数露馅)。 + public static int FansOf(Unit u) => Hardware.FanCount[Hardware.Specs[u.FakeOf ?? u.Model].Tier]; + public static string LookKeys(GameItem item, List overlays) { var u = ToUnit(item); @@ -275,18 +294,18 @@ namespace Decentralized if (u.Dead) return back ? "gpu_burnt_b" : "gpu_burnt_f"; if (!back) { - if (l.Fan > 0) overlays.Add("gpu_ov_fan" + l.Fan); + if (l.Fan > 0) overlays.Add($"gpu_ov_fan{l.Fan}_{FansOf(u)}"); if (l.Fingers > 0) overlays.Add("gpu_ov_fin" + l.Fingers); - if (l.Bracket > 0) overlays.Add("gpu_ov_brk" + l.Bracket); + if (l.Bracket > 0) overlays.Add("gpu_ov_brk1"); } else { // 丝印:0 标称型号;1 印的是真实芯片型号;2 标称型号但字歪(重印过) string model = l.Print == 1 && u.FakeOf != null ? u.FakeOf : u.Model; overlays.Add((l.Print == 2 ? "gpu_ov_txs_" : "gpu_ov_txt_") + model.ToLowerInvariant()); - if (l.Sticker > 0) overlays.Add("gpu_ov_stk" + l.Sticker); + if (l.Sticker == 2) overlays.Add("gpu_ov_stk2"); } - return brand + (back ? "_b" : "_f"); + return brand + (back ? "_b" : "_f_t" + Hardware.Specs[u.FakeOf ?? u.Model].Tier); } public static Sprite ModSprite(string key) diff --git a/src/Decentralized/ModFiles/Localization/en.csv b/src/Decentralized/ModFiles/Localization/en.csv index ad2b179..5757155 100644 --- a/src/Decentralized/ModFiles/Localization/en.csv +++ b/src/Decentralized/ModFiles/Localization/en.csv @@ -78,27 +78,15 @@ point.worn.1,"...Fine, it has that. I'll knock something off." point.worn.2,"Sharp eyes. All right, this price." point.fake.1,"...You caught it. It's a reflashed one. I'll price it for what it is." point.fake.2,"Tch, not the original chip. Fine, the real chip's price." -lbl.row.spec,"Model" -lbl.row.fan,"Fans" -lbl.row.fingers,"Contacts" -lbl.row.bracket,"Bracket" -lbl.row.print,"Back print" -lbl.row.sticker,"Sticker" lbl.fan.0,"Blades clean" lbl.fan.1,"Blades dusty" lbl.fan.2,"Blade chipped" lbl.fingers.0,"Bright" lbl.fingers.1,"Dull" lbl.fingers.2,"Oxidised" -lbl.bracket.0,"Intact, three ports" -lbl.bracket.1,"Scratched" -lbl.bracket.2,"Wrong port count" lbl.print.0,"Matches the model" lbl.print.1,"Another model printed" lbl.print.2,"Reprinted, crooked" -lbl.sticker.0,"Printed serial, seal intact" -lbl.sticker.1,"Handwritten serial" -lbl.sticker.2,"Seal missing" lbl.said," (seller said: {0})" lbl.point,"Point out" lbl.edit,"Edit" @@ -106,3 +94,28 @@ cust.fake.1,"That's not what the label says. You trying to pass off a fake?" cust.fake.2,"The model doesn't match. That isn't the chip it claims." cust.worn.1,"That's not what you wrote. You left out the flaws." cust.worn.2,"The condition on the label is false. Not at this price." +lbl.row.spec,"Model" +lbl.row.build,"Power & fans" +lbl.row.fan,"Blades" +lbl.row.fingers,"Contacts" +lbl.row.bracket,"Bracket" +lbl.row.print,"Back print" +lbl.row.serial,"Serial" +lbl.row.seal,"Seal" +lbl.build.0,"Entry: 6-pin, single fan" +lbl.build.1,"Mid: 8-pin, two fans" +lbl.build.2,"High: 8-pin, three fans" +lbl.build.3,"Flagship: dual 8-pin, three fans" +lbl.bracket.0,"Intact" +lbl.bracket.1,"Scratched" +lbl.serial.0,"Valid" +lbl.serial.1,"Bad factory code or length" +lbl.serial.2,"Tier code does not match" +lbl.seal.0,"Intact" +lbl.seal.2,"Missing" +lbl.tier.0,"Entry" +lbl.tier.1,"Mid" +lbl.tier.2,"High" +lbl.tier.3,"Flagship" +item.guide.name,"Graphics card appraisal guide" +item.guide.desc,"Tiers: entry has a 6-pin connector and one fan; mid 8-pin and two fans; high 8-pin and three fans; flagship dual 8-pin and three fans. Model names are display only: Probidia RZX 60 / 70 / 80 / 90, PMD RZ 70 / 80 / 800 / 900, lowest to highest tier. Serial: prefix PB (Probidia) or MD (PMD), tier code 1 to 4, a dash, a two-digit factory code, a dash, four digits. Valid factory codes: PB 11, 12, 21, 34, 47; MD 13, 22, 35, 41, 58. A tier code that does not match the model, or a bad factory code or length, means a fake. Appearance discounts: dusty blades -4%, chipped -12%; dull contacts -4%, oxidised -12%; scratched bracket -2%; missing seal -6%." diff --git a/src/Decentralized/ModFiles/Localization/zh.csv b/src/Decentralized/ModFiles/Localization/zh.csv index ec586e3..a8db0af 100644 --- a/src/Decentralized/ModFiles/Localization/zh.csv +++ b/src/Decentralized/ModFiles/Localization/zh.csv @@ -77,27 +77,15 @@ point.worn.1,"……行,这点毛病是有,算你便宜点。" point.worn.2,"眼睛挺毒。好吧,这个价。" point.fake.1,"……被你看出来了。是翻新的货,按真的价给你。" point.fake.2,"啧,不是原装的。那就按芯片本来的价吧。" -lbl.row.spec,"型号" -lbl.row.fan,"风扇" -lbl.row.fingers,"金手指" -lbl.row.bracket,"挡板" -lbl.row.print,"背面丝印" -lbl.row.sticker,"贴纸封条" lbl.fan.0,"叶片干净" lbl.fan.1,"叶片积灰" lbl.fan.2,"叶片缺角" lbl.fingers.0,"光亮" lbl.fingers.1,"发暗" lbl.fingers.2,"氧化发绿" -lbl.bracket.0,"完好,接口三个" -lbl.bracket.1,"有划痕" -lbl.bracket.2,"接口数不对" lbl.print.0,"与型号一致" lbl.print.1,"印着另一个型号" lbl.print.2,"重印过,字歪" -lbl.sticker.0,"印刷序列号,封条完好" -lbl.sticker.1,"手写序列号" -lbl.sticker.2,"封条已缺失" lbl.said,"(卖家说:{0})" lbl.point,"指出" lbl.edit,"改" @@ -105,3 +93,28 @@ cust.fake.1,"这不是它标的那块。你拿假货糊弄我?" cust.fake.2,"型号对不上,里面的芯片根本不是这个。" cust.worn.1,"跟你写的不一样,毛病你没说。" cust.worn.2,"标签上的成色是假的吧,这个价我不要。" +lbl.row.spec,"型号" +lbl.row.build,"供电与风扇" +lbl.row.fan,"叶片" +lbl.row.fingers,"金手指" +lbl.row.bracket,"挡板" +lbl.row.print,"背面丝印" +lbl.row.serial,"序列号" +lbl.row.seal,"封条" +lbl.build.0,"低端:6针,单风扇" +lbl.build.1,"中端:8针,双风扇" +lbl.build.2,"高端:8针,三风扇" +lbl.build.3,"旗舰:双8针,三风扇" +lbl.bracket.0,"完好" +lbl.bracket.1,"有划痕" +lbl.serial.0,"合规" +lbl.serial.1,"工厂码或位数不合规" +lbl.serial.2,"档次码与型号不符" +lbl.seal.0,"完好" +lbl.seal.2,"已缺失" +lbl.tier.0,"低端" +lbl.tier.1,"中端" +lbl.tier.2,"高端" +lbl.tier.3,"旗舰" +item.guide.name,"显卡鉴定手册" +item.guide.desc,"档次:低端 6 针供电、单风扇;中端 8 针、双风扇;高端 8 针、三风扇;旗舰双 8 针、三风扇。型号只是显示名:Probidia 为 RZX 60 / 70 / 80 / 90,PMD 为 RZ 70 / 80 / 800 / 900,按档次从低到高。序列号:前缀 PB(Probidia)或 MD(PMD),接档次码 1 至 4,一道横杠,两位工厂码,一道横杠,四位流水。合法工厂码:PB 为 11、12、21、34、47;MD 为 13、22、35、41、58。档次码与型号不符,或工厂码、位数不对,都是假的。外观折扣:叶片积灰 -4%,缺角 -12%;金手指发暗 -4%,氧化 -12%;挡板划痕 -2%;封条缺失 -6%。" diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_burnt_b.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_burnt_b.png index 890d15d36236b765a525d9e46bd11562e24c9339..1aa6fca1c2e8415dc0433f7f71d932bea0b55318 100644 GIT binary patch literal 1549 zcmY*YYfw{H5Z-gSmn4^{5fTg-UP2+%P=gLC;NvPNAy5;QB3P9Os8kdg-im}9Kr}uI zipryq2BA`|P&*ZBrwZXAiW;SgB8(`lI3iGrB2Yx6*LM1&JGlklfjAolMxH)TkGyu`&@4F%>rSp%Hx|lYK*F0=1a({WJ>ih7s?4il)Kbb5`pNyNZ4)5Eu=Si)1cjHSxHr?S& z9h!A_i=VrQg`{lw$1YB1OBYS2Atay7JuF1>$b3-Vm1pBOTEHJ?FP}wwNRPms!V-(S z8ee+TDnyxu;+IojsLeM~12uW}Q;8u+N9{q`qTD z>j_M>eE(un#361B5*N<^4+sj`1F8JZMM!`cNRYVFNeXGGy=o1*l$vqQ1mY8Ek9`>q z5VaaT>}BpUlw&*-I!2)1u8`s(tcO2FtP?~z6h4qi$QM(1iZn^nBOC8nB+lR>nep5K3(Fl-Hqs0j~@-2 zvC5@-X!!?T75mg_B_@$z%d1)xBF1_(=fCxWlB;7Op7s0R3l=> z_aTQS+NUX32BPq1=bNE(Y5i4K`0_gitwisEgw-P_@^Fit8)B+i@73z2-grhLFZAXHy4EPwIVr$W{OrC>U@KEPq7zB*bH z?l;DF(OJ0YVfGQ^gk35ka9F#(n`Pcy#vgX7_u9uc%PE-oQXkdg6yrfrDZ44((l zt~(0iQuz8ZxpYJ3lcUXqt5d0+A;pG{*2J91d3&x<@0O4yFk(he;*3km_yc{!9oyLl zv4mij-cEJpFOOisYD8|xc+rfS;8p~@d}oI#S-rI`A#?ouw(;ClYod4LB_EI(C!^a? z!!PO8f!smzS5x#@{YTYw-h0JVZS??ejM$k8cNU!&QNw zDTN!5O#(xv{$Ugwk`{DzUhXNK>Y}m2H)%bq+w=0#J$;__)u|aMit$Zw^yvjGHaV)* z!je_L{=w(Re({OVir9bd)seaNgFeOUCo25BxEx9$?cInPuAgmY+q)WC#^WLQ+8Lcn zLGyIry0ku!D&!o~q?P%CQD{ih^xx|GZREwZ!6DuAciX<0-{m#hUbjtvNh)z4V5>5q zlLnrFi{w@~6EH*swjqlF+Jq?^@D&WqXDX5p*}nlD!-1PY9UV`-Cb*5#|8(KjbmX(c V@zlW^>$U(R{;SsbR;^TJ{0*XvW2yiE delta 1611 zcmY*Z4Ny}D65jXn9wafMkbn^hCRRcaypy2ps(PHwj}#~?P|+I{jF@6~UH_b_z|TYaxMu{DodmIqvn`j1DO zV}&I&J`B~PNtRoPqFE~#RaJa|gu4+|$kHHAuJyN6d#KVUxPe%pgafAqMUeIK$srAX zSD#~r~m%D-^T8DxOC` zfeePf^qTv&9d(^kXBnJ)PGO=3(EsQguv{UgR&_{P`O?-K=mJLfSgpo_oi*XFdhbeU z3W&%J_eZu)8H37I7OvU$Y>T)se&9aeBzYdAQD{cm-LaRgL;`E&a4a%3%h2O{QasQa$mfh3TQ`+61US9qhAqvs z1bqmS_GAfrWlf&>iTB4n%yrb%FqOa|ORkX|s1p&=LTFe-;_i3aRBfZ`8hW`+i%vZ! zFaFjs7w!Bw1{Xz{H$G*j$ROC7OpaUb|B~+d=Jrj?n*BC(Tyz~GDq95VM{mO@UuKxf z@k}t2@8O1xG@{YnGr-hVp`3p7pX^xSnz|ySZny~9HiQ%+Gl{Z3_U6-8ZNwKd;3Pc- zV)gHy)Z`;4g~}Qig`1~M_4xfQ__ZCrr`Qv}oc`(Rn@7e9e19Yurw@I$bMPa$ik=fj zd-5hYN%h;qQqfBf(4f)Esy0F}^~J!Od!e=cPzz?xnqYxtO-Bb&d;R;qqWB4nL&l3K ze=15vj6Eou@A<3DEm7wCcTZ_}iZX!}mIw7JB3!n;A(h~%NtSXSUY(xrQ4oN5He)JV zLxP)&w)|W!=rUmlecD*IICem5;gV;2Hp2|#$_tx~Z;J@p(m75=#ry0&l!ETpN^U)3W_aAf}d46Qe_f534&9QyE zGZo`w-WqVvRFHAdcQOj;@^qhO6z7e1&wNrUz2TRBEtiX>UH_s0d-3=wm@H^tsDFzuDgQV2?Uq;o diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_brk_port.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_brk_port.png deleted file mode 100644 index 697655e3b071fe4aa6b498eb7e888c22246685ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnemTk_SubG^`_jGV90bi@U-s+w$ACe%QV)wEyA0*pTm9-%Xl!Gds8JZ`(Pi z`p|ktiAVgVre{(w@B1KpnPF|h_dBd16ZgwjM=4MEIiF)cV;tLVownBbHv}_YM>()c zzS9giALZ~>B1y5&UPwCQ^ k;%9tLmqxf44@=<&yL#|sjlAE#!$7J$UHx3vIVCg!0G<<&%K!iX literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_2.png similarity index 100% rename from src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip.png rename to src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_2.png diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_chip_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c5efeff65d7d05474e807fa51b8438ac966585e2 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne#}7k*JcbE*w-^5qWH{RYOdM*!gZIBq-(0~ou`148K%gaE zAdBPKp$#UV`OmIpo1ZwN>wbv(%EJl_OXj`&U;0gamhQh@|F5%8$m9OdS& cn8F(pmA8sEevJvR{{fQpboFyt=akR{0KcVk6aWAK literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_1.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5c31d8e3347e3985f4eb3378a699fa35d300073a GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneZ$(+c<2Jf3TzK)umcNVDzTQi7C`dC5ovNSd>jl(~2^@0TFK_(&^fw~| zle^{*?cd7+FEB)yGH}g4q-M0py(r1Km9>87ylD676XtwAe0WZ1;>y2Gwd_~@UM&6J zmiF-ZE;!bw1i6{$RCb)yvLZ*ILYeYAW6K*S+$O>k%853D1>F96Mv~*XQ=$dGFG> ze(v_?T)N>`&bzL3@SOLd%EE1FW&H{T-};!&M-?J-WEyMwU-GGaKJvTgk2=S8E{z(e zXL;e~LaPFIHHH6J;xYZRR>d361uYrLLCx(k8}gDn{AN63h~UHwHw+PpGG@(hnuq7@ RxfKeM^K|udS?83{1OUOUw_gAN literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_2.png similarity index 100% rename from src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1.png rename to src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_2.png diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..39aeb9b3ebdb5844c5524ca90480b7a62ec2a182 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne$}tp-Ss=u_XMtAKU3kym%Y~+u2%QlUoZ82sY_1s8hd-&{eOPiW$(Rr?8p2= zEB`MSIF+0$>?VCdXY;ur#hY4lm%N>p%XIy|`s_TChk@HRi4=bi5Q!nGc+ ztn7mpuKT<8k>wBHh-EWWUpI28e@aM?(u&;adS&zPvu~Ez zPKr=`p>>Wkux*cES-!Y@Xn=S7+p04bi__LFJ<>0uzvKKOfA;x?Cjxh8R)-v(BpN%l z#ylr_x6ka3?Q%@rX19A^J^C)P`rZ658ZKKR6{7dBXtXS4?6&FXzouLI-+_7JPua&F z8@F$au}akbxHCIau~DP{+sh3(^8apZ;#^SBSegCAM|S!3ZLiL}jqLZ=lY;GUz4rTZs-h-7oyOxP^be ze)%1=t)P#OJ;7g&(<5-}7QYs>dqR|?xYCo?uLIKbDp|&g#te2>bhbTkd>ZOg`lh%X@%YBJ2THTJ9Kh<@M3pem}l9Xk$5cmT;1Q zsi2P~$_Gs5cQt%c!2^tdM`cj?jB-qGvh3d}37B4P zu(H+enKh~1M+0Vb&|3nyl{owBwO(K}_)U#+xfkf2=kGbD zlp~j0+zItF-S|$mXU@@FwYV(^cgqi7|o9)O3=pyUB=etz~jxuuUuFtVhfcAOr7;o5j~`Y@L+F$qS3 zHzzb@} z8|)~E^T0K?-bXz_J~jsY=!vkit6RXsTE-ZtwetbBY0cW1NOgHnSAD zwuUE{MfpNoF)8A%v8y-NF!jljt1I^eVr?mOuIKYuA(uV1lWMQNnl)@AV}xAp#5z82 zj;U>toLxrI+6g8ZSQgy9$K>)R&fw%a|7@SYit&sj;NbyOD_8PtPHyqb_vP|vJK3Bc zw`8_{b^~9Q)yzGCbaYH@X+!NKS8evE_MVZM9ZA5F{Q*}8%A-poYJocv{K_7d+I zy}to0?Ez+j+RgEJ7k7-g(@wO}Te`xMdxl-TIMpLdB4rP^njN~jh;3vUw1F>AyJLKB zu+6r{`L?UA+qLFB$C7}jE|*xfgnD$xTJ7>H{%3f4Ptdzfa`h~a4es1_mZ%n#tJdSM zxZoB%r7UVKV$;&|*Y^CN7;1ONa400000 z00000000000000000000000000000001xpC@?}AZ;!Pr200000NkvXXu0mjferlK% literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_2.png similarity index 100% rename from src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2.png rename to src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_2.png diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_dust2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa190030b933a29c287e2eb1c440ec3d39963e0 GIT binary patch literal 1838 zcmbVN`(M(B0yW*NX|9pdp@6Y&M)VjU(c`S!-CCBtW69I z49r5#1|UEAlTW<5&-jx@7yq1OU|_5Z3Gj;`&8hB(-m>ufD&QBd=Vd3`7aU7r=;3#`fk4yx~~BFeWBg+doP>p^X=9J;t}92RxNxGWRHfepNs3 z9+mSSpl7uSJPNl}!k9HL7so&7l~tbc0eU{Od!U^&VIyPRi0B1oLvM;?-GLHirxp)8;4ob99*v!4+248z~FzejjUyDYC!| zA?=Uuv?9Q#uYdDApcTQmqZ*sv+D#6ix!-iKNhM9hE7-qh$jwwVmkKVnJxX&9t;{l| z!ALILV?j+|OS4{c`Wk)Eme_(9;pIcz%0^0;`KVT4xxkQ4eVD$+lyM}UKplt(H7hO& zo>2RR9eDIm_-v$8y$b8gZFPU~Ts2W=hJ!O69Pmz$GcvJ{442N^fx-W71Are~U67*M z2P3yM>_)%+q(en~#vtA?ciIrkPrcLYVG9Qfd1--GWw6!9}3H!HI6W79-dK@99Q##_rhd#$s#}CVW_-0uw;3 z9Z5|(v`$)TU__ymLqI6b3_OX#^qdO8)gSt}>xkny0EOMnXgD*-eL9U0)uFEr%KF;+ zGE{^)Apg)O2l?LZdIPz%$Zx1CRkRJ2uCVaYxGlW6%&#TVzAsEP>*OUuGM?D?N1?1C6 zSvGsF=5yAq!Ors+iQhwIQBFJJ<8j}$a6A-weK#*Bg5Bl`)9P}cYfK|py6R|x?|kAySXnbm~|*M@%8W-;KvrLOHA#%xwDz; zYOGxE-0dI!**}tjgr`~WTA3-^kYP>reWvLffq$e!Ah%J{4%9A;_hje1+T_Xp*d@4l zwB^M7eHffLRI=)}_cbmNnHh`f<3V4uA_6PCddwJ7L9EXCeCD!iFXzTS;7-EE&de8h zZBy#dsqkuLPmdVUd7<@~&RvOs77<~7m12Gvnx*4g@4U31777dBVE3)tQt1{IY7Gp#a+hlziRa>tq-KPX|o^*!4phCzGnC#GRpO z9x9^Kd}Kdi5x6E-TPCH{Mq52hwfTbSk5gNQZ2W4>mK|1~nw?HLKSAb0v)kI?PXZy?mEM5grA_9p@4fmB&QGmADo!#uRRI>Uv z)`RWDzB_8p%T&?a4(=m^f-XN1Z99{vHTnzJ@_$9TmiKnqPa;xsA-@0XhXjTNaL)Wx F_+K1ih}{4H literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_oil.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_fan_oil.png deleted file mode 100644 index 4e37fdb751c5de1e562bbefbb4a747d2dbd019a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnea3!ori&arWLjnyNbyaqmfX3)#EDNu_3`&58ReTp{<|l)r_2KC#}CXb&JzbWY%eFW@W>rwP zTzc#Lx~Wp9dxiahO3iO3t$bT!du!)CSCEwEj_@p<@P$QQJGX34_TKpMbJ3*WRZIVd zZ`|fk_1m^vdsxxe$x!74;!$1`LpItc=(pTH)}6`O!+$7 z)=rGO;r;sgd()Nv?bWxMx2A6M@#FTq4fi<%cX>&EUh{TiZAsHsp9>!Qj~8y=C*IBO zaQ^+`x5|tHFU^1N6=0}-eedtw)Wy~R=7~O8bN`y|LM2xT?lnM zf9lUgh816yomh2f}Hz)GztGk z?!MK&i_bSaQ2epV&u-Sw?Ow6_w=sQXd2ymRVhh)om1io$L%kRR=5j2Z`e0ptqmkOX z!ao;Zi7`F+)Kl<%yTjuDKCAx+-|gQ1ukNd_-`XmZWENtL&nDLA R$IS%k@pScbS?83{1OU1orzHRY diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz580.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz580.png deleted file mode 100644 index 2a440bad2b18025786b630505872060b5b25d268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneZ={xtN%C86C9p_8k=J{nR)x)yBQ3NzQ4Z<6s(D4n8*C+g~cqx>fG;d7c*MyzV?4({{7wc zx6kKPvm{7c+TW`CR(kvM=KtbM0#X-#OO_wq?QY62%}IyXq0H_4y1%Rq+rt~rrG0sG zW`6DTjN9(NZ*sd-%Q6ZyXkMLjlX+znYt>g50S3O+hVEBq-ZcL2!Qi&q;i5VV(*!Ar z)$9RVR|VHDf6yJ@bpF+o&1wH$h~LR#sPZ>rRM>JY&a@!x`qx_a1vUc8*{@H<&Grd> zF8fxn;mfUEyRN5wy(d@Q$Z`Gg;^)f0%hPK3e}q(H2?gSXwB($mYb#bvlKBJD Jvd$@?2>_b*p#=Z{ diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz6800.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz6800.png deleted file mode 100644 index cf272a81b238c3a8a7b82041697648dbb3d0e3c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnefHgor zHKsb5|KVN(Js+M-@8v-`r>Z%*AG6Q$V3(}g3DkxS6tq15ym89547=^|B{CO3{?k7H zMEF73UVUBRguOtKoqrcUe?2#S66c41jlt2Yn4WFA|MM32v)?~nCtrOQ^!Ux(^h2B% zKK%{+`NE?5xgn#Oc4hyc_2MP(*87_Da~fQkdx&L0wD^jUg^Q=|+4}p7W!+ngV(}lp zEY?=~-D17xbH)p&AQV^HiuTkZPn?<=>i7T)W8<=MfWg5o z)#i7y{K5SOay}fIZ!hURNK|{M)M{2(zEt}%3s4&taKL`n^Y1~{eSP%F$y``IyE z!A^etQuTuE*T1Scl>EC^6To{UpJ8fWQ0rak-E#7rCzQWOu2zj}O;)@R(YguA5lY5zM; z6$Z`N1wr92&YjvneZ@svrX^+3>(>3bm|n~25XErq*Q>~>^(m8OZz>;H89RNA!|7i~ zCo(KyPk1?9;dShSc?V+GKhN0C6|`G_@!iE2>t}ua?|FIEoZFwbmRCgGT|DpS;`ahS h)flmOm1v=LUl@-ZXBXT&YYQhxkEg4j%Q~loCID9ekKzCT literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz7900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz7900.png deleted file mode 100644 index 4e6dfaae17a518ad235a42eaa2a845505089ea8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne)mE~_mnxCA4eK6 zMxFb9%>8|^^|_lLJsMK(>}&eg^Sokyps>~V>&wjKI14nGwA>PkZwJ@>AzIJe7P_q_dUrrh4@KDVRHSb~LUA%TyK XC5MfrU#y%3iYf+AS3j3^P6X$q6-v$4z_RT-muxW$TtTQU}xbpblaIHSg1k{BE9O$|B^{?fwMUS&TFZ#Io*x>*s z8~OGA{!DM4yFR}Dtp8Z^qo!ZF3oeDO+OT!w?T_i)Mb-DG?YQ_+z^`H6{p#cHkJJA9 zd-yg4weC}9%xRsW#kgsnh)_f3E(do}+o+%4(>t&2*xGXAzB^MvrnpA+d)c>kb5&bd z5>{}Byy8j?|2I)D;I%N*u5%3K;s0JpF8IpHc$fR*iuHC;KaKegF5My2a7FLJ)v4F2 z8J6WYZ+mmpec##6lE$iIho4p#-e>yw{hU_%N}=sB7k{k%?EaV$i|>dQn(&bOVpfJ{ T*sPf=Kzck~{an^LB{Ts5{A`Z; literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz800.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz800.png new file mode 100644 index 0000000000000000000000000000000000000000..b226216f5f1c8147ad5d690e53b3eb86f18b779d GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnef_`=)OQXg}9BGw97GpeAhKgXi|!rhBC?{|dS0Uo?>gT@`Oc8(h4+tJ#U|RigUU{z4atHS#iy0187rtlu`1zYv;=0Y(dNTgq k`nmZrBR2mMEB2z0{owVv4_x0ANr1F?y85}Sb4q9e03KVO+5i9m literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rz900.png new file mode 100644 index 0000000000000000000000000000000000000000..0d13c9c40e3935268eb7cbc01190eee7f6611853 GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnecA^!lQYYd_rEr)htau$M|W{`%aP-PUrP0Y?ARA20s< zuFsumiYW6hi^u=mn6_*)yI7%eU=mBj)*ugte?Fos%on?-|NFf8$eY6@uYc6c&9M5nEdJU#Wk{BHkuh8*qYZ}&F5`z5ww`=&3e+_rvR^wFc?LtM?*?GBsI z%k5)Lnt9PDVs>PD)HbduE2YlfssHv5i}#5a>ZoAM3a&o0D5=B@q{-9O&t;ucLK6UI CDxXLI literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx50.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx50.png deleted file mode 100644 index afd96211630c509ed012774b700ae76d426ccddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneMVck%P$ zuiw^vJ};aVF<(CZ`^2^%JJyxW|5UdXEdKiH@!6~g@|$;9tusnn`)22#bqpC-|5}`y zr}`^yPbI?{lM7KlWf?zoeRpDLk$PeIcwTkSwL1%R_7|d$D&igJc4 z^MV-+OwI1^wc29Eu&9{Dr)joimDy+a*C*=?^H^_OE#_iyTCKX7_xb*HMw|@0co%Nn zHR&$*mPLy5=BsatnyTB+;L*Q!{#NmflKlR?4l)zopr0CD-LeE&4VatlKkjW2U3#S@zhPn`P!~4vU~=B}*R`3a`||r=pB26t66r!nm5dwurux$C#(W8dHUbMfP!Oon;lNA8$~8&)SDf4rL6AkIBy?#+)J z4wIHn^Yh+lW*Ry!H zbLe}9i`Fbm8*Xe}x$4iw&msF*&aVw-kWjiiX|H(Sf5sm-%`%?cwECqRaI|&COQu}O zeugFU*Vb|$Ip6)|{q0jyH@BUWkIjEyQ+=EnTPP4Kw&6H)d5&|0t@Kr4kQPr@KbLh* G2~7a!N16@* literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx80ti.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_normal_rzx80ti.png deleted file mode 100644 index a65824e9dffba1053506f2646932ae33ffb11ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne_Z`-=<{=4v3>c6VL z{D^$(e!l$6AB#wanz|a>YPBQp>z3AS`#ZI+zwi5s{~5pUF`Tfn|EI}N_iw@8T>a*$ zx7OWGXFpISGqG^nw)L8G@0VHMx}RfR$&ixvB9c+yZF*SRw2Q0`7S8L96I7i4yE1&S z-fu2}x}jM0ks zjQO8rALL~>Zel(#_d!e4^-Wixr+b* diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz470.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz470.png deleted file mode 100644 index 60d30b68eb68161f79e4483e9e23414d249ea9b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnemhotJk8_I=05HEHlnz2vU9? zcd@p%UeEOUiEZ0N{{8y3)!(!>P*Rv}!MC4558E%A*4So=Wz3ygr2IeZ&btq@er$Xt z(D3B*&adAtx?T}(2>9~aNZtI?@?S}60uAp{j|Vb#OppIqq+_GE_Tl4+_3LGqn$6-= z<95(kaYZj+RY#EPT>+#&NS$>676z*!%IO&&$c8!K%Jb0v`_Xzy%$OirB(IqD!S+2fd~d}Rg7kR0`njxgN@xNA D|Gwz& diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz580.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz580.png deleted file mode 100644 index 4c959d59c54b498c8d5f8517fcd5b698c8fbcbbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne@Z^i?!KOO(Bdx*78cxHNe$Y3u9@qXz3yj< zMG4cMJ^Q?w*3CU%pS{*L`a%13#T%E?R1?CPwxpfg-hV#lzpioK>sdu7Z_avo`QN3| z;tMP%&dyr+wCU~h@6~TJHw!E9eT!l`qU~_Y{@1O_M=USi=Cjt#h&_CM?`j8a&Bxoy zSx@w;emT0{wVg%d+x4bT*A!met-G4`>w=TgvvX{P52hbWQk}rCySXrg>B_f%OKodb zGKI|g>3uyz)gpqar9q1|TCX9?ar4uBH`z1W!y3I9=jAONi< z``h-ssm;WDEHf(Y6TU^T*zL{_Im>ayz31q59xTy8tkCwK?6T}uXARcx^Z;q`boFyt I=akR{0L$a-J^%m! diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz6800.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz6800.png deleted file mode 100644 index 1d81cef13a0ab09d7cb71bb11f988fe750d7c5c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne-%U0lW@65dDb(fak($@zXfdz#Bsj97= zGHc$$mBJ5BUwtL97LkZi7{_pduZ}IQ_d*rOp zg6|dDANntT{ZU;SvWE5URmlYD^5k-*#Sg`?XlMGvb!? zl1BMhZ#!X^=SiAhmT(3Xn=*PS*T27~yo$k9xxS?D<;TanRSrDkoN(_+&0$H_L=h9^ z|Hj%c-BvpUGCeuH^K(U=U*&&~hThc09i}k+d?TvrV3oY=uQH?AP3D>-v+CV4zrEtQP<7wSiF3n6wH@2n z*=C=$-)t0GEw&E|KcAr__j!(^!oc%{=&!@EMO>ggPIM1UX-1}RtZd}Up&-OR4I=o@yJ(d}QBCDHopYHt3ve|9*-Jel+QnAD%u|g4#<>jA7 U?~OZ~xCNxe)78&qol`;+0BtZ1a{vGU diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz70.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz70.png new file mode 100644 index 0000000000000000000000000000000000000000..dddbe19e30bab3844d2ca0c4e388a2a8c454802e GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneb7)Os%)=l@QWCqFA*)EY4+9)7-*K7Q9bwPcBkj;P$rW_S_T+paEFGw=acOv0jI* z5AWwYaQX9Ufe*KT{wba*UBC9j<;Nj!E+?ucgfc9e`T6PFy%m3^Nt# zhH1b4{j}s@SiRd}tKWIsw0}_>7VX`~U~uKuj7sqpS45+XKKpN1tIoOX6+Q1y{$)!} z2H&HlS8VG=+^#d;$SGU<^?(1C=ki)>FYl~wteT_De~UFsb6@oqYxeI<8^b5MhBsB8 zUv+V(?%s}Pm(wn5AKcrW_3PH!yBZSL?vxpn+vxAR_noPC{nj*Ymb+Wo61opskv>6?5<`)&^C6(w~s&XDs5fUo2mCA zYpUJb^S#w?Z=B(<_HWp^O7d3BhQEL6;-jP9vvf4Co5JvsXTrDbeYX4f*M9GutLl(l zulvEdl-E9gW!KJ@p60ctj9z~~?r@I(Q*AYG>Gw`Y;RRv~b}GEGeYWFLyO@yScF8{N z+LyLh)@5pzTwu|7IhEm~kuuBoJFlPnH5749kWRiMzfP5r&A;J?;&SP;E48+<{hRdv zrctE#=HP6mC8u|;wBK7+Rj+d3z;cJR>T2It{K*zx9nSRRUz+-|Q}){r#svQ?_MTiF z@-OCrKc~$8`6dT0-_)MY@Ucg7|2!6n6#fruvj45ss?R&Kb$@ntEvLZ+wH;q$en(#W zv(&dBFQ@qVzon9k%#6Jn4*E4l$-P+IXFXlT;q8>=+r%^GN~#`cIKE)3e^YhnziS(} z&SSbdX}gK@leA;eey1g#Onz{W-+J%2TkqemnYp*=sm1yN7E`kkul#WQw=y?@Z< zU!7ImG|m5@>m|o6Y6rv|FIw-Y>YK}aMr!M}=ieV`GGj&|u_6xg|Noz1_DQVf*b36( M>FVdQ&MBb@0Bu+W9RL6T diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz80.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz80.png new file mode 100644 index 0000000000000000000000000000000000000000..07b6e967bb9da4b4424f0158014edcc35053982d GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne1IflZ7*p>3g_H0^_6}zD3P@c7O#m28)D|1@c?Gx9izqZr-#lfJ>j2*k= p608rek2Q5WY|e@qlthbse=nUWt$J;S@slecJ)W+9F6*2UngFy)z?}d9 literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz800.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz800.png new file mode 100644 index 0000000000000000000000000000000000000000..98555d16da7a7943a0a4b1b5f662d4cec11ddc5d GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne)OHB*KisPoDdMD7|5k-3c|LoWaa&^0-+L;)yLEv2u>j+m7`^OwAErON z!dOvNC(5+$@4tU*wm!bdWxt2-=sdYJCO*~$rbYYq>`lMz-m|0H>88}n%in_bTV^s8 zEl#s2a{d1G@6K;Bo0%qPe+pvQc7N)v^sjT-c^vYqSARJCLaI(~F6*NUU)wf`HQd_j zaOeF6vHfAPOaVFiXC;)oUUrXJJGw!m|37}w`jxL zT3v>v?+t|K=rAl?;3YmMTJWpbzj^0-<}nuScHG%8h07-P9A`u9g01DpQ&KJ-$^JVp zVB57{Ob3E)9qTD?EZXf=+CS0|S7d);FG z7jG@!N8L|9llO;tFQY`M{erD?W)|vk&3A6KTpjSfQ19PqEYU)&P{C~bs3QSUd&bP0l+XkKSyJZ9 literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rz900.png new file mode 100644 index 0000000000000000000000000000000000000000..3d48db417873ba29b5042c60c4c1d10189892f49 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne)OHB*8-8Dv638+0&(>weSL)$gRRdrKY?(B-Ie|D>I%K`r9iZ?DF_BybPCFATI{rvYgKMESZo3$k8?3b4nFZWqy zGCfH-_6GvAfvxlLb)m9wCz$xxpUKV{qk5l(tq7D?hxR-5X$`|?W(P?0!z6z z^l-y|R-hItsu4 zTHW>VT3kGn!PHwb3dJ?9i$)oLULHNUdTYjIU4I*~cPpndynLm~=oiIolXU)m6sK40 zf+$`C(_2fHvb1!OE*UuFtCv=@k&)y>^zu_3!6@;Yf>x%X`r$iibA+5tnM;_R~&t(Fxwt)75={=g9E^&AdPhr=(V>W)2c zIsP)n{-5m}V=cxkPl4~&HtKacRw@n~_nIBoV-2*rwBGR3^V}fxvoer*%?@RWzPRQu0@&$F29_^ z62LmEN?UF10#EmUrmy}BHEcekTp#r{GRVB&{ok#mvL{jtwq2I~b;YaU%PUpJvR!Nu z)#v6*|BSx6Q1CayUd{`<-5#`wA6)wD{|d|hcgpfM9PPe)$JXIv_LEotc9wB&xU3a$ ze(C~q4=+xG^}238tx>-j*6!TL62NA=rL3u1+ePt$`+Jt}Zvv+Xr>mdKI;Vst0Bc+AumAu6 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rzx80.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_skew_rzx80.png new file mode 100644 index 0000000000000000000000000000000000000000..42d72cf0be58720a86bf57628fda27c867d9fadd GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneFOV#k!?$?Y`;ruk$ej&A{Q1i- z&&d8~bmz?P=f@>(ZT*|Aa^Ude%_51Ff3q{5Uzn{N;Q^g^;{@fLfS?5>^1HP?ddRph6yTn{rMu+iGM&v4{t!$ZjA#b-ni;rT}Vy)OU zXEMVohve*|OTehMYY44&{4m56INsr;0`&;jV?fvgpw&u^B^2Q~b>5XE=x0<(i4z3BzuHGm9KNT}_ ch!%->#(#$C;XAjM#P0=;Pt@5A8Ce6IC+5n&-`+doc$~rF)U1WFYgyJZSC=vz z(RQfXTN>2I(XhGh{o{mXejE+AUN2?jy=f|Y<3sVTCCBFrlZ+5i#SX}#ZqtKJ4wO8){{Xa>Kr*TsN z!xf#sJKuWPY}jj@u#V}9m1OmLmVTCoPJ2ZLr)_6K8?)4328PWo-I2YP>8V=s>3@5+ zT3jePZxP7R(7oDWtLWrQ49jQMyZqh%jmN->p=ym*A;Xy!QG30spZTx0(`Dac@p-;% zn)^J)b4&_$+)tPkV)uq|GZ>d%l3eh8-hYkH(^ol%uVGkve(xmTm-7mji8F}HHWh#U zA6WhG@2$nmbHf@hl{faSa@c7X!FaDybVZtK#@ehU`?sg>7K~naX}81Dz5iA*KF~4P z$P-m16ceq;)ok|5v*4_8*PWC-%YCdi^Sqk7z;!;$cAvhW1!wA%e)*hd%xTSgd_PFX z_guxx+Apf>r~az_cDI^6^>s1BdLNxt$GziLe^0$qZa(q<=Fr7g=IzvXlf)AD#0p*e YATF>{GFfoyz5tLGPgg&ebxsLQ00Ge>EC2ui diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz470.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz470.png deleted file mode 100644 index 845c47fd8832288407f02e10876c7ca40f9cf9d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneHaVGxMy4(&=5@UZ*u2G&z-=B4fdAED3 zP4Lb1saw|ei{^#+@x9eB*}G}g{rlScb+axCvmB^D^#9$a!wYg(R<%TCn@jZ_Ie$K6 zQ$@|*$9JOMzLH3@y*Kl*aD#fz(KN=2&+jhBd&|uWIXo|{?sr^Wyzbhh?|s(q_4%i7 z`(9ap)j;iiID?*CLxiJ!-H)Q^sBCHb?x#oJZvUS9JF8aD{+)W*o5kus*6w-Lvi0r$ zx2u1}G8HUjIMOvqJ7fK#Ct|jB_p%eevn+VUsI~F=jZ+y~o0IMdJd0z@(EXyru=DuKvthkV0@Y@W1}v|_rev**x}eN>qgpoUO3`uE z`1LE!*{*sl!oVoOwjgvt+|irD4X>KQ?96XSH^h{gMyoO~U9gRmiJfrExZ3Eo;3~yi z8MUH&F79+O-J31;;t}JDv`RPU39oh?+{<*~+4J)(3iG`=7|Lg|$<8%7u6fLuF=FQ3 zNZz=8!X>3;*-!1Xop?8?{Qu=%F0?EzP& zf+ebVHvfIKR-pRb$(5(#HPhdJTb#|k$L3vd;^N$IVMlI$yQ*{1mdQZtecbKWjPt&9 zZm?;Qv}G;*vhlD*Ojq&e#nCInzlGasZhKyMZt?3Yi`1)BioQzTx%l}=wbR9FpTe+< z;rr~lJ^uM#eSOjHalGlvgYAz0xG@teu_Ax0_cLaOUv|^peXbCs$J5o%Wt~$(6970| Bf7bv2 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz580.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz580.png deleted file mode 100644 index 81f1a55f6fb7fa85b02b2d1bac72566b61d3c2d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne+)Xu;fF&l@l?hIg@~wWoH#?C(of{9QS_#VEP|?z5+?KtnLV1N)!f z{=HrQKHmQS&A9r1JM846YyN(!+0ywt|L&^K>$aW#xjp9a#Mf)?1;3TPURx>R$^S-< zvC@0P`lgaSa?E*UbLMQ>ykuqH)xW=2KkoMxv2|qnp;A+}T(?;-+FWT()$T}3q3`*e z%T~3Y`yHly<5f-dZSRK3Uz0Xpdiv?dv%AapZ(El;FaF8*-p`@OPp10o*l%MivAh4K zO8@xVb@^#~!bNO12&U{*?_>P+@$mH5W=)3gx{sfJ>ptOV?Z?{1wby4Kdwf=CyH)<4 za}}~zKNkPKbB?265{m?*op*!Gg`LM^w!Rly@X9yev!UXi#Dl^olGmeE4`ivFm@mq| zM`V}khHZQ9^{T}FzQbI8dmhURw{5HbY9yz1=CfE_lu=;!o5~Q|xrOV(jmO8n88WU) zJ+rE0CTq@`uf=cgPqlkoQ7E^;i$VFoNwtH~Szq>U{gag_@*&DV@O?4a$DE-|3%ODtNy&W z6>eKQRUmrZZKD^Hr#V~|Pp%eD@IQZlYyWD4*ra>PjK^dY&zbr(`P;F-Q0xA_>gVpD zHQWbYS*6>%%vLShnzL)xA8!WEg1hq7=d=p?zWljbl)iP9aWv~GWjCJ*p-efk_qKAC zG^JjUu(+Fb=7zmm|Kr-q*xIYX<)_!Ie$TkdvmnOo?YYZ;<6fTNNMos(6uLmdV6}eB zqt|!EBP<)z_ix=9&J7G?q|}>fPKxB0d9S~(etY8M_ccnnk>~E*uKVU4H7`N( zOX?=O{a?S@auz)Kp*wS5kN3a7KQDf}^1SUfsRe_OjQm8>`pEZLfWPEpgGYXO7GXW;PXHpB6h-8Sm}$fA&s` zue*Qbl-VkiP}Z|Qdr$4IU9WY2E#qdR=RvRa%mmNbI@IhBZTtS-&Q^Y{)3Ni9zE-{5 zu3RU!U;OfSCZqZ5+k`jQL_b}9O8Wfq_wz01Tx7m;aL1QxU0Y>$vf4{Ag#Ozrm$Y@x zTJ^4<+luywFvz^Ltyt*!VGYx|unVhppMQD#_o`BvuMCUlDLs#$x_ef3h^?EP*en+N z1b%~65vv(5c#B8hnPIo>fcDGur#IrZzka&0-f#YN&*EQN_ifkiWZ1D-@xrUDb2<)b zjhoEx-%$Ggjq6jv>R-0SJB!b6xV3l&i+u#c7Q^CuXI`$IcBZN$(7Vo!;Y(Q7H#P_D z=P&-;`?yE$LEkjTYSE=uZlX!oK0U7qYY*A(7gX&$H}1hRvHiEg4cIF-{BCp;U4DJh zGlm_dJn_7#NxydNx^hbJ{`xokPaOJfBhM_)`sgm*uw5_noY~7AAB-~Qgv>L1_Fh+T zn?rQu)tSA^)1BvK)i3s{4`aB&zT+~(iR34HZf)BBRDSKQFHtY1hAy*ZoX}pd)_v8f z{pn8G@(&uPITj~`d>44S@boLKpm{anq8oR)?mm_NmG5lU{0Aqz`YaF3eb3S#=AE{k zt^XbCsq63W-Zzf6J;fNXHZ1h1?9%sl%igB#`2R%g?#+mOw{FH-ev7G3oAO`sE!OR?{QmOhB_^ZnSz8`&|NHCf)wGK`3|C9T_Sb*g-Lvn!HqU{7 z^W#{P^m*j%Ybv8|eftp^zu?jHwcl23`+ofVv^ABN;>$&QURiB^otY?KJ71bb!Ax-z z!x5)V`hR6@>*n2^*w3aQmwqkgW%iW7fZL_v55t7-IAre&d7b|Lg`q~Mdq+!>WmMBOSZW zc0|su7iox)Sp9Zm!}sTVgP2nspSmq}xTzA7EtR@hJ2L%iJj(+4eZ8iB+#aS}Q)1g0 zI2^2QT`I5I%p}w<&@b|%Zm<1+9frt&b3I{OpG~$qQ1<@j`BiQaoDQYO?SvZkd6t{u literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz7900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz7900.png deleted file mode 100644 index f489c9984af290ca6fcb7364138c7ecdf9a1fa8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneG8)K|6H7=`YI~>*17!Dl!MpT*;oIYn6R!&U2g)z+R!^dLtNi~@2~1x%XwjXFl+Gr z#X6;DnReyBbmtV1ZZd8&cCX@}SE*^@-LY4zq8d3WQb~RdlAX><@j&8lw6^G zr8fDJU)^pioEHq91?A1AmQyAQ<8rICKby}nQ zK5VtW(1YGHjBbslQu~knbr*i{LSTj0m76Rl!WvZ$NJp~Hie<|^+*PsPXWPEIGNvP? zKeax(l}h)1-2A!UC#6=nraitTbh}8n^Q>31A6vAqnC2L5c{A(kwX192gr%Dw-a9e6 zB)wfBou~1d+Re?^PFX+xqx^-zysH1#wT2bv&WClL<2thT>7Ed#H#=*axNQW@cF9)c zz7T%Sc=Pw>j}>NbPQnwwp00i_>zopr0Ot~(umAu6 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz80.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz80.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc38fef55838077f805c8fe0c5dcb90799824da GIT binary patch literal 848 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneMBNR72^_bJOxPVQpxYtqgx-?>>dWq(k+_E(!eK}qRI&RJqh_9pBV zI`H1JFEU{J+l}WIe}1B3|F5g-tdPU%^83oaRL$Nn-g+L_Eot9hH6d6E|k^ zPq3Fi_~Gg2@7tH=_P;K2c>1@$rQ`LZ!rcGc;`JSpcdq`Lvo|a>@BNNxTlW6_(J!pP zcF&7RrcvnnQ?bukOkea$SG^4vGM#?=Rjlk{^$W~*Si_{1k2svU{Wu~?tPW*n}kpEq^$oA9Uu8Uji zr!u^i;N0+0HNbSUG53;HPv^3R?7Mcp`SsO#uTMoRwQ6U%;gDDP+2`D;oO5g1S492O z`NonitiYd;o;>y5(g@QyK~?Fye`ao7b9KR|tkd&f2fmHJT5RgLYNNY8V-F)w)9GoY zri|yd{INVxty}iK?e1cs1yhp+-UzMWnNz{}<;1l8*DtT>(GAO=uvW!E&fJ5+_Q2^E zZXr3ApXWZ=tXsd2dvspWJjaC-hxn)p;h*243L@um1df zaVg29!mj$?%)pMBNR72^_bJOxPVQpm^Z-f(}^joa@1{^Nb(FDxJyN9az5Pe~o`Y zs_9oR^Sq^Dakl!L1s9`orZK#qXZL^Wk$0X~-*&#<`uFJft2Kx?exOmfmd2;a>1>b6vIe)8AjCev0k+_~X`h-GbyrA-{7uFYdoT?N!C^ z_nSXYVo>*M*w=07-JlbY)GH~hFzvjM0$a(Q`q{0ogcsD$mrb8vVaWJvmYw&EH+xhL zutqfmp5687uZ~61&j{xA+ZaL@h1LF!{CR^Z^tmdd-?GxcFyVwNPCZS^*LKwYT*E!( z>V;~d1#{is{7!#*J73^9lhA`h$qiZes>2qqpC*0vi+1yaRZmy#$}-%TJbi`yn)Fyx z&Vr3BEA%*0H>++ITeRxu;x*ixXE7K)Sp7Ye>C5GVLJ!LJ-c}4_UM+P-Ztc&$8}kH25} z^H;}rPr%fx7Z%@KweM)h)7!oIp-gN1-uLAxKXi<4uxog{C8JbUVH?k8YioDT30pM^ z72;TvO2ad^&M(_nIPJ9u_cHF1OJWIA7&flA+Z|d_w%&JYLg7r+1Fv#I=dbzOTeJD5 zZtQ~YdzW@w)yJ3WrZqp`dwag*+yA0%zZ2CKMFJrAgQwC$+ z^GcnfZ(FY1JFeVcSN>(=iHpkfs=rOQ?Kim9reSr^bP0l+XkK2N|HQ literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rz900.png new file mode 100644 index 0000000000000000000000000000000000000000..2185487061075f9f3c62946b87591d6a18c86b00 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneg0NaB& zjtU2kc@rw0dd%rsT)-x`gH6LDj`v#6+a;`5p8Q^tvEA1!bN6TKZL{y>0S&5 zMV{CmwbQ<|%}(r2hJ9^@`@)moLihg9`JWr;s?O2ie<;2DX5NKuA?YoV+2*hMjy(S^ z5_&CYeaYjnsHa!It1^h^9!+Dc`1v-p3hx4AUz#J`Jgzc07_?dq>@3$^dU(aG)AX*~UP?pxQesleu`GHXhs~C<< z+qbsA@#X#L3^7l5E^J>@d+^+~blohmC0V}%x##wVrq%w5+~6L&_2x_m2EPUG7oFj% zDQR25BoKW|i=meB9j`;q&t&`k?|-NN&Ygeog%8kE(##>B?}avgV>}u4Z|d>QmOr&t z{4HGl)$m8*ZwrZYOMkcTvkW|o}lGVw& zW&4Bl*xsz33-f2DHGjQv_GDbTjEOWe$ANbYA+1;EEB3K1cy(#Zx=T6?H)rac`*!AB z3{$})#}BV^Jk8!l@amAtk+q#?@S5|PnQZ*b3ON9xb^4HiXUl= z9rulGv>4tdS%sEV|MOn7I=gvOe%WLDyr z{KvG%?DIBon`nKxXuqG!QGUWch1K`nkFTkd+nfJmUUm251JUL$Snev!XTnUs#ESes Yryp@qq<6;>d2WyvPgg&ebxsLQ0BYuuhyVZp literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx50.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx50.png deleted file mode 100644 index a44d7af964518a97ad531178d3e9a52dbfd4c5f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneF{*cF}fHz>m9;3yQw>`PNC%>P(C|COW$uQ%8-k-j(01d$aADs5> zsr~!;_4EGy+vV@?x80u?y}!Qt?x`>H@9#=IJ~#LF$MACxPgJJeKWUf!eD7aTPyRP@ zjFsLS&Npp&`<^*3#NX#u;H8w((Es&e^|xIvata;Lf4F`38-tA7tK<@|-Rf;q{`^v0V4&#unqug|%_bQ%u-rv+vKhU92_Pk+-vgrZW8fx8~o?fK~Yi-8ltLr*@jZ z=KR8-?$cnA(y99^r~cZazNjbrYD6zYcH7Ke9r84JZ{ZI!>vt=@KWSXgy5l=i*g9B6_H=Ht z%3OEtT)Ok3tDYZT$t0A9X1&*%zyfs65$&yuQ%~(}yu6<8uRo_ib0q%*s{;j7m(MZ@ zFOOLl!+GwVZGPKdSaEAE&&`}VCTR?%x$ z!#dwhWLW&`U1%KB zoFAPVF6N&7D^Xp-{pFN!{ME^^)pGl7cD;X*JpHQjl0`2L3Mcq)NJ;(^xnO-w{WJwb zh1J&=Cx_Md+m+uj=Tdrku-&na6(gMzE%0w{{NnxZ*^}K;7lZV8y85}Sb4q9e02bbe AYybcN diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80.png new file mode 100644 index 0000000000000000000000000000000000000000..27f2559d668b5ab2de425303fb7e84561399127a GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne#y0Xg_blj{7|bY=eOqBz>cZrgjdt~w0jIY+}7E51HEEFWyH_wHZb8R^^7@1H-OlvgL-AhT!B z{KERr8-2F!VX&!SNMhVq|NUj9)aS?5g|(}nx@X(|)6=W3wtW`Lu09uP=w?%xcWO3k zLV8{Jg36zU_S+6@e){=W`M1qh+g3*Xdlj+Z_Bw``J?s%%5A1FY;!REJmSzrORnV_j zVfYxK-1m3&!mDp2(nTBep6uDc@MPL1tJRxsJIUvsEcU;^+gqmh?5HMR>Z*pL3uErQ zx0!N@+2+L62Y>w6>PdyBHx_Z%`g_kie$SfmgH4?Mi@+-X&DJg{R&AFMXQ( zz~!y$nM1-@Cq9?wJTUX?dKuje#tY0k^B+k)e*LHA+D-L+yVQ60+0<2*-Me{QZ@0Tg z=tb7NR*TmG literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80ti.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_print_stamp_rzx80ti.png deleted file mode 100644 index e967b3c2ee556c230d8c015908c0c51180d85f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxneCV1NeK`}g+$ z{rmUz^ZmEi&$o}O?_YbT{-qQ>yJ@P6vW_s%B$Wg?3*T@@P5>hrdHlr)NNud7Qt(!dth#-gG8;N7-QIMUCGjkY1yCd ze4od8;M(+D%Z}o+(y@yy>TC4+6Wy+#*S((Aoh|mlZ$JBq^~C{C7;e5i{QR|B)7-$% z*N!plTpb*@+-J^Iu?*7%rHyh40x{klGg%_u9^NjLpC}xfDG#JW-7l=LBYIta?(1JHvo(=37j7kEh9Q3o#-CA?u)f?aZvK3c_ zzC_Il41ae9XyT;|#(7Vw8?Kooz3n`GPa^rsqBGlA7P~h^KaG{${l@Org;{GSF_h0> zNEN<2`&m!Js{drb<(bnjD=9{I~ZQYcY-nnFj-3FCUXLP@pmtX(iXLp_Zo6M5M z3|itl&aC5)^ISG_>D0APXD)8puJg%3`+*)to*-J_L&ZM^pDEWW`CV3egEV=%`njxg HN@xNAaYnX> diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_screw_opened.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_screw_opened.png deleted file mode 100644 index 3fb7a89bc969af0075661fdb7bd1f9052197c694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnex;TbZ+g6_D&odVWrZ?2#a-vr;yXgL_pY}!O$${MM>FVdQ&MBb@04|@g0@3kA&B&dD&-_^<;*T`{SmS4{nfIn=jWe` zG#D{Ya2EJpa89O%HS2BQAZ2XaY@i@a7@%>BzNerK2 z?ZxY5I)WLzYFTFK*Hkm)G>I}WFJRDU0BT=g{qe1T-S_`*)-jaCH~iOQJs`*M25jtt z)r=?Nn}E9H+h$*PVAL>YD3kyiUM+P+j$w8J>j4H0kSh!rxDH(SeP7||-fc3)O z_RhKP2G`V%oywjRAjp4^(Sn)vdW3OnYg4( z^}JiZkH37iYLf=T{rKs3O&A>*92gQ@8Rqq!-yd~byneFp0gG+d<7F4$a^JRphc3e! zz5^zmaq;)w<-XcqE63?zZ8!TuX#F1>+5O^8-+q59XFBkTA!Ksi$s@VPd+xoQZkPI~ za_ey+2D7OSksOa?ch33}`ZK6Ecl+(-XJR<7a(6Los1%fOzHl$I`fFwAtB};QSFTqd zI`Yx5pl}UPig&_PbP0l+XkK=cb-W diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_scratch.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_scratch.png deleted file mode 100644 index e31399207921e4bb8594f2a4a45f996d7e6cbca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnex_bZyc<`%X?@PM|5If{H!! z->;A9j&HuexuLrDw9u4*IJ4V-;+x+V{5c`iP_Woh|HW;W)=>9m)9U;Ct7;cB@V{*J zUw;1nrYGsK-Y1e?zIQzEU|)#W2VUWXGo`_&Zv2k7^6xJC&JwYDistz{ESDGEu{p2D z82-wPAv^Q_`r~^KyuF)#u28acSQif<#w#mDxyjoCNcsBcW!DU3HToUEDuEIxl$!JzL7NS&vvpUXO@geCykXqx!| diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_torn.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_ov_sticker_torn.png deleted file mode 100644 index f563a403773a515d28e2221fc58e051643f54ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxnepFe6>ZLO~Qy#DT(cstnEtYp&kJ=3@N z&jXr960mWyudmtv_uJdoZ=dVW&x_w%S6#k$|4z%w*u#JA6927W{-ZtJe}?@l7A1y7 z4IBsl-}>O+yG{Pyo*!@jz1_L*{o~!sl^CweGS0KFuDpI=)5HApx%RW~-d``wxMNq} zgvCFueb}CDbMCnjQ_lH(Ui-xdD|DC&rphY1|IImb`?2Av^GXM=Nv>hs@r&a^@&Cf7 zQ3)kY|8A}n-1YwC{`2>o-KPa-^UT-c-zInB*uCJ{A2-hto4acppYbvuN!@Mx%Uw>g z?W+Qs_akb7`A{$KRWYRU2))C6pNW&HkSk+_Bkyvta!mHSrVGk#qZ$7AKxpa`-n>wrEcr z%YzMG1%0RPF0dAwW9|N)Z_@tsYa2E%PWg3Js=@g?)6 zUpiBs{+%ltl{(#sY0hQFA}bZ9f{Pj#KL3~NtQ`SJ{hC?zk4LlXhX?lm8ih^+D(? zlh5DhzMFIQfB4kLp?4L6wdPcc;p2YZsQ+ew&gNCi?E^_pJI!90wK# zCYV~CFKb)(jidLiz-EsNy)~hQ?=Hr(JV=UM5V>?)@$Z{6+!wz;cIV|4o4A`-@7=U) zxhk15U#q>&JR>jd^x4AApZ6_JeE;`f58LB=eSER$H>~p?2tT{P^+D(A&F3w@L&DGB zJa6m#CR(u~Wa@)?T~EF&JI|7S%h>(h-p~8?iFdfmvWCr^ezSJ++jB5f6DS&4J7aB L>gTe~DWM4fhkMYG diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_b.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_b.png index d35c564a0afb588cb6dc16325fff0bdfb1fa12ac..95ab528ffc343235337b7e56a4a4792ad7278c8b 100644 GIT binary patch literal 1501 zcmX|Bc~Db#5dQsM5=a7O9x;ybAdMmdf=uF3juv?;l+z>)q<|5P;8Eoisv<#nMmk94 zP*IDB;h{nBXh2&z1TlEw328l0ks3@9qm0>hp+XG>(zSw`GgnE zO8y;oWY*_!Q9j0NDr^^xz;s56H6cMVRwhs>r66Ec)7U)^yn#Gkb5`mdY%#R($->Ge)j10qw&@8|v#ajTv*|QZk21=K(B_ zj;@f=SsG)2J?4NsY;SM>Xe~~os`m3M=r8Nt7W+ zd(8=;EkvC9C7soDT(gn6zfaEsS`~5t z5>m?ZU+vgX_XAy2YnPAUZ2Xf03I<&3nRQ!*JPM#=khsm3#fKh~Rhz_OGF5>1H#gO! z@<|Qn-}nNC?sraBK*5fT{4*@g@cV4f2?pQCKqeKwjKmR+I zrrl)P1b=L=vGQnOfoJv_7A)vC4_#Gxra}V6+ufD7jKj7)w|jD1Vz#-3!1GU`p`RAJ z4@hUoVk7kTie}5Bu3fN_{p^HN%FckqycJa~&0)Dnuo(A{E6P>CEhh`i48p%tyH{i& zS*HNp)r7pGsq-jnnIxyMf%|mPFAT2Pb5Dz9%A_!Y)B~d40KUfHj@>`klF}q$5&qWP zxg!j3bzvt<*Kv9^A#GCn|M*tzXz`mE-iTb+@o0|#zGrcd4WGC`b0xcTErJWcWo$G| zSy%ulU1iLalEi&y4gGF{x&;CPMBtCN?n_weS<`bLnbCx-vF=tykocNPC((JVQWZ-u zv@%PAG3Ywy)t~bbN*BTGjn+24sODxY7=yFRNv<=y`110ileDX=d_tc(X^*VtdNi~) zo1IEDJlXa*Bm|G`24nE;!3~L$jdW2Bvu+s!B}L~#apM%#)O)Wm{-*^sr7No!d9|~- zBXz_TI=W%9=i#k*$$>UJ+ud0%{9#6iu6A8DF`Y zOOIzD={04kJG)-JO3P$(OF#thb--M9;(XYY&nW>hR>TRV?x@YTAXG|CbUx&C$Q^U^ zXt<`dU^PlaX5j|XhvYQCkaB9*&-4}Y3P+s}w>^Qc%v+2>ZFWfmN*Qj#P)pgw<{6r& z#l?2f3`LwIE?}MYOHPwaWjKl%IW9K;w{9LvaYr8P3u{Km1&UXv{9x`6x~hZ zP|-*(CJcvCB`FtY$v zONRa=h!V4qCrii}_|K**09CWk3cx@V;o_T32TvO${!qUai0Q|vhTNv(>w3}e)rzrJLkQ7-#hO>xFm22 z!jR}R}R+B5OH5^Zc zB3>>}G0o^?Wt`7ZX%2R}bGE7;i1((IpB%0(tZ!_Rb;-J#S|;8dZ9U#q)OBTW?C~+( zlcSdttgj1g|2OsK!3Ptc?y0CQ&-}*CkaObxw&y(^_c{VyA86*)7~(-4qjmnsBqzOzQivJ zE@zT(rwcUIGqaWbI_&AIFYVO@mp+gyup;ft($ocp#2gr#7% z^2ZRzH=U%km(y=N>hV%cGC4CYs}=spqI)@9=sxpN@1uJb<3?NN_>HAQX=Q4Kn+-cU z?uTI!hc(}K+0VW$GT46rBB$-|i``6-KTLbp7pi_p3txpg^S{U*n;i?2Io1Z=W4?}I zVsX1I2@YG!$Tu{ubKV&xM-Anl`+Rj$U3ksGf*6+zzz+mN$K-qV_NcAt8ODQLdO8iKYjak;fHK(kc;8?h-AgQx&*e# zv!AW3Z;LGr@4vP&ZGodfJQlH@$YZDA{MiQS2e?e@asg{6b8Tid3u#xa8TfnFJiyn%1PXC0sC!@wy{*=>CL6K9-(A9)=HmHn~`k|G^2CV_I50G z(}K%t&6+7GS2@#yg8Y5)7b1vDJNIkg?#*+Q>Dl^ki3()g6wQz2)R_2Jtrz<5IBJiH zh?~FpYx#FNeTkF)h=0r(Kcf%dd;QSbvX4hXR9j|Zwt6u&hkuiFY(qjYZxx>JuYqo4t6mzjBrpA0?}* z;yzD;$>pbe%Qo%zjF~1#o)zX*5*+#c*!{I%!|f$H0ajLI;-JcTjoy^nuh1o?_6JfB zUG76w4zg?84?mDL^e5E3w|iSKsq(Twouu4s-r!En@PPS{;ejnl!k3}wRXOpWg|8(G zn^-dwX0f5$>6a**MJlI^Gw;tBpqrDta$O^lOJbW{;du@3L964j6b+v=T0rCW(?22own|B}c!!W1vrwn2DrtM=PD_%y za_8;jH_2NUbfsF>PyQG|(^ojyA}&rRDXmBtEF=pyF@bPsfVjXS5ipgIfkh^ugHZHS r{&Rks4FcJw-jTbn>;LN|oefX|8ZeOWWY1L%o>w{VP>Xmhw_I7W9Q)e)Aar5fpt{HjM^xuD2l$V!G{LPZD zX$voSQ91ErZ$7&$`p3{nXGY9?Ug&s*-0%1?nEUZ{WSL}Sw(}~eCY70|hT6I^y5`^J zPIYeRidMdk=8dfc8PbZUm#CJ%&3#IMaU}FQf|mN9Wxjy%i#}?F?x4tQNPCBqKnl}%UXBs%VFBp@P(_sK_x$1`CgL$iG5Zs4tmzFq{5%Yl!wlQ zL1VbARbD*s;kk6D23Ye2c8!jF3bfaBt(a!hfld?{&S_%gJ1nd6$rT}8M;#oZ%-Yi& zZ(+bq)#qM?ZK<^&ozXg-n`lD}W;|7wSOZT33~Wgig>2#qdd>_6Hb@Dj7+{Zbv)^?z z3K_R28|h}%W+w(Qup1QR5qlskc6+>khnrR`XJ(-%bI-#U?}>;3=U#?GLLgahYfo~B zS@Y`ynm7ZCt1%7X@2vPjQ_xM(`ZWN83pN+AD+ri+a$sgk)%~$hEL38x>r_Pv!a)2U zZDDSnHa^J8qbcgB5iit3@fj2s{nhtd)A!L$5R+O9M5KxH*%_DghGf45ZY#uG6Bg5l z%x&u5G0KO>jsRPFahYP}sjb@{;T_+RdGMiCGhh-^kA$jGyvR{}%C+FM?i7!21t6-* zNuz^6ZQJsoU2X*iL_Ttn0f4otdfz_7UHy_hzLs~kn$BH7|5z`dG-m@W`95m{*^i6^ zkE|vOiQp|hp?SpCf$VP!N|8R$o#ggR2F!?U?jj_s|) zhU>>oWh^ip0OZBLjVHoWhOjDM0LR;?U6w6#rEo( zyQ_fVAzBKib4sGaOWlCUPc-e;1-qP8ee+>{ASH+*=XX`5G8Bg8k&!WODjNJy>i4Nh zNg2Q5rJ5CnA@YgirlmR&$s_J=Imz+%2BZBkSg;dBUg=n&dM-BVPGz0ncE5%Ky|`B> zL|vL?{k=r=3$8O+bI5aTG>U0FC@xjtQ?{#&a4AT>?bm`R){_WVkdmgbvPBhpr`JFW zizn`B3%Ia$5RsDduvaL~Tyc4?O`#+N2g%digbho~Q}MFzn=7eC8B9*jRAzv>x719Ag1Zl_lETU%H!`CEbVuR^j^M2JFNYOXdQ> znf_Qp{d4CQZ&feO;+xvfSWd3Sb)PJ8&@B|p&=Q?MjTmdMGHfTCnxlW=eyyj6;xIeQ zcrF!0_*bo}3gaX0kvBi@6g&I?GI%+0&QTY^(~VuiEPPzi`jB_CSZE;GiWzIpukDax z82p}BHl@poh_?IX$pl|1d59$FQ{&SWm*&SnkuD1-+Wun-ILj)U)P)fp)hRu7SaW== zjgCAGpU6kJ#)0|@rH zTl8Y?;&jnh-vH|TZg4J>+yLgy3)USkT~D-oV;RDSXBz99$NSst?o2;I=uwhlY2T08 zURwQ&-m3}!*j_*YRg4?PQsSbbaPRMMu3xs)cwvIm2j}M-?V25q*G;V3o z9rqkSAd4bwmz91b`)-o#>TWQJW(hqPI+lCL(!Ts|RLslRBf2`RhfSwq1``yKt4e(h zj{X&%Zi{>V8V_C<7}$Hq_7xcY)6Y?L8G%E-E8OxG_4iq0%6dL4iY2rlGBkv(*E&}S z<-?O)r_|^Y`vzTEHcM+hqczg(JYFz4t_{vkS*!DKCGA7m$?*)R)a95_r#9;RUTbAe zVbpH~I7zO}U5I~W2$vBN3vOnrnQf!X%jpzo!Y`7*XKNUESfHR>hSSnaUs(hR-%Z!e>eCR^^ zy(4fEiuGaTY2gF%oBp%c{B%4IelKnv9)tV9o2XBf`|3Hlp0Qm$&ffm9kM=%B=aRFaDdObIt3&dzTcAgu>5>h-Jt=isfeGTj+~=n2%$7 zBk>a5VjK)ihOhrTHNhN^p5hw)`%sRI6_^(pX99%NAdH$*V7dY9Hc1$w28|n+iyJ!z zuB>Cs%?=3J_OBwXqKe!Pjc%T6f0;ILs<17FwRm<7ONe&tn+T^6Rp!{rPBoO|K(#~# z2Ax`Dc+{<+p^df;^`LAAnGI^>BeFu^%shSG{C+e%`~QQ7wt8P!pFeFYk@v^`fy literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t1.png similarity index 100% rename from src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f.png rename to src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t1.png diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t2.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t2.png new file mode 100644 index 0000000000000000000000000000000000000000..743b5ff74a38b3497756aafdada6d7c2c57afc88 GIT binary patch literal 2056 zcmY*aX;f258m;$CAS}i}kY` z+ZtyvmY@6IlHh+eeRRCXNhhW>1f!YE?_I*hk?tgPk=vdRjD7XHs!G@X zQLP&!FX>tK$jOg0+CJ6W@LQU8cw&@Qm67`S-sm{(TPq1!@*C62?LAd{ognR)RvKWB>ITRr3DOMMtcL(#FMtCO3CY5|GS?*m%>L)5 zQjP$0o*~%{I={6_@fDj-aH1!!6fCB{w#VK{z*N{H;r@>&mP$K2?cg5Rmh$sT3<9p3 z9<>A9xfR$aL+N%pRrdpE)k}RG@Pa2 z1hcDqxff8}*oc6Sg1rrmX<C@l-f>8I$AGuyS8g z#mq*arWb;P2BfuXwrdH1x8z6ga#DFo^X`I=yloYFC#+l>S80UpGFXfktrkVA2oL{J#X7!agU_|rc zgzPrT)5vjmReR|}fA)o`vr)=UXADKGD)iXamqRAj-w{Oz&*@n9*36gvil-qJmODh= z+-!?e;H_nDLs`dZIj-H7eG=w6sUi)Eju*Dea8CSN^7ccsPCYN)_@77bz>|~@!(zjx zs9fiQ%sfi3EPZo|=UG-t!N-F6^E$&WxSQ!$?O)u?O2o8WQ&CUCBdL<|rCy@Lqxgoz z^MRP5g37UFdxX2&uSp*)R>_9-Rv4A~kxQd&TiS9)USfunE#{ANF)bt71#a456S!Kb zEQ$TJz5l~&9CLkC-Pi4fO8bZoa<+x<>c?^0~v@N zKe1$~)vrGVq+Sf&q*#de(FcU;GQ9#NA$o<{lpp9F%gu*T7&hcc{HZf}fX}h1@C`n@ zAee&|lZJE53NaPt7b;I!eKFx!>PtRp+F>)yz-w%_!ywy+I#6X~{4Pw*Jgd!1N%95;L|Iz-h>yxRy~1O~A=n4xH@ zZo>Viqv!kP!+rFbUEu=%_T!iRsJ7mdhb&L09QLH0E4g|XsJ2VofAG)Q98*<1b-4gk zI!DLogz4+k+ulN4i#SXX&hbik!uZM{=+c_XUdM*YXYbGIq6F5gB@3~{kv z_VkX(Ac%WoIJD0x1(S+HSSk|ux^RULsH&N z>?ZTK77IFS7=`y>mD%86Axk$r2s4zLr!r z*v&)*N;(`dE%wh^mtrX?B)XSvbTdJVqYc81Vg@1krT{{c4?;CHI%u0XY3%hKac>!z zw1yC^3!L+*c|iZMa&A78h;D&NIII2kW+yj*C&1MNR+JcQKD8J{%7O^eEg_yzv?`zX zjZ-#_LoTV=SQc}yZa(Fye3T4!B29WEPs`|DKd|iJ(TjRk)dt5vCba1d%-abt>O#Gr zvlq?7>!AJ600}Q@UXhc`%<%)A-kiGl^mpsd zBL`*VTsG8^z_$UHA7OKzU5|!~uu{Aoa5&}!*ik@8Z_H#Z+dwNxdNEKFWJvP#gi@2! z>a8EW@Yx<)7cYMvTooQS_qJFTzsueX^(8ijun#q;U@{^iqW*ycy1su;e3V1AIYa`t vjsE|~Vk=Orss5aIAkFP>kDa&LgZIarlOHr5d?U=g0nib!aTDYA1{VLnl@OAQ literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_pmd_f_t3.png new file mode 100644 index 0000000000000000000000000000000000000000..42f3ac0dc3212686205aed8c3d0e3651947d9a83 GIT binary patch literal 2071 zcmY*a2~?BE7M?#%Fl;d)K0u`*1~36da6vX9L4pw0NDvNDAh?r&C`E~+z;8rcP$8fw z1yRbPR9OlV6hnz(L6*`QKoBJ06RJ^SARxFA6=FXhC_kMHdn>%+-vje>i z^_J-Y01R0^%wS}cBOS)-ATlC-uK<8WN*2>2L^!Cv(tO6!5#OqDGr$?(%m#4tjxJ92 zxQrKOPR{lND)9*Ks(i=9zn@p8rhe!QL0!W*vGmCpasVo~eEK&UTr!jcw)~m}@BqaC zSOCS+;6Wz)BiFHy0sM2qV03)cx^<+ zId)?`Xg@75K-`MGc)H}lAV26(auf@wrq|d-lFGAdK1-!TvJ;g?9yfu^_zQeXCV+VR zj2QLUP0)qV*L`}Rr7A9(KnAgVM2u)B9ECwPV!=aT5i6(VC(({mXzh z?IOq-cPuy5Q%0eIvPYNE01}Ri4=;w`x!b6k!l+EL3-K(FyIugBUiJ?S?1$tcUx;al zs6$Y%?wa%bAZDlysl8b4dJX(IS7im~jW>#%mIz~@s$gPY)wU5uvHa8C@1dCi;xkXM z{Xp-)gJSv68Wa}>YaKk2S8XMnM8(rrOt=%DeHS#j44R>=^bL71@K5$=T#M*Y^dFHT zu>eEX-{9L7@90==ODH>;(2u|mO_7qVnbmIhAOAp4i7YxvlkAG7NlK||?ctTQw6Fv1 zd^0^+$|TMXCfPFL0(KKFOp4Iqn!2JylS8!0S%kB*sjA@hh3;W5vMq>rYbv?^3p(G9 z^!^)~3!09k_vti|oQH8|5`?&q6fQLe5+q^`19)Fj-!?= zM3W}tBpu^tJipa$62R=p)u`Nml3n$#p#;>wL=MxI2@J$CO%F5NLE@cl_F6s89*xLK z;zGiDPU8D*xgivv{vBl_v}wy+97Y*88F-I+hnY<}m%UeFN%#E4j#w(73a~*&md*69 z-1zCUv0buy@4HWae)PD6(0HV__2&5DhX}WeH8rSg&PYA#)LDO_{;io$Baub!mmSL0 zk`hfg=kw?=PLqw=KWwx#rpN-#+Id^`XCw1GZr}@HYT@-~M6(q)HYA4ql<$ka_@vS& zAsL~h|M`^!y4=V^x!)_@EFg#UXD)H08)E-vD)25<7$a_7zPS^#!;@`&N}vvg8@{!( zh1YxRN(ozYXPJ1@PVWC9TW$;&ZcUIGx(!-CarpvVhOx(Xl;|(xbaOn}9U6k7rC5HC zq`4pxzw5#HzUVb}4qcJQFHf(SP1jm|<-g~xZeC_p-d>x^!Ok~ndlM31>4po-uY_Ze z8$fhVa_!3MZ7Sfy&)cmJUnxa@xn{UHI2* znhb0*=T+p@{t%Q!{)@zVXyjp)F!nKda< zPD7;EoTCF28r8d9hpne)@%vLKo-V^O2q7*dU9WfLq1MHPHg8J}%lx{_OY}ng(al@v zfxlbu1MF9R!-(+g+aw?&nXN$4a(qQ0et&fuu^du@v&=Lxok*6sju(wOP$o}t>vXJq zyA{*3_lGi)I^6EtQf^rBV*>oLh+*=fwhzu!Cq{4ZG4Hs{^$qfS$|+}y)eHq`thcBU zt6bi#t9)HJ>gE&UoMa-q4GOL-NwW=3z9Pd#cI%Q9$-gXG<1!($)n6K zZl@u@KD_l>#~OBG1e*z-cnBJzQV1^Rb7j+GZgB=+YOIpL zs5TzQi^RD`D~e_2ZN?r^uouF zm<%=lUMs-EhE%vnB(`NF6guWFDw2&w6f{&|URlA{o6|l$N;K){$PJ*MX$p(9FEsa* zM$Dl-H<@NEVN{!vQTP_=ZDe6Ptgz12R_`0L(hSOmF@LPmk=L|HK@(yMHtsgruj;yy zM>cKAz%v>HyNe24u9EWo_2mV+86ft(F@sdV*M*IN>qStCuLY%hAm%LELL7&!KU-^k zsb|evczz!JYFIs<`rc-7^r46}wIn~XME1GP>w0smzdiCbwP3F`tN>{Hvp^b%kVXb( zrvDY#%>WAv&@i~O82`WfF7Gbg`q*mIEmo3_aw=ul=PMdau}+kdtW>&GBkLn7??38PcY{;8 zEzR2LYkXB)=yHzrQPGE`3#+4E#nNUGS)t|LyP3OZ=6Rl(-~8tJn0cOG<$^)OoaMwF ze;==qW3M#5YqI)%7C!p;2WEq2mwxI>P$=EkMNCeA*sf5djr%aHP8)ChKRkbIYk6{7 zc%-J}njKQ3d-vSBZceKvbX^`@wNt%Qo^IpsCJGq%%hk{$l9<%2Y}7DtV}LMdJkSn- zN`=sQR}x^zBYM!DL}qiXT{lObyGSMhGj|P#>sKMCTevGea`(`})GKj^#Z0o%$Rlvs z@}{Ud38*eW!YAGjzPZSeug4f~<_EM|JDq2bwn|a1BckXaG^#*4)c}h6F{Ji?XF6nmmg8Z^kdNco=?&rt zplXVYv*ZX5BS=63I@HRrsTdw>~(xzOShPx?5Wf5hQnoi8=%z~~qYUy8d57|I(so~zZwj1aT z70|~z1bC~I%;yMCb<})$d(U^ofpDI`KD*6Rhmj&>k1gK?Gzt3!z4>T6t>|$HtnIo zUa?wV4Hl_@8W>$@(X6+MgZg&$t%Uwb$uq-XpKF$~aTh2)Ws#dbQ)KTIGsLj3HgFoW z&XJOnF&TjYTIKhD#w5f2YA}P``Z02AXcQ~xH&Zufqa3tUf$S-mXX56vX(=i33l?U? zg`RyTz||>Uo6Tj!zoWVLLW7-#YTKeOu-(&d?GXLrg@oF=eqWe+B5$ zYY0X{3Q(@b+8E>i02;y;*1068UlCbco(jZ+Ca&zVi#!PU?y?vFiA>oQDXH{%3&M6X z#11*3yhOM&H9g#&Q&_Ow$|yjKR-_Vuy}>hoH^)!tn04ZpW@_}2jM!Q4UfW|Iq#`nC zikXKh=ZFdxsct)PuET$!NrH2Sw?3vD zi{U@l8?mE<-NTd#ZQ(_!2o2hgKOTF%*A#E%^1dLWyCW^?=BCHTKPx8&6ww)GX)4{! zXv$)QdUrNJLabm9C2JwpFxU&w@j%J}U4%0r*dn5&4)p@~ literal 1589 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 YE%R}R!)}JB20)gZ3*EV9S8&?D0K&(iYXATM literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_big_probidia_f_t3.png new file mode 100644 index 0000000000000000000000000000000000000000..08bdcb138115f178492db7e87a24d41ce1a5c9ae GIT binary patch literal 2088 zcmY+F3pkY98pqen8OJxem~UJvM~oS_vfYY`%ow?hnPG;KG9q2Jq_V5cP_yZ42sOD( zM4}KiNzt}Z82PGQNJVr~Y?m%hiD@R(m`LYq?{l8#ob^2Geb=*|wSMba@4MFjJs!Yg zEzmL20RSvu`+BX%Jc@M$`a5RBQX=;Npsi$kc?2c&Db6)#S~!!Asp;8JHUyD~M_@9U zy13MW5<(<)OB0e4@wJX-W;U>y$+qML36&lus>?y4cKQ7u`W2sdRXFt|CMxN@vdoSa z#jZ|YbMkR7s`NijKJ`SqnDKD?rr-IlM*(B*O-E0m6;klgKJ2cEwDpd9PGrjX<>QN9 zeqL3luu~6xI4y%ln-d0aeVuvvsH4eB^yzC;rp?x&m053@-)0Y}7fN?EEP~OK)A2A` ze55(4cIy$*r>RW>#o+3pBz2U#eEPsL90_Mf#+8F|c0_mVEd#Cn!b)O9@GJyy6hJ@# z3C+YuDYUWi{&tAu%mtyW>{FBZpv8&1beq~!3iQ!Dn8F7uUFHcHxLWAP z%>-ZGAKNjCpDmsXo(Ki+Niy|mLN-JBK_ltWC$Ac;Usb5S?oWMZfGon10Des~L;^w! zoRb9AWA45fUI`q=pBWnB@Ms=pRJNT-$?6N#o8G1osS6fcWG~;5ypu_+E3L+za2_&IB~{0khmku^XLs-<+3ynmVy{# zfc(&9?dU!XOF;eNu6a4#F?gxuc|}%jgmF`39T=^flpJdVQSCYXyb!Bsf+42N=AoDW>(u` z_ehe<4AIL=w_Q6Io@FcnFN||qF6!T>i=EhgrRZ8iWj8*`Og80&mr%y)V$ZpASuR=T zqXEN9v*JfB13DavoHZAY`yQI05BQu`PeQ@wL83pQ5K3vAVfg26)H_6IFC7fTCKU+azQxjdn{Ev8{qP3U^&v(mU08-w0x5d6}uNWUs6cR zlp!1Dh6i+&x%hVj1QG4j0Ky!&@g7d z%C5n*#3y^T05)Ugl&5Llq&$MKyb9&m`YQjf1kb1jBota6_v&z={;;BzOW1E2byfL5 zt9M;C%kO(GO_iraVjAJ}@0RoIIhi*~S!?eFV}Mn1FOXc~)>z^=;$};@IBR0|=W!qH z8muX zzf604K(K%_2AA(C{ll>bw&C!eVwkLWP3wiHzTL+PS=Qzrnz(@_lJTS~(z4l{HF*4cB->uTBbgL0W|@?TNDk&e=$ zJB)IzUFzN{lCfWeMPB69#R=Ny-;u7j30-?%<6^aj8FURTt8Xm`9Uk~FT?89aMxlcO zei%VXe@jrt@lIrd?B5b-Kt;v`D5291 z$%{fT@mPi{*KNz$BK-zq;z0uqFn|WeV`uM+puG`Pa34Gbb%4(VTpF=%mma z3B>!}74*gGJ$R7g?|vdNDBNL-sb{^Xn&9cS_>w+)nZYDbQWd+?J`n4{#SNAtTRYph zgVzqF&5H;!1$TM>!1*YNsbKE|%K*j0%jbCxss3h2?71SkOB{o~qQDSYtv4U{dTSCx(?V}kmtPe22WL)761SM literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_burnt_f.png b/src/Decentralized/ModFiles/Textures/Items/gpu_burnt_f.png index 1131534f92d8cc363097d2622e3f64a03ee4c355..bea8544c108449347abae74fbf01527660673d5b 100644 GIT binary patch delta 521 zcmV+k0`~pi1m6UZVSnD8Cc+&IySF#@ee>$!B&Z7a&=P#9(>z|7koG4Eu0SHq2*CyU73ktX# zUzI7O)(RMo#-(XV>0=>s?<34MFo;cUP=FpNa9RYYFWcTd{C_rxLV3$9S${;-!O(kl zaw`SkP$gie-(Mi2uhg>vSrJ}<_oFXt|14R6-^3vSfJ20j#ssW!8xSI_02^Q`M(YB| zNoE~F_4PjFB8&;h!AKGit3n6}<*R0kcjT*k$Tda)8fU}S#rRP`tO|Jnww#IJSmN)rvPhWviU1C)zgu%?mFj}cXF>;7V1M8D201WOuMk`f_Q`8?a zqyqu?;6o>I4u&SCl`3SvV>lgS`D%lYeG8>xwDv8eaeo_t3?ggZM*&$Oxfp!KCT(JV zks)9@JX*SCtpFPe0m{E+n_n?m(h6MPkBZ~ze%Z>%S?*JxdGo%h&n#xr3h0GZwWJkz zeHfNG*req^YKr6Aq!p0k>|)TUML<&=-v$NzH|ze6?5^(mx;_DNRO8qVp^f?g0000< LMNUMnLIPld>uK|3 delta 521 zcmV+k0`~pi1m6UZVSnANCc+&IySF#@ee>pm8>AQ;Z)4#Hx@NV9S{ZKHlFJ z#+Y6D3WybGihq&3iL0uRC0F0i8tKOvvk0jd&;+AZ6@r{k4g!IgrMDIn&=jN9CWf56 zv`cQuyoCfb#b{lHYqn>SFK}o3x4f zMTUUs@M!5)YX#U)2vGhl+x&{jl2+jQepDP!_sdpB&T^mn%$xU3eP%I}RzNSTswJ(! z>%*|j!8R=iQd=C~Car)RXBUH3Edtu&_%HU&vh)T zp?fyJguLY@Mt!vmhvQT9_RP>=ezWQ9hNMNj9kU;|iwfs59F6NZf8s!w`zCG=vxX$` l2Zt0Y=dcA#nR$Yh;i+}nudF+l?f}hZ@O1TaS?83{1OOJoFj4>j literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_brk2.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_brk2.png deleted file mode 100644 index 6c07702f6e7b0418ea2a0ac949ce66102ca44cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QpTPxjv*Dd-kv|m$)Lc)u(3~n zpX?FEUE#H*tP3X`;4KgYs=1tc@0A&t;uc GLK6V*gdleS diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan1_1.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..39a0b74dd3783b4b82785228f9161f5ac8060743 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QbC?Bjv*Dd-d@?r$)LdFa`Dan z_5@YFiF>z97rEu(_kZ?-(}HIi7z3<^ z&)@B@tv0_o{p_i$KmCIx?#7n>o8E3StIz8HJ$)Xa713H>BW5Sv@n5e1vnZo>Q-d$-O&pFZ_ZQgT$umJ2&?J@0wRv!@>+ICBpy! literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_2.png similarity index 100% rename from src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2.png rename to src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_2.png diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_fan2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..74eaf19bae24057973fdcc44b05bc23d55b4bed6 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QnsEhjv*Dd-d^3v$)Lc)azID* z+B^FxVcQrFD!q_hQZ08$MUbJuGe0@(l)UKsl@tD#b29L2?L8R!iGjf;iE)jvk*0yX Rj|tEq22WQ%mvv4FO#o6dBDVkl literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_stk1.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_stk1.png deleted file mode 100644 index d13de8fd01e7ae7b233610936be1920778f8b482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(Qt6&9jv*Dd-d-`}I-tPQnt1-v zwY}kDR-*h58LQaX*H1j>i2_X&Gl_gt*krVDa|{&pO4|fp5wtg-ek9$^n(oWboFyt I=akR{0ODpkZ2$lO diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz470.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz470.png deleted file mode 100644 index ebeba7f84b68c9903efae620c535c1888a488d43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(Qc0dJjv*Dd-d=X(YETeh4R~MQ zzaTVR=T;AB^X&>4?uK+ff3;)|$TkK~S3j3^P69JMC}H)jhlKc%9Q{J~G2}qN!+cvdpf=oQBm4 z+xP{#?P@2#Gz-v-yX){>x}vxv*o23H;lOb|d*QiL|!l`2gw1C0W)z4*}Q$iB}{qQo3 literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz7900.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rz7900.png deleted file mode 100644 index 50dbd2fd62e4eb691aed98f780f1b9c3a43f7793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(Qpuh!jv*Dd-d?`Q#UQ}bn)v>| z+^MPID&>>TsYUAjTfbz>jaf@s7#f^c?(BWq8@zGe40YBuySRcp zTvPD+6+7BoxLD7Akei}ce?mQlhasZi+~cZyS$V3zD;s~LHy?|c9dwl;vT?>)ufO{m uvleWRShQk4 z-zj`=lJ|B+uLbh4XBu`?KHxrhjbTB8{kG3`SMO*Rcp zT+`(6kQnb(jJhvB$W76cpEY5bDTBw2{$OTD?bP0l+XkKQY1F6 literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx50.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx50.png deleted file mode 100644 index 100ad9392c77213b5ecabef49b0591099af710f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(Qi+}}jv*Dd-d>63YETehaCl$e zzhM2kh%ehYPDw2kG*&pIwdwV05eAPN{cra~=i7Xnxz(sRUU$K}WTCxGZqNMe8zr(; zLyk`uz2I$8%rsx?!O3;o*4@A4Zu=>twiRf6eGy~ByotA&H=maP@)$f_{an^LB{Ts5 DS8O=K diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80.png new file mode 100644 index 0000000000000000000000000000000000000000..95ebf31cd595f5a3be74206575b21f57b755a816 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(Qt_THjv*Dd-d;Y))u6z`5b*!M zeUsncq>H&M(QH%Y?lA|3lqBDhVkn8&o@yVxRqpq^%~jv_%{s8P-!X*K=H~Be)<-d7 z0b)NcaHTw6sT~koH{IdupSHSJnfAIs!{x0R8j|N8K6qbeJ&?!X>FVdQ&MBb@0Nw95 A>Hq)$ literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80ti.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txs_rzx80ti.png deleted file mode 100644 index 616e5561230ebfe4b226c38c1989305ce7e30d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QrVs^jv*Dd-d^$MI-tPg8u)!b z|G|mTA#+j_zI4h9ykp#WV}ja}Tn+{Xj-bA!YcJOB*4{ZK!gTqZBk#6#1Tts6$x3!t zOE|xWy}I@Mr`Wj-<$H}Am-Bu(X0Lsq`tLlG4WAX)9s6{e1!z%&dc> wJ7aFa>b-y2_L+U?W^v1}oN{2AJzopr0CCthkN^Mx diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz580.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz580.png deleted file mode 100644 index 5d91b8e592a740b10265d0f672a385b942ca547e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QJyZ2Ar-gYUN+=ApuoZ4@c;iT zyF>L?ON^Iw#daNzP2%uTSSZ49Bj9zZeg2u>x1w!N)yppEPqsakZkWrwS#6Q;QoavM n8(%!{mq;jO-fhkZG}2S5ylz#>ju|;>Kn{batDnm{r-UW|S%xt| diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz6800.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz6800.png deleted file mode 100644 index 71f95666522553e4dc6cedce136f6a693c386f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QsJI1jv*Dd-d;Y)c|d`O!QuP- zWzIXom)c8h}%6RFo$M%K(d&N}S^EGr{@BF<7ax$JB s+par7^2e8B+w}~pr^f$d1e&@dyIB5uT1L7=50Jy)>FVdQ&MBb@0RCq*dH?_b diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz70.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rz70.png new file mode 100644 index 0000000000000000000000000000000000000000..784b5e6a97627e4daf0cecde28ee7d66a6d66b73 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QvRMUjv*Dd-d;Y)c|d`OHQ@XF zV~TfHUz**q@TF(#cZVYrob8STF(@qD`fE>mUH{fl+gG=R681d*75-n4@gHA(Ov4+8 k>nt5*)}O`jM` zWzIXomzq!Xxa@rOaJ9lDjf_82m>4*>#(lqhY{z-mpX)!aXZ`YbM*ZyhZ>QgNNc+55 w_jv*Dd-d=X(Vo>B@IPmZP ztXh}1Mgn@$JQV1o^PrNEl+8%JXRALzSnwRa706@oboFyt=akR{0N<-`zgm;Qul!WA6`B o<~1fCx*7MCC6uWH4SX;`+-A?(+5Z(y?SVW7Pgg&ebxsLQ0NCU-VgLXD literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rzx50.png b/src/Decentralized/ModFiles/Textures/Items/gpu_ov_txt_rzx50.png deleted file mode 100644 index bd414bd830abe8670324c1376ac3a02fe3f77af4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QsJI1jv*Dd-d;YjM` zWzIXMFKv%w%6xn@<{q_lO4er*%be6xyS_7=|}Ue qO!qLaogTM|x$xgrd7zOEyP0!DR;65DnHd1&F?hQAxvXjM` zWzIXoz4>iTuJD`QyT>fJ*du9!2*Zqk*M;|#*UgWZQ~mr=?Ai*O%`pzz2kn2ypIoYD z^U6X0W*~bS_l;YP7roO<5~>+z)&mKk=^x4%Z>ya>7{B6>Bap}7>FVdQ&MBb@0O|KP Aga7~l diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f.png b/src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f.png deleted file mode 100644 index 96c3f7ff98395fc6d0928d23693629bdd6e952e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmV-R0<`^!P)axC_I+X3xyoojbcpuh*3|C_7t&TFWZ2i`xUh^UG6xbZ}bVP9|Q!SVu6nxv}k) zVg&9VW(|R}^9$3#<#OSbSbb|<)JADTAV5N>e_LSJCr$!aUXxs>nnr({9 zxYhw?2@Lv%+DQNtaGW&>pbgpGJ8p%BT=C3ZlKLc(f`N5%bG-zp;3FW7VxDb;o}RM^ z#9#yy&>yjjfCQKEiavm4Uy_gnQZR}WU`%qyXb^3zr*Rmx2*h9n5wNll30U#UHH=#t z#~2+Tfm{qP0V@k>0y3S!z{mUBw=wQ6+b#mB7+G0J8b@31+M*h^JI68ZqD3GDBP$Eh zIG-GPCt*yBMIaR;>m#Od#-+=!E52O>QZcf#kW6pTW1np}#_VEcp%jcFS;#U@L+neP zPy#<;6v;xoMfD}aaG(R)dDl%GgAw(V2z?9jcC_MEI&Zy&LNSWHg)lB1fY6W>tpkT7 zkys4AVuL~fG*lRz$xuAKz_n{VHN(^?U#T002ovPDHLkV1i2n{e1uc diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t0.png b/src/Decentralized/ModFiles/Textures/Items/gpu_pmd_f_t0.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6ceabd121f3ad580bd13237a750b2cc515b81d GIT binary patch literal 582 zcmV-M0=fN(P)7%N#4E?4Yl2FXi#!S$Q`cCSUXph(4Pe z+gYj&@bEaE0i0i4Mh#A)ZYE$!C=K}C#Aq7z5JO`+s6utTEYrU?B8=z?x zve`$sh0Z*TLiTwf0Nz6!+S4KP)^t@ST6z{DfF5EzbLJJ$nqOHK3S}Z1wg9Z-Z^goX z2RvB_vKht#uuefV`?vuX@hxN_^kdCJRBfH5e+xl2uj}_uXz$ZJ?%e?T7a0MNyP^Ao zz4?7i+K0wyE@m7`#er(A0GFEp2H)zWvH?Ev3Cyc|+ zI=g$L5$?ia-)Hvh&Yj()*Xz;>q^*s9t+7n*6u6B%zdY54`zQ6ycpROWY7lMfYnxd} z7I1ezZ3LX2otq1s&u3Ajj!)$aZj?3z0ThJ%w*k8`1O;4Q3D()%S6by z9s|xcIJh?CK>_H%!kJS5%E0#S(E>CS@>}kb98VEB9GE9JH!6SwVgjU5^s@}t(|wkJ z6b`ol{Sk)*NOI|~sDoJ6r3fh?hof}?^hxd*4Wf+sG!BE7fD{gw04oYnfaR~8L%*eQ zv~d9xP|6V%U_~JGSZ5gvV|1~iP!2~cQOGh*L#)d& zUI9OGv=W7Qi|R{;?!X1;#fNU<6po~)g!e7P+tKn@xp?a>tX1<->*(1GPX&cb?cKWqOPTLj)J9&G5txu0H>WA^z`=Zq$o^5aK zt^~7y$ER5%;PUFaGr+}S?uC_awdY(Y?Fa%W2>o9JetmEXxEz18M^zy>qcIHzqw9J~{?dEESB3OV%+-*A_-@u1e)$%%3P=spw-8T11)vrK)1!lS z+=W~mQwDf(Pymdr8?LMbW#ImKSPv#AO%L#6ioZkWG&DDKPTCC00AAQs1ZCjkrK%^@ zc~s9^G}eypgE9c(?4}>pQ$Va8-8%*RHjC3LcUxV*Y{_*ZeU#(tO9OFcl8m1l>(~a zXzh@(!CD1i0D;p|0Q$iG;h7gOAB(2q2MHiyl>nJ;pMYZc-U9SXY!iTIwu%6rEufVA zXaRK2=jh{wXP-eapd5UsfVL_`0dRuJ03Gw*;7-Yaa`2r3+NzM;eU`DW&yS|hh2;Xd z`N364rWfOQzNiMxE^#3pP%eIO72*Qi3GNQkOV|R+#qabI^BiKFXA@_Y=hk+nQ}d$) zFpYG~zD%zSCVuBYU$ya!xWNZ-WV4H<~*W{u&OZ=p~DsS)%o#J8UU zP>X@bql2d3hFqMW4DjNh061GWY+3Qj!2N7!29uN80{ocbZ{INu&Gj9VKD{!437ZP9 z47|@PGpWv_EN{_RKiYa_0L1A{Kgv=-tRHQy0{$Dy-;t%2_S3!r;@kVpyS=LX00000 LNkvXXu0mjfK2~Z(KKpMq5$4EWB<`GE2 zh$f&vVvB$Tm-&ik0Ly1dLK4Wqs7`=6$%xS)#(1B`VbCLxf)Pc)t3o8;F}fUE1adKos*p5}v5eZy{b(6E&M}G}fgFsYDn#SF za_C6Hm==#fE=JKuOykT;%dnN-7J*!h;wmJ|8}#_hF&txc@v2Y`MwKe$8K)sWOPyE( zKVejFdx=O^}g?Ku8`6`|F?n1E`)$T%=mkvN^NQ%~hLy|}; z25+%ZA2ENCkpOBl&0GNz@L!J~ZvLIWFpXAeG|iK57S`IJ+Dc^(0V=qkEIUf0O?2$iDUMt9=6D^z8$i S4!Jl00000S->P)Ln|%88tCyw1$d z?p-$uyKtDz%;e7b=I3T~FzBB@@a$|2ORFx&N+~<&)AM6_xPMySPA17OdIv2>=A*fK3&eS+>REqduh|z}5JAxrIgk7IvPS-Dz17%83aHBjI$&F-l5&Sqe@xxG^h};wAt()7&x&q5v32x6@hyQU{jXMgceu+X)bY$OedIp{^IGQu@MIwcP~$uYsK2=%t!7{Abw%6&O|y{A zKDsS*=3x}FpIZU&9^%lR4w<*6t1?mNS%?67i1C>-uYlJ4+Okk66Vb2*U>$!eTKgUF zWFg3A7z@BU1<~x|2593hWFhpjW+AG!PUm+a$mVsu|Ah8F&Ewq-pns7O0J$4FnI5d( zW70k}MsqRaP$~{oYX!L61VAv4)TmW%jL@oNt$>{kUU@?^m1?uHeRJD1X4VRLXa6^q zwF0jXML8{wT_tn9H;yf{RsbDmmqS-c0B;;y1_Az?`hQ3EPyc*9pYyA)s$aL+f&c&j M07*qoM6N<$g7E_R9{>OV literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t1.png b/src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t1.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc1ecedb7004ef7cd8ebc32defe53d2ff03d26e GIT binary patch literal 580 zcmV-K0=xZ*P)XSqX2HumwO%k9&ihwkVb&ipGdd(w{ zgApd6KVpl31ef`WX8_A*NkS4R!DyWTbCMCGL5%S}jl-ZvAO|Bvz^g(e;N>gdVcya> z=I8(k)M6wFcvVOfkmU>pKHlHH%`v(hTLelms;ZDQjR%Nz9g%rP8eb@8fD2}Ubb$TLnue3m*< z0zYB2QiXVm>O+R@T9fO2+Ku3c)Yeg!xrbX*U*Cb|W z2i76_o`iPb^Y5Y7J(ECdS+v56m82!dD~5(}Gvplu+3L{eK?Dp-j>B88>D!NR|B@*?jThS|+d z_SQt$g~u+p?`G!B?9GM@26b$}*xMPl8YOLeknH63?WH|FJa6wOljw_Hhj_NVwYw7B z0v;Y`3jr6GSHS@1^Yfg3b+~HE{+gpDWDmR*A5vQW>Ww* z5IAQFz#7;;I7tHDhtt0JE&(Jg6Clf-5>O65S%ChCEdh9DbqnyUfcoTT3!rg6#~L3z z*9?jQmEcDOgt`y~zzALjXqfi~GbIBm!H)_Ebs?F3wz2Q8&u&e}(m`pyy9>$kVjs`% zoD%>rD5}&l12g(lFPuyfUB? z{H!hnXEdh4V02&alfU#Hh;<=-6Ehn!kl4+d!>_-EyaM`$>$ecUehNS@2F|8O-8zI) z99IQ+aZmt^ts7QVk}9CH!5>prreb>OZ6;M<6S5ydQUyMqn|9iqX3e}sbM5Fk wsRAI*u7_DO1?1Y%vnk-eq5d6NM;*W82O2cY?KV^-W&i*H07*qoM6N<$f>M0f!2kdN literal 0 HcmV?d00001 diff --git a/src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t3.png b/src/Decentralized/ModFiles/Textures/Items/gpu_probidia_f_t3.png new file mode 100644 index 0000000000000000000000000000000000000000..2fce0f52c1b21e515915fdfa4996ffc2840beff1 GIT binary patch literal 512 zcmV+b0{{JqP)zW+%Q#MQ z$tK}WNZ^sMc{`amlT4N!3~Jkewzo5EHTt|0gIqQ`XI@^P+vCIY_I@()3gFAzTf4m> z1*F>eCE#H`TMD?iymG2uEZ(vp)E4~G_!D4l3<4;~GEf>=*9TL;&G>e?h0sd@&1k%K zNZ-(#0x$u`*;4?D>Gz0Zbze zb1c&<9V)?3szO+d#x&@RuIoAZEAIhc71B2`qahvf-K;76`YjYIAUC4Eg?RcY0JRu6 zn;vyz7fNxWGQf+20$^<2u(A@A0UZr~Oj(ig&1q*#? z^A=6Dqx+x?fH=DzCiN7MYDf2`fd7X2JF>Rge%d$qV*X*&=U@x~0000 (int)CardValue.True(Items.ToUnit(u)), - Items.IsGpu, null, () => L.T("appraisal.gpu")); + Items.IsGpu, Items.Guide, () => L.T("appraisal.gpu")); ModHelper.AddDebugFunction(ModInfo.Id, ModInfo.Name, "Appraisal client (test)", () => Log.Guard("鉴定客户(测试)", () => { while (AppraisalRankHelper.GetRank() < 2) AppraisalRankHelper.Promote();