From 5029f80d29ec7e2813352cd89f2df42c96da656a Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Tue, 31 Dec 2013 02:01:50 +0100 Subject: [PATCH] Revert "Dropped SpoutPlugin support" This reverts commit 7bac0e2ca5143bce84dc160617fed97f0b1cb968. Conflicts: Changelog.txt src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java src/main/java/com/gmail/nossr50/mcMMO.java src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java src/main/java/com/gmail/nossr50/util/ItemUtils.java src/main/java/com/gmail/nossr50/util/Misc.java src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java src/main/resources/plugin.yml --- README.md | 3 +- pom.xml | 49 ++ .../com/gmail/nossr50/api/SpoutHudAPI.java | 29 ++ .../com/gmail/nossr50/api/SpoutToolsAPI.java | 79 +++ .../gmail/nossr50/commands/McmmoCommand.java | 11 +- .../nossr50/commands/spout/MchudCommand.java | 58 +++ .../nossr50/commands/spout/SpoutCommand.java | 58 +++ .../nossr50/commands/spout/XplockCommand.java | 89 ++++ .../nossr50/config/spout/SpoutConfig.java | 75 +++ .../database/FlatfileDatabaseManager.java | 14 +- .../nossr50/database/SQLDatabaseManager.java | 16 +- .../nossr50/datatypes/player/McMMOPlayer.java | 35 +- .../datatypes/player/PlayerProfile.java | 32 +- .../datatypes/spout/buttons/McMMOButton.java | 24 + .../nossr50/datatypes/spout/huds/HudType.java | 12 + .../datatypes/spout/huds/McMMOHud.java | 106 ++++ .../datatypes/spout/popups/McMMOMenu.java | 82 +++ .../datatypes/spout/popups/McMMOXpBar.java | 305 +++++++++++ .../nossr50/listeners/SpoutListener.java | 95 ++++ src/main/java/com/gmail/nossr50/mcMMO.java | 32 +- .../gmail/nossr50/skills/repair/Repair.java | 12 + .../nossr50/skills/repair/RepairManager.java | 8 +- .../com/gmail/nossr50/util/ItemUtils.java | 12 +- .../java/com/gmail/nossr50/util/Misc.java | 15 + .../commands/CommandRegistrationManager.java | 26 + .../gmail/nossr50/util/spout/SpoutUtils.java | 475 ++++++++++++++++++ src/main/resources/plugin.yml | 94 +++- src/main/resources/skillicon/Acrobatics.png | Bin 0 -> 506 bytes src/main/resources/skillicon/Acrobatics_r.png | Bin 0 -> 229 bytes src/main/resources/skillicon/Archery.png | Bin 0 -> 580 bytes src/main/resources/skillicon/Archery_r.png | Bin 0 -> 260 bytes src/main/resources/skillicon/Axe_r.png | Bin 0 -> 210 bytes src/main/resources/skillicon/Axes.png | Bin 0 -> 496 bytes src/main/resources/skillicon/Axes_r.png | Bin 0 -> 230 bytes src/main/resources/skillicon/Excavation.png | Bin 0 -> 547 bytes src/main/resources/skillicon/Excavation_r.png | Bin 0 -> 238 bytes src/main/resources/skillicon/Fishing.png | Bin 0 -> 3116 bytes src/main/resources/skillicon/Fishing_r.png | Bin 0 -> 2912 bytes src/main/resources/skillicon/Herbalism.png | Bin 0 -> 498 bytes src/main/resources/skillicon/Herbalism_r.png | Bin 0 -> 220 bytes src/main/resources/skillicon/Icon.png | Bin 0 -> 365 bytes src/main/resources/skillicon/Icon_old.png | Bin 0 -> 399 bytes src/main/resources/skillicon/Icon_r.png | Bin 0 -> 195 bytes src/main/resources/skillicon/Mining.png | Bin 0 -> 520 bytes src/main/resources/skillicon/Mining_r.png | Bin 0 -> 224 bytes src/main/resources/skillicon/Repair.png | Bin 0 -> 500 bytes src/main/resources/skillicon/Repair_r.png | Bin 0 -> 201 bytes src/main/resources/skillicon/Swords.png | Bin 0 -> 534 bytes src/main/resources/skillicon/Swords_r.png | Bin 0 -> 201 bytes src/main/resources/skillicon/Taming.png | Bin 0 -> 777 bytes src/main/resources/skillicon/Taming_r.png | Bin 0 -> 205 bytes src/main/resources/skillicon/Unarmed.png | Bin 0 -> 523 bytes src/main/resources/skillicon/Unarmed_r.png | Bin 0 -> 188 bytes src/main/resources/skillicon/Woodcutting.png | Bin 0 -> 3155 bytes .../resources/skillicon/Woodcutting_r.png | Bin 0 -> 215 bytes src/main/resources/sound/level.wav | Bin 0 -> 169388 bytes src/main/resources/spout.yml | 77 +++ src/main/resources/xpbar/xpbar_inc000.png | Bin 0 -> 377 bytes src/main/resources/xpbar/xpbar_inc001.png | Bin 0 -> 393 bytes src/main/resources/xpbar/xpbar_inc002.png | Bin 0 -> 384 bytes src/main/resources/xpbar/xpbar_inc003.png | Bin 0 -> 411 bytes src/main/resources/xpbar/xpbar_inc004.png | Bin 0 -> 433 bytes src/main/resources/xpbar/xpbar_inc005.png | Bin 0 -> 442 bytes src/main/resources/xpbar/xpbar_inc006.png | Bin 0 -> 446 bytes src/main/resources/xpbar/xpbar_inc007.png | Bin 0 -> 443 bytes src/main/resources/xpbar/xpbar_inc008.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc009.png | Bin 0 -> 440 bytes src/main/resources/xpbar/xpbar_inc010.png | Bin 0 -> 444 bytes src/main/resources/xpbar/xpbar_inc011.png | Bin 0 -> 446 bytes src/main/resources/xpbar/xpbar_inc012.png | Bin 0 -> 447 bytes src/main/resources/xpbar/xpbar_inc013.png | Bin 0 -> 438 bytes src/main/resources/xpbar/xpbar_inc014.png | Bin 0 -> 435 bytes src/main/resources/xpbar/xpbar_inc015.png | Bin 0 -> 440 bytes src/main/resources/xpbar/xpbar_inc016.png | Bin 0 -> 423 bytes src/main/resources/xpbar/xpbar_inc017.png | Bin 0 -> 441 bytes src/main/resources/xpbar/xpbar_inc018.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc019.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc020.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc021.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc022.png | Bin 0 -> 462 bytes src/main/resources/xpbar/xpbar_inc023.png | Bin 0 -> 461 bytes src/main/resources/xpbar/xpbar_inc024.png | Bin 0 -> 466 bytes src/main/resources/xpbar/xpbar_inc025.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc026.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc027.png | Bin 0 -> 461 bytes src/main/resources/xpbar/xpbar_inc028.png | Bin 0 -> 455 bytes src/main/resources/xpbar/xpbar_inc029.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc030.png | Bin 0 -> 437 bytes src/main/resources/xpbar/xpbar_inc031.png | Bin 0 -> 439 bytes src/main/resources/xpbar/xpbar_inc032.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc033.png | Bin 0 -> 449 bytes src/main/resources/xpbar/xpbar_inc034.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc035.png | Bin 0 -> 447 bytes src/main/resources/xpbar/xpbar_inc036.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc037.png | Bin 0 -> 450 bytes src/main/resources/xpbar/xpbar_inc038.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc039.png | Bin 0 -> 450 bytes src/main/resources/xpbar/xpbar_inc040.png | Bin 0 -> 450 bytes src/main/resources/xpbar/xpbar_inc041.png | Bin 0 -> 444 bytes src/main/resources/xpbar/xpbar_inc042.png | Bin 0 -> 440 bytes src/main/resources/xpbar/xpbar_inc043.png | Bin 0 -> 444 bytes src/main/resources/xpbar/xpbar_inc044.png | Bin 0 -> 434 bytes src/main/resources/xpbar/xpbar_inc045.png | Bin 0 -> 430 bytes src/main/resources/xpbar/xpbar_inc046.png | Bin 0 -> 434 bytes src/main/resources/xpbar/xpbar_inc047.png | Bin 0 -> 435 bytes src/main/resources/xpbar/xpbar_inc048.png | Bin 0 -> 435 bytes src/main/resources/xpbar/xpbar_inc049.png | Bin 0 -> 433 bytes src/main/resources/xpbar/xpbar_inc050.png | Bin 0 -> 433 bytes src/main/resources/xpbar/xpbar_inc051.png | Bin 0 -> 431 bytes src/main/resources/xpbar/xpbar_inc052.png | Bin 0 -> 432 bytes src/main/resources/xpbar/xpbar_inc053.png | Bin 0 -> 437 bytes src/main/resources/xpbar/xpbar_inc054.png | Bin 0 -> 437 bytes src/main/resources/xpbar/xpbar_inc055.png | Bin 0 -> 436 bytes src/main/resources/xpbar/xpbar_inc056.png | Bin 0 -> 432 bytes src/main/resources/xpbar/xpbar_inc057.png | Bin 0 -> 438 bytes src/main/resources/xpbar/xpbar_inc058.png | Bin 0 -> 436 bytes src/main/resources/xpbar/xpbar_inc059.png | Bin 0 -> 446 bytes src/main/resources/xpbar/xpbar_inc060.png | Bin 0 -> 462 bytes src/main/resources/xpbar/xpbar_inc061.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc062.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc063.png | Bin 0 -> 453 bytes src/main/resources/xpbar/xpbar_inc064.png | Bin 0 -> 457 bytes src/main/resources/xpbar/xpbar_inc065.png | Bin 0 -> 453 bytes src/main/resources/xpbar/xpbar_inc066.png | Bin 0 -> 453 bytes src/main/resources/xpbar/xpbar_inc067.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc068.png | Bin 0 -> 454 bytes src/main/resources/xpbar/xpbar_inc069.png | Bin 0 -> 447 bytes src/main/resources/xpbar/xpbar_inc070.png | Bin 0 -> 450 bytes src/main/resources/xpbar/xpbar_inc071.png | Bin 0 -> 455 bytes src/main/resources/xpbar/xpbar_inc072.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc073.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc074.png | Bin 0 -> 471 bytes src/main/resources/xpbar/xpbar_inc075.png | Bin 0 -> 475 bytes src/main/resources/xpbar/xpbar_inc076.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc077.png | Bin 0 -> 466 bytes src/main/resources/xpbar/xpbar_inc078.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc079.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc080.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc081.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc082.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc083.png | Bin 0 -> 462 bytes src/main/resources/xpbar/xpbar_inc084.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc085.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc086.png | Bin 0 -> 461 bytes src/main/resources/xpbar/xpbar_inc087.png | Bin 0 -> 473 bytes src/main/resources/xpbar/xpbar_inc088.png | Bin 0 -> 486 bytes src/main/resources/xpbar/xpbar_inc089.png | Bin 0 -> 487 bytes src/main/resources/xpbar/xpbar_inc090.png | Bin 0 -> 485 bytes src/main/resources/xpbar/xpbar_inc091.png | Bin 0 -> 484 bytes src/main/resources/xpbar/xpbar_inc092.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc093.png | Bin 0 -> 483 bytes src/main/resources/xpbar/xpbar_inc094.png | Bin 0 -> 488 bytes src/main/resources/xpbar/xpbar_inc095.png | Bin 0 -> 491 bytes src/main/resources/xpbar/xpbar_inc096.png | Bin 0 -> 492 bytes src/main/resources/xpbar/xpbar_inc097.png | Bin 0 -> 484 bytes src/main/resources/xpbar/xpbar_inc098.png | Bin 0 -> 486 bytes src/main/resources/xpbar/xpbar_inc099.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc100.png | Bin 0 -> 476 bytes src/main/resources/xpbar/xpbar_inc101.png | Bin 0 -> 484 bytes src/main/resources/xpbar/xpbar_inc102.png | Bin 0 -> 491 bytes src/main/resources/xpbar/xpbar_inc103.png | Bin 0 -> 492 bytes src/main/resources/xpbar/xpbar_inc104.png | Bin 0 -> 494 bytes src/main/resources/xpbar/xpbar_inc105.png | Bin 0 -> 491 bytes src/main/resources/xpbar/xpbar_inc106.png | Bin 0 -> 488 bytes src/main/resources/xpbar/xpbar_inc107.png | Bin 0 -> 487 bytes src/main/resources/xpbar/xpbar_inc108.png | Bin 0 -> 484 bytes src/main/resources/xpbar/xpbar_inc109.png | Bin 0 -> 483 bytes src/main/resources/xpbar/xpbar_inc110.png | Bin 0 -> 483 bytes src/main/resources/xpbar/xpbar_inc111.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc112.png | Bin 0 -> 476 bytes src/main/resources/xpbar/xpbar_inc113.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc114.png | Bin 0 -> 466 bytes src/main/resources/xpbar/xpbar_inc115.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc116.png | Bin 0 -> 473 bytes src/main/resources/xpbar/xpbar_inc117.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc118.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc119.png | Bin 0 -> 472 bytes src/main/resources/xpbar/xpbar_inc120.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc121.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc122.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc123.png | Bin 0 -> 467 bytes src/main/resources/xpbar/xpbar_inc124.png | Bin 0 -> 467 bytes src/main/resources/xpbar/xpbar_inc125.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc126.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc127.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc128.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc129.png | Bin 0 -> 437 bytes src/main/resources/xpbar/xpbar_inc130.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc131.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc132.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc133.png | Bin 0 -> 475 bytes src/main/resources/xpbar/xpbar_inc134.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc135.png | Bin 0 -> 467 bytes src/main/resources/xpbar/xpbar_inc136.png | Bin 0 -> 476 bytes src/main/resources/xpbar/xpbar_inc137.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc138.png | Bin 0 -> 476 bytes src/main/resources/xpbar/xpbar_inc139.png | Bin 0 -> 481 bytes src/main/resources/xpbar/xpbar_inc140.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc141.png | Bin 0 -> 471 bytes src/main/resources/xpbar/xpbar_inc142.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc143.png | Bin 0 -> 452 bytes src/main/resources/xpbar/xpbar_inc144.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc145.png | Bin 0 -> 474 bytes src/main/resources/xpbar/xpbar_inc146.png | Bin 0 -> 478 bytes src/main/resources/xpbar/xpbar_inc147.png | Bin 0 -> 476 bytes src/main/resources/xpbar/xpbar_inc148.png | Bin 0 -> 471 bytes src/main/resources/xpbar/xpbar_inc149.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc150.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc151.png | Bin 0 -> 475 bytes src/main/resources/xpbar/xpbar_inc152.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc153.png | Bin 0 -> 477 bytes src/main/resources/xpbar/xpbar_inc154.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc155.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc156.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc157.png | Bin 0 -> 454 bytes src/main/resources/xpbar/xpbar_inc158.png | Bin 0 -> 455 bytes src/main/resources/xpbar/xpbar_inc159.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc160.png | Bin 0 -> 469 bytes src/main/resources/xpbar/xpbar_inc161.png | Bin 0 -> 470 bytes src/main/resources/xpbar/xpbar_inc162.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc163.png | Bin 0 -> 462 bytes src/main/resources/xpbar/xpbar_inc164.png | Bin 0 -> 467 bytes src/main/resources/xpbar/xpbar_inc165.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc166.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc167.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc168.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc169.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc170.png | Bin 0 -> 449 bytes src/main/resources/xpbar/xpbar_inc171.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc172.png | Bin 0 -> 450 bytes src/main/resources/xpbar/xpbar_inc173.png | Bin 0 -> 453 bytes src/main/resources/xpbar/xpbar_inc174.png | Bin 0 -> 454 bytes src/main/resources/xpbar/xpbar_inc175.png | Bin 0 -> 453 bytes src/main/resources/xpbar/xpbar_inc176.png | Bin 0 -> 447 bytes src/main/resources/xpbar/xpbar_inc177.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc178.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc179.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc180.png | Bin 0 -> 452 bytes src/main/resources/xpbar/xpbar_inc181.png | Bin 0 -> 452 bytes src/main/resources/xpbar/xpbar_inc182.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc183.png | Bin 0 -> 443 bytes src/main/resources/xpbar/xpbar_inc184.png | Bin 0 -> 435 bytes src/main/resources/xpbar/xpbar_inc185.png | Bin 0 -> 436 bytes src/main/resources/xpbar/xpbar_inc186.png | Bin 0 -> 443 bytes src/main/resources/xpbar/xpbar_inc187.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc188.png | Bin 0 -> 461 bytes src/main/resources/xpbar/xpbar_inc189.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc190.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc191.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc192.png | Bin 0 -> 440 bytes src/main/resources/xpbar/xpbar_inc193.png | Bin 0 -> 440 bytes src/main/resources/xpbar/xpbar_inc194.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc195.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc196.png | Bin 0 -> 445 bytes src/main/resources/xpbar/xpbar_inc197.png | Bin 0 -> 442 bytes src/main/resources/xpbar/xpbar_inc198.png | Bin 0 -> 447 bytes src/main/resources/xpbar/xpbar_inc199.png | Bin 0 -> 446 bytes src/main/resources/xpbar/xpbar_inc200.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc201.png | Bin 0 -> 458 bytes src/main/resources/xpbar/xpbar_inc202.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc203.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc204.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc205.png | Bin 0 -> 457 bytes src/main/resources/xpbar/xpbar_inc206.png | Bin 0 -> 463 bytes src/main/resources/xpbar/xpbar_inc207.png | Bin 0 -> 457 bytes src/main/resources/xpbar/xpbar_inc208.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc209.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc210.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc211.png | Bin 0 -> 451 bytes src/main/resources/xpbar/xpbar_inc212.png | Bin 0 -> 448 bytes src/main/resources/xpbar/xpbar_inc213.png | Bin 0 -> 449 bytes src/main/resources/xpbar/xpbar_inc214.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc215.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc216.png | Bin 0 -> 466 bytes src/main/resources/xpbar/xpbar_inc217.png | Bin 0 -> 461 bytes src/main/resources/xpbar/xpbar_inc218.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc219.png | Bin 0 -> 457 bytes src/main/resources/xpbar/xpbar_inc220.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc221.png | Bin 0 -> 457 bytes src/main/resources/xpbar/xpbar_inc222.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc223.png | Bin 0 -> 464 bytes src/main/resources/xpbar/xpbar_inc224.png | Bin 0 -> 460 bytes src/main/resources/xpbar/xpbar_inc225.png | Bin 0 -> 452 bytes src/main/resources/xpbar/xpbar_inc226.png | Bin 0 -> 449 bytes src/main/resources/xpbar/xpbar_inc227.png | Bin 0 -> 449 bytes src/main/resources/xpbar/xpbar_inc228.png | Bin 0 -> 459 bytes src/main/resources/xpbar/xpbar_inc229.png | Bin 0 -> 466 bytes src/main/resources/xpbar/xpbar_inc230.png | Bin 0 -> 468 bytes src/main/resources/xpbar/xpbar_inc231.png | Bin 0 -> 458 bytes src/main/resources/xpbar/xpbar_inc232.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc233.png | Bin 0 -> 455 bytes src/main/resources/xpbar/xpbar_inc234.png | Bin 0 -> 467 bytes src/main/resources/xpbar/xpbar_inc235.png | Bin 0 -> 455 bytes src/main/resources/xpbar/xpbar_inc236.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc237.png | Bin 0 -> 465 bytes src/main/resources/xpbar/xpbar_inc238.png | Bin 0 -> 458 bytes src/main/resources/xpbar/xpbar_inc239.png | Bin 0 -> 456 bytes src/main/resources/xpbar/xpbar_inc240.png | Bin 0 -> 438 bytes src/main/resources/xpbar/xpbar_inc241.png | Bin 0 -> 435 bytes src/main/resources/xpbar/xpbar_inc242.png | Bin 0 -> 432 bytes src/main/resources/xpbar/xpbar_inc243.png | Bin 0 -> 428 bytes src/main/resources/xpbar/xpbar_inc244.png | Bin 0 -> 430 bytes src/main/resources/xpbar/xpbar_inc245.png | Bin 0 -> 423 bytes src/main/resources/xpbar/xpbar_inc246.png | Bin 0 -> 422 bytes src/main/resources/xpbar/xpbar_inc247.png | Bin 0 -> 423 bytes src/main/resources/xpbar/xpbar_inc248.png | Bin 0 -> 430 bytes src/main/resources/xpbar/xpbar_inc249.png | Bin 0 -> 419 bytes src/main/resources/xpbar/xpbar_inc250.png | Bin 0 -> 411 bytes src/main/resources/xpbar/xpbar_inc251.png | Bin 0 -> 408 bytes src/main/resources/xpbar/xpbar_inc252.png | Bin 0 -> 396 bytes src/main/resources/xpbar/xpbar_inc253.png | Bin 0 -> 386 bytes src/main/resources/xpbar/xpbar_inc254.png | Bin 0 -> 368 bytes 312 files changed, 1890 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/api/SpoutHudAPI.java create mode 100644 src/main/java/com/gmail/nossr50/api/SpoutToolsAPI.java create mode 100644 src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java create mode 100644 src/main/java/com/gmail/nossr50/commands/spout/SpoutCommand.java create mode 100644 src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java create mode 100644 src/main/java/com/gmail/nossr50/config/spout/SpoutConfig.java create mode 100644 src/main/java/com/gmail/nossr50/datatypes/spout/buttons/McMMOButton.java create mode 100644 src/main/java/com/gmail/nossr50/datatypes/spout/huds/HudType.java create mode 100644 src/main/java/com/gmail/nossr50/datatypes/spout/huds/McMMOHud.java create mode 100644 src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOMenu.java create mode 100644 src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOXpBar.java create mode 100644 src/main/java/com/gmail/nossr50/listeners/SpoutListener.java create mode 100644 src/main/java/com/gmail/nossr50/util/spout/SpoutUtils.java create mode 100644 src/main/resources/skillicon/Acrobatics.png create mode 100644 src/main/resources/skillicon/Acrobatics_r.png create mode 100644 src/main/resources/skillicon/Archery.png create mode 100644 src/main/resources/skillicon/Archery_r.png create mode 100644 src/main/resources/skillicon/Axe_r.png create mode 100644 src/main/resources/skillicon/Axes.png create mode 100644 src/main/resources/skillicon/Axes_r.png create mode 100644 src/main/resources/skillicon/Excavation.png create mode 100644 src/main/resources/skillicon/Excavation_r.png create mode 100644 src/main/resources/skillicon/Fishing.png create mode 100644 src/main/resources/skillicon/Fishing_r.png create mode 100644 src/main/resources/skillicon/Herbalism.png create mode 100644 src/main/resources/skillicon/Herbalism_r.png create mode 100644 src/main/resources/skillicon/Icon.png create mode 100644 src/main/resources/skillicon/Icon_old.png create mode 100644 src/main/resources/skillicon/Icon_r.png create mode 100644 src/main/resources/skillicon/Mining.png create mode 100644 src/main/resources/skillicon/Mining_r.png create mode 100644 src/main/resources/skillicon/Repair.png create mode 100644 src/main/resources/skillicon/Repair_r.png create mode 100644 src/main/resources/skillicon/Swords.png create mode 100644 src/main/resources/skillicon/Swords_r.png create mode 100644 src/main/resources/skillicon/Taming.png create mode 100644 src/main/resources/skillicon/Taming_r.png create mode 100644 src/main/resources/skillicon/Unarmed.png create mode 100644 src/main/resources/skillicon/Unarmed_r.png create mode 100644 src/main/resources/skillicon/Woodcutting.png create mode 100644 src/main/resources/skillicon/Woodcutting_r.png create mode 100644 src/main/resources/sound/level.wav create mode 100644 src/main/resources/spout.yml create mode 100644 src/main/resources/xpbar/xpbar_inc000.png create mode 100644 src/main/resources/xpbar/xpbar_inc001.png create mode 100644 src/main/resources/xpbar/xpbar_inc002.png create mode 100644 src/main/resources/xpbar/xpbar_inc003.png create mode 100644 src/main/resources/xpbar/xpbar_inc004.png create mode 100644 src/main/resources/xpbar/xpbar_inc005.png create mode 100644 src/main/resources/xpbar/xpbar_inc006.png create mode 100644 src/main/resources/xpbar/xpbar_inc007.png create mode 100644 src/main/resources/xpbar/xpbar_inc008.png create mode 100644 src/main/resources/xpbar/xpbar_inc009.png create mode 100644 src/main/resources/xpbar/xpbar_inc010.png create mode 100644 src/main/resources/xpbar/xpbar_inc011.png create mode 100644 src/main/resources/xpbar/xpbar_inc012.png create mode 100644 src/main/resources/xpbar/xpbar_inc013.png create mode 100644 src/main/resources/xpbar/xpbar_inc014.png create mode 100644 src/main/resources/xpbar/xpbar_inc015.png create mode 100644 src/main/resources/xpbar/xpbar_inc016.png create mode 100644 src/main/resources/xpbar/xpbar_inc017.png create mode 100644 src/main/resources/xpbar/xpbar_inc018.png create mode 100644 src/main/resources/xpbar/xpbar_inc019.png create mode 100644 src/main/resources/xpbar/xpbar_inc020.png create mode 100644 src/main/resources/xpbar/xpbar_inc021.png create mode 100644 src/main/resources/xpbar/xpbar_inc022.png create mode 100644 src/main/resources/xpbar/xpbar_inc023.png create mode 100644 src/main/resources/xpbar/xpbar_inc024.png create mode 100644 src/main/resources/xpbar/xpbar_inc025.png create mode 100644 src/main/resources/xpbar/xpbar_inc026.png create mode 100644 src/main/resources/xpbar/xpbar_inc027.png create mode 100644 src/main/resources/xpbar/xpbar_inc028.png create mode 100644 src/main/resources/xpbar/xpbar_inc029.png create mode 100644 src/main/resources/xpbar/xpbar_inc030.png create mode 100644 src/main/resources/xpbar/xpbar_inc031.png create mode 100644 src/main/resources/xpbar/xpbar_inc032.png create mode 100644 src/main/resources/xpbar/xpbar_inc033.png create mode 100644 src/main/resources/xpbar/xpbar_inc034.png create mode 100644 src/main/resources/xpbar/xpbar_inc035.png create mode 100644 src/main/resources/xpbar/xpbar_inc036.png create mode 100644 src/main/resources/xpbar/xpbar_inc037.png create mode 100644 src/main/resources/xpbar/xpbar_inc038.png create mode 100644 src/main/resources/xpbar/xpbar_inc039.png create mode 100644 src/main/resources/xpbar/xpbar_inc040.png create mode 100644 src/main/resources/xpbar/xpbar_inc041.png create mode 100644 src/main/resources/xpbar/xpbar_inc042.png create mode 100644 src/main/resources/xpbar/xpbar_inc043.png create mode 100644 src/main/resources/xpbar/xpbar_inc044.png create mode 100644 src/main/resources/xpbar/xpbar_inc045.png create mode 100644 src/main/resources/xpbar/xpbar_inc046.png create mode 100644 src/main/resources/xpbar/xpbar_inc047.png create mode 100644 src/main/resources/xpbar/xpbar_inc048.png create mode 100644 src/main/resources/xpbar/xpbar_inc049.png create mode 100644 src/main/resources/xpbar/xpbar_inc050.png create mode 100644 src/main/resources/xpbar/xpbar_inc051.png create mode 100644 src/main/resources/xpbar/xpbar_inc052.png create mode 100644 src/main/resources/xpbar/xpbar_inc053.png create mode 100644 src/main/resources/xpbar/xpbar_inc054.png create mode 100644 src/main/resources/xpbar/xpbar_inc055.png create mode 100644 src/main/resources/xpbar/xpbar_inc056.png create mode 100644 src/main/resources/xpbar/xpbar_inc057.png create mode 100644 src/main/resources/xpbar/xpbar_inc058.png create mode 100644 src/main/resources/xpbar/xpbar_inc059.png create mode 100644 src/main/resources/xpbar/xpbar_inc060.png create mode 100644 src/main/resources/xpbar/xpbar_inc061.png create mode 100644 src/main/resources/xpbar/xpbar_inc062.png create mode 100644 src/main/resources/xpbar/xpbar_inc063.png create mode 100644 src/main/resources/xpbar/xpbar_inc064.png create mode 100644 src/main/resources/xpbar/xpbar_inc065.png create mode 100644 src/main/resources/xpbar/xpbar_inc066.png create mode 100644 src/main/resources/xpbar/xpbar_inc067.png create mode 100644 src/main/resources/xpbar/xpbar_inc068.png create mode 100644 src/main/resources/xpbar/xpbar_inc069.png create mode 100644 src/main/resources/xpbar/xpbar_inc070.png create mode 100644 src/main/resources/xpbar/xpbar_inc071.png create mode 100644 src/main/resources/xpbar/xpbar_inc072.png create mode 100644 src/main/resources/xpbar/xpbar_inc073.png create mode 100644 src/main/resources/xpbar/xpbar_inc074.png create mode 100644 src/main/resources/xpbar/xpbar_inc075.png create mode 100644 src/main/resources/xpbar/xpbar_inc076.png create mode 100644 src/main/resources/xpbar/xpbar_inc077.png create mode 100644 src/main/resources/xpbar/xpbar_inc078.png create mode 100644 src/main/resources/xpbar/xpbar_inc079.png create mode 100644 src/main/resources/xpbar/xpbar_inc080.png create mode 100644 src/main/resources/xpbar/xpbar_inc081.png create mode 100644 src/main/resources/xpbar/xpbar_inc082.png create mode 100644 src/main/resources/xpbar/xpbar_inc083.png create mode 100644 src/main/resources/xpbar/xpbar_inc084.png create mode 100644 src/main/resources/xpbar/xpbar_inc085.png create mode 100644 src/main/resources/xpbar/xpbar_inc086.png create mode 100644 src/main/resources/xpbar/xpbar_inc087.png create mode 100644 src/main/resources/xpbar/xpbar_inc088.png create mode 100644 src/main/resources/xpbar/xpbar_inc089.png create mode 100644 src/main/resources/xpbar/xpbar_inc090.png create mode 100644 src/main/resources/xpbar/xpbar_inc091.png create mode 100644 src/main/resources/xpbar/xpbar_inc092.png create mode 100644 src/main/resources/xpbar/xpbar_inc093.png create mode 100644 src/main/resources/xpbar/xpbar_inc094.png create mode 100644 src/main/resources/xpbar/xpbar_inc095.png create mode 100644 src/main/resources/xpbar/xpbar_inc096.png create mode 100644 src/main/resources/xpbar/xpbar_inc097.png create mode 100644 src/main/resources/xpbar/xpbar_inc098.png create mode 100644 src/main/resources/xpbar/xpbar_inc099.png create mode 100644 src/main/resources/xpbar/xpbar_inc100.png create mode 100644 src/main/resources/xpbar/xpbar_inc101.png create mode 100644 src/main/resources/xpbar/xpbar_inc102.png create mode 100644 src/main/resources/xpbar/xpbar_inc103.png create mode 100644 src/main/resources/xpbar/xpbar_inc104.png create mode 100644 src/main/resources/xpbar/xpbar_inc105.png create mode 100644 src/main/resources/xpbar/xpbar_inc106.png create mode 100644 src/main/resources/xpbar/xpbar_inc107.png create mode 100644 src/main/resources/xpbar/xpbar_inc108.png create mode 100644 src/main/resources/xpbar/xpbar_inc109.png create mode 100644 src/main/resources/xpbar/xpbar_inc110.png create mode 100644 src/main/resources/xpbar/xpbar_inc111.png create mode 100644 src/main/resources/xpbar/xpbar_inc112.png create mode 100644 src/main/resources/xpbar/xpbar_inc113.png create mode 100644 src/main/resources/xpbar/xpbar_inc114.png create mode 100644 src/main/resources/xpbar/xpbar_inc115.png create mode 100644 src/main/resources/xpbar/xpbar_inc116.png create mode 100644 src/main/resources/xpbar/xpbar_inc117.png create mode 100644 src/main/resources/xpbar/xpbar_inc118.png create mode 100644 src/main/resources/xpbar/xpbar_inc119.png create mode 100644 src/main/resources/xpbar/xpbar_inc120.png create mode 100644 src/main/resources/xpbar/xpbar_inc121.png create mode 100644 src/main/resources/xpbar/xpbar_inc122.png create mode 100644 src/main/resources/xpbar/xpbar_inc123.png create mode 100644 src/main/resources/xpbar/xpbar_inc124.png create mode 100644 src/main/resources/xpbar/xpbar_inc125.png create mode 100644 src/main/resources/xpbar/xpbar_inc126.png create mode 100644 src/main/resources/xpbar/xpbar_inc127.png create mode 100644 src/main/resources/xpbar/xpbar_inc128.png create mode 100644 src/main/resources/xpbar/xpbar_inc129.png create mode 100644 src/main/resources/xpbar/xpbar_inc130.png create mode 100644 src/main/resources/xpbar/xpbar_inc131.png create mode 100644 src/main/resources/xpbar/xpbar_inc132.png create mode 100644 src/main/resources/xpbar/xpbar_inc133.png create mode 100644 src/main/resources/xpbar/xpbar_inc134.png create mode 100644 src/main/resources/xpbar/xpbar_inc135.png create mode 100644 src/main/resources/xpbar/xpbar_inc136.png create mode 100644 src/main/resources/xpbar/xpbar_inc137.png create mode 100644 src/main/resources/xpbar/xpbar_inc138.png create mode 100644 src/main/resources/xpbar/xpbar_inc139.png create mode 100644 src/main/resources/xpbar/xpbar_inc140.png create mode 100644 src/main/resources/xpbar/xpbar_inc141.png create mode 100644 src/main/resources/xpbar/xpbar_inc142.png create mode 100644 src/main/resources/xpbar/xpbar_inc143.png create mode 100644 src/main/resources/xpbar/xpbar_inc144.png create mode 100644 src/main/resources/xpbar/xpbar_inc145.png create mode 100644 src/main/resources/xpbar/xpbar_inc146.png create mode 100644 src/main/resources/xpbar/xpbar_inc147.png create mode 100644 src/main/resources/xpbar/xpbar_inc148.png create mode 100644 src/main/resources/xpbar/xpbar_inc149.png create mode 100644 src/main/resources/xpbar/xpbar_inc150.png create mode 100644 src/main/resources/xpbar/xpbar_inc151.png create mode 100644 src/main/resources/xpbar/xpbar_inc152.png create mode 100644 src/main/resources/xpbar/xpbar_inc153.png create mode 100644 src/main/resources/xpbar/xpbar_inc154.png create mode 100644 src/main/resources/xpbar/xpbar_inc155.png create mode 100644 src/main/resources/xpbar/xpbar_inc156.png create mode 100644 src/main/resources/xpbar/xpbar_inc157.png create mode 100644 src/main/resources/xpbar/xpbar_inc158.png create mode 100644 src/main/resources/xpbar/xpbar_inc159.png create mode 100644 src/main/resources/xpbar/xpbar_inc160.png create mode 100644 src/main/resources/xpbar/xpbar_inc161.png create mode 100644 src/main/resources/xpbar/xpbar_inc162.png create mode 100644 src/main/resources/xpbar/xpbar_inc163.png create mode 100644 src/main/resources/xpbar/xpbar_inc164.png create mode 100644 src/main/resources/xpbar/xpbar_inc165.png create mode 100644 src/main/resources/xpbar/xpbar_inc166.png create mode 100644 src/main/resources/xpbar/xpbar_inc167.png create mode 100644 src/main/resources/xpbar/xpbar_inc168.png create mode 100644 src/main/resources/xpbar/xpbar_inc169.png create mode 100644 src/main/resources/xpbar/xpbar_inc170.png create mode 100644 src/main/resources/xpbar/xpbar_inc171.png create mode 100644 src/main/resources/xpbar/xpbar_inc172.png create mode 100644 src/main/resources/xpbar/xpbar_inc173.png create mode 100644 src/main/resources/xpbar/xpbar_inc174.png create mode 100644 src/main/resources/xpbar/xpbar_inc175.png create mode 100644 src/main/resources/xpbar/xpbar_inc176.png create mode 100644 src/main/resources/xpbar/xpbar_inc177.png create mode 100644 src/main/resources/xpbar/xpbar_inc178.png create mode 100644 src/main/resources/xpbar/xpbar_inc179.png create mode 100644 src/main/resources/xpbar/xpbar_inc180.png create mode 100644 src/main/resources/xpbar/xpbar_inc181.png create mode 100644 src/main/resources/xpbar/xpbar_inc182.png create mode 100644 src/main/resources/xpbar/xpbar_inc183.png create mode 100644 src/main/resources/xpbar/xpbar_inc184.png create mode 100644 src/main/resources/xpbar/xpbar_inc185.png create mode 100644 src/main/resources/xpbar/xpbar_inc186.png create mode 100644 src/main/resources/xpbar/xpbar_inc187.png create mode 100644 src/main/resources/xpbar/xpbar_inc188.png create mode 100644 src/main/resources/xpbar/xpbar_inc189.png create mode 100644 src/main/resources/xpbar/xpbar_inc190.png create mode 100644 src/main/resources/xpbar/xpbar_inc191.png create mode 100644 src/main/resources/xpbar/xpbar_inc192.png create mode 100644 src/main/resources/xpbar/xpbar_inc193.png create mode 100644 src/main/resources/xpbar/xpbar_inc194.png create mode 100644 src/main/resources/xpbar/xpbar_inc195.png create mode 100644 src/main/resources/xpbar/xpbar_inc196.png create mode 100644 src/main/resources/xpbar/xpbar_inc197.png create mode 100644 src/main/resources/xpbar/xpbar_inc198.png create mode 100644 src/main/resources/xpbar/xpbar_inc199.png create mode 100644 src/main/resources/xpbar/xpbar_inc200.png create mode 100644 src/main/resources/xpbar/xpbar_inc201.png create mode 100644 src/main/resources/xpbar/xpbar_inc202.png create mode 100644 src/main/resources/xpbar/xpbar_inc203.png create mode 100644 src/main/resources/xpbar/xpbar_inc204.png create mode 100644 src/main/resources/xpbar/xpbar_inc205.png create mode 100644 src/main/resources/xpbar/xpbar_inc206.png create mode 100644 src/main/resources/xpbar/xpbar_inc207.png create mode 100644 src/main/resources/xpbar/xpbar_inc208.png create mode 100644 src/main/resources/xpbar/xpbar_inc209.png create mode 100644 src/main/resources/xpbar/xpbar_inc210.png create mode 100644 src/main/resources/xpbar/xpbar_inc211.png create mode 100644 src/main/resources/xpbar/xpbar_inc212.png create mode 100644 src/main/resources/xpbar/xpbar_inc213.png create mode 100644 src/main/resources/xpbar/xpbar_inc214.png create mode 100644 src/main/resources/xpbar/xpbar_inc215.png create mode 100644 src/main/resources/xpbar/xpbar_inc216.png create mode 100644 src/main/resources/xpbar/xpbar_inc217.png create mode 100644 src/main/resources/xpbar/xpbar_inc218.png create mode 100644 src/main/resources/xpbar/xpbar_inc219.png create mode 100644 src/main/resources/xpbar/xpbar_inc220.png create mode 100644 src/main/resources/xpbar/xpbar_inc221.png create mode 100644 src/main/resources/xpbar/xpbar_inc222.png create mode 100644 src/main/resources/xpbar/xpbar_inc223.png create mode 100644 src/main/resources/xpbar/xpbar_inc224.png create mode 100644 src/main/resources/xpbar/xpbar_inc225.png create mode 100644 src/main/resources/xpbar/xpbar_inc226.png create mode 100644 src/main/resources/xpbar/xpbar_inc227.png create mode 100644 src/main/resources/xpbar/xpbar_inc228.png create mode 100644 src/main/resources/xpbar/xpbar_inc229.png create mode 100644 src/main/resources/xpbar/xpbar_inc230.png create mode 100644 src/main/resources/xpbar/xpbar_inc231.png create mode 100644 src/main/resources/xpbar/xpbar_inc232.png create mode 100644 src/main/resources/xpbar/xpbar_inc233.png create mode 100644 src/main/resources/xpbar/xpbar_inc234.png create mode 100644 src/main/resources/xpbar/xpbar_inc235.png create mode 100644 src/main/resources/xpbar/xpbar_inc236.png create mode 100644 src/main/resources/xpbar/xpbar_inc237.png create mode 100644 src/main/resources/xpbar/xpbar_inc238.png create mode 100644 src/main/resources/xpbar/xpbar_inc239.png create mode 100644 src/main/resources/xpbar/xpbar_inc240.png create mode 100644 src/main/resources/xpbar/xpbar_inc241.png create mode 100644 src/main/resources/xpbar/xpbar_inc242.png create mode 100644 src/main/resources/xpbar/xpbar_inc243.png create mode 100644 src/main/resources/xpbar/xpbar_inc244.png create mode 100644 src/main/resources/xpbar/xpbar_inc245.png create mode 100644 src/main/resources/xpbar/xpbar_inc246.png create mode 100644 src/main/resources/xpbar/xpbar_inc247.png create mode 100644 src/main/resources/xpbar/xpbar_inc248.png create mode 100644 src/main/resources/xpbar/xpbar_inc249.png create mode 100644 src/main/resources/xpbar/xpbar_inc250.png create mode 100644 src/main/resources/xpbar/xpbar_inc251.png create mode 100644 src/main/resources/xpbar/xpbar_inc252.png create mode 100644 src/main/resources/xpbar/xpbar_inc253.png create mode 100644 src/main/resources/xpbar/xpbar_inc254.png diff --git a/README.md b/README.md index 094581106..0f41fd8c4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Our latest development builds are available ~~[here](http://ci.mcmmo.info)~~. Unfortunately, the mcMMO site is down; a temporary dev build location is hosted [here](http://ci.ecocitycraft.com/job/mcMMO/). ### Brief Description -The goal of mcMMO is to take core Minecraft game mechanics and expand them into add an extensive and quality RPG experience. Everything in mcMMO has been carefully thought out and is constantly being improved upon. Currently, mcMMO adds fourteen unique skills to train and level in. Each of these skills is highly customizable through our configuration files, allowing server admins to tweak mcMMO to best suit the needs of his or her server. Know that the mcMMO team is dedicated to providing an ever-evolving experience, and that we carefully read all feedback and bug reports in order to evaluate and balance the mechanics of mcMMO in every update. +The goal of mcMMO is to take core Minecraft game mechanics and expand them into add an extensive and quality RPG experience. Everything in mcMMO has been carefully thought out and is constantly being improved upon. Currently, mcMMO adds thirteen unique skills to train and level in. Each of these skills is highly customizable through our configuration files, allowing server admins to tweak mcMMO to best suit the needs of his or her server. Additionally, when run in conjuction with SpoutPlugin, mcMMO also has a custom XP bar to allow for easy tracking of progress towards leveling up. Know that the mcMMO team is dedicated to providing an ever-evolving experience, and that we carefully read all feedback and bug reports in order to evaluate and balance the mechanics of mcMMO in every update. ## About the Team @@ -47,5 +47,6 @@ Required Libraries: * JUnit * EMetrics * Bukkit +* SpoutPlugin API http://dev.bukkit.org/server-mods/mcmmo for more up to date information. diff --git a/pom.xml b/pom.xml index 34d451fe4..653bb1dbe 100755 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,38 @@ .jenkins + + resources + false + ${basedir}/src/main/resources/xpbar/ + + xpbar*.png + + + + resources + false + ${basedir}/src/main/resources/healthbar/ + + health*.png + + + + resources + false + ${basedir}/src/main/resources/skillicon/ + + *.png + + + + resources + false + ${basedir}/src/main/resources/sound/ + + *.wav + + com/gmail/nossr50/locale true @@ -112,6 +144,18 @@ md_5-releases http://repo.md-5.net/content/repositories/releases/ + + sonatype-nexus-releases + https://oss.sonatype.org/content/repositories/releases + + + sonatype-nexus-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + true + always + + Plugin MetricsExtension http://repo.turt2live.com @@ -125,6 +169,11 @@ jar compile + + org.spoutcraft + spoutcraftplugin + LATEST + junit junit-dep diff --git a/src/main/java/com/gmail/nossr50/api/SpoutHudAPI.java b/src/main/java/com/gmail/nossr50/api/SpoutHudAPI.java new file mode 100644 index 000000000..f7231bd95 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/api/SpoutHudAPI.java @@ -0,0 +1,29 @@ +package com.gmail.nossr50.api; + +import org.bukkit.entity.Player; + +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.spout.huds.HudType; +import com.gmail.nossr50.util.player.UserManager; + +public class SpoutHudAPI { + private SpoutHudAPI() {} + + /** + * Disable the mcMMO XP bar for a player. + *
+ * This function is designed for API usage. + */ + public static void disableXpBar(Player player) { + UserManager.getPlayer(player).getProfile().setHudType(HudType.DISABLED); + } + + /** + * Disable the mcMMO XP bar for the server. + *
+ * This function is designed for API usage. + */ + public static void disableXpBar() { + SpoutConfig.getInstance().setXPBarEnabled(false); + } +} diff --git a/src/main/java/com/gmail/nossr50/api/SpoutToolsAPI.java b/src/main/java/com/gmail/nossr50/api/SpoutToolsAPI.java new file mode 100644 index 000000000..2effea669 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/api/SpoutToolsAPI.java @@ -0,0 +1,79 @@ +package com.gmail.nossr50.api; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.inventory.ItemStack; + +import com.gmail.nossr50.datatypes.skills.ToolType; + +public final class SpoutToolsAPI { + public static final List spoutSwords = new ArrayList(); + public static final List spoutAxes = new ArrayList(); + public static final List spoutPickaxes = new ArrayList(); + public static final List spoutHoes = new ArrayList(); + public static final List spoutShovels = new ArrayList(); + + private SpoutToolsAPI() {} + + /** + * Add a custom Spout tool to mcMMO for XP gain & ability use. + *
+ * This function is designed for API usage. + * + * @param spoutTool The tool to add + * @param type The type of tool to add + */ + public static void addCustomTool(ItemStack spoutTool, ToolType type) { + switch (type) { + case AXE: + spoutAxes.add(spoutTool); + break; + + case HOE: + spoutHoes.add(spoutTool); + break; + + case PICKAXE: + spoutPickaxes.add(spoutTool); + break; + + case SHOVEL: + spoutShovels.add(spoutTool); + break; + + case SWORD: + spoutSwords.add(spoutTool); + break; + + default: + break; + } + } + + public static boolean isSpoutTool(ItemStack spoutTool, ToolType type) { + return getSpoutTools(type) != null && getSpoutTools(type).contains(spoutTool); + } + + private static List getSpoutTools(ToolType type) { + switch (type) { + case AXE: + return spoutAxes; + + case HOE: + return spoutHoes; + + case PICKAXE: + return spoutPickaxes; + + case SHOVEL: + return spoutShovels; + + case SWORD: + return spoutSwords; + + default: + return null; + } + } +} diff --git a/src/main/java/com/gmail/nossr50/commands/McmmoCommand.java b/src/main/java/com/gmail/nossr50/commands/McmmoCommand.java index 3fa4fed10..f04088afa 100644 --- a/src/main/java/com/gmail/nossr50/commands/McmmoCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/McmmoCommand.java @@ -4,12 +4,14 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.commands.party.PartySubcommandType; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; +import com.gmail.nossr50.util.spout.SpoutUtils; public class McmmoCommand implements CommandExecutor { @Override @@ -26,8 +28,13 @@ public class McmmoCommand implements CommandExecutor { sender.sendMessage(mcSplit); if (Config.getInstance().getDonateMessageEnabled()) { - sender.sendMessage(LocaleLoader.getString("MOTD.Donate")); - sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal"); + if (mcMMO.isSpoutEnabled() && sender instanceof Player) { + SpoutUtils.sendDonationNotification((Player) sender); + } + else { + sender.sendMessage(LocaleLoader.getString("MOTD.Donate")); + sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal"); + } } sender.sendMessage(LocaleLoader.getString("MOTD.Version", mcMMO.p.getDescription().getVersion())); diff --git a/src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java b/src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java new file mode 100644 index 000000000..06dbea47e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/commands/spout/MchudCommand.java @@ -0,0 +1,58 @@ +package com.gmail.nossr50.commands.spout; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; + +import com.gmail.nossr50.datatypes.spout.huds.HudType; +import com.gmail.nossr50.locale.LocaleLoader; + +import com.google.common.collect.ImmutableList; + +public class MchudCommand extends SpoutCommand { + private static final List HUD_TYPES; + + static { + ArrayList types = new ArrayList(); + + for (HudType type : HudType.values()) { + types.add(type.toString()); + } + + Collections.sort(types); + HUD_TYPES = ImmutableList.copyOf(types); + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + switch (args.length) { + case 1: + return StringUtil.copyPartialMatches(args[0], HUD_TYPES, new ArrayList(HUD_TYPES.size())); + default: + return ImmutableList.of(); + } + } + + @Override + protected boolean noArguments(Command command, CommandSender sender, String[] args) { + return false; + } + + @Override + protected boolean oneArgument(Command command, CommandSender sender, String[] args) { + try { + playerProfile.setHudType(HudType.valueOf(args[0].toUpperCase().trim())); + spoutHud.initializeXpBar(); + spoutHud.updateXpBar(); + return true; + } + catch (IllegalArgumentException ex) { + sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid")); + return true; + } + } +} diff --git a/src/main/java/com/gmail/nossr50/commands/spout/SpoutCommand.java b/src/main/java/com/gmail/nossr50/commands/spout/SpoutCommand.java new file mode 100644 index 000000000..531fa2dd3 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/commands/spout/SpoutCommand.java @@ -0,0 +1,58 @@ +package com.gmail.nossr50.commands.spout; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.player.PlayerProfile; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.util.commands.CommandUtils; +import com.gmail.nossr50.util.player.UserManager; + +import org.getspout.spout.player.SpoutCraftPlayer; +import org.getspout.spoutapi.SpoutServer; +import org.getspout.spoutapi.player.SpoutPlayer; + +public abstract class SpoutCommand implements TabExecutor { + protected PlayerProfile playerProfile; + protected McMMOHud spoutHud; + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (CommandUtils.noConsoleUsage(sender)) { + return true; + } + + if (!mcMMO.isSpoutEnabled() || !SpoutConfig.getInstance().getXPBarEnabled()) { + sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + return true; + } + + playerProfile = UserManager.getPlayer((Player) sender).getProfile(); + spoutHud = playerProfile.getSpoutHud(); + + if (spoutHud == null) { + sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); + return true; + } + + switch (args.length) { + case 0: + return noArguments(command, sender, args); + + case 1: + return oneArgument(command, sender, args); + + default: + return false; + } + } + + protected abstract boolean noArguments(Command command, CommandSender sender, String[] args); + + protected abstract boolean oneArgument(Command command, CommandSender sender, String[] args); +} diff --git a/src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java b/src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java new file mode 100644 index 000000000..1adfde283 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/commands/spout/XplockCommand.java @@ -0,0 +1,89 @@ +package com.gmail.nossr50.commands.spout; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.util.StringUtil; + +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.util.Permissions; +import com.gmail.nossr50.util.commands.CommandUtils; + +import com.google.common.collect.ImmutableList; + +public class XplockCommand extends SpoutCommand { + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + switch (args.length) { + case 1: + List matches = StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList(CommandUtils.TRUE_FALSE_OPTIONS.size())); + + if (matches.size() == 0) { + return StringUtil.copyPartialMatches(args[0], SkillType.SKILL_NAMES, new ArrayList(SkillType.SKILL_NAMES.size())); + } + + return matches; + default: + return ImmutableList.of(); + } + } + + @Override + protected boolean noArguments(Command command, CommandSender sender, String[] args) { + if (spoutHud.getXpBarLocked()) { + unlockXpBar(sender); + return true; + } + + lockXpBar(sender, spoutHud.getLastGained()); + return true; + } + + @Override + protected boolean oneArgument(Command command, CommandSender sender, String[] args) { + if (CommandUtils.shouldEnableToggle(args[0])) { + lockXpBar(sender, spoutHud.getLastGained()); + return true; + } + + if (CommandUtils.shouldDisableToggle(args[0])) { + unlockXpBar(sender); + return true; + } + + if (CommandUtils.isInvalidSkill(sender, args[0])) { + return true; + } + + SkillType skill = SkillType.getSkill(args[0]); + + if (CommandUtils.isChildSkill(sender, skill)) { + return true; + } + + if (!Permissions.xplock(sender, skill)) { + sender.sendMessage(command.getPermissionMessage()); + return true; + } + + lockXpBar(sender, skill); + return true; + } + + private void lockXpBar(CommandSender sender, SkillType skill) { + if (skill != null) { + spoutHud.setXpBarLocked(true); + spoutHud.setSkillLock(skill); + spoutHud.updateXpBar(); + sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", skill.getName())); + } + } + + private void unlockXpBar(CommandSender sender) { + spoutHud.setXpBarLocked(false); + sender.sendMessage(LocaleLoader.getString("Commands.xplock.unlocked")); + } +} diff --git a/src/main/java/com/gmail/nossr50/config/spout/SpoutConfig.java b/src/main/java/com/gmail/nossr50/config/spout/SpoutConfig.java new file mode 100644 index 000000000..433a76438 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/config/spout/SpoutConfig.java @@ -0,0 +1,75 @@ +package com.gmail.nossr50.config.spout; + +import com.gmail.nossr50.config.ConfigLoader; +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.spout.huds.HudType; + +import org.getspout.spoutapi.keyboard.Keyboard; + +public class SpoutConfig extends ConfigLoader { + private static SpoutConfig instance; + + private SpoutConfig() { + super("spout.yml"); + } + + public static SpoutConfig getInstance() { + if (instance == null) { + instance = new SpoutConfig(); + } + + return instance; + } + + @Override + protected void loadKeys() { + // Setup default HUD + } + + public HudType getDefaultHudType() { + try { + return HudType.valueOf(config.getString("Spout.HUD.Default", "STANDARD").toUpperCase().trim()); + } + catch (IllegalArgumentException ex) { + return HudType.STANDARD; + } + } + + public boolean getShowPowerLevel() { return config.getBoolean("HUD.Show_Power_Level", true); } + public Keyboard getMenuKey() { + try { + return Keyboard.valueOf(config.getString("Menu.Key", "KEY_M").toUpperCase().trim()); + } + catch (IllegalArgumentException ex) { + return Keyboard.KEY_M; + } + } + + /* XP Bar */ + public boolean getXPBarEnabled() { return config.getBoolean("XP.Bar.Enabled", true); } + public void setXPBarEnabled(boolean enabled) { config.set("XP.Bar.Enabled", enabled); } + + public boolean getXPBarIconEnabled() { return config.getBoolean("XP.Icon.Enabled", true); } + public int getXPBarXPosition() { return config.getInt("XP.Bar.X_POS", 95); } + public int getXPBarYPosition() { return config.getInt("XP.Bar.Y_POS", 6); } + public int getXPIconXPosition() { return config.getInt("XP.Icon.X_POS", 78); } + public int getXPIconYPosition() { return config.getInt("XP.Icon.Y_POS", 2); } + + /* HUD Colors */ + public double getRetroHUDXPBorderRed() { return config.getDouble("HUD.Retro.Colors.Border.RED", 0.0); } + public double getRetroHUDXPBorderGreen() { return config.getDouble("HUD.Retro.Colors.Border.GREEN", 0.0); } + public double getRetroHUDXPBorderBlue() { return config.getDouble("HUD.Retro.Colors.Border.BLUE", 0.0); } + public double getRetroHUDXPBackgroundRed() { return config.getDouble("HUD.Retro.Colors.Background.RED", 0.75); } + public double getRetroHUDXPBackgroundGreen() { return config.getDouble("HUD.Retro.Colors.Background.GREEN", 0.75); } + public double getRetroHUDXPBackgroundBlue() { return config.getDouble("HUD.Retro.Colors.Background.BLUE", 0.75); } + + public double getRetroHUDRed(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); } + public double getRetroHUDGreen(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); } + public double getRetroHUDBlue(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); } + + /* Notification Tiers */ + public int getNotificationTier1() { return config.getInt("Notifications.Tier1", 200); } + public int getNotificationTier2() { return config.getInt("Notifications.Tier2", 400); } + public int getNotificationTier3() { return config.getInt("Notifications.Tier3", 600); } + public int getNotificationTier4() { return config.getInt("Notifications.Tier4", 800); } +} diff --git a/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java index abd524ddb..b1092028c 100644 --- a/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java @@ -25,6 +25,7 @@ import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.spout.huds.HudType; import com.gmail.nossr50.util.Misc; public final class FlatfileDatabaseManager implements DatabaseManager { @@ -258,7 +259,8 @@ public final class FlatfileDatabaseManager implements DatabaseManager { writer.append((int) profile.getAbilityDATS(AbilityType.SERRATED_STRIKES)).append(":"); writer.append((int) profile.getAbilityDATS(AbilityType.SKULL_SPLITTER)).append(":"); writer.append((int) profile.getAbilityDATS(AbilityType.SUPER_BREAKER)).append(":"); - writer.append(":"); + HudType hudType = profile.getHudType(); + writer.append(hudType == null ? "STANDARD" : hudType.toString()).append(":"); writer.append(profile.getSkillLevel(SkillType.FISHING)).append(":"); writer.append(profile.getSkillXpLevel(SkillType.FISHING)).append(":"); writer.append((int) profile.getAbilityDATS(AbilityType.BLAST_MINING)).append(":"); @@ -771,6 +773,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { Map skills = getSkillMapFromLine(character); // Skill levels Map skillsXp = new HashMap(); // Skill & XP Map skillsDATS = new HashMap(); // Ability & Cooldown + HudType hudType; MobHealthbarType mobHealthbarType; // TODO on updates, put new values in a try{} ? @@ -802,6 +805,13 @@ public final class FlatfileDatabaseManager implements DatabaseManager { // Acrobatics - Unused skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[36])); + try { + hudType = HudType.valueOf(character[33]); + } + catch (Exception e) { + hudType = HudType.STANDARD; // Shouldn't happen unless database is being tampered with + } + try { mobHealthbarType = MobHealthbarType.valueOf(character[38]); } @@ -809,7 +819,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { mobHealthbarType = Config.getInstance().getMobHealthbarDefault(); } - return new PlayerProfile(character[0], skills, skillsXp, skillsDATS, mobHealthbarType); + return new PlayerProfile(character[0], skills, skillsXp, skillsDATS, hudType, mobHealthbarType); } private Map getSkillMapFromLine(String[] character) { diff --git a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java index 38f67e4fb..a1a2c1859 100644 --- a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java @@ -23,6 +23,7 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.runnables.database.SQLDatabaseKeepaliveTask; +import com.gmail.nossr50.datatypes.spout.huds.HudType; import com.gmail.nossr50.runnables.database.SQLReconnectTask; import com.gmail.nossr50.util.Misc; @@ -130,9 +131,10 @@ public final class SQLDatabaseManager implements DatabaseManager { } boolean success = true; MobHealthbarType mobHealthbarType = profile.getMobHealthbarType(); + HudType hudType = profile.getHudType(); success &= saveLogin(userId, ((int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR))); - success &= saveHuds(userId, (mobHealthbarType == null ? Config.getInstance().getMobHealthbarDefault().toString() : mobHealthbarType.toString())); + saveHuds(userId, (hudType == null ? "STANDARD" : hudType.toString()), (mobHealthbarType == null ? Config.getInstance().getMobHealthbarDefault().toString() : mobHealthbarType.toString())); success &= saveLongs( "UPDATE " + tablePrefix + "cooldowns SET " + " mining = ?, woodcutting = ?, unarmed = ?" @@ -1164,7 +1166,7 @@ public final class SQLDatabaseManager implements DatabaseManager { } } - private boolean saveHuds(int userId, String mobHealthBar) { + private boolean saveHuds(int userId, String hudType, String mobHealthBar) { PreparedStatement statement = null; try { @@ -1194,6 +1196,7 @@ public final class SQLDatabaseManager implements DatabaseManager { Map skills = new HashMap(); // Skill & Level Map skillsXp = new HashMap(); // Skill & XP Map skillsDATS = new HashMap(); // Ability & Cooldown + HudType hudType; MobHealthbarType mobHealthbarType; final int OFFSET_SKILLS = 0; // TODO update these numbers when the query changes (a new skill is added) @@ -1242,6 +1245,13 @@ public final class SQLDatabaseManager implements DatabaseManager { // Acrobatics - Unused - result.getInt(OFFSET_DATS + 11) skillsDATS.put(AbilityType.BLAST_MINING, result.getInt(OFFSET_DATS + 12)); + try { + hudType = HudType.valueOf(result.getString(OFFSET_OTHER + 1)); + } + catch (Exception e) { + hudType = HudType.STANDARD; // Shouldn't happen unless database is being tampered with + } + try { mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 2)); } @@ -1249,7 +1259,7 @@ public final class SQLDatabaseManager implements DatabaseManager { mobHealthbarType = Config.getInstance().getMobHealthbarDefault(); } - return new PlayerProfile(playerName, skills, skillsXp, skillsDATS, mobHealthbarType); + return new PlayerProfile(playerName, skills, skillsXp, skillsDATS, hudType, mobHealthbarType); } private void printErrors(SQLException ex) { diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index 9bcdb3e0e..7d0a14997 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -24,6 +24,7 @@ import com.gmail.nossr50.datatypes.party.PartyTeleportRecord; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.ToolType; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.party.ShareHandler; @@ -52,6 +53,7 @@ import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.skills.ParticleEffectUtils; import com.gmail.nossr50.util.skills.PerksUtils; import com.gmail.nossr50.util.skills.SkillUtils; +import com.gmail.nossr50.util.spout.SpoutUtils; import org.apache.commons.lang.Validate; @@ -88,6 +90,7 @@ public class McMMOPlayer { private int chimeraWingLastUse; private Location teleportCommence; + private boolean isSpoutPlayer; private boolean isUsingUnarmed; private final FixedMetadataValue playerMetadata; @@ -402,6 +405,17 @@ public class McMMOPlayer { teleportCommence = player.getLocation(); } + /* + * Spout support + */ + public boolean isSpoutPlayer() { + return isSpoutPlayer; + } + + public void setIsSpoutPlayer(boolean isSpoutPlayer) { + this.isSpoutPlayer = isSpoutPlayer; + } + /* * Exploit Prevention */ @@ -548,6 +562,12 @@ public class McMMOPlayer { return; } + McMMOHud spoutHud = profile.getSpoutHud(); + + if (spoutHud != null) { + spoutHud.setLastGained(skillType); + } + isUsingUnarmed = (skillType == SkillType.UNARMED); checkXp(skillType); } @@ -579,11 +599,20 @@ public class McMMOPlayer { return; } - if (Config.getInstance().getLevelUpSoundsEnabled()) { - player.playSound(player.getLocation(), Sound.LEVEL_UP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH); + if (this.isSpoutPlayer) { + SpoutUtils.processLevelup(this, skillType, levelsGained); + } + else { + if (Config.getInstance().getLevelUpSoundsEnabled()) { + player.playSound(player.getLocation(), Sound.LEVEL_UP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH); + } + + player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, getSkillLevel(skillType))); } - player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, getSkillLevel(skillType))); + if (this.isSpoutPlayer) { + SpoutUtils.processXpGain(player, profile); + } } /* diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java index af1084249..7d57d6c42 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -7,10 +7,13 @@ import java.util.Set; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.config.spout.SpoutConfig; import com.gmail.nossr50.datatypes.MobHealthbarType; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.spout.huds.HudType; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.player.UserManager; @@ -22,7 +25,9 @@ public class PlayerProfile { private boolean changed; /* HUDs */ + private HudType hudType; private MobHealthbarType mobHealthbarType; + private McMMOHud spoutHud; /* Skill Data */ private final Map skills = new HashMap(); // Skill & Level @@ -32,6 +37,7 @@ public class PlayerProfile { public PlayerProfile(String playerName) { this.playerName = playerName; + hudType = mcMMO.isSpoutEnabled() ? SpoutConfig.getInstance().getDefaultHudType() : HudType.DISABLED; mobHealthbarType = Config.getInstance().getMobHealthbarDefault(); for (AbilityType abilityType : AbilityType.values()) { @@ -49,8 +55,10 @@ public class PlayerProfile { this.loaded = isLoaded; } - public PlayerProfile(String playerName, Map levelData, Map xpData, Map cooldownData, MobHealthbarType mobHealthbarType) { + public PlayerProfile(String playerName, Map levelData, Map xpData, Map cooldownData, HudType hudType, MobHealthbarType mobHealthbarType) { this.playerName = playerName; + + this.hudType = hudType; this.mobHealthbarType = mobHealthbarType; skills.putAll(levelData); @@ -65,7 +73,7 @@ public class PlayerProfile { return; } - changed = !mcMMO.getDatabaseManager().saveUser(new PlayerProfile(playerName, ImmutableMap.copyOf(skills), ImmutableMap.copyOf(skillsXp), ImmutableMap.copyOf(abilityDATS), mobHealthbarType)); + changed = !mcMMO.getDatabaseManager().saveUser(new PlayerProfile(playerName, ImmutableMap.copyOf(skills), ImmutableMap.copyOf(skillsXp), ImmutableMap.copyOf(abilityDATS), hudType, mobHealthbarType)); if (changed) { mcMMO.p.getLogger().warning("PlayerProfile for " + playerName + " failed to save"); @@ -80,6 +88,26 @@ public class PlayerProfile { return loaded; } + /* + * HUD Stuff + */ + + public HudType getHudType() { + return hudType; + } + + public McMMOHud getSpoutHud() { + return spoutHud; + } + + public void setSpoutHud(McMMOHud spoutHud) { + this.spoutHud = spoutHud; + } + + public void setHudType(HudType hudType) { + this.hudType = hudType; + } + /* * Mob Healthbars */ diff --git a/src/main/java/com/gmail/nossr50/datatypes/spout/buttons/McMMOButton.java b/src/main/java/com/gmail/nossr50/datatypes/spout/buttons/McMMOButton.java new file mode 100644 index 000000000..72748eb6f --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/spout/buttons/McMMOButton.java @@ -0,0 +1,24 @@ +package com.gmail.nossr50.datatypes.spout.buttons; + +import org.getspout.spoutapi.gui.GenericButton; + +public class McMMOButton extends GenericButton { + private Slot slot; + + public McMMOButton(String text, String toolTip) { + this.setText(text); + this.setTooltip(toolTip); + } + + public void connect(Slot slot) { + this.slot = slot; + } + + public void activate() { + slot.activate(); + } + + public interface Slot { + public void activate(); + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/spout/huds/HudType.java b/src/main/java/com/gmail/nossr50/datatypes/spout/huds/HudType.java new file mode 100644 index 000000000..5095755b9 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/spout/huds/HudType.java @@ -0,0 +1,12 @@ +package com.gmail.nossr50.datatypes.spout.huds; + +public enum HudType { + DISABLED, + STANDARD, + SMALL, + RETRO; + + public HudType getNext() { + return values()[(ordinal() + 1) % values().length]; + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/spout/huds/McMMOHud.java b/src/main/java/com/gmail/nossr50/datatypes/spout/huds/McMMOHud.java new file mode 100644 index 000000000..4b6d64874 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/spout/huds/McMMOHud.java @@ -0,0 +1,106 @@ +package com.gmail.nossr50.datatypes.spout.huds; + +import org.bukkit.entity.Player; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.player.PlayerProfile; +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.spout.popups.McMMOMenu; +import com.gmail.nossr50.datatypes.spout.popups.McMMOXpBar; + +import org.getspout.spoutapi.SpoutManager; + +public class McMMOHud { + private Player player; + private PlayerProfile profile; + + private SkillType lastGained; + private SkillType skillLock; + private boolean xpBarLocked; + + private McMMOMenu menu; + private McMMOXpBar xpBar; + + public McMMOHud(McMMOPlayer mcMMOPlayer) { + this.player = mcMMOPlayer.getPlayer(); + this.profile = mcMMOPlayer.getProfile(); + + initializeXpBar(); + } + + /** + * Initialize the HUD. + */ + public void initializeXpBar() { + if (SpoutConfig.getInstance().getXPBarEnabled()) { + if (xpBar != null) { + xpBar.removeWidgets(); + } + + xpBar = new McMMOXpBar(SpoutManager.getPlayer(player), profile.getHudType()); + } + } + + /** + * Update the XP bar. + */ + public void updateXpBar() { + SkillType skillType = xpBarLocked ? skillLock : lastGained; + + if (skillType == null) { + return; + } + + xpBar.update(skillType, profile); + } + + public boolean isMenuOpened() { + return (menu != null); + } + + public void openMenu() { + menu = new McMMOMenu(SpoutManager.getPlayer(player), profile); + } + + public void onMenuClose() { + menu = null; + } + + public void removeWidgets() { + if (menu != null) { + menu.close(); + } + + SpoutManager.getPlayer(player).getMainScreen().removeWidgets(mcMMO.p); + } + + public SkillType getLastGained() { + return lastGained; + } + + public void setLastGained(SkillType type) { + this.lastGained = type; + } + + public boolean getXpBarLocked() { + return xpBarLocked; + } + + public void setXpBarLocked(boolean locked) { + this.xpBarLocked = locked; + } + + public void toggleXpBarLocked() { + xpBarLocked = !xpBarLocked; + } + + public SkillType getSkillLock() { + return skillLock; + } + + public void setSkillLock(SkillType type) { + this.skillLock = type; + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOMenu.java b/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOMenu.java new file mode 100644 index 000000000..8930e486c --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOMenu.java @@ -0,0 +1,82 @@ +package com.gmail.nossr50.datatypes.spout.popups; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.datatypes.player.PlayerProfile; +import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton; +import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton.Slot; +import com.gmail.nossr50.datatypes.spout.huds.HudType; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; +import com.gmail.nossr50.locale.LocaleLoader; + +import org.getspout.spoutapi.gui.GenericLabel; +import org.getspout.spoutapi.gui.GenericPopup; +import org.getspout.spoutapi.gui.InGameHUD; +import org.getspout.spoutapi.player.SpoutPlayer; + +public class McMMOMenu extends GenericPopup { + private McMMOButton hudButton; + private McMMOButton escapeButton; + + private GenericLabel titleLabel = new GenericLabel(); + private GenericLabel escapeLabel = new GenericLabel(); + + private static int centerX = 427 / 2; + private static int centerY = 240 / 2; + + public McMMOMenu(final SpoutPlayer spoutPlayer, final PlayerProfile playerProfile) { + // 240, 427 are the bottom right + titleLabel.setText(LocaleLoader.getString("Spout.Menu.Title")); + titleLabel.setWidth(100); + titleLabel.setHeight(100); + titleLabel.setX(centerX - 35); + titleLabel.setY((centerY / 2) - 20); + + escapeLabel.setText(LocaleLoader.getString("Spout.Menu.Exit")); + escapeLabel.setWidth(100); + escapeLabel.setHeight(100); + escapeLabel.setX(titleLabel.getX() - 15); + escapeLabel.setY(titleLabel.getY() + 10); + + hudButton = new McMMOButton(LocaleLoader.getString("Spout.Menu.HudButton.1", playerProfile.getHudType().toString()), LocaleLoader.getString("Spout.Menu.HudButton.2")); + hudButton.setWidth(120); + hudButton.setHeight(20); + hudButton.setX(centerX - (hudButton.getWidth() / 2)); + hudButton.setY(centerY / 2); + hudButton.connect(new Slot() { + @Override + public void activate() { + HudType nextHudType = playerProfile.getHudType().getNext(); + McMMOHud spoutHud = playerProfile.getSpoutHud(); + + playerProfile.setHudType(nextHudType); + spoutHud.initializeXpBar(); + spoutHud.updateXpBar(); + + hudButton.setText("HUD Type: " + nextHudType.toString()); + hudButton.setDirty(true); + } + }); + + escapeButton = new McMMOButton(LocaleLoader.getString("Spout.Menu.ExitButton"), null); + escapeButton.setWidth(60); + escapeButton.setHeight(20); + escapeButton.setX(centerX - (escapeButton.getWidth() / 2)); + escapeButton.setY((centerY / 2) + (escapeButton.getHeight() * 2) + 5); + escapeButton.connect(new Slot() { + @Override + public void activate() { + spoutPlayer.getMainScreen().closePopup(); + } + }); + + attachWidget(mcMMO.p, hudButton); + attachWidget(mcMMO.p, titleLabel); + attachWidget(mcMMO.p, escapeLabel); + attachWidget(mcMMO.p, escapeButton); + + InGameHUD inGameHud = spoutPlayer.getMainScreen(); + + inGameHud.attachPopupScreen(this); + inGameHud.setDirty(true); + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOXpBar.java b/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOXpBar.java new file mode 100644 index 000000000..e3f062cb8 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/spout/popups/McMMOXpBar.java @@ -0,0 +1,305 @@ +package com.gmail.nossr50.datatypes.spout.popups; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.player.PlayerProfile; +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.spout.huds.HudType; +import com.gmail.nossr50.util.StringUtils; + +import org.getspout.spoutapi.gui.Color; +import org.getspout.spoutapi.gui.GenericGradient; +import org.getspout.spoutapi.gui.GenericTexture; +import org.getspout.spoutapi.gui.InGameHUD; +import org.getspout.spoutapi.gui.RenderPriority; +import org.getspout.spoutapi.gui.Widget; +import org.getspout.spoutapi.player.SpoutPlayer; + +public class McMMOXpBar { + private SpoutPlayer spoutPlayer; + private Widget xpBar; + + private GenericGradient xpFill; + private GenericGradient xpBackground; + private GenericGradient xpIconBackground; + private GenericGradient xpIconBorder; + private GenericTexture xpIcon; + + public McMMOXpBar(SpoutPlayer spoutPlayer, HudType hudType) { + this.spoutPlayer = spoutPlayer; + + switch (hudType) { + case RETRO: + initializeXpBarRetro(); + break; + + case STANDARD: + initializeXpBarStandard(); + break; + + case SMALL: + initializeXpBarSmall(); + break; + + case DISABLED: + break; + + default: + break; + } + + spoutPlayer.getMainScreen().setDirty(true); + } + + public void removeWidgets() { + InGameHUD inGameHud = spoutPlayer.getMainScreen(); + + if (xpBar != null) { + inGameHud.removeWidget(xpBar); + } + + if (xpFill != null) { + inGameHud.removeWidget(xpFill); + } + + if (xpBackground != null) { + inGameHud.removeWidget(xpBackground); + } + + if (xpIconBackground != null) { + inGameHud.removeWidget(xpIconBackground); + } + + if (xpIconBorder != null) { + inGameHud.removeWidget(xpIconBorder); + } + + if (xpIcon != null) { + inGameHud.removeWidget(xpIcon); + } + } + + /** + * Initialize Retro XP bar. + */ + private void initializeXpBarRetro() { + Color border = new Color((float) SpoutConfig.getInstance().getRetroHUDXPBorderRed(), (float) SpoutConfig.getInstance().getRetroHUDXPBorderGreen(), (float) SpoutConfig.getInstance().getRetroHUDXPBorderBlue(), 1f); + Color green = new Color(0f, 1f, 0f, 1f); + Color background = new Color((float) SpoutConfig.getInstance().getRetroHUDXPBackgroundRed(), (float) SpoutConfig.getInstance().getRetroHUDXPBackgroundGreen(), (float) SpoutConfig.getInstance().getRetroHUDXPBackgroundBlue(), 1f); + + xpBar = new GenericGradient(); + xpFill = new GenericGradient(); + xpBackground = new GenericGradient(); + + xpBar.setWidth(128); + xpBar.setHeight(4); + xpBar.setX(149); + xpBar.setY(10); + ((GenericGradient) xpBar).setBottomColor(border); + ((GenericGradient) xpBar).setTopColor(border); + xpBar.setPriority(RenderPriority.Highest); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar); + + xpFill.setWidth(0); + xpFill.setHeight(2); + xpFill.setX(150); + xpFill.setY(11); + xpFill.setBottomColor(green); + xpFill.setTopColor(green); + xpFill.setPriority(RenderPriority.Lowest); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpFill); + + xpBackground.setWidth(126); + xpBackground.setHeight(2); + xpBackground.setX(150); + xpBackground.setY(11); + xpBackground.setBottomColor(background); + xpBackground.setTopColor(background); + xpBackground.setPriority(RenderPriority.Low); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBackground); + + if (SpoutConfig.getInstance().getXPBarIconEnabled()) { + Color darkbg = new Color(0.2f, 0.2f, 0.2f, 1f); + + xpIconBackground = new GenericGradient(); + xpIconBorder = new GenericGradient(); + xpIcon = new GenericTexture(); + + xpIconBackground.setBottomColor(darkbg); + xpIconBackground.setTopColor(darkbg); + xpIconBackground.setWidth(4); + xpIconBackground.setHeight(4); + xpIconBackground.setPriority(RenderPriority.High); + xpIconBackground.setX(142); + xpIconBackground.setY(10); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIconBackground); + + xpIconBorder.setBottomColor(border); + xpIconBorder.setTopColor(border); + xpIconBorder.setWidth(6); + xpIconBorder.setHeight(6); + xpIconBorder.setPriority(RenderPriority.Highest); + xpIconBorder.setX(141); + xpIconBorder.setY(9); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIconBorder); + + xpIcon.setWidth(6); + xpIcon.setHeight(6); + xpIcon.setX(141); + xpIcon.setY(9); + xpIcon.setPriority(RenderPriority.Normal); + xpIcon.setUrl("Icon_r.png"); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon); + } + } + + /** + * Initialize Standard XP bar. + */ + private void initializeXpBarStandard() { + xpBar = new GenericTexture(); + + ((GenericTexture) xpBar).setUrl("xpbar_inc000.png"); + xpBar.setX(SpoutConfig.getInstance().getXPBarXPosition()); + xpBar.setY(SpoutConfig.getInstance().getXPBarYPosition()); + xpBar.setHeight(8); + xpBar.setWidth(256); + xpBar.setPriority(RenderPriority.Lowest); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar); + + if (SpoutConfig.getInstance().getXPBarIconEnabled()) { + xpIcon = new GenericTexture(); + + xpIcon.setUrl("Icon.png"); + xpIcon.setHeight(16); + xpIcon.setWidth(32); + xpIcon.setX(SpoutConfig.getInstance().getXPIconXPosition()); + xpIcon.setY(SpoutConfig.getInstance().getXPIconYPosition()); + xpIcon.setPriority(RenderPriority.High); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon); + } + } + + /** + * Initialize Small XP bar. + */ + private void initializeXpBarSmall() { + xpBar = new GenericTexture(); + + ((GenericTexture) xpBar).setUrl("xpbar_inc000.png"); + xpBar.setX(427 / 2 - 64); + xpBar.setY(SpoutConfig.getInstance().getXPBarYPosition()); + xpBar.setHeight(4); + xpBar.setWidth(128); + xpBar.setPriority(RenderPriority.Lowest); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar); + + if (SpoutConfig.getInstance().getXPBarIconEnabled()) { + xpIcon = new GenericTexture(); + + xpIcon.setUrl("Icon.png"); + xpIcon.setHeight(8); + xpIcon.setWidth(16); + xpIcon.setX(427 / 2 - (8 + 64)); + xpIcon.setY(SpoutConfig.getInstance().getXPIconYPosition() + 2); + xpIcon.setPriority(RenderPriority.High); + spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon); + } + } + + /** + * Update the XP bar. + * + * @param skillType The skill last used + * @param playerProfile The profile of the player whose XP bar should be updated + */ + public void update(SkillType skillType, PlayerProfile playerProfile) { + switch (playerProfile.getHudType()) { + case RETRO: + updateXpBarRetro(skillType, playerProfile); + break; + + case STANDARD: + case SMALL: + updateXpBarStandard(skillType, playerProfile); + break; + + case DISABLED: + break; + + default: + break; + } + } + + /** + * Update XP bar for Standard & Small styles. + * + * @param skillType The skill last used + * @param playerProfile The profile of the player whose XP bar should be updated + */ + private void updateXpBarStandard(SkillType skillType, PlayerProfile playerProfile) { + xpIcon.setUrl(StringUtils.getCapitalized(skillType.toString()) + ".png"); + + ((GenericTexture) xpBar).setUrl(getUrlBar(getXpInc(playerProfile.getSkillXpLevel(skillType), playerProfile.getXpToLevel(skillType), HudType.STANDARD))); + + spoutPlayer.getMainScreen().setDirty(true); + } + + /** + * Update XP bar for Retro styles. + * + * @param skillType The skill last used + * @param playerProfile The profile of the player whose XP bar should be updated + */ + private void updateXpBarRetro(SkillType skillType, PlayerProfile playerProfile) { + Color color = getRetroColor(skillType); + + xpIcon.setUrl(StringUtils.getCapitalized(skillType.toString()) + "_r.png"); + + xpFill.setBottomColor(color); + xpFill.setTopColor(color); + xpFill.setWidth(getXpInc(playerProfile.getSkillXpLevel(skillType), playerProfile.getXpToLevel(skillType), HudType.RETRO)); + + spoutPlayer.getMainScreen().setDirty(true); + } + + private static Color getRetroColor(SkillType type) { + return new Color((float) SpoutConfig.getInstance().getRetroHUDRed(type), (float) SpoutConfig.getInstance().getRetroHUDGreen(type), (float) SpoutConfig.getInstance().getRetroHUDBlue(type), 1f); + } + + private static String getUrlBar(Integer number) { + char[] num = number.toString().toCharArray(); + + switch (num.length) { + case 1: + return "xpbar_inc00" + number + ".png"; + + case 2: + return "xpbar_inc0" + number + ".png"; + + default: + return "xpbar_inc" + number + ".png"; + } + } + + private static Integer getXpInc(int skillXp, int xpToLevel, HudType hudType) { + double percentage = (double) skillXp / xpToLevel; + double inc; + + switch (hudType) { + case RETRO: + inc = 0.0079365079365079; + break; + + case STANDARD: + inc = 0.0039370078740157; + break; + + default: + return 1; + } + + return (int) (percentage / inc); + } +} diff --git a/src/main/java/com/gmail/nossr50/listeners/SpoutListener.java b/src/main/java/com/gmail/nossr50/listeners/SpoutListener.java new file mode 100644 index 000000000..b110707e8 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/listeners/SpoutListener.java @@ -0,0 +1,95 @@ +package com.gmail.nossr50.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; +import com.gmail.nossr50.datatypes.spout.popups.McMMOMenu; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.util.player.UserManager; + +import org.getspout.spoutapi.event.input.KeyPressedEvent; +import org.getspout.spoutapi.event.screen.ButtonClickEvent; +import org.getspout.spoutapi.event.screen.ScreenCloseEvent; +import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent; +import org.getspout.spoutapi.gui.Button; +import org.getspout.spoutapi.gui.ScreenType; +import org.getspout.spoutapi.player.SpoutPlayer; + +public class SpoutListener implements Listener { + + /** + * Monitor SpoutCraftEnable events. + * + * @param event The event to watch + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onSpoutCraftEnable(SpoutCraftEnableEvent event) { + SpoutPlayer spoutPlayer = event.getPlayer(); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(spoutPlayer); + + mcMMOPlayer.setIsSpoutPlayer(true); + + // TODO: Add custom titles based on skills + if (SpoutConfig.getInstance().getShowPowerLevel()) { + spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getTitle(), mcMMOPlayer.getPowerLevel())); + } + + mcMMOPlayer.getProfile().setSpoutHud(new McMMOHud(mcMMOPlayer)); // Setup Party HUD stuff + } + + /** + * Monitor Spout ButtonClick events. + * + * @param event The event to watch + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onButtonClick(ButtonClickEvent event) { + Button button = event.getButton(); + + if (button instanceof McMMOButton) { + ((McMMOButton) button).activate(); + } + } + + /** + * Monitor Spout ScreenClose events. + * + * @param event The event to watch + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onScreenClose(ScreenCloseEvent event) { + if (event.getScreen() instanceof McMMOMenu) { + SpoutPlayer spoutPlayer = event.getPlayer(); + + UserManager.getPlayer(spoutPlayer).getProfile().getSpoutHud().onMenuClose(); + spoutPlayer.getMainScreen().setDirty(true); + } + } + + /** + * Monitor Spout KeyPressed events. + * + * @param event The event to watch + */ + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onKeyPressedEvent(KeyPressedEvent event) { + SpoutPlayer spoutPlayer = event.getPlayer(); + + if (spoutPlayer.getMainScreen().getActivePopup() != null || event.getScreenType() != ScreenType.GAME_SCREEN) { + return; + } + + if (event.getKey() == SpoutConfig.getInstance().getMenuKey()) { + McMMOHud spoutHud = UserManager.getPlayer(spoutPlayer).getProfile().getSpoutHud(); + + if (!spoutHud.isMenuOpened()) { + spoutHud.openMenu(); + } + } + } +} diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index 4cbee75a0..95cc43185 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -5,11 +5,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import com.gmail.nossr50.config.mods.ArmorConfigManager; -import com.gmail.nossr50.config.mods.BlockConfigManager; -import com.gmail.nossr50.config.mods.EntityConfigManager; -import com.gmail.nossr50.config.mods.ToolConfigManager; -import com.gmail.nossr50.util.ModManager; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.metadata.FixedMetadataValue; @@ -19,8 +14,13 @@ import org.bukkit.plugin.java.JavaPlugin; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; +import com.gmail.nossr50.config.mods.ArmorConfigManager; +import com.gmail.nossr50.config.mods.BlockConfigManager; +import com.gmail.nossr50.config.mods.EntityConfigManager; +import com.gmail.nossr50.config.mods.ToolConfigManager; import com.gmail.nossr50.config.skills.alchemy.PotionConfig; import com.gmail.nossr50.config.skills.repair.RepairConfigManager; +import com.gmail.nossr50.config.spout.SpoutConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; import com.gmail.nossr50.database.DatabaseManager; import com.gmail.nossr50.database.DatabaseManagerFactory; @@ -29,6 +29,7 @@ import com.gmail.nossr50.listeners.EntityListener; import com.gmail.nossr50.listeners.InventoryListener; import com.gmail.nossr50.listeners.PlayerListener; import com.gmail.nossr50.listeners.SelfListener; +import com.gmail.nossr50.listeners.SpoutListener; import com.gmail.nossr50.listeners.WorldListener; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.metrics.MetricsManager; @@ -48,6 +49,7 @@ import com.gmail.nossr50.util.ChimaeraWing; import com.gmail.nossr50.util.HolidayManager; import com.gmail.nossr50.util.LogFilter; import com.gmail.nossr50.util.Misc; +import com.gmail.nossr50.util.ModManager; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager; import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory; @@ -55,6 +57,7 @@ import com.gmail.nossr50.util.commands.CommandRegistrationManager; import com.gmail.nossr50.util.experience.FormulaManager; import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.scoreboards.ScoreboardManager; +import com.gmail.nossr50.util.spout.SpoutUtils; import net.gravitydevelopment.updater.mcmmo.Updater; import net.gravitydevelopment.updater.mcmmo.Updater.UpdateResult; @@ -85,6 +88,7 @@ public class mcMMO extends JavaPlugin { private boolean updateAvailable; /* Plugin Checks */ + private static boolean spoutEnabled; private static boolean combatTagEnabled; private static boolean healthBarPluginEnabled; private static boolean noCheatPlusPluginEnabled; @@ -125,6 +129,7 @@ public class mcMMO extends JavaPlugin { getLogger().setFilter(new LogFilter(this)); metadataValue = new FixedMetadataValue(this, true); + setupSpout(); mcpcEnabled = getServer().getName().equals("MCPC+"); combatTagEnabled = getServer().getPluginManager().getPlugin("CombatTag") != null; healthBarPluginEnabled = getServer().getPluginManager().getPlugin("HealthBar") != null; @@ -307,6 +312,10 @@ public class mcMMO extends JavaPlugin { mcMMO.databaseManager = databaseManager; } + public static boolean isSpoutEnabled() { + return spoutEnabled; + } + public static boolean isCombatTagEnabled() { return combatTagEnabled; } @@ -435,6 +444,19 @@ public class mcMMO extends JavaPlugin { repairableManager.registerRepairables(repairables); } + private void setupSpout() { + if (!getServer().getPluginManager().isPluginEnabled("Spout")) { + return; + } + + spoutEnabled = true; + + SpoutConfig.getInstance(); + getServer().getPluginManager().registerEvents(new SpoutListener(), this); + SpoutUtils.preCacheFiles(); + SpoutUtils.reloadSpoutPlayers(); // Handle spout players after a /reload + } + private void registerEvents() { PluginManager pluginManager = getServer().getPluginManager(); diff --git a/src/main/java/com/gmail/nossr50/skills/repair/Repair.java b/src/main/java/com/gmail/nossr50/skills/repair/Repair.java index 6ae2c034f..862531cea 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/Repair.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/Repair.java @@ -48,6 +48,18 @@ public class Repair { return ""; } + public static String[] getSpoutAnvilMessages(Material type) { + if (type == repairAnvilMaterial) { + return new String[]{LocaleLoader.getString("Repair.AnvilPlaced.Spout1"), LocaleLoader.getString("Repair.AnvilPlaced.Spout2")}; + } + + if (type == salvageAnvilMaterial) { + return new String[]{"[mcMMO] Anvil Placed", "Right click to salvage!"}; + } + + return new String[]{"", ""}; + } + protected static Material getRepairAndSalvageItem(ItemStack inHand) { if (ItemUtils.isDiamondTool(inHand) || ItemUtils.isDiamondArmor(inHand)) { return Material.DIAMOND; diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index cf207ab73..70d8e2860 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -27,6 +27,7 @@ import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.skills.SkillUtils; +import com.gmail.nossr50.util.spout.SpoutUtils; public class RepairManager extends SkillManager { private boolean placedRepairAnvil; @@ -51,7 +52,12 @@ public class RepairManager extends SkillManager { } if (Repair.anvilMessagesEnabled) { - player.sendMessage(Repair.getAnvilMessage(anvilType)); + if (mcMMOPlayer.isSpoutPlayer()) { + SpoutUtils.sendRepairNotifications(player, anvilType); + } + else { + player.sendMessage(Repair.getAnvilMessage(anvilType)); + } } if (Config.getInstance().getRepairAnvilPlaceSoundsEnabled()) { diff --git a/src/main/java/com/gmail/nossr50/util/ItemUtils.java b/src/main/java/com/gmail/nossr50/util/ItemUtils.java index 1116018e8..064ff3ee2 100644 --- a/src/main/java/com/gmail/nossr50/util/ItemUtils.java +++ b/src/main/java/com/gmail/nossr50/util/ItemUtils.java @@ -10,7 +10,9 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.material.Dye; import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.api.SpoutToolsAPI; import com.gmail.nossr50.config.party.ItemWeightConfig; +import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.locale.LocaleLoader; public final class ItemUtils { @@ -52,7 +54,7 @@ public final class ItemUtils { return true; default: - return mcMMO.getModManager().isCustomSword(type); + return mcMMO.getModManager().isCustomSword(type) || SpoutToolsAPI.isSpoutTool(item, ToolType.SWORD); } } @@ -74,7 +76,7 @@ public final class ItemUtils { return true; default: - return mcMMO.getModManager().isCustomHoe(type); + return mcMMO.getModManager().isCustomHoe(type) || SpoutToolsAPI.isSpoutTool(item, ToolType.HOE); } } @@ -96,7 +98,7 @@ public final class ItemUtils { return true; default: - return mcMMO.getModManager().isCustomShovel(type); + return mcMMO.getModManager().isCustomShovel(type) || SpoutToolsAPI.isSpoutTool(item, ToolType.SHOVEL); } } @@ -118,7 +120,7 @@ public final class ItemUtils { return true; default: - return mcMMO.getModManager().isCustomAxe(type); + return mcMMO.getModManager().isCustomAxe(type) || SpoutToolsAPI.isSpoutTool(item, ToolType.AXE); } } @@ -140,7 +142,7 @@ public final class ItemUtils { return true; default: - return mcMMO.getModManager().isCustomPickaxe(type); + return mcMMO.getModManager().isCustomPickaxe(type) || SpoutToolsAPI.isSpoutTool(item, ToolType.PICKAXE); } } diff --git a/src/main/java/com/gmail/nossr50/util/Misc.java b/src/main/java/com/gmail/nossr50/util/Misc.java index 5c860b1e5..cea57407a 100644 --- a/src/main/java/com/gmail/nossr50/util/Misc.java +++ b/src/main/java/com/gmail/nossr50/util/Misc.java @@ -13,8 +13,11 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.events.items.McMMOItemSpawnEvent; import com.gmail.nossr50.util.player.UserManager; +import com.gmail.nossr50.util.spout.SpoutUtils; public final class Misc { private static Random random = new Random(); @@ -150,10 +153,22 @@ public final class Misc { public static void profileCleanup(String playerName) { Player player = mcMMO.p.getServer().getPlayerExact(playerName); + McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); + McMMOHud spoutHud = mcMMOPlayer.getProfile().getSpoutHud(); + + if (spoutHud != null) { + spoutHud.removeWidgets(); + } + + UserManager.remove(playerName); if (player != null) { UserManager.remove(player); UserManager.addUser(player); + + if (mcMMO.isSpoutEnabled()) { + SpoutUtils.reloadSpoutPlayer(player); + } } } diff --git a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java index e23b4d452..45a8c3aa7 100644 --- a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java +++ b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java @@ -48,6 +48,8 @@ import com.gmail.nossr50.commands.skills.SwordsCommand; import com.gmail.nossr50.commands.skills.TamingCommand; import com.gmail.nossr50.commands.skills.UnarmedCommand; import com.gmail.nossr50.commands.skills.WoodcuttingCommand; +import com.gmail.nossr50.commands.spout.MchudCommand; +import com.gmail.nossr50.commands.spout.XplockCommand; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; @@ -326,6 +328,26 @@ public final class CommandRegistrationManager { command.setExecutor(new PartyChatCommand()); } + private static void registerMchudCommand() { + PluginCommand command = mcMMO.p.getCommand("mchud"); + command.setDescription(LocaleLoader.getString("Commands.Description.mchud")); + command.setPermission("mcmmo.commands.mchud"); + command.setPermissionMessage(permissionsMessage); + command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mchud", "")); + command.setExecutor(new MchudCommand()); + } + + private static void registerXplockCommand() { + PluginCommand command = mcMMO.p.getCommand("xplock"); + command.setDescription(LocaleLoader.getString("Commands.Description.xplock")); + command.setPermission("mcmmo.commands.xplock"); + command.setPermissionMessage(permissionsMessage); + command.setUsage(LocaleLoader.getString("Commands.Usage.0", "xplock")); + command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "xplock", "")); + command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "xplock", "<" + LocaleLoader.getString("Commands.Usage.Skill") + ">")); + command.setExecutor(new XplockCommand()); + } + private static void registerPartyCommand() { PluginCommand command = mcMMO.p.getCommand("party"); command.setDescription(LocaleLoader.getString("Commands.Description.party")); @@ -449,5 +471,9 @@ public final class CommandRegistrationManager { // Skill Commands registerSkillCommands(); + + // Spout Commands + registerXplockCommand(); + registerMchudCommand(); } } diff --git a/src/main/java/com/gmail/nossr50/util/spout/SpoutUtils.java b/src/main/java/com/gmail/nossr50/util/spout/SpoutUtils.java new file mode 100644 index 000000000..61be19bfd --- /dev/null +++ b/src/main/java/com/gmail/nossr50/util/spout/SpoutUtils.java @@ -0,0 +1,475 @@ +package com.gmail.nossr50.util.spout; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.jar.JarFile; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginManager; + +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.config.spout.SpoutConfig; +import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.player.PlayerProfile; +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.skills.repair.Repair; +import com.gmail.nossr50.util.StringUtils; +import com.gmail.nossr50.util.player.UserManager; +import com.gmail.nossr50.util.skills.SkillUtils; + +import org.getspout.spoutapi.SpoutManager; +import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent; +import org.getspout.spoutapi.player.SpoutPlayer; + +public class SpoutUtils { + // The order of the values is extremely important, a few methods depend on it to work properly + protected enum Tier { + FOUR(4) { + @Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier4(); } + @Override protected Material getAcrobaticsNotificationItem() { return Material.DIAMOND_BOOTS; } + @Override protected Material getArcheryNotificationItem() { return Material.BOW; } + @Override protected Material getAxesNotificationItem() { return Material.DIAMOND_AXE; } + @Override protected Material getExcavationNotificationItem() { return Material.CLAY; } + @Override protected Material getFishingNotificationItem() { return Material.FISHING_ROD; } + @Override protected Material getHerbalismNotificationItem() { return Material.WATER_LILY; } + @Override protected Material getMiningNotificationItem() { return Material.EMERALD_ORE; } + @Override protected Material getSwordsNotificationItem() { return Material.DIAMOND_SWORD; } + @Override protected Material getTamingNotificationItem() { return Material.BONE; } + @Override protected Material getUnarmedNotificationItem() { return Material.DIAMOND_HELMET; } + @Override protected Material getWoodcuttingNotificationItem() { return Material.LOG; }}, + THREE(3) { + @Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier3(); } + @Override protected Material getAcrobaticsNotificationItem() { return Material.GOLD_BOOTS; } + @Override protected Material getArcheryNotificationItem() { return Material.ARROW; } + @Override protected Material getAxesNotificationItem() { return Material.GOLD_AXE; } + @Override protected Material getExcavationNotificationItem() { return Material.SAND; } + @Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; } + @Override protected Material getHerbalismNotificationItem() { return Material.RED_ROSE; } + @Override protected Material getMiningNotificationItem() { return Material.DIAMOND_ORE; } + @Override protected Material getSwordsNotificationItem() { return Material.GOLD_SWORD; } + @Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; } + @Override protected Material getUnarmedNotificationItem() { return Material.GOLD_HELMET; } + @Override protected Material getWoodcuttingNotificationItem() { return Material.WOOD; }}, + TWO(2) { + @Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier2(); } + @Override protected Material getAcrobaticsNotificationItem() { return Material.IRON_BOOTS; } + @Override protected Material getArcheryNotificationItem() { return Material.ARROW; } + @Override protected Material getAxesNotificationItem() { return Material.IRON_AXE; } + @Override protected Material getExcavationNotificationItem() { return Material.GRAVEL; } + @Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; } + @Override protected Material getHerbalismNotificationItem() { return Material.YELLOW_FLOWER; } + @Override protected Material getMiningNotificationItem() { return Material.GOLD_ORE; } + @Override protected Material getSwordsNotificationItem() { return Material.IRON_SWORD; } + @Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; } + @Override protected Material getUnarmedNotificationItem() { return Material.IRON_HELMET; } + @Override protected Material getWoodcuttingNotificationItem() { return Material.LEAVES; }}, + ONE(1) { + @Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier1(); } + @Override protected Material getAcrobaticsNotificationItem() { return Material.CHAINMAIL_BOOTS; } + @Override protected Material getArcheryNotificationItem() { return Material.FLINT; } + @Override protected Material getAxesNotificationItem() { return Material.STONE_AXE; } + @Override protected Material getExcavationNotificationItem() { return Material.GRASS; } + @Override protected Material getFishingNotificationItem() { return Material.RAW_FISH; } + @Override protected Material getHerbalismNotificationItem() { return Material.CACTUS; } + @Override protected Material getMiningNotificationItem() { return Material.IRON_ORE; } + @Override protected Material getSwordsNotificationItem() { return Material.STONE_SWORD; } + @Override protected Material getTamingNotificationItem() { return Material.PORK; } + @Override protected Material getUnarmedNotificationItem() { return Material.CHAINMAIL_HELMET; } + @Override protected Material getWoodcuttingNotificationItem() { return Material.SAPLING; }}; + + int numerical; + + private Tier(int numerical) { + this.numerical = numerical; + } + + public int toNumerical() { + return numerical; + } + + abstract protected int getLevel(); + abstract protected Material getAcrobaticsNotificationItem(); + abstract protected Material getArcheryNotificationItem(); + abstract protected Material getAxesNotificationItem(); + abstract protected Material getExcavationNotificationItem(); + abstract protected Material getFishingNotificationItem(); + abstract protected Material getHerbalismNotificationItem(); + abstract protected Material getMiningNotificationItem(); + abstract protected Material getSwordsNotificationItem(); + abstract protected Material getTamingNotificationItem(); + abstract protected Material getUnarmedNotificationItem(); + abstract protected Material getWoodcuttingNotificationItem(); + } + + private final static String spoutDirectory = mcMMO.getMainDirectory() + "Resources" + File.separator; + private final static String hudDirectory = spoutDirectory + "HUD" + File.separator; + private final static String hudStandardDirectory = hudDirectory + "Standard" + File.separator; + private final static String hudRetroDirectory = hudDirectory + "Retro" + File.separator; + private final static String soundDirectory = spoutDirectory + "Sound" + File.separator; + + /** + * Write file to disk. + * + * @param fileName The name of the file + * @param filePath The name of the file path + */ + private static File writeFile(String fileName, String filePath) { + File currentFile = new File(filePath + fileName); + BufferedOutputStream os = null; + JarFile jar = null; + + // No point in writing the file again if it already exists. + if (currentFile.exists()) { + return currentFile; + } + + try { + jar = new JarFile(mcMMO.mcmmo); + + @SuppressWarnings("resource") + InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + fileName)); + + byte[] buf = new byte[2048]; + int nbRead; + + os = new BufferedOutputStream(new FileOutputStream(currentFile)); + + while ((nbRead = is.read(buf)) != -1) { + os.write(buf, 0, nbRead); + } + } + catch (FileNotFoundException e) { + e.printStackTrace(); + } + catch (IOException e) { + e.printStackTrace(); + } + finally { + if (jar != null) { + try { + jar.close(); + } + catch (IOException ex) { + ex.printStackTrace(); + } + } + if (os != null) { + try { + os.close(); + } + catch (IOException ex) { + ex.printStackTrace(); + } + } + } + + return currentFile; + } + + /** + * Extract Spout files to the Resources directory. + */ + public static ArrayList extractFiles() { + ArrayList files = new ArrayList(); + + // Setup directories + new File(spoutDirectory).mkdir(); + new File(hudDirectory).mkdir(); + new File(hudStandardDirectory).mkdir(); + new File(hudRetroDirectory).mkdir(); + new File(soundDirectory).mkdir(); + + // XP Bar images + for (int x = 0; x < 255; x++) { + String fileName; + + if (x < 10) { + fileName = "xpbar_inc00" + x + ".png"; + } + else if (x < 100) { + fileName = "xpbar_inc0" + x + ".png"; + } + else { + fileName = "xpbar_inc" + x + ".png"; + } + + files.add(writeFile(fileName, hudStandardDirectory)); + } + + // Standard XP Icons + for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { + String skillName = StringUtils.getCapitalized(skillType.toString()); + + files.add(writeFile(skillName + ".png", hudStandardDirectory)); + files.add(writeFile(skillName + "_r.png", hudRetroDirectory)); + } + + // Blank icons + files.add(writeFile("Icon.png", hudStandardDirectory)); + files.add(writeFile("Icon_r.png", hudRetroDirectory)); + + // Sound FX + files.add(writeFile("level.wav", soundDirectory)); + + return files; + } + + /** + * Handle level-up notifications through Spout. + * + * @param skillType The skill that leveled up + * @param spoutPlayer The player that leveled up + */ + public static void levelUpNotification(SkillType skillType, SpoutPlayer spoutPlayer) { + PlayerProfile profile = UserManager.getPlayer(spoutPlayer).getProfile(); + int skillLevel = profile.getSkillLevel(skillType); + Material notificationItem; + + switch (skillType) { + case ACROBATICS: + notificationItem = getAcrobaticsNotificationItem(skillLevel); + break; + + case ARCHERY: + notificationItem = getArcheryNotificationItem(skillLevel); + break; + + case AXES: + notificationItem = getAxesNotificationItem(skillLevel); + break; + + case EXCAVATION: + notificationItem = getExcavationNotificationItem(skillLevel); + break; + + case FISHING: + notificationItem = getFishingNotificationItem(skillLevel); + break; + + case HERBALISM: + notificationItem = getHerbalismNotificationItem(skillLevel); + break; + + case MINING: + notificationItem = getMiningNotificationItem(skillLevel); + break; + + case REPAIR: + notificationItem = Material.ANVIL; + break; + + case SWORDS: + notificationItem = getSwordsNotificationItem(skillLevel); + break; + + case TAMING: + notificationItem = getTamingNotificationItem(skillLevel); + break; + + case UNARMED: + notificationItem = getUnarmedNotificationItem(skillLevel); + break; + + case WOODCUTTING: + notificationItem = getWoodcuttingNotificationItem(skillLevel); + break; + + default: + notificationItem = Material.MAP; + break; + } + + spoutPlayer.sendNotification(LocaleLoader.getString("Spout.LevelUp.1"), LocaleLoader.getString("Spout.LevelUp.2", skillType.getName(), skillLevel), notificationItem); + SpoutManager.getSoundManager().playCustomSoundEffect(mcMMO.p, spoutPlayer, "level.wav", false); + } + + private static Material getAcrobaticsNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getAcrobaticsNotificationItem(); + } + } + + return Material.LEATHER_BOOTS; + } + + private static Material getArcheryNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getArcheryNotificationItem(); + } + } + + return Material.FEATHER; + } + + private static Material getAxesNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getAxesNotificationItem(); + } + } + + return Material.WOOD_AXE; + } + + private static Material getExcavationNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getExcavationNotificationItem(); + } + } + + return Material.DIRT; + } + + private static Material getFishingNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getFishingNotificationItem(); + } + } + + return Material.RAW_FISH; + } + + private static Material getHerbalismNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getHerbalismNotificationItem(); + } + } + + return Material.VINE; + } + + private static Material getMiningNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getMiningNotificationItem(); + } + } + + return Material.COAL_ORE; + } + + private static Material getSwordsNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getSwordsNotificationItem(); + } + } + + return Material.WOOD_SWORD; + } + + private static Material getTamingNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getTamingNotificationItem(); + } + } + + return Material.PORK; + } + + private static Material getUnarmedNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getUnarmedNotificationItem(); + } + } + + return Material.LEATHER_HELMET; + } + + private static Material getWoodcuttingNotificationItem(int skillLevel) { + for (Tier tier : Tier.values()) { + if (skillLevel >= tier.getLevel()) { + return tier.getWoodcuttingNotificationItem(); + } + } + + return Material.STICK; + } + + /** + * Re-enable SpoutCraft for players after a /reload + */ + public static void reloadSpoutPlayers() { + PluginManager pluginManager = mcMMO.p.getServer().getPluginManager(); + + for (SpoutPlayer spoutPlayer : SpoutManager.getPlayerChunkMap().getOnlinePlayers()) { + pluginManager.callEvent(new SpoutCraftEnableEvent(spoutPlayer)); + } + } + + public static void reloadSpoutPlayer(Player player) { + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + + if (spoutPlayer != null) { + mcMMO.p.getServer().getPluginManager().callEvent(new SpoutCraftEnableEvent(spoutPlayer)); + } + } + + public static void preCacheFiles() { + SpoutManager.getFileManager().addToPreLoginCache(mcMMO.p, extractFiles()); + } + + public static void processLevelup(McMMOPlayer mcMMOPlayer, SkillType skillType, int levelsGained) { + Player player = mcMMOPlayer.getPlayer(); + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + + if (spoutPlayer.isSpoutCraftEnabled()) { + levelUpNotification(skillType, spoutPlayer); + + /* Update custom titles */ + if (SpoutConfig.getInstance().getShowPowerLevel()) { + spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getName(), mcMMOPlayer.getPowerLevel())); + } + } + else { + player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, mcMMOPlayer.getProfile().getSkillLevel(skillType))); + } + } + + public static void processXpGain(Player player, PlayerProfile profile) { + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + + if (spoutPlayer.isSpoutCraftEnabled() && SpoutConfig.getInstance().getXPBarEnabled()) { + profile.getSpoutHud().updateXpBar(); + } + } + + public static void sendRepairNotifications(Player player, Material anvilType) { + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + + if (spoutPlayer.isSpoutCraftEnabled()) { + String[] spoutMessages = Repair.getSpoutAnvilMessages(anvilType); + spoutPlayer.sendNotification(spoutMessages[0], spoutMessages[1], anvilType); + } + else { + player.sendMessage(Repair.getAnvilMessage(anvilType)); + } + } + + public static void sendDonationNotification(Player player) { + SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); + + if (spoutPlayer.isSpoutCraftEnabled()) { + spoutPlayer.sendNotification(LocaleLoader.getString("Spout.Donate"), ChatColor.GREEN + "gjmcferrin@gmail.com", Material.DIAMOND); + } + else { + player.sendMessage(LocaleLoader.getString("MOTD.Donate")); + player.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal"); + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 670d3b44b..cc77b3519 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,24 +1,30 @@ name: mcMMO version: ${project.version}-b${BUILD_NUMBER} description: > - The goal of mcMMO is to take core Minecraft game mechanics and expand them into - add an extensive and quality RPG experience. Everything in mcMMO has been carefully - thought out and is constantly being improved upon. Currently, mcMMO adds thirteen - unique skills to train and level in. Each of these skills is highly customizable - through our configuration files, allowing server admins to tweak mcMMO to best suit - the needs of his or her server. Know that the mcMMO team is dedicated to providing - an ever-evolving experience, and that we carefully read all feedback and bug reports - in order to evaluate and balance the mechanics of mcMMO in every update. + mcMMO takes core Minecraft game mechanics and expands them to add an extensive + RPG experience, the goal of the project has always been a quality RPG + experience. Everything in mcMMO is carefully thought out and is constantly + improving. mcMMO adds eleven skills to train in and level in, while also + offering a high level of customization for server admins. There are countless + features, including custom sounds, graphical elements, and more added when + running mcMMO in conjunction with Spout. I carefully read feedback and + evaluate the mechanics of mcMMO in every update to provide an ever-evolving + experience. author: nossr50 authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking] website: http://dev.bukkit.org/server-mods/mcmmo/ main: com.gmail.nossr50.mcMMO -softdepend: [CombatTag, HealthBar] +softdepend: [Spout, CombatTag, HealthBar] load: STARTUP commands: + mchud: + description: Change your HUD + xplock: + aliases: [mcxplock] + description: Lock your mcMMO XP bar xprate: aliases: [mcxprate] description: Modify the xp rate or start an event @@ -652,6 +658,7 @@ permissions: mcmmo.commands.inspect: true mcmmo.commands.mcability: true mcmmo.commands.mccooldown: true + mcmmo.commands.mchud: true mcmmo.commands.mcmmo.all: true mcmmo.commands.mcnotify: true mcmmo.commands.mcrank: true @@ -668,6 +675,7 @@ permissions: mcmmo.commands.taming: true mcmmo.commands.unarmed: true mcmmo.commands.woodcutting: true + mcmmo.commands.xplock.all: true mcmmo.commands.defaultsop: description: Implies all default op mcmmo.commands permissions. children: @@ -796,6 +804,8 @@ permissions: description: Allows access to the mcgod command mcmmo.commands.mcgod.others: description: Allows access to the mcgod command for other players + mcmmo.commands.mchud: + description: Allows access to the mchud command mcmmo.commands.mcmmo.*: default: false description: Implies access to all mcmmo.commands.mcmmo permissions @@ -1151,6 +1161,56 @@ permissions: description: Allows access to the vampirism command to toggle vampirism on/off mcmmo.commands.woodcutting: description: Allows access to the woodcutting command + mcmmo.commands.xplock.*: + default: false + description: Implies access to all mcmmo.commands.xplock permissions + children: + mcmmo.commands.xplock.all: true + mcmmo.commands.xplock.all: + description: Implies access to all mcmmo.commands.xplock permissions + children: + mcmmo.commands.xplock: true + mcmmo.commands.xplock.acrobatics: true + mcmmo.commands.xplock.archery: true + mcmmo.commands.xplock.axes: true + mcmmo.commands.xplock.excavation: true + mcmmo.commands.xplock.fishing: true + mcmmo.commands.xplock.herbalism: true + mcmmo.commands.xplock.mining: true + mcmmo.commands.xplock.repair: true + mcmmo.commands.xplock.smelting: true + mcmmo.commands.xplock.swords: true + mcmmo.commands.xplock.taming: true + mcmmo.commands.xplock.unarmed: true + mcmmo.commands.xplock.woodcutting: true + mcmmo.commands.xplock: + description: Allows access to the xplock command + mcmmo.commands.xplock.acrobatics: + description: Allows access to the xplock command for acrobatics + mcmmo.commands.xplock.archery: + description: Allows access to the xplock command for archery + mcmmo.commands.xplock.axes: + description: Allows access to the xplock command for axes + mcmmo.commands.xplock.excavation: + description: Allows access to the xplock command for excavation + mcmmo.commands.xplock.fishing: + description: Allows access to the xplock command for fishing + mcmmo.commands.xplock.herbalism: + description: Allows access to the xplock command for herbalism + mcmmo.commands.xplock.mining: + description: Allows access to the xplock command for mining + mcmmo.commands.xplock.repair: + description: Allows access to the xplock command for repair + mcmmo.commands.xplock.smelting: + description: Allows access to the xplock command for smelting + mcmmo.commands.xplock.swords: + description: Allows access to the xplock command for swords + mcmmo.commands.xplock.taming: + description: Allows access to the xplock command for taming + mcmmo.commands.xplock.unarmed: + description: Allows access to the xplock command for unarmed + mcmmo.commands.xplock.woodcutting: + description: Allows access to the xplock command for woodcutting mcmmo.commands.xprate.*: default: false description: Implies access to all mcmmo.commands.xprate permissions @@ -1872,71 +1932,87 @@ permissions: children: mcmmo.ability.acrobatics.all: true mcmmo.commands.acrobatics: true +<<<<<<< HEAD mcmmo.skills.alchemy: description: Allows access to the Alchemy skill children: mcmmo.ability.alchemy.all: true mcmmo.commands.alchemy: true +======= + mcmmo.commands.xplock.acrobatics: true +>>>>>>> Revert "Dropped SpoutPlugin support" mcmmo.skills.archery: description: Allows access to the Archery skill children: mcmmo.ability.archery.all: true mcmmo.commands.archery: true + mcmmo.commands.xplock.archery: true mcmmo.skills.axes: description: Allows access to the Axes skill children: mcmmo.ability.axes.all: true mcmmo.commands.axes: true + mcmmo.commands.xplock.axes: true mcmmo.skills.excavation: description: Allows access to the Excavation skill children: mcmmo.ability.excavation.all: true mcmmo.commands.excavation: true + mcmmo.commands.xplock.excavation: true mcmmo.skills.fishing: description: Allows access to the Fishing skill children: mcmmo.ability.fishing.all: true mcmmo.commands.fishing: true + mcmmo.commands.xplock.fishing: true mcmmo.skills.herbalism: description: Allows access to the Herbalism skill children: mcmmo.ability.herbalism.all: true mcmmo.commands.herbalism: true + mcmmo.commands.xplock.herbalism: true mcmmo.skills.mining: description: Allows access to the Mining skill children: mcmmo.ability.mining.all: true mcmmo.commands.mining: true + mcmmo.commands.xplock.mining: true mcmmo.skills.repair: description: Allows access to the Repair skill children: mcmmo.ability.repair.all: true mcmmo.commands.repair: true + mcmmo.commands.xplock.repair: true mcmmo.skills.smelting: description: Allows access to the Smelting skill children: mcmmo.ability.smelting.all: true mcmmo.commands.smelting: true + mcmmo.commands.xplock.smelting: true mcmmo.skills.swords: description: Allows access to the Swords skill children: mcmmo.ability.swords.all: true mcmmo.commands.swords: true + mcmmo.commands.xplock.swords: true mcmmo.skills.taming: description: Allows access to the Taming skill children: mcmmo.ability.taming.all: true mcmmo.commands.taming: true + mcmmo.commands.xplock.taming: true mcmmo.skills.unarmed: description: Allows access to the Unarmed skill children: mcmmo.ability.unarmed.all: true mcmmo.commands.unarmed: true + mcmmo.commands.xplock.unarmed: true mcmmo.skills.woodcutting: description: Allows access to the Woodcutting skill children: mcmmo.ability.woodcutting.all: true mcmmo.commands.woodcutting: true + mcmmo.commands.xplock.woodcutting: true mcmmo.tools.*: default: false description: Implies all mcmmo.tools permissions. diff --git a/src/main/resources/skillicon/Acrobatics.png b/src/main/resources/skillicon/Acrobatics.png new file mode 100644 index 0000000000000000000000000000000000000000..45ed57530dcf442466d0e4c8616ac4fd07f87bad GIT binary patch literal 506 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPa7jc#R7gu>AIA%+7$hJ!377Vz=$5vvrdI=BP&Z{DSH z|MD%BXSW}sr0yd>elWa$@(M+aA{)^(!yVx0>vreCg9lj6rlliLq5$TIr&yc;a>TUm zi7NfgT~rMXj5J{7Y7fre*nn(cAcin3=a3sM7!F|PUq>i_@% literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Acrobatics_r.png b/src/main/resources/skillicon/Acrobatics_r.png new file mode 100644 index 0000000000000000000000000000000000000000..a2106d7e495180e32c356fef121b64b33a085de5 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGvproLLn>~)nPkY< zV8FwCzGGq|{|5ID|NpUE30G))m$*8>k>f?z_LLnK)1JP&vSMM7J;SXc!Q?OdUNc0r zGd5g|?U$V~bK8_pHno)xIc73?{KD{kHVWLe-0n^KMou`jJHRAspx{mz~GsCSX W%8ZZh{PqJ{%i!ti=d#Wzp$PyS^-voC literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Archery.png b/src/main/resources/skillicon/Archery.png new file mode 100644 index 0000000000000000000000000000000000000000..1f17f3b47d161e0978558fda21e288e314d156a8 GIT binary patch literal 580 zcmV-K0=xZ*P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPx=BPqR7gu>xK0*$jQku#3aWvfD$0ZQ2_IOK*dIe9k1o? zh+Pq32)-o;witwA03-*qyr!cG9BPyTa0skexD;$oes#$m|kL| zPA-NAx9_Te%7Fz77Lc6?QKA55ABdbGp zAgClHr!)jR093YfaB>nIoglR!Juon5@q93ooPub;DD}w~ SulT(H0000}1{rUgj zo>{e_v(d>wh)1I=_?Q0{Ms>eA4uLfuUa#zpd@nF?b91}RP&DxU7hZROH+pN9Xq#it zigTe~DWM4f5cgU% literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Axe_r.png b/src/main/resources/skillicon/Axe_r.png new file mode 100644 index 0000000000000000000000000000000000000000..a6984ca4701be06b147c58ef59b8bfa181ecdb1f GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGBRpLkLn>}1{rUgj zo>{e_v(d@m1KWlNlU}@e^XLD+A4P1Ar#;v}ptiP_jh~<2ZBcAMT--SiQGEfUjui$6 w(m5_RcAWixSVcA004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPW=TXrR7gu>9Q<15yjp z1JWDj9}IQ}mmn`$Aqfrv1y$ucAcH}`%gz<-vq$?o7=Ha>U{GPvGkgG~4jq6jCe?C~8E^-{ z4E*`yC&R)u%kF@D&jtw;f?(35Nn|HN3vNs4f7dgR4yX807#p mD}1{rUgj zo>{e_v(f1QQ?h}P(WEC+{{R1Pyh!2z5IlJM)_2OYwb9#!zBR2~tJ}q#|_Wj4lp?ODC(Bw SbcX}&W$<+Mb6Mw<&;$UJuT3!k literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Excavation.png b/src/main/resources/skillicon/Excavation.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f7a8b9f887ba2f724711264e3382235b8dc14f GIT binary patch literal 547 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6id3JuOkD)#=e^0fs=uJg=CK) zUj~MDeg=jfApQ%~)aby#P+Q5s@UokM!R9FggXEcFo7QrmTFwHG$YKTtZeb8+WSBKa zf`Nf?rl*Tzh=+Ib6Oji$&pRmo`1a3Od8eDfAsGb~y`uL1{`nfkcD27we0cX%S~TV8 z6RRf96pj-`nUa!hVPRrz@9*z_cvQhuVXK0z!rsJx2NTK*I6qAio%BE;ARu%fvr)y_ zFG3>m3)$PFOJohE{5WuEfBpZ&ih|$kxK1!CY_#lt-h9-Pm$QJQ;lOhL`4anT{~kDS z?p&L&e9YyAOhN32UNEE>uAJ6~SJTYyOWC;^%kY!xt_~-?Ln5u-33s(YAj`PH)cJpgSH5~H~DC}Fv<8zq_ zB3dNC5ZUJwd|NPLF@wnU1p*DOoK?FPEK}a##;75c7aPM@#?rxCB%l+!Ai7W2eZnIL z5%!!Jp)C6B4q{D<7@u*}v^{(JbYdt+!SL6MP7?I)HP`3A2;q0)++)8;f~9MD$Y!R+B_ g@gnQwN6Rxj3>S7@w2``@0*W~XPgg&ebxsLQ06HMY+yDRo literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Excavation_r.png b/src/main/resources/skillicon/Excavation_r.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d30b3e63b0b734416fdfc232f65dc1fe62011c GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGOFUg1Ln>}1{rUgj zo>{e_v(d?bg;(QqpcC(w|Ns9B_j>OY{lB<7aLLRJ=7LPMQw%k;3Z*s_KR@^XNX9>) zmNcC=x3<3iKV3gw;#AF)f91J5k9(AvM5%l=0E%}fSf#t10PSb+boFyt=akR{0G1F`i~s-t literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Fishing.png b/src/main/resources/skillicon/Fishing.png new file mode 100644 index 0000000000000000000000000000000000000000..bf277c808456bc7e5d8509195d0353874556606a GIT binary patch literal 3116 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 KpUXO@geCwHT1jdE literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Icon.png b/src/main/resources/skillicon/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..396839aa2496f7f3bdf92bda4c5b1fdeb7ddbe0b GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6k~CayA#8@b22Z19JVBHcNd2L zAh=-f^2tCE&H|6fVg?3oVGw3ym^DWND9B#o>FdgVn?poQf!UuSeLhg=t*47)h{y4_ zp}yQr4g$5>UF)ty2~}M9e?{@dHN_Wi`ajB)ytvL9XwkG<#KSxJiO7SW=N%M(eEVmtywlC#kc@(g-k}4>kNZ!toNrf~Qt|y0Z&y^2 z>_HYI)|8!FdU%+%wYd*}e}Df&(gdjqQ4{0@I6m{UU5;tmlhUekgHd7r{~!P6YTR!Y zX}qG;9_E#!bhD4ant{cx_7}@Bg%6*P`>&CRmEF|s80g?~)nQYC+ zpupoKf9&?xJ+|_Ge0l$b#AinQV)C4r>lb1X^49HAkjQN*1_nXH(m6A~YtNS5q3GXomR;OXk;vd$@?2>{h1I7004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPen~_@R7gu>IK7C|(_wo&jT5=u11TqC=xwMQ711l>F!}sss;MkPqB7-5*MHDfR8jxC$9uNrg z4+hg*g1lsfBsc^VRF%P&gTSXxpBOS@lNla8dW_;jIXPK|>5JzALx~S8{`>bIh6lIr zf*k-7o3nU6Se(?50EYm~;%NU+25);eu;uG^Zf1CYW-7zyb5p@=kQhh~qz2?jbO5rL zRLenTz#RbdHOMj$Mh7r)kV8Ofk-?-%lgLhla0h^bck97jC$nC<>ir82%%&{P-=#yXplw7mLc z7NiFT$Snmy`tepqpt=C$fb;+KQ5;9j$_VZNQW6fjT5^hDm>B>+^P&;o8E!oQ0000< KMNUMnLSTZHPQ)kx literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Mining_r.png b/src/main/resources/skillicon/Mining_r.png new file mode 100644 index 0000000000000000000000000000000000000000..d24771d05ccc0bfd1329b28d0e015c1ffc3d100e GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyG(>z@qLn>}1{rUgj zo>{e_v(d@m1n&wCgCFzXEo(NP5OIO^*}1vh3m2|mథ^|(N=Xi$LuN4_RlVI`ZRsZS0ztD Peqiu)^>bP0l+XkKDuqdD literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Repair.png b/src/main/resources/skillicon/Repair.png new file mode 100644 index 0000000000000000000000000000000000000000..129762e76ea6143729206f53496830fd622b52fd GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6id3JuOkD)#=e^0fs=uJg=CK) zUj~MDeg=jfApQ%~)aby#P+Q5s@UokM!R9FggXEcFo7QrmTFwHG$YKTtZeb8+WSBKa zf`NfC%hSa%#KSxJiO7SW=N%M(eEVmtywlC#kc@(gUQv60|9p*NyV_qTKD>J>Et+!l ziB%J43df0}Oi4+$urRT<_xJZdJgQ)-uvNiUVQ=EUg9+sYoS!C%PD)^JsQLH!cln|k z{vej1ZkZ^}jh!jhOm7$jetdZ;EYW=6yuAI!q>|DXfewBq4VN35R(+bQU@kw!!j-?T z`un?st$p!!#qEtCyFT#4G+ec3nx9u4c}ri!B(^6ix`9aO4wO-uhIbc%#*U zgIA=KZ4-nSdvYj5vvjeg^qdvkFvoda@`IfWAq)o@G^CT5-^jcvNPH5*;MFl%%~wfV z{lH>|6b>ENW}QQAj@y)1JC~`fP*GWK!eY%3vaPtFNJzE|6bc3g=^twhCckOoSW>w_ oOSvM~W6SrA8Y;)18zeI*+3w1^TL14pFe(^4UHx3vIVCg!0O~%uWdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Repair_r.png b/src/main/resources/skillicon/Repair_r.png new file mode 100644 index 0000000000000000000000000000000000000000..208e3b54328a6dc6189d20cabf839a1c08305d3a GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyG{XJbALn>}1{rUgj zo>{e_v(d>Q>p+4*18Z!;=VPfX!fos8MU;EacIYZTG-8QVj?+&F?(pTwmr%$)uvBtA p004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPj7da6R7gu>n^Dj|}f#zEMFIBi9j3AVWZwOUuYGu(Gl+eEd>QroM?bM0NFBJL4oWjWHpl}O(HuHVmN^4cz`P8j}PmVx09 zibG)~A*p2nI0`^zI|nBx1H@p6k@$ptnHL_dAcz;Nvugbl+WH6XRH%4pTbwPafk(g?2&$xTG$`W$8- Y0Gt)I(Jm}mD*ylh07*qoM6N<$f`VAojQ{`u literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Swords_r.png b/src/main/resources/skillicon/Swords_r.png new file mode 100644 index 0000000000000000000000000000000000000000..77939ced2403ab10eb6d2e890cc21c579981a4f0 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyG{XJbALn>}1{rUgj zo>{e_v(d>Rnz>Kj{$Ks4Cnx{6ZxC;5W9+#h6qMLub#21?_~OYEHJB3=&c?p6XJ%$T qyk_otiS`Hyp0yb)K(qe;XJ$B004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkQe@R3^R7gv$RZVCUQ4s#(PeV$&-E32&+G+!9MG!nC zhhn{WS8JgML4zQ83q1%WiFl|qjSxf>YSDs$SUg2Ns23?cRC|aNstA>2g;FClMAJ1| zH6mGeChn40#qQdH;SH1b=9~FucH(e}ZVmq_UsgXk?1pd{2}nDuPK?&^I*PRO-Ih4~Q5*rQLePD0SP_3$JYio;Ie)%Q8p|`^LM{eQL=mZ{2&nWdhpcdF^1JA%$^)omD z(qgd|x4j)|KF?+~dJ>Yf8x*Vv5QKF;D-JV(b9&!d0s%g#4W-~=NM0YJ;me3=PH5>g>Sw|V z(BJNw379N&ba3UR^8-5Vdk_haBId8n0y3G+z-)-Y3GDYDROVM!KrB!zsB*Dwr%wAA zVn+v|&dzdMNVMVMO=ZDkV7XjofUSNn1ikVLkpzQtJM^!CSgCK3QAYXKJG<1F34E_8 zn0$5zQk#s6dgZV0J+2KViQX0((3=YjI1vu7!wQ8$mcM@^$Tl))y>4%6L96INBr?L& z-rv*1E!n6TOUUXjU~)ne52r zpvb}c^>X8$|EgcyF0YDBeWLY)KjtLQq7@AxpF9ouIhC3|u>^BYn6`WKtEmq{CLD}D x$jRdot$XUsmsdT@A9VcNuOQ37@c%zEgVgm)b?KYlRRE1=@O1TaS?83{1OUFvL>d49 literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Unarmed.png b/src/main/resources/skillicon/Unarmed.png new file mode 100644 index 0000000000000000000000000000000000000000..f84c8fe866c429763521baba985135959c5995a0 GIT binary patch literal 523 zcmV+m0`&cfP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000XU000XU0RWnu7ytkPfk{L`R7gv;RY6L_Kop&bC7r0Fk%9}mP^=el<<_Mu zDMF5srH62twcx^?AmRx;h!tGag-{HR*cvKm-q#-|sZEn94h$J)-v96A&CDN1t}TCx zIomLPb!<~OEMR@3)l+JI~N z0uav**pigRl?wPzVir}&fwC=_*OgKMRfzw(5p_gO2ymM&#RuE_BG^0p?&%nf*NOyT z7+Mvf+%?2$<`Ydsp7+b+`x&{3GlifM+Ehbw0JXg-W&X$9R7CPqkm5ME1}tK@*;c{K z0X!^^{XUgfDLv}KBu(Amd0>F$$LR9rigegiLBwURVV#3h#M+W0&lfqQp*$5R$_W4f N002ovPDHLkV1oVE*}1{rUgj zo>{e_v(d@m1KWlNlPq>GlvFL~Va}3l&y?U{W|k;aeR|?ax`xo{=U#@FuCqF;3ort; c|Nqa-u;YcG_?D+_8-QE}Pgg&ebxsLQ0Ev7y0RR91 literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Woodcutting.png b/src/main/resources/skillicon/Woodcutting.png new file mode 100644 index 0000000000000000000000000000000000000000..f0276e184d59f6d398cc03fe91d9f218653dd23e GIT binary patch literal 3155 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/skillicon/Woodcutting_r.png b/src/main/resources/skillicon/Woodcutting_r.png new file mode 100644 index 0000000000000000000000000000000000000000..af8f84241ce17430042485aea9b301aa4e0d4d1b GIT binary patch literal 215 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 a2eK!w%)3_cH{TT)0t}w6elF{r5}E)xu#H6k literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc003.png b/src/main/resources/xpbar/xpbar_inc003.png new file mode 100644 index 0000000000000000000000000000000000000000..012d8a939a32ab8b0d6cc3b26c133c3dc9582dd3 GIT binary patch literal 411 zcmV;M0c8G(P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*Ao5-+k*XBE-4>EhEG5y8ix!F zBQ0%%3ORTI;N;}Quy5Z!hRyqT-1+(AC(Z(Zor9f$lamW9|NZ+n6!xgTp%*ToctnoR z(KsA>aY#=5efsnf+!ALZrO7|4b~FS=LtuD?z-Si$Ej~wDGZ5ze(JsIU?gESs0uG)* zxq%o6qPLx+_6?3fNAMuv=rrK)YSNARW;6td4FS+JAOOi+p4O}2%m@Gg002ovPDHLk FV1gBpozwsT literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc004.png b/src/main/resources/xpbar/xpbar_inc004.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c67d3443619a6098a662f609d9db82c35bb0c3 GIT binary patch literal 433 zcmV;i0Z#sjP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpRA@u(na>J>KoG{qNNS~^BIr=Zp2YX)5cGHv zM28^4L#H01V;zDhGH{iGjoDE8qu@y;KTjTZb>{cYe$4I~N-471O+|P>00c@!z`NWG zL$n%t@lQr$o&0RI*rla#KAwi1UN`ml@Vl57PdE=Q90@f1)guorvetpK)&>wR{t&}@ zyGdNsrdg%B5Omn@BWnG@fP5+Get#r-2j<12DFPRc3>p#@L5nPPV3Ugsz_x8&p^oFw zbU9BnfLgsqLRfmNl-|dC;0K8YfO+v~^5()(z3T}L%Te2|dnGo2O4@cG<3Ioe{*M5* z0AHGxtqly*&$9Kzmg7Y|?^=tt02~Ys0e{`SEC)eZA3ouK#i%uo!oW4)|Fw0<2n5m) b;A_Aq62pRoQQD}&BwYfDSR zH@CO*%ScuG$sC%sF)}hz!otE*a-Ll!6TfMuq-2}?{r$#&{{3Z7-)Xptzxo1CTLI(F z91}iC2{z}L3&wH|tulKU7*gw;ot@i0KR@5h-DrB-JV}?~hUE=O3(K7cR{s3`JzwL^ zeEYgbIt*@K6ZvN~@`+DaJ>hY&37@;$t$$x$Dl@NONKjg~(tcH%35%O^LPgtw3~>hC zIQJ-HfoHW004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An~381b-Om-Aru<#UcONg5*Hz;4&9tleb_^GAi@RYlF>NCjE{kc3wp-` z$k*Tk0G9ckoSeWRv2Wi#Fumu*A&kt;%F4pP!O6++^vM%=s7cGnF#P!bo#FTIKRC;b zQGM8hW-x>c$YrB($iOfd;)0&>04n6*1pp}X8yXsdQ|bBh=fQ=*n(Z4g3IKKvb_PyP zF0i`q-@l=-fByK1vj7;?hdpQpI$S`mLXOYTI2;*i`_re744?vliBL0tRDLuBMnhou zhQMeS04;7uS~C#leR?)MN4p%5P#@^D2JZrZ95Xryh*`>ylz||64?d0BH#pK7$Q6vE o(}2Ubc{l2_(Gb8F0-$L?00}&v))V?o2mk;807*qoM6N<$f^5OFQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc007.png b/src/main/resources/xpbar/xpbar_inc007.png new file mode 100644 index 0000000000000000000000000000000000000000..80a1fe2780f16278950b851930849c799d70c7d9 GIT binary patch literal 443 zcmV;s0Yv_ZP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp8lp+(+0aMWP~h>G8` zEJ?z)?eKlQ-NXvKR;!XO1ReH!xprU}^mJYF{ny`q0lRcGW#Gb|K|`W4XpyH5+~i~f z;Nmw;Q)a2-IK)k0x}3)vKwYns5RGu1>po)d-qZWr0AQDnrf4qg)wiC|P>tNa-LAw9 zprX{!gJ3}b1Y!g*0{kR|YTLjl{5-dw7&$)Fi_SGU0m+9CJ$)+|<1(Q68>3z5%!nW=C{_{pJ*7DsxPH+FDW9cMmq{Q(ohw4Zb5%n5Kx zy1%bB;om&r_6IZPOr6@=*gSdi!e>)b?jp1frnQX lNPj(@!66{ev>?-g!QFM zvfO>mzMt-%HrH}`q!jV=L+g_jc5fCM3p`{hI+-DpbnLjp5!Str8J}bqFfyF}W52IH{m0+m{O4-ySMgV0;Atyh z+?iv-=N@;9O|<9(6T_6Byu7@IK`(!PelF?IdSKRD>4U5c*6h~I>gwVVcfY^CA8^CI z{?Cy}hMrf4Fe3@_vK}GwgAQhE$dg>X_>{gr3J gQqanfAtk`@%xT`WEvm9_fWgV&>FVdQ&MBb@00X+LL;wH) literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc010.png b/src/main/resources/xpbar/xpbar_inc010.png new file mode 100644 index 0000000000000000000000000000000000000000..4e993be075b0368902d47b5f574824601c15441c GIT binary patch literal 444 zcmV;t0Ym004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp1RA@tE{Qv(y1D7E0e}+*o8UmvsFrq@>+xyRq zjGO{I;LM*An~2x*>vnCvgRbD+%Qq@Q;vyL0ghFvtANCL$h;RY9WHb&j<6|J=g5L1} z@-?^sfMtFsCnu~abKkywVDUXC4&7m8Wntjp&Kvwh8EN~|r;iMv0)UB7bA42PGz3ONVEBf> zXcqu2Zbw=(5axY)Ha$nX9FR~S=(Gm!0)QMdItYka%8!(RAbJlzjoLRj(i+GWjHAa)=hz!w6bX+QvlPM+4EpIB!A0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@G^}>vnCvgRJP?%Qq@Q;vy(w1PuWy7}bY8lm;SPKrR`LL(KRXh`6A4 zJb-)+E&yPe-^s}dXa3!{Zy#9h;Mrq$I5;^Oo<4a3S1Tz#cZT1;|KQZm%F4np zst+@G21B@jTs0bp3=D%IF6bE#ph6B_0Dv;Tp`jtp41E6lc?M7+uzCNEJDi+cV0GWW ze`7#q|NQY2r+#)0b`-Uv`XE6y(BT4d!)RO#j<}#_Jbe1}5!@1IBBsecs%A6004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpJ>KoG{qNNS~^BIr=ZUcguIJvszE zUzctX9y-;@Tc?h72%^X!lLBj26#6HgR>{wk;*8GxK6jkm)q)@(qgf9K2MB;bp$J@# zXH650njHM2!7x?wCk_3>E=Dt9wxvf>bX);eGk| p);J0c+kpSq)*&MhNJD_P0UyGTp4Qfa1PA~C002ovPDHLkV1jUlv!DO~ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc013.png b/src/main/resources/xpbar/xpbar_inc013.png new file mode 100644 index 0000000000000000000000000000000000000000..16c16618ed1a2efa3a10f6c6062d73554cc27954 GIT binary patch literal 438 zcmV;n0ZIOeP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpkxK=Di{G-W zOaX9RmskYm%Z2CrXA+_&eRv;Sg17#aYUR!relb*e2cRM3IpGOf7{(5 gF(B{}0saQO0h&&j*65UUApigX07*qoM6N<$g5DIW?EnA( literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc014.png b/src/main/resources/xpbar/xpbar_inc014.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ca460d2c972b6b284ca4457c2d0fb26e2de355 GIT binary patch literal 435 zcmV;k0ZjghP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp^@RA@u(SuqO2KoH!BK~EG^1Pd+wK)#TFSO~t) zCXHCcC*%VuwGc#6A&DqN_rxGZF*cVYnKWs3$nH#b*u692IHpFY6%!sX00v6MK(Id< zhG;is^H0Z4^3X!H4qUY~fM@gDww004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FhPELlWPoBWljOt@x7!2V8 zijdK`7#wjy&v*b;IPd}hl=%$}4T&xQ&YwTe04fCboHzt-0et`djp65ypE&iibFedT za&m#?L28lNqxuFeTtM+L8W)gcJCf4qr%xXlKm`C3(K&up;b;hqhQP23fzd7iT9gik zCOJKufiUmW+s;w@2ENMy?*f1l!RR0$X5l^%gK`5g5JYb~N9`LNX$|BG#?fiOVb`h~ i_0VVt5ETNTX+Qu;AdS}MVWSiP0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FhPELlWPoBWlNXy7DjOrWsZ~;Zg zXk0KbjI=Zgs&L>104Vbt8X6K^0GvO69;_Br5bQZ|=+5`=-xz-W_=!_LI|n-hCnpzJ z9;6nTJ*scu!UYr`qj3RAwj(Kxe){y00aO4m5uM{l6^@3$Xb23u5E$(Ophf9OYX-u+ zKiUNt!Ce4QA{ZS69JvEQ^d5W~wQq2wHIOS9N2dXYU8`=?L!%);R0x2k0RbEMjn004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FUli}%;CvY{=GBON5 zzJF&J)irA~&v^Ls=_9yB%|vvLA5}OS z0;3@?>_T9)3xF1-Bdr+-^ZsZTU<7voMh5|@Ke#rO27-o)TSwhV-N8!mAmHdU;IM1e jje2M_1c(X&&@>004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fb$Cnv+xCr{w|q-A6netiGV z@cZ{4oc50D!yYu$3>T0MqjAB&K+P~63gHPVq35 zU_GD$Va@i9I12!F4t54kPA;(8@87?nuz&veiPPRueb|GBTHyjR9XVb`<6>l_(NCW~ zGJpyICZcovsKU_@7!8487XqVQ0JJC_Y0W^G_lH80b+oGji7jfSQFs>sWa#K1AZFn{ zQU-#C%AnP#JE@ySL8dW|P6H0RR^6zFMniz85CBaB0sv~Rgx0$d#^C?}002ovPDHLk FV1hpBu|og= literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc019.png b/src/main/resources/xpbar/xpbar_inc019.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7842274540e2f79f986979ae0f285488f4ab5b GIT binary patch literal 469 zcmV;`0V@89P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FWTrEf+jKAl^A*>mjm6e5ogOiit>60gLebO>A z3_reqXZZd54^DeW^{(b0F;Rh4GoDd0M4I3&v4_$ z4F(Mj4X{2CA5;je*}f5L0l?0|&cMmZ1vdZt_irfdpFe)$w0Be=_Mo9wxPVMYj+fE6 z7#V5w)2ELNpaOu2=o~+)a5Mx)Ltxm2z-Si$ElNjPGZ5zeq0nR| zIywl5S-6jsfuNx>Xf^6i>ZVbUX^f-OfWxj;H|n9$5Fjc9K+}K#$7PMyA2C*@00000 LNkvXXu0mjf0`<7g literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc020.png b/src/main/resources/xpbar/xpbar_inc020.png new file mode 100644 index 0000000000000000000000000000000000000000..825b4efd0799f6dbfe3c59d08520a04425f7b024 GIT binary patch literal 469 zcmV;`0V@89P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FN%;&36bH^zP*w6(MmEg6h!C8P$h9WGM+3kcp#lff=rp zgy~QTPmr&{1pqAbJ2^QK%DZs+ef##o*)V-Du{|daVPtMrRu%>hPELlWPoBW_Nz2GE z{P_Nz;rH)9IPD$PhdpSh87?3jM&p8kftq1D6v7i!$iWK$P$o7sG$gtJIDh^;!;Kp^ z7&J6A;QByfph95H_Kg??06Pae11BdJ*!=I`zoD>y{`iU0-cfzngN9n+0x}&rUPj|$ zWTeqgpFT2x3IHaebNr~n(GVC7fngT{qg?>BC>?3dK$!Q3LX&m0s{)BFYNb(l7XW1F z=pZ0w;XYCZf`-bV)u=nEn?^yVF^*0H4!c&}sE0;FfT$1vO#=b|W^s+yJhIq}00000 LNkvXXu0mjfQeU)z literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc021.png b/src/main/resources/xpbar/xpbar_inc021.png new file mode 100644 index 0000000000000000000000000000000000000000..f796912a6bb72fb1c8852bf719d4980d226aa8cf GIT binary patch literal 465 zcmV;?0WSWDP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FqGB_(M3j+ryC&SYxPvH8bWn>tB zeE-hy`}ZH5_Kxbq9yHVp7my93alybq%`hDb;R!0_-~|9E6B`;D5?uhCKYyO##*G^c z8X6iX`at5KLSW7IjVJ{GI|n-hCnp!!{O{ktp|F4c_=(frQGM8hhFakQG95WyM&n{+ zq|r~GJ~Ds`04Aby{HVgw5Eu=CVHX0UT>!Kw9cj%#nD>W5lXbMK0*NhZrBQen0A%Rs zAmGRy2pTGbR-^8uZW;xd#yC0+IP6+=qaGR!0ir?xGz|y<1$~Xyo1kK?00000NkvXX Hu0mjft>CPU literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc022.png b/src/main/resources/xpbar/xpbar_inc022.png new file mode 100644 index 0000000000000000000000000000000000000000..4384a066b32b20a5ac4363a10e37e9926ebbec00 GIT binary patch literal 462 zcmV;<0WtoGP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FoA2N<@ZHNdDnjBSIORw6krow{geS+ zsDvlT*WdyGmie8WoQO_&`}XaFt3}rbliPFR5ImE!va&F6aB?y{eewjZPg+KX;m7yy z48MQ>!D;WPKI}n5&2RzPFd7#O4AczMp%9*+LJnR4fHJY6p&`))!1?p%8E)LT!Jwg` zfuRp12Py>CY~Khk0N6R$88|t)z~+Dd{tbow^T$t|_Kxbq9yHVn7m(@5@iH10BO{G| z`t*?jQ~)p$o#RIpj)uT!2n@Rr80`X}Md?Uu2Ex2Q6q>A~T@^@dQ7etYy8s|VM+X5% z?m*B`8MGR8Cw0>($TY^$X~1FEsvGstXb2D$0-$L?0Hk`2)@|Tuv;Y7A07*qoM6N<$ Ef{ZV_zW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc023.png b/src/main/resources/xpbar/xpbar_inc023.png new file mode 100644 index 0000000000000000000000000000000000000000..8775cc50beb95f21b434926084dd32f202357b11 GIT binary patch literal 461 zcmV;;0W$uHP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FB-#)lnZ2DmGdrlkzXLMFp76uMZPKKvXp1}1<%g8YN z`2L;Y_wPSA?H$#JJ!q&IE+895<6`8cQBWZVF91N9*wE0B=mOyU`ST1nZrotd(9poD z4cbv1)Cw1n>B#Xi8W$rYjeh#{ zkpWZyFcF>OM-`5Sz-R~zyAT-d0-!}HHJjE$rCB}N1%M=ikrwyxE&#~$ql18$h5JYu z2pTGbR-^8uZW;xd#yC0+IP6+=qaGR!0ir?xGz|y004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FtB zeE-hy`}ZH5_Kxbq9yHVp7my93alybq%`hDb;R!0_-~|9E6B`;D5?uhCKYyO##*G^c z8X6in^?}rY3V}7-H{N0AU}xau~qaiTtLSVEDfEJ}Atr-aO{!nPLj&@Zbu|=&k3hx4d3>_T= z#4OxL%0SRi8MGR8Cw0>($TY^$X~1FEsvGstXb2D$0-$L?0OEs<)?x*fZU6uP07*qo IM6N<$f^{#nQ~&?~ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc025.png b/src/main/resources/xpbar/xpbar_inc025.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2c5b4feaa1a45d3f36d0b4a3bc890171a2b406 GIT binary patch literal 469 zcmV;`0V@89P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FV<8W#)<)C|+15T2ky4qgC&GO?kdA<+fE`Sa%)Zrr%R zprN6GS06|ns1Vq^f5#n8PA;(d-@kujKxY5^@e`-L>>TVUYDe`!f{I$<0y1kfOsN~D zLm@mrefr1%Dgc;>&heuPM?+vV1cqG*jCKLgqI9G+17Y4D3QgA0t_mc!sFgy}w zql18$h5JYu2pTGbR-^8uZW;xd#yC0+IP6+=qaGR!0ir?xGz|y004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F>TVUYDe`!f{I$<0y1kfOsN~D zLm@mrefr1%Dgc;>&heuPM?+vV1cqG*jCKLgqI9G+17Y4D3QgA0t_mc!sFgy}w zql18$h5JYu2pTGbR-^8uZW;xd#yC0+IP6+=qaGR!0ir?xGz|yUY00000 LNkvXXu0mjfAj-66 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc027.png b/src/main/resources/xpbar/xpbar_inc027.png new file mode 100644 index 0000000000000000000000000000000000000000..2667d9cb8394190181426738a3210c578283aff8 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;Oyz*7?RD^OlQN=<*gV`bmtN5!k0)_Mxgxw!A8OLaHUS23PPa(dUn<3&^ zc~Oy)mHoTh+xgc`lc+WLy1|KINo15;+r#7E-}CIR|9>!3Ut61-nO$A|@MU%X2U%`k z4GjW}W85AyP1>?Ta+$MYZxfeg1tY_$BW-PMF5(Q&&(BZaQTUjxxvh;Y@R!3Y$JPV$ zgxlZM{QuY6IC(O6j(Er4&&U1eeA`sKVetyttL&UwS*_eB)?74Lnm2>5^~0YpFO_$w zo^vVblMl53d-IJ`!WQlZv8BpuB{@F-3&_~iR~EYBc4%Wcqr>87p|A zdUs9Ul_`=U_4tL!gALhNd#f@`SUR{EFPJDWxG!wKR_NO@2N=c-p00i_>zopr0JmSS AqyPW_ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc028.png b/src/main/resources/xpbar/xpbar_inc028.png new file mode 100644 index 0000000000000000000000000000000000000000..e4987db6fc226010f82256f7cd8850f055c4055f GIT binary patch literal 455 zcmV;&0XY7NP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp7Dp*CKl1hvC2d;R_*{^fHr1{+?T<(l845?hNhJ+6UKp;~D zPP?OFh*~8o{z0#wI{D#vlv+2LPyOwB(`~exe%gT0eJ1t`7xsv?c<1^HQ(bs+)=>k9 zi{G|w>6&yLC$W{)#Tsq`EN*u?bPfW#UTY$>E59+{>otz!*0f$3uA3sH_@1;L3f=gZf)#Zr-;ZJ~RhQpJUR zfvH-iI`BLk_QVY!CtdL{1OX8EI|3L1UY0a#$G|v!9geIRRn(3u$q2x1aS8a|+_Q2K xq|2oh{!{H9Wp4(a0srn)hlD^tiU2004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FbC~b;EQhgeR!tfENIuOl)XqNOS>k{``4{8#it+XlQ7VtPfOp>^X4=+yeOi z{Tsv2A3t&0%g({hz{$x4mItXtW{>KlJX}EGIvS>s=X+pS}%$E@$RYg)WF&q3*9_-H26sK2ES^18Nlg3Vf{f?2A$8=mX?BZ)xW>J z%^vQ(Zr|kV=kEXf_}BXI`}_3;w@#lrb?CsslP5oXIVrqDDpOLjEwJ_qw|KyTzBWzf z!yew*3%Z!&7#fT=E?lU1k@djO&(9_E?(8_YVBtc?O?DGh7cixq?{qHTSO5RmhtJ3T z=X~2#yurAjsHpL&W7fo*i+^eGiwEog8m02HcgdD-FE6{Z1u!0PDe03BwE+9;jZ?xF z?gp`?%4;P#KL5)QPhcr$bm&Yd5h!@V$HF_+adlvMka=$tJEQw@#`f6Nc~_hlD>{U5 cG%RCeG|a5Iw!6~L5EzyWp00i_>zopr08_oKFaQ7m literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc031.png b/src/main/resources/xpbar/xpbar_inc031.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3a8769e2cdc5066fb60d31bd68b9a6e24f72a7 GIT binary patch literal 439 zcmV;o0Z9IdP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{-{3ep$rNakj!Y9VusI1 zNHZW`g9`vy=67;(B04|r+qVy{mRx-x0}h@&cIWr+KRE4WWo2RD;N)a@`s4{*jkJsm z!;kOZ8AkO{CtN@QI~t}83?nVAfeJZz0RYOxhK7bj7XatapJ%vn;|7C4^-&%!pm0SF-_bCoJWPi|cz*iy5!^CnB09&9 zDjW@g(GVDRAu!qnK#S6m)(nJsf3yoQg1Z2qL@+uCIC2MqMh5{$Zrn4DP6H0RR^6zF hMniz85CBaB0suS_eAdsWGR*)0002ovPDHLkV1iE-sMP=f literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc032.png b/src/main/resources/xpbar/xpbar_inc032.png new file mode 100644 index 0000000000000000000000000000000000000000..54d629d62cc6e5f91234bf91cd3e6be83e79575c GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FVc28NNAWiY=g%|TxN(C)LqmgX zeIUy~1<9K28*vr@>>TV2oSa->cYXi<4Tb&l$4{K@9o2_DXwbt2qzXBFN5gbvq_t0< zJ~Ds`04Aby{HVgw5Eu=CVHX0UT>!Kw9cj%#nD004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fd87KUhb|~wKr*9YiWxp5 zA&heuPM?+vV1cqG*jCKLgqI9G+17Y4D?E;M8E&wPIj1B^h+<~CcLBNq4 r_l%>{fWxj;H|n9$5Fjc9K+}K#+}3>7H@{=`00000NkvXXu0mjfTz0XE literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc034.png b/src/main/resources/xpbar/xpbar_inc034.png new file mode 100644 index 0000000000000000000000000000000000000000..94878bab9f61dac950a76bbcb11f6cafe48afe93 GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F1{VOZ%{)*JE{+R&|nJ}kjl|8WndU-X$Dlt!3zLTCN?xQB)R}NfBrnfjT<)@G&D3Q z)(0{RR0youz7eAUVCP_G;N;{2yX*V+Zz$}aKYrqL@2EcPL4zJHAXUiWI~t}VBdvY< z^pOEn05B1q<3|;ahQMeD47(5*?E;`h=}2n^!n{A)1sK6y08k004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F1{VOZ%A3_req zXZZd54^H=v>cbv1*un**ax_dC7)Dx}0Tpua0sxeW4Gj&6E&$G-KhJRE#tjAy4GpU3 z1DOXZ1lDZdh*AKsbFedTa&m#)_5J%d6!y;_KXJNuR3G-BK@S&@D&+7T4bzd4);@ju z$N(w;n265tqY6huU^E1VT?mYJ0nnm!q%{L!-XHA(jNmQ+C=rYf0*>5)pwU6VksJ4n pqtk%Hu2nbcq0tZ^Dg;2&fB+iqeAdqip^5+i002ovPDHLkV1l@put)#^ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc036.png b/src/main/resources/xpbar/xpbar_inc036.png new file mode 100644 index 0000000000000000000000000000000000000000..0d51fc1815bbc83ff00b2e587f0789aeaf3d55d2 GIT binary patch literal 445 zcmV;u0Yd(XP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F&p0{_ nIP6+=qaGR!0ir?xGz|y004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FA3_req zXZZd54^H=v>cbv1*un**ax_dwURnbca_|BGl!*-u4T&xQ&YwTeaO1`e1`Q1js_Fxo z3n~QGY~Khj0N6R$88|t)!0!6~{TmAV=Z~K_-8-red(fbV3rH1m_>P9@$Vh9SK7C{W z6#z^`=lD^DqaiRF0>dr@M!NuLQ92U44x?QFNFo?%aS!hTfIL4s2#8s@kCcI+(LunG s8~2Q((}2USRX6IP(GVai1VGb(09f~Y)<-*-Gynhq07*qoM6N<$f_qP|IRF3v literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc038.png b/src/main/resources/xpbar/xpbar_inc038.png new file mode 100644 index 0000000000000000000000000000000000000000..53647d0c381f7744cf02b71b8ba195811a07f549 GIT binary patch literal 445 zcmV;u0Yd(XP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FGV-eKopXW-=I0=w(`_irfdpFe)$bnmD>>_LMbE+AFN;X4|pBO|SS`t*?j zQ~)p$o#RIpj)uT!2n@Rr80`X}Md?Uu2Ex2Q+65TFT>wxb7###0xdTC?gMcG9?ioj? n0f$|yZq!4gAwX0JfTjTf_w;<$j@-kS00000NkvXXu0mjfzu>TD literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc039.png b/src/main/resources/xpbar/xpbar_inc039.png new file mode 100644 index 0000000000000000000000000000000000000000..d16ffa8f7a0bb4537695ae4fec908fcebfb20367 GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326VBzWF7?R{bZe z*i(O8*3VCG!|r|c|Bp4C`Sua)HZ{4Ya1fu)?$p);XGKwxu$ye6~b;^qcr^LLW& q%Ng5aSLa=EUaaU4!qKpdk#Rah%{492z${?EGI+ZBxvX;C@w<_2Z+carYQ p8QWu5=Us7LtmqKJ(Xfn>(bT2p+V_{W(ZGOZ@O1TaS?83{1OVkouLuAD literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc041.png b/src/main/resources/xpbar/xpbar_inc041.png new file mode 100644 index 0000000000000000000000000000000000000000..32edf751f57001930f586fd14387d3e4beb2b7ff GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326VC3oI7?R=f2Z*S*cH*MOlgl`A97$+>fWMsr+zpp<1$KT)le&083+GJ2rP-J9N`-x>;T8KO| z^R@y>-e3F83NSIOiWaEF<8|9vpL)=Z7yMAVv@0nKZSpVz>VTZ7v{dd zzu&N+sHpKSN7Da4ABC4!-?Y3Dc%|=EGmB`|j)o&{huNxc@H{X0`Q@eZ4%f3TC4KUt z7GMv)aZ1?2-5|D9d95VJ=YJXBGg!(Q9Xb004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpMeX_@xtLF8l{fzxl{eGn{oO0CDph zhLO9sOw&wkf9)5~#Uj9y4u(VWJ&zubXJ)*$T9xWT(0;c|Y~V+f#sy5H5|OQDSmY7` z;3n2}J+}Z@mPNL0lcs4u_v5)(1XkO%BSa&N(erL}_wSkUs&$p#ZQ&Q8`sBi6V3W?K z%v@aeLM#B4+#L@?5CDPF5x^1PV@YM(2FB^*cqH)=fQtZ^fZyUS%S8|_0p(qL1J`!GT}8nz|k=SnPa#pVR%rjvqF%u$POQPvrB7`Lgh0QwS@pK|64Qpy5=?dC<)UrvZ??WUtoLKO-0eN99!dr5 k3YL{&YV=|GA@zYz$1eNYk@^pZfI-UO>FVdQ&MBb@0Mur!xBvhE literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc044.png b/src/main/resources/xpbar/xpbar_inc044.png new file mode 100644 index 0000000000000000000000000000000000000000..30e6b9d34bbb58015cea13b52a8a612fb4b488b9 GIT binary patch literal 434 zcmV;j0ZsmiP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpHntgP8bSBZg#m#Lk!(4`KY+Laa1k4Zk+}ib zwoQ)Xkgn^6>DW1LJd4%R^?i?S!7bHawXTv7jp#kwe&0j);lg~t=9NY=<;>-BCT;+g z%oPtq5CDPF5x^GU=ab5|419-=Er7&Z08Ro70p%S8m3`QS_>yxw8Uo@Nuym_B1Ox(^ c2=FoB6aNQm)}1Jb%K!iX07*qoM6N<$f}bj{;s5{u literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc045.png b/src/main/resources/xpbar/xpbar_inc045.png new file mode 100644 index 0000000000000000000000000000000000000000..0db111ad4f9f7e9fb9081fd64be78d5255f2aa5c GIT binary patch literal 430 zcmV;f0a5;mP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FtBeE-fc zst+|>KmjxwHVh0SEzN)mId}m8%EX3-hC~+t=g*&KxN+kKgNB9%-SvSApUwMs-1+(A zCrH@{dF^Y$)Df zTu@Zh`1kYQ-{vCU&db{u{wiMbl9`pI$fCFH>004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp^@RA@tE{Qv(y1D7E0e}+*o8UmvsFrq@>+xyRq zjGO{I;LM*An@FApeer4Q47DDRB=j z0AQKl$;pYB`~+6BZ{I$++JVpqvwzQtLs&C5D=P~F2PY@P(OM-`5S zz-R~zyAT-d0-#0dNNWbdyg%9n7{OhD(Lq4$1^Y-D2pSy(9KnNtqtk%Hu2nbcq0tZ^ dDg;2&fB>q4Yu04@XUYHo002ovPDHLkV1n%ws(kvQ&1IKXHC>V)M)G!v{&70Z1Mc&p8fUz557D&(!C~%(px2?uvFd=Y|ym48F`v Z44(bj*W8s1S%D$R;OXk;vd$@?2>|uOp5Fif literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc049.png b/src/main/resources/xpbar/xpbar_inc049.png new file mode 100644 index 0000000000000000000000000000000000000000..54eb37df40ba3164f1b2ea7f2bc3e83f7d4cdf84 GIT binary patch literal 433 zcmV;i0Z#sjP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpRA@tE{Qv(y1D7E0e}+*o8UmvsFrq@>+xyRq zjGO{I;LM*An@F~|MnyVvss&xu1Q8Jv}sg@J>Uli}%;CvbO4%g8YN`2L;Y_wPSA z{W%i#fdXSRY#10uTHJ#QId}m8%EX3-hC~+t=g*&KxN+kKgNBC2fa(Le15^mC*}f5_ z0AS}}XW-=I0{iFt_irfdpFe)$^yf&^2MP$}a2gGpk&$LTefr1%Dgc;>&heuPM?+vV z1cqG*jCKLgqI9G+17Y4D?E;M8F2Lv@AohZNqznX&4g!wgLBP>zz+u;_8}-m=2oMzl bplLt==!|RD=Fa(<00000NkvXXu0mjf@B^-n literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc050.png b/src/main/resources/xpbar/xpbar_inc050.png new file mode 100644 index 0000000000000000000000000000000000000000..89cb9c81e3bc48eb5172fc8d133eac5935682048 GIT binary patch literal 433 zcmV;i0Z#sjP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpRA@tE{Qv(y1D7E0e}+*o8UmvsFrq@>+xyRq zjGO{I;LM*An@FUli}%;CvbO4%g8YN`2L;Y_wPSA z{W%i#fdXSRY#10uTHJ#QId}m8%EX3-hC~+t=g*&KxN+kKgNBC2fa?Rf1yl&E*}f58 z0I+kgGjMWpf&KIS`!^K!&mTW=`g5e|0|f+fIE{wQ$VfAvK7C{W6#z^`=lD^DqaiRF z0>dr@M!NuLQ99C^fiUlnb^%6k7hrS{5PQKsQU-!X2LVU$AmHdU;IM1eje2M_1c(X& b&@>DXcqG8F(k~qfAVDK3#Wwp z`)UieHap6nv90!#VM;Fv3ln4G^Yd$4?mzFqT}@r(!yg|1E^oWP|Nnz8&pocNbM;)@ zAX%Bo7INYsH$#A$nTd(YE(VMGe>R7ErOhQwOib8X?Iu(^v>urCR{9_-gEhM~v%0$Y z4g351>zxz-|M@7q+}?ebU4Vl^`{j%qJv}C$UtV@+3t&9pQqm_MY614v8>fUV+znz& z7sobSe0R~~rP-m~42zo^Zg78_Xe3}_#bMFJ&gj0Ju|0Nm-WBJ?iVh(h4a*oA)s|#m V(|fn-JTMd)JYD@<);T3K0RRQxpKJgC literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc052.png b/src/main/resources/xpbar/xpbar_inc052.png new file mode 100644 index 0000000000000000000000000000000000000000..a18fe4340604ffc9450da2ebdb7fc3c0f925a750 GIT binary patch literal 432 zcmV;h0Z;ykP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F>TV2oSa->|9t=c4Tb&l$4{L89BKMM0f8J&qhT{L(#)q%9~nRe029$UepKOT2#kin zunU3FE&y7Tj{@lB9vTe+qCx;P a4F~|mp=;J&+h9`w0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FDRB=j z0AQKl$;pYBd;wOoZ{I$++QFm`=B|ThkKN(m?mr7yFO4r40k_{`VW%ak<<34PahdT1ppJ#Iet{( zXb6mkz_1H}(Jla5l#aA!Ak6!tU4RkX1pp<2(LunGI}kKF2sm=%o^f;004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F?mr7yFO4r40k_{`VW%ak<<34PahdT1ppJ#Iet{( zXb6mkz_1H}(Jla5l#aA!Ak6!tU4RkX1pp<2(LunGI}kKF2sm=%o^f;3*rV literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc055.png b/src/main/resources/xpbar/xpbar_inc055.png new file mode 100644 index 0000000000000000000000000000000000000000..4b898e72a34c5c212e17b06548c776016fc351fe GIT binary patch literal 436 zcmV;l0ZaagP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FioH%sn`}c1Q zoSa->zk%34fBeMhPj(J=6t%-$A1EM(yB|mW2TAV8Y5UWskKmRu6VW+-RN-g{jE2Cl z3xUxt09urev}Pd8`@_APGwMIgE)Kj407?X-gMcG004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp-E4k!icKn9cttzg(|skK63L=yEzw2cu#1FF_q}s0nFP?hIXOpBg|u{I2Ut&xr5) zBDSu$JV!JEOm;k(z%xnU{r*()G|eWo8H3~DAYxRlz33P>q{ a-+*5VB4XC@%liHR0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp3%K9zy3+Gl6X}fLd#`-1ZC(ud7V;*u>8jo7(A9Ox_itZ03xzzDl%mag9mPn`V^Hag;3ImiZEgZl17H&yhLN}d z*tSiM004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp>>wMT5* zj$-qYw^%yf#rNrUyC-s%N<}IwMeEfnis^K_Bsq^kr89z$=)JbN2}BKmO>CNG>IUFA z4!N#NhGG1C9z$`%n$BmQ@1N;004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpf2E=y<}@`OLjsu0J_5nKb2;qUB-{j;S{qbn-lss$)>;jNl`Bk8Lgj zVFBPIHVh+j0kCbG9LFJD*At`TqBWe1-1F)DlQWykl2ZBLz2_ZY?j`D&^O;v7Blzy& z{v6x;{VrIkrXpuN2EqY2AkG1_0B^q(Edbi1e`){17JzdAn}FXpN~CWfF|~9?@O_VM oeyZUZP~55xKyV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpeA!G_fpc~oKWS6ad)7hG9qtfNk60I1cE#PDY1t7+j;-BryQ;g**sR41Dms%g6ogdQ0?&st$qP zc~xX&zE|14*Qo2B00ST+-SIq-9bgBPbAY!1U!RonQa^1%ksNAZKf!F~l2k004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpyps1WdEDhR-}fO`D)_(;E5Hi; zl>(>TQPV^*A2ffv+4`A$r`IKk8%#zE8M52;rctg|q++B0qlCk}Rp-e3;?<5dieCc* zcs9RfSu%YQ#MrhS#!|vP^PbLU9~)cO(~uPcR?B6`uU4D) zP?WEV9GTyvY@;=LIP3upASK=L9LNf=0?H}CM}W5_rM#6-y3OSyz@rHMZSBJ&0Fvh+ zVBFj(4fB!?x{!5JEaPa`3}&zKHK204Iwr&lNGX8VfOjx#TGrds*u4M%002ovPDHLk FV1f!$zW4wD literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc062.png b/src/main/resources/xpbar/xpbar_inc062.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a3b9117615b5710370408fcbc3829d44a6d08f GIT binary patch literal 463 zcmV;=0WkiFP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpCruNjf?xcdR{Ll2-F}ZOZa5t;qX_Rd+h(O!jhq+!4<#JNt~y8N7tVCdQGDwg zz^nL8(~PPK`Q5TCIi`kt#XeiiL&crRq#-8+tXC_^uij|D#dYC!yMNV(G7d?p&XM^6 z1alNkKpFrRv0)go4ZyZ-a2yA8T_=ab*wF+AlTpY3vbih>k@t0Q-Sfxzdbxhphbj&U zz4KL(BlCNv?R$u@t~-zz5H1TGsPJdMW?_002ovPDHLk FV1ly&ykh_W literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc063.png b/src/main/resources/xpbar/xpbar_inc063.png new file mode 100644 index 0000000000000000000000000000000000000000..7331f83203e8bb5ecac201e16e7df9c252b97f4b GIT binary patch literal 453 zcmV;$0XqJPP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpyGz-lJn9F) zqxntKj2!}&Wd(C(tb43~GMk1PJe5jPMhIFi76D(iR-=>a(&cjfsE^Eb45d0F_=sLT z${`R005`E=7_kGuwrz48hjd++vX0l!ACzL;vT~`J+Cv)-ljC zuZoP|yW95Jqx=1iH~004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FJ&hY#9 zADrPcl=Xo;HQfC;>OTes^fU@81mFb#C=(kR8WLRqoIih_;l_;{3>q35LslQi51>L| z&GwD(0)U-^oq>~+3mgvLzkfqv|NQY2XZQ?NeIO4Z`*%3{anyg1WQ&|eKYjYh04e~O zh|ck&3P(d=Gz5lS2#j_CfKfWy1sLrDfO7Uw?#7YR#esJLK%O5R1jIg2GTaA{K)xRC zejN25_OuNWWgMLb9Cod`Q4fuV08t?Tng#>_4S`zL%{P{300000NkvXXu0mjf*W$C6 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc065.png b/src/main/resources/xpbar/xpbar_inc065.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0e9291b88bed54b969bd3496497b509c549e5b GIT binary patch literal 453 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 R;0gc$002ovPDHLkV1ln`y3GIp literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc076.png b/src/main/resources/xpbar/xpbar_inc076.png new file mode 100644 index 0000000000000000000000000000000000000000..9d50e3f7fdafac9098e817c94684a9e8ea86a162 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;O*(+7?R5~t&0DJR|Q^FSR24$~}rG;+08JxGzHojGQ;EmOR-3$wC46HahB83v9pUB9vw6qAT zHv2DbuAGsXt8hs83D>cUnFkWDuaf?HA%jCelxabx0|RfL=e7Mzw>yAg&EV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FflUm4$(Wlat};lPB(!r;6cFAX~1FEsvGstXb2D$0-$L?0IZ8i)=l1WE&u=k07*qo IM6N<$f004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FGV!V3U)4t54kPA+ixegFOqh5hr#Pn_X8(E30QLw5IIcI&7+A<2juY39?Xj|`v! zfQjfFKdNvv1V%$(*oDAo7XU|;;_Kp!b^(T7H)pi#fZ26`cL6|oU~~`=vn0Sb$T>O) zICKU&M+XnF4<3RC0Y|3+hh3{~)I*~oKvW2TrU3y004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FB-#)n7k*E*m|2-!TfipTQD+>b$Cnv+xCr{wvA}u4s@ZNUyf9iH$m0LbFeK|susfY2c4 z=pf+G80Z`wJj6`fpv(^vWgMLb9Cod`Q4fuV08t?Tng#>_>Xb>=JR!Po00000NkvXX Hu0mjf;cU76 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc080.png b/src/main/resources/xpbar/xpbar_inc080.png new file mode 100644 index 0000000000000000000000000000000000000000..884fe20beaa5ea85e694bb10f95f6470516bde46 GIT binary patch literal 468 zcmV;_0W1EAP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fy~9ql18$B>^#m zoTGz)q*aQP3|fs20%C?WCE*D&jd64ukhBCms(Lg8hD!*5rU3zoph?!sRI&d60000< KMNUMnLSTYlN4jYM literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc081.png b/src/main/resources/xpbar/xpbar_inc081.png new file mode 100644 index 0000000000000000000000000000000000000000..de38134640e71fb410a45fddcd73c9460fa79ed2 GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;N|J!7?RJu^x%u|z3mzZiW#i@T6SSlo6qSS*@yL+@OMctS==vDXZL}hN7&vtykOp$yJAP_mANxCJ13bi8}Y_495C8H zd9v`v%&Cd@_th3`RgRU{(eaD3u7Cb=vigUDiPI(~{`mOU`tbYv^#yI(+S=UA?CR== z9bPe8=7A03;kn{vyx7c5+8_~>inA*K+HHJegZ&n!>m9^7e&o+ScsWT~Sr9nJs(nmG#|X_vB-i{662VHibcy!N=wK zkHA)-7p0gE>#?})X0TW^Ws2Up4Do~y<;8Bh`DVnjSBNuAVRvI^H1uW)VzYE-XY5=p zqba#XN|t5GL4^k|OcV+^%R{baaPVvwVDM#TVmS8D^V$hSVfyXXi!S4WFN%H@>r@u-VbsIXOh$;EKaTMlF_ab1X`p z|NfrOGiOfBgAFVj>;L`eG>*Axc_Z-3rD*vRiC?xAU$OHjk~p#B|Cg7_JC>euDe03B zwE+9?jZ?xF?gnKq&$o|y${5+o&C@N+pPqbs=-_S!1!gyPMni9=Aa+Z4c1F(d2~&8Y zdij`=+VoW)avJp(mPkz~SR@;2D8+Qxkj3G01A{)N^EL5T2ke1?%;4$j=d#Wzp$Pzt CxUn?= literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc084.png b/src/main/resources/xpbar/xpbar_inc084.png new file mode 100644 index 0000000000000000000000000000000000000000..28242647c1e285dcca4d6512a1857ae085abda48 GIT binary patch literal 463 zcmV;=0WkiFP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F!J6eVc} zWE!{tfMtFsCnuuQ?7n^b;A%(pL4pDnCZIw9#Fv(lVfgX=JHzkae{hB?D=P~F2PY@P z(ICB09&9 zDjW@g(GVDRAu!qnz!9b7ba6(z0N4X_Fm!W004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp!Ml5k=Xs=7N*>_>0TB2r z0*CEhQAD}uCx5ry`FQiaK_7Z=s43qO^U_MJFf# zoW#1W$1VVtWsz;$q-h%To~SVwE&`L;)IR~Z?txCnQzX}XAx}c6{&$vrewU%gc4gay zy<0e>>3hf75f^|=?2LyX2!O!P5kLzN;nJin4qAW**tCzjXmM`7c=bcj0`Nx+0mGFb z$&m9~23@@CZ&@qW8II8;!$ba?f@{E^JJn%BAP|cHUjtqN=72cX-*#_f00000NkvXX Hu0mjfzEr)` literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc086.png b/src/main/resources/xpbar/xpbar_inc086.png new file mode 100644 index 0000000000000000000000000000000000000000..9f8f68ce4a3a7bf1aa33cef429865b015ce951fe GIT binary patch literal 461 zcmV;;0W$uHP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpLwjJ>L7@sLaQiLu3|0JLW`23{xcPF*Gqo)K`v1|&!cj^>JbJAfWTi7 zaCS#U5w(h+{DWRU_2!4;5%gYAV=j$W(@qO?yWVtV>+u?8+l0MnWMt)gzW_XvU)S}- zF>4q`APc=GwlJ6Z!n9AWOP9+vmTRGqr;-q~S}p^bcBex!_1Lg%o3KZewePv;1Ong@N)#v0>rrV6D6_xl004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qi;$!TWIiSOK>F!z=cs*{ zse+O?BsV-kt^gMRu*~n|u6zZ#zfrV_+EQxCa$F@B#poi46@6i7o)npFhuV0#%neURiZ zka7R%(?@X2k%{OWKdNvv1V%$(*oDAo7XU|;QlpDA+690F?m#znN4q%K;{o0U07;Jy z0%Dc~ln!!^4gz9^=|Bv2kvm8>-1UKChjDZoaM-o#Mm;nd0z`!XXc`az!~i(f8w&Cp P00000NkvXXu0mjf1wpps literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc088.png b/src/main/resources/xpbar/xpbar_inc088.png new file mode 100644 index 0000000000000000000000000000000000000000..4885cb3ce41adacabf2c7cd5d9915823484c7511 GIT binary patch literal 486 zcmV@P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F|b%v?(Jfy|({oul?) zrU**nklgSDxdL1Oz%sv+lM}INm0{n$eQ>p-`Vhf}94;`?Jtq#~%+#!`EDRi+oD5H& zJb@b`EhEG5a8gSUP>P9^@8UjRx c0B9Nz0N|uA*0_j{1^@s607*qoM6N<$f~@ht3;+NC literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc089.png b/src/main/resources/xpbar/xpbar_inc089.png new file mode 100644 index 0000000000000000000000000000000000000000..7375669c7703cd93cde77a7a16bdcfe65f6b0f53 GIT binary patch literal 487 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FY5vU!x~1DQi_J4fxq zObwL8A-UlRas{{mfMtFsCnsXkDOkZQVa?dAtSk&1oSY0# zpFDvZA}u4s@ZH}FqZ#zfrV_=|W9Fh~Bph5>;0Dv;Fp`jts1;F|9 z=NWF?xWS;Ip)sltDb&!z1;hsx0&BK!#99EbbFedTa&m!9`2PJH3j61epE%=#TKYg1 zAlpw5J4fw(PH91Vfd5EynLFxmyc5vA1X;*53y2EM5~ z+Qoq+a`Y|-ybA!5932G2ED5MJ$T>O)hzQ$(80;c004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fdr@M!NtwqLi9loY5}8z;|=V zX(A8zt`WQo0P^VQARuN*K+QqU(Lq2+_zuKi7rBFE!(AUJJ{U)*0f$|yZq!4gAwX0J bfTjTf1K>E;^Srub00000NkvXXu0mjf{&u{w literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc091.png b/src/main/resources/xpbar/xpbar_inc091.png new file mode 100644 index 0000000000000000000000000000000000000000..939ae9c73c192c6837eff78b067315c4fa095d4a GIT binary patch literal 484 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FqX;H<1H3>=)C3{Rgt zfg2(%Bg63H`*()lzyIKj4{GWISwe3+N9|)^pk^GB6P}<#2VMYxGO?kdA<+fE`Sa%) zZrr%RprN5Lst+mDaD@v<98?Ib*}f5_0AS}}XW-=I0-Nyt`!^K!&mTW=#s{_Zfh<6_ zpB{FO+6ReNYQ-Tr;rZ#)M+Q&_T9)3xFd^soljH?E(yJH;0@i z@^J4O!Mgw;kB$xkVwMEd9^@Py1Y`g=JINii8r4VL!9(yM;OI2quxr(gdT2BRhzbGF aG#~(?-8j~u77Ky^0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F22qzeV8#h zP;n0~0AQKl$;pZ6LSWy%eQ>p-`Vhf}FI-@9drlmJXL43n76uMZPKKvXp1=)}mXTrj z@%=l)@85rL#s@X^fh?i7oul?KFi|eIN^v?Wc#GqxM0f zm0EE~PI!L$^pOEn05B1q<3|;ahQMeD47(5*?E>J4Qd)FzM!Nt5*UcfPi9Fo9M({2G z$fKi!fS4r#Ee1J92Lb6n&^bEjh<(rzB+58C4LIytb)y~{4FRG;05lB<0726>k QaR2}S07*qoM6N<$f&u`z*#H0l literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc093.png b/src/main/resources/xpbar/xpbar_inc093.png new file mode 100644 index 0000000000000000000000000000000000000000..941df5a207fd0b8c6f0454fc5648a96f1ff8d409 GIT binary patch literal 483 zcmV<90UZ8`P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FEA-UlRas{{mfMtFsCnur{fqnb-!PSoHLj)V4aDmD1IdKS_(OFqp7&tgN8J<3Q z0yjijMuy?X_wNk9fB(T5AJo(bvV`7tj@mcyaStkV-~|9E6B`;D5?uhCKYyO##*G^c z8X6j-`jA46P`H5PL50AY?Hj=b06Pae11BdJ*o5!jzoD>y{`iSAKB%P+WC61M^ssZ( zK1j4uD-OvC&rhE|GJpyICZcovsKU_@7!8487XqVQ031P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FmF19adHr1`bY6hNn-S zzzva>kzx4p{X4_&-+yq%2Q~G9ETOlZqxLZ{P%{q62~SX=11|tTnb^?Kkmv&7{Q2_? zH*VZu(9qBr)rS;n#Doh-4X6-UvwhtbOAt)865<~%+ACN=3y%Yh|xDX2uNCGIuL_oU>uzWBrPG1svZr2 e;SvI%X+Qvf@;KH|mi`g|0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fq35qxz6Sjo5GjsRI=PoA>Xy!^z17HsSmCZw$!npFe)$j1P7Wb`-Vb>H}Fo zuHI37km#XST+lN-KYjYh04e~Oh|ck&3P(d=Gz5lS2#j_Ca6~DwO?hy|rM+X5hO9EmC^U!q?t8a7=koXF9AO^|E9b6kK`aq%2I64hTd?FlG hIT`}PDFi^%fB+u;IM#s004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F;nsG=@c!CNYcmV*)#D<23L>B<(&!1?mr<)d#YG zT)m_EAkjmuxS(fve){y00aO4m5uM{l6^@3$Xb23u5E$(O;D}OEn)1j-kfLw23qZea z4mnNa;odcZcL6{i9UTP3ED1;%%tO{qioVf7K;kOZffytscW`Z}=mUj3zgf00006XX508I;&$GY&|3OLlHEVQuWaiA_ z@t<$gxLPs%zQYaAb%a2Uc}w-`T2R{J39)S9i5$%L*#=% z&QbWfz$xK;r*rwf`v1ocoIJ^D#(U)7&&TTLek43ka1ZoeXE%ZM$t&5b?45F1M_FwT zf4;oD|ACmg@I}kIkcSx@J#7aza5rAmW9ZXR-KxoN+!j*1IF{j8NwM2*z8SIX72*t2 zD%{x_4ZWFy*gq$zO<0v*A~2!gsFgr-$`ihIyrQ)W0@7vXvZ>7Z;T8%stAK~`f{6k{ YX_nEo6rRbdz@TUFboFyt=akR{0Ln+Ti2wiq literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc098.png b/src/main/resources/xpbar/xpbar_inc098.png new file mode 100644 index 0000000000000000000000000000000000000000..ab93b2dc008adf1b3dbc4d350fd07d07f5bc5377 GIT binary patch literal 486 zcmV@P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp69B~Ya`lrqQJK68wo$StPQ4~?V)rbfW z2!Oyt5m@~!HBB|2;>G{beLs2dpZy+mDbyrf2IHYSpU&Q%U)t`eMx3MLSeK58c*hQ( zi+g{))mN z%=DvLtI~d3sg46kwa{(tDawmW^7Om~aRMmiUh!xM0w8dA1aJh%uvD^@=dL6=90Afz zC~B*VBhHrZA004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F8tQ4`dg)dPntP#uO!SLGSPc zxgJ~qz%sv+lM~TtZ{NOsaJ8fQ5Wz-ixUAc?`Hr-V48xD_-x+@Y{)00@87>M{QU6~XMC`8urqLSa)ISRYLVHb=mY5|SMR7kNc2!EF6bGa zpFVwL02KgCMCbTXg`*)b8Un*E1V+06IHHu&raZ`4a=J#NT>wOc4ArLfQ0Y>^y8s{u zj}8K2mIRax=8+qo12GUpZ#zfr!%S-fF?a}a1>@*6;IM1eje2M_1c(X&&@>004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F8tQ4`dg)dPntP#uO!SLGSPc zxgJ~qz%sv+lM~TtZ{NOsaJ8fQ5Wz-`a5;JH{GA`)zcc*){Rd}!u(Gl+aBy-mJbm&6 zu0~o$hJhS?AOpzNJF1U?ftqna&+r5lR`3D^ZolbhMzxv;*1Y=4t54kPA;%KNG&p(6n!B5H{V27>5q=cs*{X>A||4?(VA9GwOncCETm4~>QZQ6T`D1_S_S<|o!S S-v`710000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F=)C z3{Rgtfvb_0kzx4p{W}Ax`alMdt9Mi%0|PbVf}Y_CDy-lI04Nh18X6K^0GvO6p5exg z8w?s68l(D~+3oQTr`!^IeDf&SAk004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{Y*a&&|@{Nj+xCqheVdjGLf!O5g9o2^! zLzKh?y~7jadT;>%%luAGPQ<1;hJE|?!PSoHLj)T&!Ubm9o)d>~W@=Ve76uMZPKKvX zp1>`amXTrj@%=l)@85rL#v?X;AjRbB9o5IcK+U+IXLy1ND|i6_%EX3-hC~+t=g*&K zxN+kKgNBC2s6M1nqei%Zi~|)UYqoF1SpcweurqLSa)E9B{{0&Y`{$3JIO7prA4nmx zIi%004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{Ym`Hi|@{Nj+xCl{dk-_22>kmie8WoQO$pU^V;p?Srcw)rSZ+YK05ToINKFVa?dAtSk&1oSY0# zpFDwEE-fR&@Zfq|NFLC^366;|*90F;Rh4GoDd0M4I3 z&v4_$4F(MjjZu9_p+>E60ht3T1lDZdh_wJ<=U`{x~dJpE2Yab|d8Aqo9iOrs) i>PACgc!dCH8V~>zVkg$5b^2%k0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{YP{h1@`9?)ZT!f%HbaO!ZKw{+T9o2^! zGnB*yy~7jadT;>%%luAGPK44LTz=oaeQ@@uK18rlGhAS1?KyD>BXhH|vM_LPaxy%9 z@&suUDGI*|Z)iT`G7N0Oa7&K|suGO3lGMVhRCl_Kgk#LPBmR4X)99FppgOK;gHq)$07*qoM6N<$f-!x)%K!iX literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc105.png b/src/main/resources/xpbar/xpbar_inc105.png new file mode 100644 index 0000000000000000000000000000000000000000..687f25de854b9a938c6cf333bf7084e0b304d686 GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326km%{+7?R_d#i>${>h%|pKh)mF)Zt)a(+4fa(MLQmF(4a$yHO1uT_oKR-Vgai-tj-ZrlWN^+QGwR4}@W2?@$Fr^?YOpJ}s&#!H{|GWdb)2B^L{PFRx z_2KvT>kE!4o7E~D1sQkzfWz4x3(_l^xU?%68BQH(Yin~6XLx>oe)^8W$861QZO2yF zEeTj$wxi(;vnW&cwtN>&h8vbQBrPm=9x$u_|Btuz@8{$Gb3S&g<6k0hQzqz3->YU8 zI3;Z1Zcz4Gd3TEXl%j&0=C@cE_?frQ^L@SW z($c1KMh8AQS(YPb7G04$qa4EVU{ijHzy!uSF-yNI+$`A6KSfT`eK{j%>gm9r7X>8d fDKgArV_^u)R=+mMooy8`1{geD{an^LB{Ts5P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?R|LI#`9?)ZTm+{)K7AlLa`let!wgwU z;)34c335HS0DxtFCnqPO3xR$6_QBPT>O%w@Ey4w6=AILW;F+A2m4$(Wlat};lP7S? zrDbFoetiGV@cZ{4obiZFA4oB|dPns!Fi004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?TO_@E`9?)ZTm-8ezDNb>1Id%CcT^u{ z=u#3F^bSvu>%j#8Eb}`#IT2k5?Ax~wu69%(BG_mZE--WVoHzu|=&Y=)C3{Rgt zfm<#uBg63H`*()lzyIKjM{N2)ipkYGs*k#HLC^366;|*90F;Rh4GoDd0M4I3&v4_$ z4F(MjjZu9_p+>840htRb1lDZd2rdBFIoKIEIk~_#fB*gsh5hr#Pn_|Ht`DRT*&I^z zj_QL1GqvJ^p5giF(?-U$CZKz**Dq+fP@@9 zo5;i6K6n=Z;M!2J50nlWN2dXYU8`=?L!%); dR0x2k0RfM6C)TUxhr9p)002ovPDHLkV1kn}zUlw~ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc108.png b/src/main/resources/xpbar/xpbar_inc108.png new file mode 100644 index 0000000000000000000000000000000000000000..a915dc2936db57f4ec0c4f4a7b4b58773b83adb0 GIT binary patch literal 484 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?-O6__->3+Qi(rToicpX~kQ#FJj_Sh< zVM^kH-r)&yJ-7gXWqv0oCqiikF28TzJ~(?+A0pUj87?rh_nbI%hn1CufrFEi;pvkn zaLc7-WEg&Y|IYCH_aB_`h)o|zF}Zq2^)WC|GcM>Eo}j`CUI2hHv7w>KR@jCNH( zX@^=}4tN&;Wa#K1AZE6t aG#~&jfG5_?8y08)0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?+1ht6->3+Qi=c=R6PX}=Aa&&G9o2^! z%9O+fy~7jadT;>%%luAGPQ;`eu$q1Q_QBPT>O%w@t-}Ro{=u`y?r?B&GCY0q1a7&s zj10q%@821I|NetB9$8sg7|`{B6qBoWR38HawlEzE;Q}hG-~|9E6B`;D5?uhCKYyO# z#*G^c8X6j-`jA46*5Lv&A5;iz-oN7xCnp!!=I`IXF(9*l{`iSA9@#nAQPhGIlB;)A zA0(L3!*nQw%coBt89)U96VW+-RN-g{jE2Cl3xUxt0FEf7byFVQT4L=R?E;Y3%^3004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?X7#(5Z&ZZDMc{m5BNC(!q?TO0qxvvI znv%GncX)za4=w;;ncvCDiP*Hmuy5Z!xY|*Dh+v~fxWMc3vObVva`letV_?7*rb8iIK!p{&003oTLqkKN3xMMaB^~iT>)bM{P7cKJhF4Jqo@TbBvgMh?U#zSdPZa@YBN2dXaOGu-tMnhn@g#c(8 Z5CChzC)SgmCYJyJ002ovPDHLkV1kKrz4QP8 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc111.png b/src/main/resources/xpbar/xpbar_inc111.png new file mode 100644 index 0000000000000000000000000000000000000000..6f32c8707b089b6d465c69ca3ab34cae87279202 GIT binary patch literal 477 zcmV<30V4j1P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F_?Wc|CBZ&ZZDMZj!Q07xH5J-K>E^LT@C3OYTmZl_zmt;_(dlR3zI|}DqxulRMz3&z*#j#CKrWD$kzx4p{X4_&-+yq% zBP%Nl0|zH3!_y~EP}GpCcT^t(1GX?73gH4Otl$LzC=(kR8WLRqoIih_;l_;{3>q35 zqxz6Sjb7mbvIkTM>^X7h&iC)%7&tk(z^(wXfByK1GalJF*iqDi6q2iVR39Xm(Zh5o zgv+N-AHgk0CZcovsKU_@7!8487XqVQ031VXc`azbO#~U T8h1004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F|j-OD#BLgFHKNR2>{K9C-A^^WSp3~@^0 zg5Kc?ay_^JfMtFsCnuuQ(7t{9;A%(pA%cyb;R3S@R0x1vAT1-q@ZhPELlWPoAKtAy@CHJ_ZJCVLBAT1yoqU3jk0iHZ(LOx&SzT{yf8t8#fp&heuPM?+vV1cqG*jCKKVL@7O+@*pRWW8Y{O0DI&O)h0P5-8gc(9Plmx z$l}pKK+MEM&%r#9?c~@uItYlrQXWc!asx65I64hD>{@lB9vTe+qCx;P4F~{JY97`I Svt2X*0000Dth_lgZo;tUIXaxyYJN*D|N{i$q|HqSH2$jIn<<;=CUkwZLS;pXQ@6brZ?{QjQL zV_*O0h-Cj8nKwLh=ENjaPKXk4cs6-ad5FBqjEjeX#+_d7FE8o9${>8vvM%Id21ifZ zfeqY^7xftWG-OvSvpHe;q-3SrZibEynN_|;6Zl`;ENv)fbP((3V@jIF!fZIhJ z^#_(uraP004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpBF)C}fU!7=i!@yc_|P04Xk2d6kzfsZau(ovG`UoY(%$(jhJZcw#gG zlbJw8Gf&nJvW+L+wX7Dp004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F)!wl`A z6fPjwg9`vy=67;(B0Bx-+qVy{c2plC*ak9OK(07=_Sl`@zyIKjM^;uA1`bY6hNn-S zps10Skzx4p{W}AxdPns!FklPQp%5;h!U|phfHJY6p&`))!1?p%8E)LT!Jwg`F{%$K z)CMwKK!wld{X6db{P7cKJhF4JGjMWpf#tt{{|2U!`K0I_)dvY?^e`O?;qvLzM{p~S ziRc_Zs&F&}MnhoOg}`VR07sM#WK*8pF4brk01}x)wMh004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F~i+qL-)u@U+1Sc2I(EuhZ)jC zDO^CV2NwXa%Uli}%;Cn#|( zEhEG5j{Dy-lI04Nh18X6K^0GvO6p5exg8w?s68l(D< zLTw_7+0kmfOMw|rzI|n-hCnp!!#oxbw1JlU-pFe)$Oath8NA*F1YAA-wr%xXl zKm`C3(K&up;b;hqhQP23fzd7ijwl_-raZY_s?jb0Bm{y~9ql18$ zCBZ-r=8;m>AiHyP5D+!whSH!My$4l6A;ma44M<8>8&x|R0>dW+K+}K#<|z%004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FOd9 zQn-Lz4=w;;ncvCDiI{W)RK_50xGQF1pp`$8yXrCT>zXvf1csSjT;Oa8XBYe zkV0*s!v$nNs1R7QeIwQafSrS#fs>O9?Beg=zkz9F{?8vjai#%uy`%adK{XV^<004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FDk2p5Sr|AtIT@Zld4dwx z(lRm(KfZrw`2G72&NP5c@2EZohM^iRpu!4X0Dv;Fp`jts1;F|9=NWF?xWS;Ip)slt zDbxl-xPaUMDg@SS--uBFuye38aB^~iUHtv~H!zLN|M}x5&NP6ocT^uFsD@&=eERf} z0aO4m5uM{l6^@3$Xb23u5E$(O;E2+}(3B@8wPADTXcqvpn={%~!R)HQy8xhsHaZB1 zncW7%U>-4r05*4y4gx|#ZYT}P(R)x86h4fj(}2Weu~9XnAu#+x05lB<02wJ3){oTg QO8@`>07*qoM6N<$f?T_~H2?qr literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc119.png b/src/main/resources/xpbar/xpbar_inc119.png new file mode 100644 index 0000000000000000000000000000000000000000..6961d3c612edd1b765950466d8e4e5b0f39a987d GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;OFV$7?RtnEmU)_KTOe0-j8dw`L-wl+62ySn<}%j*6CkD{X7+8!SN{+?%l z{r`hA*){+TI)1<)r6BzHDk(FI@#4dtUjzwlJo63~EZcp8v6DrymGNc3;cBqM6Ge5~G1`KWn MPgg&ebxsLQ0BA$3qyPW_ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc120.png b/src/main/resources/xpbar/xpbar_inc120.png new file mode 100644 index 0000000000000000000000000000000000000000..f09c43f75d9b51f7b72b735d2c267604935e8320 GIT binary patch literal 470 zcmV;{0V)28P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3GV!V3U)4t54kPA;&EzkmM*rjhwSfBeLm2GI46>VpK;Pz;w(pFT2x z3IHaebNr~n(GVC7fngT{qg?OV literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc121.png b/src/main/resources/xpbar/xpbar_inc121.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a41b24d71f465c32d2ed6623bc3221b39b2b9c GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;N$7y7?RE&g2wgAQh zE+u{Pp%!3IzHv&}!rh?k#U33j7k*0l$+?Sq3@T6BoF>n?_pYU!(Lt=Ak0~i_<3Y0- z?W+Y8fYOc!E;{;s*}^Q%kR~&iO{Q$^u0a0YHike&hFNSZ4Bzy{t{r4A-U|$D22WQ% Jmvv4FO#nbAvmO8d literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc122.png b/src/main/resources/xpbar/xpbar_inc122.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0b4d513b38283196996dc493aa899daf98fe20 GIT binary patch literal 470 zcmV;{0V)28P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F<1`9=jKCL}I`Ax9`Nfb@>)!wjXN z6fPjwg9`vy=67;(A{6g%`F;EL!P%qw5WzMW!v*H1Jtq#`VP$1u;NawBc>3fCN?c3J z$T0l){+;3X?>{)x05-j&`WP67YPf(3D|i6_%EX3-hC~+t=g*&KxN+kKgNBC2s6M1n z8;s!saucW!ShIcO9d-_O22M^cu#3Nc{|2U!`9FXB#F+-r^^WR;1l3RsmrtKQGJpyI zCZcovsKU_@7!8487XqVQ031;|7@P9goJx#4N4o$F45M8Y%&rQ&3jj)3ql18$*=sNk z=3y%Yh;irWARuX#_fQ(lBX=+s6e5hH(}1KUj8WC2AuwD*05lB<0F^ry)|C3m^8f$< M07*qoM6N<$f(?|m;Q#;t literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc123.png b/src/main/resources/xpbar/xpbar_inc123.png new file mode 100644 index 0000000000000000000000000000000000000000..f25942cd202e020592bd153e13f0d4f8990345e4 GIT binary patch literal 467 zcmV;^0WAKBP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F)!wjjR z6fPjwg9`vy=67;(A|~#^YWD5h2Uk0)4-ssGHC$lsI(YWj9S%-ThNn-Spv1Mbj10q% z@821I|NetB4Y0DZFre!l)yKdvRKo>SSiuVbP$o7sG$gtJIDh^;!;Kp^7&J6AM)e_u z+F%VAkh?&Iz~=os?r?H)fnEIl`!_I+%>Vi0C(bm$&cTkNc2plEsD@&=eERf}0aO4m z5uM{l6^@3$Xb23u5E$(O;E2+}+LT9kF0t+$?E;K;anQRe@Gbx-QH>4)VwMDhbubUz zrNp{(bP$mE3VbLH=8-!X3knU!(P=>96UC^?(GVC;Apn{N1OPNg7S^ZBxzzvw002ov JPDHLkV1kCmwnhK| literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc124.png b/src/main/resources/xpbar/xpbar_inc124.png new file mode 100644 index 0000000000000000000000000000000000000000..359edabd04bb8dabaedd40a5a4255269a2d0c188 GIT binary patch literal 467 zcmV;^0WAKBP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fd@Sef##o)sE^z1lwQ^7ns{lUORv1>60fYaV;$)!|>z#cZT1; z|KLmmtgI{y9GsjC$a+WhF)$3(Z~+xo@B#poi46@6i7o)npFhuVChor4`k?WjITPz}X!`Sj@{1E>IC zB09&9DjW@g(GVDRAu!qnz!9Z`xhaqAWK!HY+65Tx;vje7;9USvf*KtJ#4HI0^I#sb zYe{kE=pZ0*mH1E^%p-R&78DYUqtk%IC5TZ~qaiTdLI5-k2msQ27S`<5bi@Dv002ov JPDHLkV1m;}w=Vzy literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc125.png b/src/main/resources/xpbar/xpbar_inc125.png new file mode 100644 index 0000000000000000000000000000000000000000..a44148bd235e240bb1e3dde33160cbaa4e20c4aa GIT binary patch literal 459 zcmV;+0W|)JP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3fCT+OIH28N*;E}+5+UI2hHv7wioH%sn`}c2PmveG*foTx`=Z~K_(*QdMJBr#-eUP9UisAC<(?@U%kcsFVKdNvv z1V%$(*oDAo7XU|;4)&%z%-N*6bF>RE+Qor&;ow~WP+}S#1jH-}2K!(h%*CX-b94}p za78|p2J^@rj0J@P004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpVBtnoVA*o!YMX0phj(_L7=6}EM?)u$T^E{7=)v`x;KmY{(iokJu z&@@#k`NiMsbQ1^P9}eL6ftmy^qv?3QS*_bFzt*VFlO8_%!tb4$BrdGpZva8@o2D5% z4=l?HZQ=L8CV@+!k()rEyxD5e$#v;+xklzdE|;Z(QnXwwLL2xIN#(-LDr^8;#D-zS zZUDAzljAs~>pJ|Ns7c_$8o3FKXA{2xC{^?$aNQ%FPv^)S$QSZ2w(z^7lE`Jh-w`)} zOzet>AqarL&k?`~5OJguuJSBBjZTaJpATK?Ri2|sGm3>H0KWiB!1tt(u*_rCX>?)< y`2AxpX_=RH8OsDT{098FTO9%dfmj6iH{cDjLk-sUd0P?y0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpDjdnr3PNa2$tR z*CoR+;P*jI5*HS$*>b*8N)IFO{WD!J*TfnqSIYEh3%@5SiCm7y1F--UQg=KIK>!4P zjsQl0gp^9V%5xZbMlp;4?*fo|mCrlEMI!+J087BQ5=dI+<;@>Qjb&au_mY-*dGp6n nYj_6yxmz6q0)bQn_!;m48qWpR;(@{*00000NkvXXu0mjfmQ1Zz literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc128.png b/src/main/resources/xpbar/xpbar_inc128.png new file mode 100644 index 0000000000000000000000000000000000000000..b85eec6586b81c6cb5610fdf88c0ec3c44bf1cef GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpM3YjWq;ORG>wHaYh!HU~X4`C&4>;?sqTT-J=CTK&4tGAUq%d0)Iuo z+n+Q|Rm)-W_q)BXjUSAL(EC755*I#xz1diP>-^nj+ksx3nj|iK`mg{zli#we)Nx?j zb|eeE7dDAp#?#5N)o#<-_vw1QCB}fR=c%X^tyil^26{wNxp1+H3IHduX_~1Efa5si zx-J=p0lhbBlDP1(xnRu}^RNT(eUC2ZOJWQZiUm@t6n*`<-2&5vw*MN8K2nE)UW+NH^0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp5W=Qct8LI{))h9 zchodhuSU&3><@kpel!`w?+Z0aT=@9ScFX%U`P=oT2ft5hlDP2cBLR3ezhzme>%g|{ z*cN^-Y!bQf=@(1KI|l(>ueZb+D3yv-QHoZ+AKP@gU4oxXE-Y5D0B{qVrkPp*9LFKo zb;&Rc_`Ok+$c05~I-hw#aH7lkl2`-fN|}_>qwj3{{tiD`Tn>jlu>cfOcRUP100eSJ z03$#`N+tfvXC1{b0z8V~-$tBx1mNJY1pHJ2Nz1&f`Qxau%#*#$%bLGv35aXJ-2K%d fAP`7JfUg1X*D46sOu#+e00000NkvXXu0mjfX&004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F~qaiTt zLSVEDfFnwWVpE>nuGnZ701^Ttt&0Qi0>B1>NG;xm(qPx004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FfrFEi;pvkna4pg@ zG7LYye`omp`wz~vGpY}J&f5>q^ItYkJ0|PNANAE#ZkZ&1BrvZmut8Uaoqai?42!N&m0sf}^$4_~Ig#Z8m M07*qoM6N<$f+a?_p#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc132.png b/src/main/resources/xpbar/xpbar_inc132.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f8086e3252ae5f8f576b68b73a76763357a4a7 GIT binary patch literal 477 zcmV<30V4j1P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F?#aw2TbHkMG|Ze*gZ1GwqD(!yYsP9WJ0k2VMYx5`dwhA<+fE`Sa%)Zrr%RprN5L zst+mDhFZ9QoDPdaklR6pz?$tFu@(UA9PA97oLpeve*gXrh5hr#Pn>CIR3G-B8OU(? z^ywo5r~qIhI>(PH91Vfd5EynLFxmyc5v4=1DNk-!Y_tmiNdyDkBnP>Ho?R+<7XW1O z=pZ0wNidWK^T>@q^tc}#1cao6ff$sd_n<1spNyl^fWxj;H|n9$5Fjc9K+}K#c6004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FEMny`{G)U>l0z0&+bp4q@)!bK($2=4NGOVc_88WO(}I z3EacdGBON5zJF)<{reBjv@@y?d(aGYxPS^BcmV)P0EUK!L>B<(&!1+z%=Q)@7lz002ovPDHLkV1g8Jxat4^ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc134.png b/src/main/resources/xpbar/xpbar_inc134.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd5c33415eec32e4176eb5ecc1d78d2520110f4 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;N$7y7?Ro8_Plt)#lBcHW?HY6dBpneqwo-m?){r6Xz>-Y2i`4*SYt+0FJXguNJr3wMLES9?a-87abkWOiIw; zeKt|Le#fJ_5`lsr{6$TV<`tGm72MeR%FWh9ipiywAwx=lVM{CPwRu9PL4nQS>FVdQ I&MBb@0I1}y=Kufz literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc135.png b/src/main/resources/xpbar/xpbar_inc135.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3a1e7fb0117de8666c6b18b02d010e2985f184 GIT binary patch literal 467 zcmV;^0WAKBP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FUli}%;CvXo- z%g8YN`2L;Y_wPSA)6S?q>_Ico;Q}gj-~|9E0T>z@5?uhCKYyO##*G^c8X6j-`jA3x zsD%s2>Db~B##F=(R^VpFT2x z3IHaebNr~n(GVC7fngT{qg?}za*!M7*`skKFjf7x$xsfWv!`6BPH1qtk%Hu2nbcq0tZ^Dg;2&fB;jG1=ih51oZ#_002ov JPDHLkV1m?Cz^MQL literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc136.png b/src/main/resources/xpbar/xpbar_inc136.png new file mode 100644 index 0000000000000000000000000000000000000000..cc12525a3f892628b25bc21827c63ffdb8cfbdbe GIT binary patch literal 476 zcmV<20VDp2P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FA zxPV*&E&yPe-^s~|=t5xMzI|}DqxulRHWb4J{)x&Zs`@K{L?d0xERi1pp`k7#bQ9T>zXvf1csSjT;Oa8XBYe zkV0*!g$u~(xZ)7x7f>OvX8T5P0l?0|&cMmZ1@`Ut@83|^KY#qhnRZ6?VGo*t43|%z zJ~Ds`04Aby{HVgw5Eu=CVHX0UT>uKo*Y< z0%Dc~LuoLN-1s9D_oIV=q*eL@F_=g0U@XXIjHAd_DwE+GJ#1_S`|js?~k S9l5gr00000BNW87X05VJSJ!u9E5dhAlljhx^~( zm#q8$ui5x*&#S|7Cd{&W3!K>F7#f5c7A{o0$a>)C=jW1ncXk|HuyCQ_Dt^r?ZBaWK z=Je_FIsRi5Wy;=`zvu9|gXa#MJjwd)?f3Wh18&&Y|2Zd3x(l2f004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FzXvf1csSjT;Oa8XBYe zkV0*!g$u~(gyIn7Cr}}-+ur8jRBec^T$t|X@{MI9YyV^K1fgvWVn3# z^pOEn05B1q<3|;ahQMeD47(5*?E>J4(xKRtC$}p$+690lf`M+5gWN#RE)~2B0J3;= z5D>E@7)pbA004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F6_+Luw$x z1>_QN0RYSVPEJn5#v{YNef!{QNA)3sZ77Bd$n}Kc5azFw*UsO0`s4}R!_qP`3_req zXZZd556-m1%F4pP!O6)mst+}Y20C0og$}#`03`rJLqnnqfb-|iGu*gwgF!<>V^kkf zs13Dn0XdzRI0X3%R0!-jaR^-NfB*iCfs>O9>~j$N=Z~K_(+)caJBr#-eUP9U$Z+}e z=_3QE0AM0I$B!x;4S~@R7>{Vp{jdlSbAv4fTa*!M7*`skKFhpCGJND0SPw%24XOe+`(9oZx~0X0SQOysEW}L7>*$Tng#>_ X&f5jnsH+2a00000NkvXXu0mjfcf!0e literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc140.png b/src/main/resources/xpbar/xpbar_inc140.png new file mode 100644 index 0000000000000000000000000000000000000000..a609052f927edf570058ce386bf5ed51641a3590 GIT binary patch literal 474 zcmV<00VV#4P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fwg<8>|oj>64a`VfgX=JHzkae{iN9 zR#p}U4o*&nr%#^1)r{(6U>N9d0Tnv%0sxc%3=Iv5E&$G-KhJRE#tjAy4UJKKNTD{= z!Ug1XV&f3xH&7w4=ft5q-@kuj;N;{2`y9mn`Qs+Gz5qW0njuc0FO@p$M(KQ Qod5s;07*qoM6N<$f}9||_y7O^ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc141.png b/src/main/resources/xpbar/xpbar_inc141.png new file mode 100644 index 0000000000000000000000000000000000000000..65376f12f048ba200c3fbf7ade8bd7afb8e6c8d2 GIT binary patch literal 471 zcmV;|0Vw{7P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpp@UcXO=IHuF-T$($L#w#_2pr0tpZQw_w znhO`5yZ~?lIF2J-0DRx4APC5|ZTJBfbRUL}UCkBh*3@f8YTrOM-YPshWtGi;c#={T literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc142.png b/src/main/resources/xpbar/xpbar_inc142.png new file mode 100644 index 0000000000000000000000000000000000000000..5501fb4e4bc0204de3787c0d981627d4d5edbdd3 GIT binary patch literal 465 zcmV;?0WSWDP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FqmTtKb>7XYx# z@8sk}bbRjHw-2s%R39SPhGMvYTu)9MuG_Wwjg;o!$5}%sL+8I0H6e5XlO`u0dW5Od4?M|ZZK$QXpHJZ3bmmYE+D6q6NjLJ zZqJEB;1&heuPM?+vV z1cqG*jCKKVMCnj$%9GQKhk2hIy`x;_g8Hm9=a^nHyddAUdz+u;_8}-m=2oMzlplLt=6KeFwySVo!00000NkvXX Hu0mjf=QX?{ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc143.png b/src/main/resources/xpbar/xpbar_inc143.png new file mode 100644 index 0000000000000000000000000000000000000000..d46c53b39ad34ffd9981ccef4166a3f01a8df180 GIT binary patch literal 452 zcmV;#0XzPQP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpLwjJ>L7@sf>jhMsaSJvT?0D-?E zaM~R;P1GvE;UDz+UvGXm9>MPeHI=xe(Z11Yy5A^?i31nDhWZWWY`JjJ2@3!xfMFPk z3xI9gfLYN~PJ&}B4aKQ4BY+0^yC6J5@i*xV_WiX=oi_|LZQYxrfu<#5;& z7l2&i6AwcW0D+$)fEFM|QWdZAve$UD0FNa2w^k)=0eJHm0!Ax=O2a%^{nBWUVO}(6 uvKZ#c>cG)!cn18rTOBq80*MIlGvFQOGxWz$6$l>y0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F~=f_QBPT>O%zEPz)E4>&cBnklur5kKOtG`wz~v!^+CSz`@DM z@bt+OxEg608HOL4GoDd0M4I3&v4_$4F(MjjZu9_p*GaQ z1>|%};t*8eZQj4*&d(n|ai$%14t54kPA;(g_wV0O*rWOeCR{#!`Uq}SF%g~PM-`5S zz-R~zyAT-d0^o?!q1cqCq!~|%-q9|=(Cp&Cy8x691d&=S4y8e|;XXJ@Y21$v0-~mV yN(SZVJva&;1RR|PB(?Y&RX-X6!y^Ph(|`c*+w{lu2%!uB0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FrWn>tBeE-hy`}ZH5X>L>>_Mo9wxPS@|cmV)P0EUK!L>B<(&!1##F^$s^@GTc}kk`l;{No;b<3N=yh@6T>wx7jt&B1 zmIOm-Fpu2$qek414gw<54kd$f^d1}qxteiw8gSUP>P9^@8UjRx0B9Nz01^i4$B>N; Q3IG5A07*qoM6N<$f|tFvDgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc146.png b/src/main/resources/xpbar/xpbar_inc146.png new file mode 100644 index 0000000000000000000000000000000000000000..f180b4bb86559789ae045bd471f2f17f81540894 GIT binary patch literal 478 zcmV<40U`d0P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FwYN&`={> zK7IPg04e~Oh|ck&3P(d=Gz5lS2#j_Ca75`)Y|4|{j34a+KoSA9n${q*hC&wy-UR?T zcytgDvm_WwgL&k}AGP9sbPy1dekd7~qxaw_$i0lC(}2USRX6IP(GVai1VGb(0Fkfs U$9A5ToB#j-07*qoM6N<$f`8z004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FUli}%; zC-8uhmXTrj@%=l)@85rLrnyml*n@^z;Q}f=-~|9E0T>z@5?uhCKYyO##*G^c8X6j- z`jA3xsD%s2>C}irkiS8Nz?$tFF$w^74t54kPA+gLegFOqh5hr#Pn>CPR3G-Bp+>lT z`t*?jQ~)p$o#RIpj)uT!2n@Rr80`Y!h|;0hlqa_tKiUO=Bm!zRtwClDg)R=f3jlKP z=pZ0wNidWK^T>@qYR3KOARq&{Sv^z+IYDvHI64hD>{@lB9vTe+qCx;P4F~`*yY$DW SO(I1A0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{)x+^9b6K|`%@0Tmwb0sxc%3=Iv5E&$G-KhJRE#tjAy4UJKK zNTD{=!Ug1XYQ-VQ@1R0p&GwBb1pqq-I|C;t7dVu@fB%NU{`uo4&NMfw4|~v1BV0ax z`p5t(0GNo*@uLbyLtr!nhFu7Zb^&li=}>ISliQ3R?E*j&0kxXeAhU)-7YE)206BPc z5D>E@7)pbA7yaOezjg5sWWbQ*BjwdzJaG#Ua#g#c(85CG4(^v8A`zt8{x N002ovPDHLkV1laQxpV*k literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc149.png b/src/main/resources/xpbar/xpbar_inc149.png new file mode 100644 index 0000000000000000000000000000000000000000..02e29e51a1d2ba3992a42c8571b6928a9988434d GIT binary patch literal 468 zcmV;_0W1EAP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fl0z0&+dI;t=NlJtq#qGdU|O3j+ryC&SYxPv8M1 zEhEG5GV!V3U)4t54kPA+gLegFOqh5hr#Pn>CPR3G-Bp+>lT`t*?j zQ~)p$o#RIpj)uT!2n@Rr80`Y!h|;0hlqa_tKiUO=Bm!zRtwClDg)R=f3jlKP=pZ0w zNidWK^T>@qTEzY6AmGp#9+i@$fwj)8h>mgH-t?6R{F}7+y8K(4-urM(;K0m*<<^J;yFndM0wLLuk z{XNhA`u_)KK6Cq;$S;-E%Dv)4gE+$imV}H9j}pd$e}5|5q|NgTGBPrHUO97ZT_~of zusqnB&oPlfi{)C*eGWZ_8E`MY!{R(A;F0vzcH0&WPVoty511IH{hT{z z4#!dEn7aG>Y74%tuyfhKd$fRY=e%2m9Ng`;>U?(-Q&STkJb02)@#_hv&4MMVDH3%x z|IdB+{at=eW?qQ=w*?Esb~JGDS1>YoF|@U{xrj47KR-WxN8w|(=C-zDE9{m8NM}7{ zDzegjBp|}Kz$xMEx8Cv_mNz6VEO#DQ_~q|!bCGZ7pf-NH80RAiUM2R()p2NyRt%uqcT zAazFB{9lITcOdtOxrBz~8RhZ-(I-~NE@nDBQqBx{n!&-dT!6usnTcV|*)PZMFYZ$Z PhB$+#tDnm{r-UW|qGY?~ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc152.png b/src/main/resources/xpbar/xpbar_inc152.png new file mode 100644 index 0000000000000000000000000000000000000000..f56019467c5c63de06e72322fcb311f833d2e52a GIT binary patch literal 477 zcmV<30V4j1P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FkHOQ=?(8Ymw0YDBO z9R$QI35L>O9=Y*H>$o2s1SGD}K*?Ypxr3@8mobh`0}>ZOqpC(jV7P?004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F60h$fRdJxVfgX= zJHzkae{iNbR#p}U4o*&nQGKXEM6GZE6&~;c0F(d>4GoDd0M4I3&v4_$4F(MjjZu9_ zp*GaQ1>|&E#vv#?K!w1b6NkXH{`c?S7&tk(z##@=|NQY2XPRT@U`J6qst*!W)CiYP zpFT2x3IHaebNr~n(GVC7fngT{qg?kHOQ=?(8Ymw0YDBO z9R$QI35L>O9=Y*HkGLNl1SH&Wpky$Q+(A{4s~AV80SQOWsEW}L7>*$Tng#>_>JIeB T`YJ%A00000NkvXXu0mjf>DaVi literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc154.png b/src/main/resources/xpbar/xpbar_inc154.png new file mode 100644 index 0000000000000000000000000000000000000000..39babf7d900ebe92c007414bb3e512d186d599fb GIT binary patch literal 470 zcmV;{0V)28P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FWTzXvf1csSjT;Oa8XBYekV0*! zg$u~(w2nhin1Bj_Jtq#``TqSI11BdJIK)8gpFe)$OmplU>?mqS^+AG)8sYNk(?@V? zjEU$RKdNvv1V%$(*oDAo7XU|;4#lQCxy|^|E&wDEP^)P@RJu6uE&#~Eql18$CBaY{ z%p*7c=oR;)gMj!O50nh%kvpggauMU`G~lpn)s1>+Gz5qW0njuc0Q!*b$E$?#zyJUM M07*qoM6N<$g80n1i~s-t literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc155.png b/src/main/resources/xpbar/xpbar_inc155.png new file mode 100644 index 0000000000000000000000000000000000000000..aed3daac3b5dfae80e32a463d5d138484c7d67c7 GIT binary patch literal 464 zcmV;>0WbcEP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpz+VwK zZ1##GDkbmm_d4CkKi?k?;P-}_OkC2;{b)M2*UMGA)~MT2iw%D7iG9L_-{=Xz{qXC$ z9y%|EVfeQ2dtj513rGL$9NxLG2=Mostri^}htB6qV9n)nStr8y5~ejT|x;7J>0>Vhd69h&j%IPRCPV&E*SudbWk% z4OJ3ccDpUH0Axa+co>2J2>cuYi~s>Cm9dqN+s0!AxD`QCt+gy8jz0o$z*qvlDuGPP zytw&GGxt~m1~(9&Ec4004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp0p*L6L# zUktcuYv;YAvm9dnMTgIaWxCOzxN^9OrhE~OE0oY&+0sWakreR)O z|9!*v80Pt7Ey*x1E>E^X!872`RdqNJ2!tZQ&wy9v%HzkJlUXDH0000 CC%VG` literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc157.png b/src/main/resources/xpbar/xpbar_inc157.png new file mode 100644 index 0000000000000000000000000000000000000000..84831f79ed5a809757065638def0eb2154a7ae13 GIT binary patch literal 454 zcmV;%0XhDOP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3fCT#dAh48xD_-x)^rQ64U!LI7R>fD(YAp&`))!1?p%8E)LT!Jwg`F{%$K)P`EP zfSf)MaR@3XH}BtZ=jV@~IMW`{G`h0CW;AHl67CZcovsKU_@ z7!8487XqVQ031;|6r1woHseRT0FXp5(z+b*E&#~$ql18$CBaY{%p*7c1}g4H2LVyj x+dvFff?U8jIt@7NT6Loy8Vv!WLI5-k2mr)N004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FDgJ!sIw1yl&Y3jk08Ff=qIx&SzT{yf8t8#fpISliQ3R?E*j&!AR>mz`Fn-&yNlQVwMC$ zX)ur6_#4Q$9~}flq`83@tOVK4I64hD>{@lB9vTe+qCx;P4F~|;gxbeeW{Wle0000< KMNUMnLSTZkJF2Jv literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc160.png b/src/main/resources/xpbar/xpbar_inc160.png new file mode 100644 index 0000000000000000000000000000000000000000..401176cde1b7d5a4a9ed15f0519683cab7ae9f81 GIT binary patch literal 469 zcmV;`0V@89P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FYsO|}WntjpRa0P_6kARuN* zFq8)K$c?{&j{DI;KuEe9h`~yby^N#NfWxj;H|n9$5Fjc9K+}K#Wgg?l^_OW400000 LNkvXXu0mjfR4Tlg literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc161.png b/src/main/resources/xpbar/xpbar_inc161.png new file mode 100644 index 0000000000000000000000000000000000000000..d77e67026a9acee5bbed2f1b804b1b229a6b9097 GIT binary patch literal 470 zcmV;{0V)28P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FUli}%; zC-4B4mXTrj@%=l)@85rLrqxk>*niY=g%|TxN(C)LqlU! zA5y3dwQvDBeIVly6kec0V9oZ87zF@32Rj2NCl@$$zkmOR!v6W=C(g7wst@GTd2*Zaqg?<P9^@8UjRx0B9Nz00b)I$03=?ng9R* M07*qoM6N<$g5U|TzW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc162.png b/src/main/resources/xpbar/xpbar_inc162.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd19d459ad1ef1878c86aaee1f52a7ffd54ab6a GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;O^<-7?R!}(K#@V8!GZI@g$om2Fg^J5^D~cm-kpRC7cNL#Z5PRM){SxS zlYe2s(ki(^AYyZ^vKQlla|h2IIC+wl@9z8i`xkDg|M#QQcx~US!*V7k9)5ax*_|zb z@qkN7pM0nV*qd*h61H$RD0{Uh1<$*a_9sJ}VG@U1)OE&ttPGWPB?1DQRV2KcE1w*@ zpV0aHqNBqv{-UNw^9oC(3T|wD2yd@O1TaS?83{ F1OR+CxQGA% literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc163.png b/src/main/resources/xpbar/xpbar_inc163.png new file mode 100644 index 0000000000000000000000000000000000000000..64db26de93bd2ba4037ca63ee42727a75789a412 GIT binary patch literal 462 zcmV;<0WtoGP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FLV@tg2EG| z16%;WGQX3P6VayZ+qVy{c2plC*oI=bfLuS&aR>{yJtq#qGdU|O3j+ryC&SYxPv8M8 zEhEG5B<(&!1GV!V3U)4t54kPA+ihe*gXrh5hr#Pn>CWR3G-BK@OKspFT2x z3IHaebNr~n(GVC7fngT{qg?Z_d(sz&(6!(my(}2USRX6IP(GVai1VGb(075h4$G(a$J^%m!07*qoM6N<$ Ef(k;hWB>pF literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc164.png b/src/main/resources/xpbar/xpbar_inc164.png new file mode 100644 index 0000000000000000000000000000000000000000..66ab4cccceef4c5b2a9e7c82e1229430c92a84f6 GIT binary patch literal 467 zcmV;^0WAKBP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F2n)MCCk}x#Ix8y+0|zH3!_y~E z-~lWxBg63H`*()lzyIJ&tE2j`2Mv0-fC>S40RTz>hK7bj7XatapJ%vn;|7Cu004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FCHvG7LYye`omp`wz~vI;szQ(4dD4s1Se`0H6e5XlO`u0dW5Od4?M|ZZK$QXpHJZ z3bmmYE+D55rZ@zJAE*#mvwhO6qI3MH!qE^I4S``70;63398o$HoATr~<43yykVG)jx(@Iz0Lb&BgMgSN!B85^ zBRBpAW89Ap0utZQpk$B}WDDcyG$8STJ*sjv1cp-xfTjTffIQ>Ji{08~00000NkvXX Hu0mjfKv%I! literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc166.png b/src/main/resources/xpbar/xpbar_inc166.png new file mode 100644 index 0000000000000000000000000000000000000000..1602ee1ca172dd438d057da188c2c7b332ba4523 GIT binary patch literal 468 zcmV;_0W1EAP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FS40RTz>hK7bj7XatapJ%vn;|7CVpIoa=3i@ z^pOEn05B1q<3|;ahQMeD47(5*?E>J4(xKRtC$||t+690lf|1sBfOi2vo*x|q#4HJh z(qJCB@i$oGesmC!xW)!0gPb567)Pf8i3{jaRihy=+(G~}4F~`qNaM#sK<`li0000< KMNUMnLSTXk9ko*c literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc167.png b/src/main/resources/xpbar/xpbar_inc167.png new file mode 100644 index 0000000000000000000000000000000000000000..c48aae936969d96553d7b4256b1c7712504c5ae3 GIT binary patch literal 468 zcmV;_0W1EAP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FEApkD`KncLm(2(c?;QaaX3^#7vV9?Oe7}bXq zYC|ntKu#ZwaR>@WP$97A#3694|NZ+n22M^ca7csLKY#qhnO503*iqDu>VpIoa=3i@ z^pOEn05B1q<3|;ahQMeD47(5*?E>J4(xKRtC$||t+690lf|1sBfOi2vo*x|q#4HJh z(qJCB@i&;`esmC!aD#)AK~9kAjHA004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F~X(t*XBDQH@S40RTz>hK7bj7XatapJ%vn;|7C?mqS^+AFPIb1${`Uq}S zF%g~PM-`5Sz-R~zyAT-d0^o?!q1cosw;4a$1%M=ik=Av9cL6}29~}h5ED46vU>>>g zH`wETbPy1Kql1z`PLRorqtk%Hu2nbcq0tZ^Dg;2&fB+sH-N%IVtnvT=002ovPDHLk FV1f)}uPOil literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc169.png b/src/main/resources/xpbar/xpbar_inc169.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d1363d35fb5896629adcd66d59922908de03e6 GIT binary patch literal 456 zcmV;(0XP1MP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp=Qq7Z-7;kI=P4$2th2s9-A!l~k-nE!4Vr`gd(|+ca+ z!)C82qFN3wf4|#%`|yL&5PmPH$;3s5*pFuuXT4l?>dl7pZj!?9H8JMGe?kGcU4Fwb zQu8%UGqQ!>9h;0?c=z8L!y8W)0p4e;-6r4j=yWmPNL0lcs6#i&2w}3vd0KW5_&N1Sa#TBZL}~_Phff{bORT7E48n+rsaP zD$ZrM+Y$>vF7=IvAqarL&k;ZikPuQCOZlv2JX(Nj68u~15VZh&cnkrbl|ZIpUe@@@ y5PJ*(lM9behMc^rf@i>=tLktd5J*LUp8+qap4!LTH~WeJ0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp-@aiSRa4;Iq>Wu~+U6;=1OJuHQGHJ>wMT_}7uz?@ZD;E}lKma%a48w>m z0Jd$D<2a=2I{cofN#nvxmk>i1*70=WR{*YipwsabnXB1cmXyl-@7ebG9)342yWN&p z08+6}JPbhq1pbZyT7Za#(^twYcP@a8cD3@d@8Vcxg#lN5Ul^TIj$ r%aD`5rr|f>-&J+k5D3H~z`p^na&^+j_#~T000000NkvXXu0mjf`pmc7 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc171.png b/src/main/resources/xpbar/xpbar_inc171.png new file mode 100644 index 0000000000000000000000000000000000000000..d267a7493f9ea00a5652e146f329d68ed1819837 GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpLwjJ>L7@sf>jhMsaTa-s5+(ook}k$cVBWpmz?JNJ{7BFpYVVH2>ca+ z!)C8(s!|Fzf3MU1c=7$=0Df<%N#Y_Y_O(Xc{WM9}%T*hGQEJSEzXk$u-~6U&Cgy8d zR%i>q2R4aZc=l3aIGx$<(evnhzQpEgE|;Z(QnZ-QLz`x+Meuv&!Xgj~04IQ97>NbI zwrz48hjd+s-xD=yTzKjdV#xDkaUD&@uIC--bUel8YQB&srHa8g+djX;@5W`f+Y$>v zCh?AkAqap#>Ik3&hzY60qx`qWc$5IQB>1<|AuIuS@n`}@l|WK6@7wrEianZn(H#Ay q$;p4ya1EHcQymrr0*MIlHQ*IRP146@B)7f*0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qi;$!TWd2Cd2l6Ml z0DxtFCnqPO!*<`keQ>p-`Vhf36vGAN`k@ksAh#Yod+g5d-+yqXRaRCO1`bY6hNn-S zz|~00$T0l){+(e|A0k{pg&e#903`rJLqnnqfb-|iGu*gwgF!<>V^kkfs13Dn0Xcmr z#UZGG-MoLtou5B`;!LaT9PA97oLpe}@87?nut)Vl!sXMakKk4g6VW+-RN-g{jE2Cl z3xUxt0FEdficNWPoAIMv07xPjX(Lq4Wl3*we=8+qJLoMz{2LVyjDJ6rI sAd?tJrvZmut8Uaoqai?42!N&m0Z;YP$F^7iM*si-07*qoM6N<$g3Um#_y7O^ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc173.png b/src/main/resources/xpbar/xpbar_inc173.png new file mode 100644 index 0000000000000000000000000000000000000000..6b15b37136a80a22ad660a503c70ba3c2cdbe8f1 GIT binary patch literal 453 zcmV;$0XqJPP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qix90IX6{JP2l6Yp z0DxtFCnqOj!>|bK(%rOwG#5!ob1F$?){a6L`c( z%g8YN`2L;Y_wPSA)A&f!2P)*?1pp`k7#bQ9T>zXvf1csSjT;Oa8XBYekV0*!g$u~( zLn#hH?gbUHYqoF1SpcweurqLSa)D#z`}c1s?4Lh=;!NWsN#CbW9~nRe029$UepKOT z2#kinunU3FE&z@w9g0nPa+~p^T>wZT7_nUdkmpAS0WnL0p){CBZu||!xE~z^M5I+p v1}j0PFpf?G4!c&}sE0;FfT$1vO#=b|VNJ=$-$Q6P00000NkvXXu0mjf?)$Gf literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc174.png b/src/main/resources/xpbar/xpbar_inc174.png new file mode 100644 index 0000000000000000000000000000000000000000..d6537f8f48820efbf9b38cf3119f8b9bcb840cbb GIT binary patch literal 454 zcmV;%0XhDOP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qix8z2*}RdU59D8P z0RYSVPEJn5geh3fzJ2@PYDe`Uf^8^<3&{0DDGp&_yywIrtQnh?m4$(Wlat};lPBdr@M!NtwqI4)W<;iWvk9GkdiD1Nb0YIJ~9R$QI35L>O9=Y*1RO5bh5D=1H wDH*H;>1Q0B1{`*+x={~}h5%6^0Gb8_0Pwof$A{vD$^ZZW07*qoM6N<$g6Si%X8-^I literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc175.png b/src/main/resources/xpbar/xpbar_inc175.png new file mode 100644 index 0000000000000000000000000000000000000000..d96af3fa92015f812725ab8b21bf7635926419a7 GIT binary patch literal 453 zcmV;$0XqJPP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FKGB+zL3j+ryC&SYxPv8+F zEhEG5AE=On7XY9HU}$JabOCVw{CS2OH*PR!XlRV;LkhK_7A_#C z55+hHg)^uSShIa2MghRi!OpPgePjR?08B*Z_)&$U zAut*O!!86yy8t+%bSO6E$!*4ub^#!XV8nI-hVnoVF-7uF8kD2=VC+zi`_Vx_25>W; v+(Az8AmHdUATdSAsG89b7=9rDng#>_kH*r+lTsW$00000NkvXXu0mjf?L4hb literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc176.png b/src/main/resources/xpbar/xpbar_inc176.png new file mode 100644 index 0000000000000000000000000000000000000000..8f977c4bc9e68a7be6fc9105cfdf4d4f14c0c866 GIT binary patch literal 447 zcmV;w0YLtVP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FT$nr*XBF;67IW~Z&ZZDMewS@rhg>p1Nj?V z0KhW8lamwCg}}aj``~Iv^&x_7D25Bj^+PcZVPU=J#37Un&dSQdz`@DM@bt+Oc*ID{ z$T0l){+;3X?>{)x_(;89)U96VW+-RN-g{ zjE2Cl3xUxt0FEdficNWPoAIMv07xPjv0Z?nJ`hBxSRP7)a`YaI9qMsEItWPqASZYb paC91wQ1LM;KNfB-Ji(#Oa7k|+QG002ovPDHLkV1iwPug(Af literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc177.png b/src/main/resources/xpbar/xpbar_inc177.png new file mode 100644 index 0000000000000000000000000000000000000000..b893155bb59e7485173ced79664e7e96a01d3dc0 GIT binary patch literal 445 zcmV;u0Yd(XP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FISliQ3R?E*j&!HDew42OXrd`0t68kD2=VC-;+`_Vx_@&-A004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FAISgU z0sxlzot&JAE(G@N+Xq)Wst*xtLor-Ht{=*A2n+K)Ck}x#Ix8y+0|zH3!_y~E;1MG& zBg63H`*()lzyIJ&<0DNUsE~sf0H6e5XlO`u0dW5Od4?M|ZZK$QXpHJZ3bmmYE+D55 z^*98DIj9g=vwb7D0AS}}XW-=I0>{et@83|^KY#qhnZ`$wzE7V%GJpyICZcovsKU_@ z7!8487XqVQ031;|6r1woHseRT0FXp5V!Hq!&yNlQVwMC$X)ur6_!};9KRO6VTH^%N t{0He^9GwOvE#O8~kA}c-2?5YFAOLLJ(#L+26bb+U002ovPDHLkV1lBOsd)eZ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc179.png b/src/main/resources/xpbar/xpbar_inc179.png new file mode 100644 index 0000000000000000000000000000000000000000..22a866de9b62e861cdcc4cbde33dd16b91a824dc GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F|dJtq#`VP$1u;NawBc>3fCJYu9} zWEg&Y|IYCH_aB^Te5C0E6>{(b0F(d>4GoDd0M4I3&v4_$4F(MjjZu9_p*GaQ1?2SM z5Qm^}2NeQqwr{+{&cV*W$;kzdmG9rbp|F4c_=z)(k0gDcK7C{W6#z^`=lD^DqaiRF z0>dr@M!NtwqI4)W<;iWvk9GkdiD1Nb0fy5+5Vrh0lm_MKJs3Nj;(l}xkoX1)sQC|4 q%{V#@NPM7;svHf0;S>U(X+QuA=hDX>=bbwM0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FLBm9~nRe029$UepKOT z2#kinunU3FE&z@w9g0nPa+~p^T>wZT7_nUdkmpAS0WnL0p){CBZu||mxE~z^B(9MH uYW{;%GLB9I5*J{jszyU#xP<^{8V~@g004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F@L|}uZy#Lks6Irn4aIN)xqi6BAuRk)UORv1>60h$h>@0&VfgX=JHzka ze{iO8R#p}U4o*&nk)jV&$iWK$Py#SCG$gtJIDh^;!;Kp^7&J6AM)e_u+E5D@kkf}# z9D>3hR0!-jaR^-NfB*iCfs>O9977=X&mTW=rg3%-b`-V4S>LBm9~nRe029$UepKOT z2#kinunU3FE&z@w9g0nPa+~p^T>wZT7_nUdkmpAS0WnL0p){CBZu||$xE~z^B-~H| uHUB}X7)Pf82?y4wiqQ}ljv)Y=1_S^}DALDEFGocH00001zv literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc182.png b/src/main/resources/xpbar/xpbar_inc182.png new file mode 100644 index 0000000000000000000000000000000000000000..26f77178f2213d89ea6a1eed575ed66285c8b6b1 GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3fCT+MLS2P)*?1pp`k7#bQ9T>zXvf1csSjT;Oa8XBYekV0*!g$u~(!z~U$ zaR4d=_MA9$=ll0>44j-?;1~k2fByK1GmW!zu%oCQ&iX!m`Uq|vF%g~PM-`5Sz-R~z zyAT-d0^o?!q1cosw;4a$1%M=i5!(d-d46;d5VIs0N`rai#@}#_`_Vx_{EZb*^B<&w qadaAR*tP0LJv15uM1=ro8V~^a$jrw+T6g#W0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpBV4*q)m!@kIxcvS}$mNtINkH$k65x*sFo8-D z2+mhU5$$GL{L}H|>)>aLIs1K}CKDIR+AlXN?{qkhy8WK_ZE{z^51FJ5AS-^$vPyHZ zZ9BJRzZW(cx!~!kX_)DNO#tH?42KYfA>3~F!W>uCIy8iU{ce}rQ1-(nmp1@R0Mj%} zHvq?Rz;#_P41@jNsL93!k4{lT)B&5oYPx-^*Ca+Vc{ycwoWtAO9-+ l3`lOO004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp^@RA@tE{Qv(y1D7E0e}+*o8UmvsFrq@>+xyRq zjGO{I;LM*An@F#|#QpB&8O%zEPz)E4>xXk3uG_Wwj{(b0F(d>4GoDd0M4I3&v4_$4F(MjjZu9_p*GaQ1?2SM9EYF+dC!SM;189)U96VW+-RN-g{jE2Cl3xUxt0FEdf zicNWPoAIMv07xPjv0Z?XFc364$cb6ffd(r_LfjAc!8~&P2a0>f(P_Y8*Qy)!&}aw{ d6#}4XKmfK)!N=T=i*^72002ovPDHLkV1hlXs|)}D literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc185.png b/src/main/resources/xpbar/xpbar_inc185.png new file mode 100644 index 0000000000000000000000000000000000000000..3c54e76622c4b1719318ae3cc924ea5243dfcda7 GIT binary patch literal 436 zcmV;l0ZaagP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F#|#QpB&8O%zEPz)E4>xX+Bp1gMc&X4ck8Gir%gENh@va&F6aB?y{eewjZMp{OO zVYuo86>{(b0F(d>4GoDd0M4I3&v4_$4F(MjjZu9_p*GaQ1?2SM9ETwPfePh4Cl1~D z{{0)n&mTW=rg3%-b_PyPF0edEEi!w!>HGBQBLk=aU?Mulk18Aufzc2cb|Em@1;7!d zL$N7OZZm$g3jj$3Ben}L5(a`s2RSiII?!O{NQnF4KA1{@lB9vTe+ eqCx;P4F~{004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qi;$!TWd2an2XZgC z0DxtFCnqPO!)V{WeQ>p-`Vhf36vGAN`r#gjAU_^Fd+g5d-+yqXaaL9q1`bY6hNn-S zz|~00$T0l){+(es>H`&4@B#po01OQci7o)npFhuVOM-`5Sz-R~zyAT-d z0^o?!q1cosw;4a$1%M=i5!(d-d46;d5VIs0N`rai#@|SZ`_Vx_)btH%{)0pqN2dXY lU8`=?L!%);R0x2k0RfZE!N=tEoI(Hq002ovPDHLkV1l)duKWN1 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc187.png b/src/main/resources/xpbar/xpbar_inc187.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4a5ade45f4a17dd402a123d16fffbe17e4ff79 GIT binary patch literal 459 zcmV;+0W|)JP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F3+Qix90IX6{hZ2XZsG z0DxtFCnqOj!-rwtzI|}DqxulRHWb4JzXvf1csSjT;Oa8XBYekV0*!g$u~( zBOwk!{sa}yYqoF1SpcweurqLSa)D#>`}c1s?4Lh=;>;UEQQxOe9~nRe029$UepKOT z2#kinunU3FE&z@w9g0nPa+~p^T>wZT7^+QqklV@Ws=&JdAOl7R0WnL0p){CBZv2g; zxE~z^M5J+0<_GZ@N2dXYU8`=?L!%);R0x2k0Rf#uxX1AnAUps7002ovPDHLkV1lZj BvyA`% literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc188.png b/src/main/resources/xpbar/xpbar_inc188.png new file mode 100644 index 0000000000000000000000000000000000000000..5238e8f8728bdab042d519e132e4e39b24569a18 GIT binary patch literal 461 zcmV;;0W$uHP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fq@9*XBFKB=mPL->3+Qix8z2*}S2o59Dre z0RYSVPEJn5gbi5DzJ2@PYDe`Uf^8^<3&`~&Ar4`2v**MitQnh?m4$(Wlat};lPB;9 zm6nlV`0@Qa!|&gJaORDnst;6H!3zLT0x&c*B)R}NfBrnfjT<)@G&D3u^&y4YPzx83 z(??1ig5m~L2&~z@5o-a!&cV*W$;kzd&F|m8p|F4c_=z)b3`KpPK7C{W6#z^`=lD^D zqaiRF0>dr@M!NtwqI4)W<;iWvk9GkdiD0NUg?*0)Pw{9R$QI35L>O9=Y*1 z(&Bz}5D=2iL75*!GmcIJ4!c&}sE0;FfT$1vO#=b|G@-%AiCkbH00000NkvXXu0mjf Dxk<6H literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc189.png b/src/main/resources/xpbar/xpbar_inc189.png new file mode 100644 index 0000000000000000000000000000000000000000..15e18f8b453d29639e96d1b35f9db8dc740f35b0 GIT binary patch literal 459 zcmV;+0W|)JP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FKGB+zL3j+ryC&SYxPv8+M zEhEG5Z`7XY9HU}$JabOCVw{CS2OH*PR!XlRV;LkhK_7A_#C zkEA#R#Sf?uShIa2MghRi!OpePjR?08B*Z_)&$U zAut*O!!86yy8t+%bSO6E$!*4ub^#!XV5m0bL2f6fs{-!=fD9NN1jH-}hSFdjx$!p= z<9>7ykOAEM2gN<(=rrK4Yt@Zz!N9 Bue|^O literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc190.png b/src/main/resources/xpbar/xpbar_inc190.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b3f246945133d503aac994c535a309ec88068f GIT binary patch literal 456 zcmV;(0XP1MP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{*6#!%G89)U96VW+-RN-g{ zjE2Cl3xUxt0FEdficNWPoAIMv07xPjs!e&2+sWywz`Fn-14ah{F-wA>G?+(j{EgJO y9~}gIqXLS1#?fiOVb`h~_0VVt5ETNTX+QvSs=>$LqwF030000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F) z6i=W+V9oZ8@B)CHgPnnslM5W1-@kuDVgLN`6KCESiuyi%`p5t(0GNo*@uLbyLtr!n zhFu7Zb^&li=}>ISliQ3R?E*j&!BB0=gWOI|R|Vb$02wek2#8q{45h(5a^r6#$NlIa tAaD?HbQ*BjwdzJaG#Ua#g#c(85C9Rj!N-YYSD63+002ovPDHLkV1lYot?U2* literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc192.png b/src/main/resources/xpbar/xpbar_inc192.png new file mode 100644 index 0000000000000000000000000000000000000000..4199cdca8d6168f7392f6a1596351ddf27e05406 GIT binary patch literal 440 zcmV;p0Z0CcP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F2beq*XBFe68^iFZ&ZZDMX<`@%P2!hAIKlz z0sxlzot&JAE(G@N+Xq)Wst*xtLor-Ht{;hU2#c#dCk}x#Ix8y+0|zH3!_y~E;1Mb< zBg63H`*()lzyILO8$(qesIY<;0H6e5XlO`u0dW5Od4?M|ZZK$QXpHJZ3bmmYE+D6m z)Hnpi6{rwcvwb7D0AS}}XW-=I0>|d}@83|^KY#qhnKy=_zE7V%GJpyICZcovsKU_@ z7!8487XqVQ031;|6r1woHseRT03*B$FwzHta24xAX)ur6LEMoZ_alA~aC91Q*tP0L iJv15uM1=ro8V~@mv%$wkomoc!0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FA~#zi;0@ID1qdBG`svxPV+gQsWR7Uwcj*y2HxK!ob1F$?){a6L^G5 z%g8YN`2L;Y_wPSA^Ttrs2P&-K1pp`k7#bQ9T>zXvf1csSjT;Oa8XBYekV0*!g$u~( zBRLL1@dYXb)@O99Gl<2e?wva{P7cK-WZDdK7IPg04e~Oh|ck&3P(d= zGz5lS2#j_Ca75`)Y|4|{j34a+FffehF2LwO5cX1FC=KS3JBT|P_al4|aC91Q*tP0L iJv15uM1=ro8V~?azrn{i>T&S^0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FVz_`@Ka%4R7H0>~9=pTA$;t5a$rE^lO3TPF z{P_Nz;rH)9IP(T8D+|L=)CVf8-~|9E0T>z@5?uhCKYyO##*G^c8X6j-`jA3xsD%s2 z=_5T3L2(8u1UB#Aafg$W3mlu@zkg#uX8-*06KCFF=U_)sI~4SN`t*?jQ~)p$o#RIp zj)uT!2n@Rr80`Y!h|;0hlqa_tKiUO=bZ19w7Xak>(Lq4Wl3*we=8+qJqj3+3_Ype? qI64hD>{@lB9vTe+qCx;P4F~}4yurse%3l2d0000 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc195.png b/src/main/resources/xpbar/xpbar_inc195.png new file mode 100644 index 0000000000000000000000000000000000000000..2d870bbe750b9b939f048d19bbc0fbd48679222f GIT binary patch literal 445 zcmV;u0Yd(XP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpyqbrWSS=Y-l*xug|`k3iC8x-0@L{{{OkMvg@h=E%JTc|dW+4Cd?Ei~ ztApR^bR;eS8Rd+JAqap#;s~Gxh>=vsqx`?ec(ec{TiR5%02l;)uL3#^^Zp&;Li>~t n0dWnOxKkYh0s$ogd=2;njR3*NWbYjX00000NkvXXu0mjfY{aln literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc196.png b/src/main/resources/xpbar/xpbar_inc196.png new file mode 100644 index 0000000000000000000000000000000000000000..c1641144c4981cacfc40559d8a003b0234b9bbaa GIT binary patch literal 445 zcmV;u0Yd(XP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp=Qq7dMd(PHtU0IO-sXqJmWvDwon~(L!~L{WFDd2f6Rh9hXG&eV85rVuoh*4}x7l{;&4!$RGgR{9xMTqcli#we z)Un#O9ofR~iA_Z=ynAR!6lxb10p`+bx9Q?}bi3UXbE8nmlP(0USF6ZI1wSrUQ32os zV47y?0^m3fxvoowVZiT&nrd8l>(DR|khS9?Fk8%*o_8i8N^+g&*UL3AH;Q^OW~+kV z@pzD3PA+xE!w>{O;O_|F3XmYFimm*wZ9J|3!6C@(6@Y`sBj9@_Q0X!6SN))UT=&d9 n0^%F+@47k!1OllD@HgNCjlR3bGPRw#00000NkvXXu0mjf*cG&v literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc197.png b/src/main/resources/xpbar/xpbar_inc197.png new file mode 100644 index 0000000000000000000000000000000000000000..7c60ee3e9ee37d1f695dc83c132d00c1c24ee0d1 GIT binary patch literal 442 zcmV;r0Y(0aP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpQ#B<=D@Av%NbFUIb5ozsaM0h{|1WHA~ zKV1|>v>I{qPe$Xy#ZTum)F9@iEdz^nO9)68A3 zWm!oq^4{2Foy)EKzf8L)d;}l;}9_I1Tr1w{i+|dPwQT)LqJ>u k{@tz)1%W^=0(=el0BK#g$D{07*qoM6N<$f}{AW8vp004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp=Qq7dMd(PHtU0IO-sXqC%@ER8p`ideAy~?cb@;1TNp7gj}ixK|rNiB_KQ?00NmJ z;O$SECaUGI`1{>n;@}6PA^g5jQ;7?-|DN`&VZGT{CM}BHX4_H4k7ElPz@zvr%ZeSZ zZQGG8{GQlUO*JljbZGdV_N*Z{^4Ve@P5{2|(dB%R)<&UNAR$WOceZ_f|5v}` z@j%=Fa)d%5004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp1=mGI4?S$!X6Tw!0no+oITQwtZRrIJU3>Jd58n&CKyy zmKE8;?}bf9F1&hZn5^M)WxE&Or`zqGS{s#0nW{q2+Vdito~F^S`*E|18UQDNVHlYk zfNk64I1cH$4!;;R*|_l1q2YVlvxYplna>t;*Z0qKy70fjlR$6z6`%K!iX07*qoM6N<$g1Y~=7ytkO literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc200.png b/src/main/resources/xpbar/xpbar_inc200.png new file mode 100644 index 0000000000000000000000000000000000000000..947baef50638b4e95ba698dafeb4a44bd68b37ef GIT binary patch literal 451 zcmV;!0X+VRP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FV^kkfs13Dn z0Xcm%4pEamavXvR^v(Ns-1+(AC(gXV&cV*W$;kzl|Ni|O3VX2X`}FA}xYfZ#bdDcY zI2r<@Au#MhV6+Q>BT9#2Q=Z&r{Ad>dH4z}k{fOuSfIK-m2#8q{45h(5a^r6_?y=VZ tBW4hAbQ*BjwdzJaG#Ua#g#c(85CD(iu*dFSlN|s6002ovPDHLkV1oQ9v~vIe literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc201.png b/src/main/resources/xpbar/xpbar_inc201.png new file mode 100644 index 0000000000000000000000000000000000000000..39648ef1419fb3eea6609ab49ec65f46a96dffeb GIT binary patch literal 458 zcmV;*0X6=KP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{Y*v#?nraM#`}V=rj_N}M+fWP_kn2a|5PKZLME9IHgfmmKva&F6aB?y{ zeewiuh_s9h!;kOZ8Gir%gELPJv_4Rw11|tT3Bb_Mkmv&7{Q2_?H*VZu(9qBr)rS;n zLoHlDP9Kd!)MSqwhaeeHp}uDOMw|rzI|n-hCnp!!kni8Wp|F4c_=z)54WzzLpFT2x z3IHaebNr~n(GVC7fngT{qg?q(O A>i_@% literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc202.png b/src/main/resources/xpbar/xpbar_inc202.png new file mode 100644 index 0000000000000000000000000000000000000000..7b1160ccd8beff5c2850a6121d45fcbe92df3b47 GIT binary patch literal 460 zcmV;-0W004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F{Ym<;mnkzx4p{X4_&-+yrCse#r9DsICB09&9DjW@g(GVDRAu!qnz!9ZGu_;e(Gk&xSfSL%<<9^t80YKg#9R$QI35L>O z9=Y*18u!?1fDtnYI64hD>{@lB9vTe+qCx;P4F~`*wXnyM<(t(20000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F`{G)U>l0z0&@Lm9O92dSiJ5zaR?)Gv$C=y{`iSAPYtBLPoF+A zfC>O6qI3MH!qE^I4S``70;63398o$HoATr~<43yysEGhu+z;z6!012_@dH7`Q~{%d zfVe|xD1{CB!1%Bn1RR|PBqmFbsu>M|;THm+X+QwavarVkq*nd_0000 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc204.png b/src/main/resources/xpbar/xpbar_inc204.png new file mode 100644 index 0000000000000000000000000000000000000000..9e435277b06185592cbcdfe5433a82dba6a90ebd GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;OOb%7?R0o4Jq=bcqrQ|%jN+xrcD7UtU z$G^Yl*S7UU`fcx@F-y{`1hx>P1-!qAR{BA=anj-Ivy8@L-U>M`_b$aeWw7R~;+IF{jxOM~{i_FVCV5`~T}jS5az54=!Ncqbs` zmDrq{P;-Nqsn3sD=+wEzpMW7`gTe~DWM4fkLs;0 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc205.png b/src/main/resources/xpbar/xpbar_inc205.png new file mode 100644 index 0000000000000000000000000000000000000000..daf861298bbc025cbe1e892deac27a3be8315103 GIT binary patch literal 457 zcmV;)0XF`LP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fkzx4p{X4_&-+yrCse#r9Dy-lI04M<%8X6K^0GvO6p5exg8w?s68l(DuX4pa!N*}f580I+kgGjMWpferco{TmAV=Z~K_^VC4<`}FA}1E>IC zB09&9DjW@g(GVDRAu!qnz!9ZGu_;e(Gk&xSfSL&K#r?4C0*np>kvzz+u;_8}-m=2oMzlplLt=4a%^`eTTO300000NkvXXu0mjfBzLcI literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc206.png b/src/main/resources/xpbar/xpbar_inc206.png new file mode 100644 index 0000000000000000000000000000000000000000..b892e3f2bc4c60fe762c867bd5140781c8562f34 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;Ogn(7?RpRFw| z1!Fnh+}_T=t}H}e=|)@9j)oX}srDns6?OW)&#_=R_hQW&9UhrEb9nsc+cZim=_()o z@c4Im+x`9jADjthUdtcy;s7^80F!}XB}`0A+`cNd-U{FrpK#gz zv4H7K;V$P1HY)@oHrFceU`TkLkpAGw6DH|Te}9{cd^<01U-)cg5~t&0Q>QcQ^FSR24%1Iq~LjX(*9(KGnfhrbp1}e&dN|(Um_r|Sw+D_pk=j{gx4>( z$8yy=LS2UwjX5l=crD&Ul`fW(;$>Xq#9+e9!La7|hU06}mu~@vGJ~h9pUXO@geCy9 CQL0w} literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc207.png b/src/main/resources/xpbar/xpbar_inc207.png new file mode 100644 index 0000000000000000000000000000000000000000..df1a32f6f0b66addec822eddb5d7dba6baa8148d GIT binary patch literal 457 zcmV;)0XF`LP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FzEKep7r_uGl(_~% zAIMGM0sxlzot&Hqxf3qGZ{I#RdsH7H*oI=bfLuQshor?JES~qAICO`Vm4$(Wlat}; zlP7RPq-A6netiGV@cZ{4oOx=X^??cB<(&!1%< literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc208.png b/src/main/resources/xpbar/xpbar_inc208.png new file mode 100644 index 0000000000000000000000000000000000000000..e073409e35ce738a311162485da65a77e391dded GIT binary patch literal 464 zcmV;>0WbcEP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FHE`lOPOvV}r zeIR#%3jkQ=cXDzf#;ssA`}XaFs~y#c2)3aZE+E&B#v$o(2#f23XOG?C;N)a@`s4}R z5NR11h9BR*GyMMj2WOsQWo2O)NPVC}2VMYx5`dwhA<+fE`Sa%)Zrr%RprN5Lst+mD zhFZ9QoIV>TVUYU!!()2ELN zpaOu2=o~+)a5Mx)Ltxm2z-Si$N0bi5raZaL_|Yx^Y9b&u?uShm0ObAAK|susfY^Z` zbe%&<-)P)puK|dS!y!KiI64hD>{@lB9vTe+qCx;P4F~}0(6Gm!FVL+300000WbcEP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F>TVUYU!!()2ELN zpaOu2=o~+)a5Mx)Ltxm2z-Si$N0bi5raZaL_|Yx^Y9b&d?uSJe0ObAAK|susfRuqC zWZgqa-)P)puK`Gj!y!EgI64hD>{@lB9vTe+qCx;P4F~{<6tKsuTbJel0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fb$Cnv+xCr{vN=&27>=)emAPy#SCG$gtJIDh^;!;Kp^7&J6AM)e_u+E5D@ zkkd!w5H;D88iyeDph95Ji9>h3fB(k7$;kya5XAoZ<0sBM#m>QwqL!ZeK7INKZmlp8 zo#RIpj)uT!2n@Rr80`Y!h|;0hlqa_tKiUOAO$4OI{gCehfV@9C2#8q{kU9_qGhry{ z8;yJHH2|q`IAjL_N2dXYU8`=?L!%);R0x2k0Rh?Js>fUWldk{(002ovPDHLkV1glt BujBv# literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc211.png b/src/main/resources/xpbar/xpbar_inc211.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1a76bb87a8b0d7604e41d84a9114923f3ada40 GIT binary patch literal 451 zcmV;!0X+VRP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpFIV1Pd)K(&h{KhlSv? z1Pgl`8?lH_NSh+17J?`$7)2qn0i%L}cn0NkuHHHJW_E|WJuL_VDpX1VVSxcK@K+4% z*E>xUg|ml-?`e3|olSsuYBZa4@O?U+&apj}%VjAq1kGo&DCUzmHl4@- zxByJkOl$y-wAl^x4fb=aK tv`2O9S#Hr5;4HvfEQhlr^kOm!kYj9002ovPDHLkV1m_~u;2gy literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc212.png b/src/main/resources/xpbar/xpbar_inc212.png new file mode 100644 index 0000000000000000000000000000000000000000..df4bb0fa7598db18357427592ae7202d8673a449 GIT binary patch literal 448 zcmV;x0YCnUP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fk{``4{8#it+XlQ7R>O%^(p%yM6r;o-VYO<#! z4nY;bo)d?_Er9RezcKv$@e^mBV&`CI;N;{2%Y)P+vuUmG)2ELNpaOu2=o~+)a5Mx) zLtxm2z-Si$N0bi5raZaL_|Yx^Y9gRC?uT3#V00je`U62jWl(iA?x`R5^d8J3*FKQX q8Aqo9hh3{~)I*~oKvW2TrU3zFv7g6i*j_{c0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fe%g8X$OCPAvffoRv1Yl@rNOS>k{``4{8#it+XlQ7R>O%^(p%yM6r;o-VYO<#! z4nZb?DuF#G4&C|w{Tsv2A3t&CDRvHa22M^cusldDGMm==K7IPg04e~Oh|ck&3P(d= zGz5lS2#j_Ca75`)Y|4|{j34a+pe6!p#Ql)!0*np>QGXz4s0^x(#y$1pp5B9b004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fo3 zI5`=fK6wIHBP}Dt@Z4GoDd0M4I3&v4_$4F(MjjZu9_p*GaQ z1?2S6I7ChM)QCe+MX-7Qjypep{KT23*g4o4I61k%^54IILt)ce-=|L>!L0`-qI3MH z!qE^I4S``70;63398o$HoATr~<43yysEL3YaX+NG03gSX4gzA91e6X0ky>30gngrN yk3E(sjf){O2sk004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FO6qI3MH!qE^I4S``70;63398o$HoATr~<43yysEL3YaX+NG03gSX4gzA91k@M^ zBBjb02>V9k9(xQ?BQA!-AmHdUASqdNRPAU844)7HO#=b|J>!004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FjP~ibD06+=A(9n?R0^t1l^9(m`++fhq&=}Q+ z6ly~)TtH4AjYHIAPpvovnFA^W)@004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FI1pqAbJ2^QKawlAV-@bit_NYEYunom<0l9uO4rvpIu=KF!#378#&C1Hcz`@DM z@bt+OxaHC^G7LYye`omp`wz~%NG*M!!UJ9afD(YAp&`))!1?p%8E)LT!Jwg`F{%$K z)P`EPfSf)Whp5S(nsEp+3seZK*}f5@0AS}}XW-=I0$cw5`!^K!&mTW==0$4g`}FA} z1E>ICB09&9DjW@g(GVDRAu!qnz!9ZGu_;e(Gk&xSfSL%X8TUh?3otqmMEijtVyX^m z4m=TS-)P*^KJEwgAmHdUATe2GRLy7z48ITnO#=b|gaV((Wn!cj00000NkvXXu0mjf D#|XAP literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc218.png b/src/main/resources/xpbar/xpbar_inc218.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6ad5452bb14c8597c2aa798b80aede36fca14f GIT binary patch literal 459 zcmV;+0W|)JP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FVw(? zPsG?a8u#>x`$0PhI64hTD4UGRkA}eT3<1zIAOIr{pU2}_++hF!002ovPDHLkV1mZ* Bx1#_6 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc219.png b/src/main/resources/xpbar/xpbar_inc219.png new file mode 100644 index 0000000000000000000000000000000000000000..60fca4869a6044875f04f1ce87ce62330fc7e9db GIT binary patch literal 457 zcmV;)0XF`LP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F=)C3{Rgt zfm<#uBg63H`*()lzyILOi`3EwDs89)U9 z6VW+-RN-g{jE2Cl3xUxt0FEdficNWPoAIMv0MtZ4i?|=uU4YSnAo>ji;j2PuG4Mpl zzR|d+U)&GMLBP>zz+u;_8}-m=2oMzlplLt=!V90rM$H)E00000NkvXXu0mjf9Tc;? literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc220.png b/src/main/resources/xpbar/xpbar_inc220.png new file mode 100644 index 0000000000000000000000000000000000000000..8c506620f6f12dbd70a8a914b0d008338468617f GIT binary patch literal 464 zcmV;>0WbcEP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 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 IM6N<$f_vGui2wiq literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc230.png b/src/main/resources/xpbar/xpbar_inc230.png new file mode 100644 index 0000000000000000000000000000000000000000..79087987b4e86a4e3ec9db522f27eeda0d860374 GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326;N|J!7?R9SjYrb?WNs zNpDzI-`t)rAMrD9A{bdeax-d_;eM4GKSeO_apPygba{qY;WOa3w z4}W<4yS(lG{{Iio9Dec3p_O3|1A{7qv$OLe?uO6L&l}&_QP}M0?3^4TAGCsZYXPHW ztqEV?M;l>zxz-|M@7KF6Vab`^(GjYypf1 zTuS=nLoL9*eB+d`g}Xu7t34@r-kr2R8R874f;=U6F7M@L`1J3Ef|kg}ty5Q5 zclvhl>G!v{+0*-9IkVgj;1Qqj+Wm1s!BIsW*|(O39LmL;H*GQ~C@3n(i=Yv0Tf!-x0{Lp?HIFK~Yho?BBn?%|*VQm$xr`mY7mI->x==L6pJA z<@t}mR-hN9m=5c)xb0@JSX826_Vi@#vHmi~0O5lP9o4(a7~R;L*xow`7>4qxGKVcL yw6AzPPp`RQ@#TgiDH{V#fx7=VF_`djFnp-*JHF&%!fIduGkCiCxvX004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FO%zEPz)E4>qp~o@Wml4E$umR2qlBFva&F6aB?y{ zeewkEXlWT4h9BR*GyMMj2WK8e*9R&D-~|9E0T>z@5?uhCKYyO##*G^c8X6j-`jA3x zsD%s2>7#Lon(PNl9D>{dDg@SS--uEGuye38aB^~i9sT|LHx%~IA3t&CVPt)uK7C{W z6#z^`=lD^DqaiRF0>dr@M!NtwqI4)W<;iWvk9Gl26Tx7Kd%AT2MhAih_dpP#YKM{m ytI@b0+;LCyLBP>zKtkDTRDLuBhGz(XrU3zui;l-(R#?6O0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F=)C3{Rgt zfje4SMuy?X_wNk9fB(Umhtc(c3J-Vz07?LchK58J0O!x2XSi|W27`u%#;87|P#bFD z0&@Cj9HJ)s!4!uew}1+PHQP7B3jlTwb_PyPF0iA&fB%NU{`uo4&OD5)@6)G`44?vl ziRc_Zs&F&}MnhoOg}`VR07sM##il&D&G^wS0BRx_OmR<_F2LwO(BK~k!dLZBGGH|t x_k%y~X*vivIt@7NT6Loy8Vv!WLI5-k2mmgZj>p2DJ6Qk#002ovPDHLkV1i-tu?zqJ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc234.png b/src/main/resources/xpbar/xpbar_inc234.png new file mode 100644 index 0000000000000000000000000000000000000000..fa545842a9aa96e6f819199fedd74e389102179a GIT binary patch literal 467 zcmV;^0WAKBP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fz@5?uhCKYyO##*G^c8X6j-`jA3x zsD%s2>7#Lon(PN#9D>{fDg@SS-v}-M*g4o4I61k%j{g4r8w&g9kDoa6FtWZ+pFT2x z3IHaebNr~n(GVC7fngT{qg?nUgkDmYl002ov JPDHLkV1nTrvz`C| literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc235.png b/src/main/resources/xpbar/xpbar_inc235.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5892f0abbc745e40c9b7ec9a5f3681dd0ec714 GIT binary patch literal 455 zcmV;&0XY7NP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F89)U9 z6VW+-RN-g{jE2Cl3xUxt0FEdficNWPoAIMv0MtY<7~`I%U4YSnprJDmgw3Ut3|NiE x{m_YfnhXMtP6H0RR^6zFMniz85CBaB0sw5Fj>jmfQltO?002ovPDHLkV1kHFxJm#3 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc236.png b/src/main/resources/xpbar/xpbar_inc236.png new file mode 100644 index 0000000000000000000000000000000000000000..1e417622343404ba6338dd646b8c8ffb74420a7a GIT binary patch literal 465 zcmV;?0WSWDP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fz@5?uhCKYyO##*G^c8X6j-`jA3x zsD%s2>7#Lon(PN_9D>{hDg-v~-*JbNlMC$V@87>MAhUn|_=z(QvvaV+)qeW)kpWZy zFcF>OM-`5Sz-R~zyAT-d0^o?!q1cosw;4a$1wc&%gEj7H)&&50e{>KKvm_X-13~C6 zrNo`1agV(Qpd?IbnU|004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FU~EhEG5 z>!5sHA=>mYfKRO7ASrQE9fgohp zQsU0hxW`@tP!guJ&P!As1RR|P9Cod`Q4fuV08t?Tng#>_so{>tve16D00000NkvXX Hu0mjf9(BI- literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc238.png b/src/main/resources/xpbar/xpbar_inc238.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a9c03eb136828a8b9947838ffa6de298b00930 GIT binary patch literal 458 zcmV;*0X6=KP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fkx?P*^fL#9WhPELlWPo99)fC>S40RTz>hK7bj7XatapJ%vn;|7C004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@Fp_<3>=)C3{Rgt0jmKO0`LL=lmHA34T&xQ&YwTeaO1`e1`Q33QGH0EHq^oe&I9GwOncCETm4~>QZQ6T`D1_S_Zn1#n*z^0}E0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FJ&hY#9ADnrZm6e5ogOiit z>60g5HK0NOUI2g+fT5uw(FMTy^XD0E+_=G@p`kIV4=L1!TDX9mJ{pIp$$lusA*jOH zbK(%V1@Qg*H-?`-e&Wo->>TV2oSa->`A?rdf(rm9qI3MH!qE^I4S``70;63398o$H zoATr~<43yysEJ^x#XZGc0Fd`b2LUllf}u1JL~i_z#y$2LU?{~sMT3B&(}2USRX6IP g(GVai1VGb(0Qcv8$0`(*P5=M^07*qoM6N<$f}O3gUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc241.png b/src/main/resources/xpbar/xpbar_inc241.png new file mode 100644 index 0000000000000000000000000000000000000000..26bc81258561fda54acdfc682343e0cf1eb41f73 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326py}!27?R*7L-EssAu+4{M>uIB%_55K?5 a-b!uy4^W@17Urts}FkRrp5XaCU z)Ua@&;zia2KR-X0%)7JW;DUt<4Oj7NUTKTk(J;qOs(l5>QpFQb7kH(g?{qHTSO5Rm zhtJ3Tfria(p4&KiGPlnEmzUiO7!SCV^vQ=>fPM1DDPaqDgR)n9Qt-SxX@4@r8B7Iv zj_z2#f}7#fzZVJ$X`TjC*qToC?!UO>cpNj&(jCh)1PV%|3T|wD`Quuqprm literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc242.png b/src/main/resources/xpbar/xpbar_inc242.png new file mode 100644 index 0000000000000000000000000000000000000000..b1efefaab78e829eac93ff2069dc06c0b22ee33c GIT binary patch literal 432 zcmV;h0Z;ykP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp;zH7w{jp&~!Wfy7sOlzwf?FlUPbA;k27d-~j;;_$vbE z!^yH_tD()`@Aix*KNt;>mqCpa7igbd_M9{%?~Z4a*u=p5?XE-dx&b`Q@B4n?Zv;W` zj78oH8%HiQdT7XB!^LVDU$3`Z58HNC)TI=g^;*YJ6L>ZNDge*(3O9f-3`G=0!gXEb zy;0-Fg@z6dKg*t*hNK@YJd^n}PA_S$himnkkkZlbljNuyK&7zb5eNbx@N)#P1;~+< zel>;C2vXx;)YRpnWzqZrYbV1jIF43k at^x1WXMM-t0AEW00000-V) literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc243.png b/src/main/resources/xpbar/xpbar_inc243.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8b9dc96b5bd279b49fd609b326d1a6c4e89c4 GIT binary patch literal 428 zcmV;d0aN~oP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpU^S3->w7ieF;>^W(e_3mo7Iq5d>?Q$JatTKS?1HSL;=8GT* z@>t}3uyN!Fq9_us>mu)q z8aFO9b!b>z_S`fi{b$R*`laEXkSi@qxOw10r3o2r)3Ze0_`C{&wy{g WRdmM+Ny&-;0000004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vpN;Qn%Bu^Cjed-`&^zagvxsF2Ld4QR|Fo{ zyW_}SM>qd?II5leWH!Y(12s-upuM^5IcZq#-Nj~guxaGW={%q~Z24UmpP|eOv;*I|0{=Alu&*=p#~deBDgXcg07*qoM6N<$g06h7EC2ui literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc245.png b/src/main/resources/xpbar/xpbar_inc245.png new file mode 100644 index 0000000000000000000000000000000000000000..3b780728d71e89fb6082d327c9196a04540fa961 GIT binary patch literal 423 zcmV;Y0a*TtP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F2#Y^h`rC8j5Jn-u%F4pP!O6++^vM&j zXF-JkyZ`_hU}$JabOCVw{CS2OH*PR!XlRV;LkhK_7A_#CkH#TtvL9-3h#Y?)w}T3S zHQP606aefT>J4(xKRtC$||t+66#O z1VcIQ$?5`(4g?Lqfgob4D$qdJXxtCKxF=~4aC91wn5;6YW;6tbUkHGv0Ra_9eaFkt Rh1385002ovPDHLkV1iGWp}+tD literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc246.png b/src/main/resources/xpbar/xpbar_inc246.png new file mode 100644 index 0000000000000000000000000000000000000000..0933c65b58993ccf58d7ed4285563c5f28ab133e GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326Ami!c7?RVf1D9^!yNqPY;+F(i$dD7QWbeU|;R; z2U+f46`OK3+PF`AU0i6f<*|U}zl6+!^PSEbtqj`Q+|2Ci>W43@`yZIcD$4YMi6Nz7 z;X=iWtOtI6elD4JXUD+>3l|!$;@7;=7PX^cj-6Edij#FKjw)9DX}rU)#d0m@en$|) zhT;vz1w}=Tw!dFqb}wK&;8M~jA8G;i!W*ZAE!+*tUhPT2^X{bm$q;8S73BH4LwzT= zft7%X4SN$uX!wH0br*NY&nxu*qVV8_iNeAhBQ1L=ro+Z84woAkwz$+D4>jG%3Jg33 MPgg&ebxsLQ0Ed;IqW}N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc247.png b/src/main/resources/xpbar/xpbar_inc247.png new file mode 100644 index 0000000000000000000000000000000000000000..c9016709ed47c34e43e601eaddf1b6973d82ce1e GIT binary patch literal 423 zcmV;Y0a*TtP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@F004&%004{+008|`004nN004b?008NW002DY000@xb3BE200009 za7bBm000ie000ie0hKEb8vp+xyRq zjGO{I;LM*An@FB-#)n7QGJMD8;aoqa{Xu=4(&L^7Jsm`xaY(na3R3T%EG|G$;t5a$rG?= zL4^Rk000?aXlO`u0dW5Od4?M|ZZK$QXpHJZ3bmmYE+D6m#vy95A8K)kEB-+K02Kmj zwr>O%0PGy>44j-?V9$Q~^buSDFcF>OM-`5Sz-R~zyAT-d0^o?!q1cosw;4a$1wc&% z!zJ#C?gD_kKRO7ASrQDFfgoJf7RZ02agRN8hD+QN90VMl1{`*+x={~}h5%6^0Gb8_ Y0P;+(nCVcH>GLO3KBdYEcKe`|r7AD5V=jYe9+<#t!Ew>iS16GC;49?EZ zi?|y;KR<7LXGdYPqqB2zhb)c$(+R9aL(K8E1{PeDrj-)_kA`T4ai_n+5b%dN%ofR*6{gR`^qBJPII z&(9m**-_Z+=>nk@~6DcN_R)!2I0S1HA+T-f(%^AQDWAJqKb6Mw<&;$T# Cl#?$2 literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc251.png b/src/main/resources/xpbar/xpbar_inc251.png new file mode 100644 index 0000000000000000000000000000000000000000..55c1607950536adfe14a4e97ae155012f88512b0 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=9326z~|}W7?R(=$>&})Z?5q9$sh6vRSC1iq&BD@BFqY%Z?d|;Q z%0lFoZnP!sXo#_wYInBg<2)*_6FYBD*}rp_)%_35V-;okz{HT!uyCQ`Mb-m9KR=hu zyR+lqf`tnWSMh6JX^Yy?Fvm`+eZ|ST6-N~fKeB%kULkO!_>sU4(GM>#yB9DXa4G4N z548Zh_l;A+7VZXRulA(ic>%@(H&>tdC;gUbfm+i;iSHG=85T1;DyJ)O++4n(aoxoo y@|K1Dr2+*dQUy1*zH+lQkz#UbWyp{cU^q9c_V@w4J~d!)F?hQAxvXR?CQRM>gDQS6K61Bo-=1ohaStfx3}5D ztyl32<~SS1IINTJJ-kr1{m2n{om?exrVmUEDGdu3Dqdtg@bmL?$-Fx|4lY=@&~O#M z=9RXn9Sw8rq}o@UtXpwZapOn!PvR>CZWKSdFxP*+T~jopkIVBPfvrFnN--VQV{zNf zV6mt~!|Z8iCflJs-Ea0^)MLm}l2}*RznR;>O2A|jTT{Y5R^F1{V}DO{Rrfd^xR`k$ o@%k$1uNN{n1Vot@WI8bLZz?|?eR5$NFo+mDUHx3vIVCg!0I%tkLjV8( literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc253.png b/src/main/resources/xpbar/xpbar_inc253.png new file mode 100644 index 0000000000000000000000000000000000000000..e35d30e528b82b87e0f8a8ae3709a78e3e4806d5 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=92~r{_u2h49Rd#{`3F8J@a&h_w{Xo22xCm6%7_SJ-Ge*d{56DCYuLm<_pdC*!29l z&OG~7{N5{gmljC&R=+t}r*TwqWo7x@b!W@(?X6kN^vQAuLxbdlCr?~T6gTAGx7%?m zu(l&Xy6YiR(ccUizPA=CX8#gi3WsqV;AWV>*w)tOBF^yq{QUGCg^$^q+uDw;uv-!! zods0=D??_H+V6#8?MsfxpU7X}#1O_{AUOB2yJ%nAfea3w-2xJCnI3dpT6klM`Zh_9 zPez;myX|IJ(V1Xz-1eH@ffo)JPDpbw{gg1dU@G-pS^r%i8>9Pj#`f6Nc~_hlD>{U5 cG%RCe?9MMauEd#n2N(tnp00i_>zopr0G!{D$p8QV literal 0 HcmV?d00001 diff --git a/src/main/resources/xpbar/xpbar_inc254.png b/src/main/resources/xpbar/xpbar_inc254.png new file mode 100644 index 0000000000000000000000000000000000000000..eab8c9143941dc3e95a0dd921c7167bf777487de GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5I5^mVq*$2Zejvq??&#~tz_78e=6B#^AYUQb zBgmJ5p`D+Bp$CZn0yQ-{Ffi0sGBCXCW?-;+%D^Cbrr4&n9H^GFz$3Dlfr0M`2s2LA z=92~rKJ#>O49ReQJJXSmNs-6(;9NK1y{yse4%o)bsL&A>zt^n2;i;IO&z&SMBa35( z2jBfWGv8G8%inFmUAjwWoJ|bpu@_QkbQP?)Cx30-_uI4nJb(N$|GEBl?YC+x6bl!A zyPVj+WT9F4(a%u~ZM;q#cU={Z-MDt?T`%v%?m6?MlCoD^^zVw%X4usDecx_|B~yIP z-L!a~VZNyCm}{ROul->;U+3PsPm3opZFqIALQjQJXof6f9AlkF*Ns!zw+Frc%=;J`P9z*RuD!4m=wk*? LS3j3^P6