diff --git a/.gitignore b/.gitignore index a320c3c..9f5642d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ */obj/ */*/*/bin/ */*/*/obj/ +*.tmp diff --git a/Arduino Firmware/Firmware-32Valve-Mega/Firmware-32Valve-Mega.ino b/Arduino Firmware/Firmware-32Valve-Mega/Firmware-32Valve-Mega.ino index 401c848..684d842 100644 --- a/Arduino Firmware/Firmware-32Valve-Mega/Firmware-32Valve-Mega.ino +++ b/Arduino Firmware/Firmware-32Valve-Mega/Firmware-32Valve-Mega.ino @@ -13,7 +13,6 @@ void setup() { for (int i = 22; i <= 53; i++) pinMode(i, OUTPUT); Serial.begin(9600); - Serial.write("PC2,32,Universal,END"); } void loop() @@ -22,12 +21,21 @@ void loop() { byte1 = Serial.read(); byte2 = Serial.read(); - byte3 = Serial.read(); - byte4 = Serial.read(); - byte5 = Serial.read(); - byte6 = Serial.read(); - byte7 = Serial.read(); - byte8 = Serial.read(); + + + if ((byte1 & 32) && (byte2 & 32)) + { + if (byte1 & 1) Serial.write("PC3,32\n"); + } + else + { + byte3 = Serial.read(); + byte4 = Serial.read(); + byte5 = Serial.read(); + byte6 = Serial.read(); + byte7 = Serial.read(); + byte8 = Serial.read(); + } if ((byte1 & 64) && (byte2 & 64) && (byte3 & 64) && (byte4 & 64) && (byte5 & 64) && (byte6 & 64) && (byte7 & 64) && (byte8 & 64)) { diff --git a/Arduino Firmware/Firmware-8Valve/Firmware-8Valve.ino b/Arduino Firmware/Firmware-8Valve/Firmware-8Valve.ino index 9c4fd69..6054452 100644 --- a/Arduino Firmware/Firmware-8Valve/Firmware-8Valve.ino +++ b/Arduino Firmware/Firmware-8Valve/Firmware-8Valve.ino @@ -14,7 +14,6 @@ void setup() pinMode(8, OUTPUT); pinMode(9, OUTPUT); Serial.begin(9600); - Serial.write("PC2,8,Universal,END"); } void loop() @@ -24,6 +23,11 @@ void loop() byte1 = Serial.read(); byte2 = Serial.read(); + if ((byte1 & 32) && (byte2 & 32)) + { + if (byte1 & 1) Serial.write("PC3,8\n"); + } + if ((byte1 & 64) && (byte2 & 64)) { if (byte1 & 1) digitalWrite(2, 1); diff --git a/Arduino Firmware/Servo/Firmware-Servo-ChuckEHelenGuestStar/Firmware-Servo-ChuckEHelenGuestStar.ino b/Arduino Firmware/Servo/Firmware-Servo-ChuckEHelenGuestStar/Firmware-Servo-ChuckEHelenGuestStar.ino index 17c095e..9b60dda 100644 --- a/Arduino Firmware/Servo/Firmware-Servo-ChuckEHelenGuestStar/Firmware-Servo-ChuckEHelenGuestStar.ino +++ b/Arduino Firmware/Servo/Firmware-Servo-ChuckEHelenGuestStar/Firmware-Servo-ChuckEHelenGuestStar.ino @@ -20,7 +20,6 @@ void setup() servoChannel[5].attach(7); for (int i = 0; i < 8; i++) servoChannel[mapping[i]].write(offDegrees[i]); Serial.begin(9600); - Serial.write("PC2,8,Chuck E./Helen/Guest Star,END"); } void loop() @@ -30,6 +29,11 @@ void loop() byte1 = Serial.read(); byte2 = Serial.read(); + if ((byte1 & 32) && (byte2 & 32)) + { + if (byte1 & 1) Serial.write("PC3,8\n"); + } + if ((byte1 & 64) && (byte2 & 64)) { if (byte1 & 1) servoChannel[mapping[0]].write(onDegrees[0]); diff --git a/Arduino Firmware/Servo/Firmware-Servo-HelenMitzi/Firmware-Servo-HelenMitzi.ino b/Arduino Firmware/Servo/Firmware-Servo-HelenMitzi/Firmware-Servo-HelenMitzi.ino index e17e30c..1311e8d 100644 --- a/Arduino Firmware/Servo/Firmware-Servo-HelenMitzi/Firmware-Servo-HelenMitzi.ino +++ b/Arduino Firmware/Servo/Firmware-Servo-HelenMitzi/Firmware-Servo-HelenMitzi.ino @@ -29,7 +29,6 @@ void setup() servoChannel[8].attach(10); for (int i = 0; i < 19; i++) servoChannel[mapping[i]].write(offDegrees[i]); Serial.begin(9600); - Serial.write("PC2,32,Mitzi/Helen,END"); } void loop() { @@ -37,12 +36,21 @@ void loop() { { byte1 = Serial.read(); byte2 = Serial.read(); - byte3 = Serial.read(); - byte4 = Serial.read(); - byte5 = Serial.read(); - byte6 = Serial.read(); - byte7 = Serial.read(); - byte8 = Serial.read(); + + if ((byte1 & 32) && (byte2 & 32)) + { + if (byte1 & 1) Serial.write("PC3,8\n"); + } + + else + { + byte3 = Serial.read(); + byte4 = Serial.read(); + byte5 = Serial.read(); + byte6 = Serial.read(); + byte7 = Serial.read(); + byte8 = Serial.read(); + } if ((byte1 & 64) && (byte2 & 64) && (byte3 & 64) && (byte4 & 64) && (byte5 & 64)) { diff --git a/Bit Mappings.md b/Bit Mappings.md index 724b55f..d1a1a4a 100644 --- a/Bit Mappings.md +++ b/Bit Mappings.md @@ -1,4 +1,4 @@ -# PINKCONNECTION2 Bit Mappings +# UST Bit Mappings This information was sourced from Cheese-E-Pedia, the Showbiz Pizza Cyberstar Install Manual, and the Chuck E. Cheese 2-Stage Install Manual. @@ -6,7 +6,7 @@ This information was sourced from Cheese-E-Pedia, the Showbiz Pizza Cyberstar In ### Rolfe Dewolfe & Earl Schmerle/Chuck E. Cheese -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | | Mouth | 1 | 1 | 1 | 1-1 | TB1 1-2 H1 | No | | Left Ear | 2 | 2 | 9 | 1-9 | | | @@ -17,7 +17,7 @@ This information was sourced from Cheese-E-Pedia, the Showbiz Pizza Cyberstar In | Eyes Right | 7 | 7 | 5 | 1-5 | TB1 9-10 H1 | No | | Head Left | 8 | 8 | 6 | 1-6 | TB1 3-4 H1 | No | | Head Right | 9 | 9 | 7 | 1-7 | TB1 5-6 H1 | No | -| Head Up | 10 | 10 | 8 | 1-8 | TB1 7-8 H1 | Yes | +| Head Up | 10 | 10 | 8 | 1-8 | TB1 7-8 H1 | No | | Left Arm Up | 11 | 11 | 11 | 1-11 | | | | Left Arm Twist | 12 | 12 | 12 | 1-12 | | | | Left Elbow | 13 | 13 | 13 | 1-13 | | | @@ -35,7 +35,7 @@ Earl's movements were removed during Concept Unification. ### Mitzi Mozzarella/Helen Henny -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | | Mouth | 1 | 23 | 185 | 2-35 | TB1 1-2 H5 | No | | Left Ear | 2 | 24 | 176 | 2-26 | | | @@ -46,7 +46,7 @@ Earl's movements were removed during Concept Unification. | Eyes Right | 7 | 29 | 184 | 2-34 | TB1 9-10 H5 | No | | Head Left | 8 | 30 | 178 | 2-28 | TB1 3-4 H5 | No | | Head Right | 9 | 31 | 179 | 2-29 | TB1 5-6 H5 | No | -| Head Up | 10 | 32 | 180 | 2-30 | TB1 7-8 H5 | Yes | +| Head Up | 10 | 32 | 180 | 2-30 | TB1 7-8 H5 | No | | Left Arm Up | 11 | 33 | 173 | 2-23 | | | | Left Arm Twist | 12 | 34 | 175 | 2-25 | | | | Left Elbow | 13 | 35 | 174 | 2-24 | | | @@ -61,7 +61,7 @@ No movements were removed during Concept Unification. ### Fatz Geronimo/Mr. Munch -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | | Mouth | 1 | 42 | 45 | 1-45 | TB1 1-2 H4 | No | | Left Eyelid | 2 | 43 | 41 | 1-41 | TB1 11-12 H4 | Yes | @@ -84,7 +84,7 @@ No movements were removed during Concept Unification. ### Beach Bear/Jasper T. Jowls -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------------------- | ------------ | | Mouth | 1 | 58 | 166 | 2-16 | TB1 1-2 H2 | No | | Left Eyelid | 2 | 59 | 151 | 2-1 | TB1 11-12 H2 | Yes | @@ -92,7 +92,7 @@ No movements were removed during Concept Unification. | Eyes Cross | 4 | 61 | 153 | 2-3 | | | | Head Left | 5 | 62 | 156 | 2-6 | TB1 3-4 H2 & TB1 15-16 H2 | No | | Head Right | 6 | 63 | 157 | 2-7 | TB1 5-6 H2 & TB1 9-10 H2 | No | -| Head Up | 7 | 64 | 158 | 2-8 | TB1 7-8 H2 | Yes | +| Head Up | 7 | 64 | 158 | 2-8 | TB1 7-8 H2 | No | | Right Arm Raise | 8 | 65 | 161 | 2-11 | | | | Right Arm Twist | 9 | 66 | 162 | 2-12 | | | | Right Elbow | 10 | 67 | 163 | 2-13 | TB1 13-14 H2 | No | @@ -107,7 +107,7 @@ No movements were removed during Concept Unification. ### Dook Larue/Pasqually -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | ------------ | ------------ | | Mouth | 1 | 74 | 30 | 1-30 | TB1 1-2 H3 | No | | Left Ear | 2 | 75 | 23 | 1-23 | | | @@ -131,7 +131,7 @@ Ear movements and Kick Drum were removed during Concept Unification. ### Billy Bob -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | | Mouth | 1 | 91 | 196 | 2-46 | | Left Eyelid | 2 | 92 | 197 | 2-47 | @@ -158,7 +158,7 @@ Entire bot was removed during Concept Unification. ### Looney Bird/Pizzacam -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | Greybox Bit | | --------------- | ------------------------ | ------------------ | ------------- | ----------- | | Mouth | 1 | 111 | 167 | 2-17 | | Left Eyelid | 2 | 112 | 191 | 2-41 | @@ -185,7 +185,7 @@ Hand movement was removed during Concept Unification. | Name | UST Full Stage Bit | RR Engine Bit | Greybox Bit | R12 Bit | R12 Inverted | | --------------------------------- | ------------------ | ------------- | ----------- | ------------ | ------------ | -| Rolfe/Chuck Spot | 124 | 88 | 1-88 | TB1 15-16 H7 | No | +| Rolfe/Chuck E. Spot | 124 | 88 | 1-88 | TB1 15-16 H7 | No | | Dook/Helen Spot | 125 | 86 | 1-86 | TB1 11-12 H7 | No | | Fatz/Munch Spot | 126 | 85 | 1-85 | TB2 9-10 H7 | No | | Beach Bear/Jasper Spot | 127 | 82 | 1-82 | TB2 5-6 H7 | No | @@ -273,11 +273,11 @@ Hand movement was removed during Concept Unification. | Snare Drum Light | 179 | 230 | 2-80 | | | | Kick Drum Light | 180 | 241 | 2-91 | TB1 5-6 H7 | No | -## R12 (Road/1-Stage/2-Stage) +## Cyberamics ### Chuck E. Cheese -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| Movement Name | Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | | ------------- | ------------------------ | ------------------ | ------------- | ------------ | | Mouth | 1 | 1 | 1 | TB1 1-2 H1 | | Head Left | 2 | 2 | 2 | TB1 3-4 H1 | @@ -290,7 +290,7 @@ Hand movement was removed during Concept Unification. ### Helen Henny/Guest Star -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | | ------------- | ------------------------ | ------------------ | ------------- | ------------ | | Mouth | 1 | 9 | 65 | TB1 1-2 H5 | | Head Left | 2 | 10 | 66 | TB1 3-4 H5 | @@ -303,7 +303,7 @@ Hand movement was removed during Concept Unification. ### Mr. Munch -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | | ------------- | ------------------------ | ------------------ | ------------- | ------------ | | Mouth | 1 | 17 | 49 | TB1 1-2 H4 | | Head Left | 2 | 18 | 50 | TB1 3-4 H4 | @@ -316,7 +316,7 @@ Hand movement was removed during Concept Unification. ### Jasper T. Jowls -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | | ------------- | ------------------------ | ------------------ | ------------- | ------------ | | Mouth | 1 | 25 | 17 | TB1 1-2 H2 | | Head Left | 2 | 26 | 18 | TB1 3-4 H2 | @@ -329,7 +329,7 @@ Hand movement was removed during Concept Unification. ### Pasqually -| Movement Name | UST Single Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | CCS Bit | | ------------- | ------------------------ | ------------------ | ------------- | ------------ | | Mouth | 1 | 33 | 33 | TB1 1-2 H3 | | Head Left | 2 | 34 | 34 | TB1 3-4 H3 | @@ -339,3 +339,197 @@ Hand movement was removed during Concept Unification. | Eyelids | 6 | 38 | 38 | TB1 11-12 H3 | | Right Arm | 7 | 39 | 39 | TB1 13-14 H3 | | Left Arm | 8 | 40 | 36 | TB1 7-8 H3 | + +### Props + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------------------- | ------------------ | ------------- | ------------ | +| Warblettes/Flower Mouth 1 | 41 | 9 | TB2 1-2 H1 | +| Flower Mouth 2 | 42 | 46 | TB2 11-12 H3 | +| Flower Mouth 3 | 43 | 62 | TB2 11-12 H4 | +| Warblettes Body Rock/Wink | 44 | 10 | TB2 3-4 H1 | +| Flag 1 | 45 | 74 | TB2 3-4 H5 | +| Flag 2 | 46 | 75 | TB2 5-6 H5 | +| Flag 3 | 47 | 76 | TB2 7-8 H5 | +| Flag 4 | 48 | 77 | TB2 9-10 H5 | +| Flag 5 | 49 | 78 | TB2 11-12 H5 | + +### Spots + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ----------------------- | ------------------ | ------------- | ------------ | +| Chuck E. Spot | 50 | 104 | TB1 15-16 H7 | +| Helen Spot | 51 | 102 | TB1 11-12 H7 | +| Munch Spot | 52 | 109 | TB2 9-10 H7 | +| Jasper Spot | 53 | 107 | TB2 5-6 H7 | +| Pasqually Spot | 54 | 100 | TB1 7-8 H7 | +| Wink Spot | 55 | 123 | TB2 5-6 H8 | +| Flowers/Warblettes Spot | 56 | 41 | TB2 1-2 H3 | + +### Curtains + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------------------ | ------------------ | ------------- | ------------ | +| CEC Stage Curtain Open | 57 | 27 | TB2 5-6 H2 | +| CEC Stage Curtain Close | 58 | 28 | TB2 7-8 H2 | +| Main Stage Curtain Open | 59 | 29 | TB2 9-10 H2 | +| Main Stage Curtain Close | 60 | 30 | TB2 11-12 H2 | +| 1-Stage Curtain Open | 61 | 25 | TB2 1-2 H2 | +| 1-Stage Curtain Close | 62 | 26 | TB2 3-4 H2 | +| Turntable Bot Side | 63 | 57 | TB2 1-2 H4 | +| Turntable Live Side | 64 | 58 | TB2 3-4 H4 | + +### Floods + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ------------------------- | ------------------ | ------------- | ------------ | +| CEC Stage Red Overhead | 65 | 120 | TB1 15-16 H8 | +| CEC Stage Amber Overhead | 66 | 116 | TB1 7-8 H8 | +| CEC Stage Blue Overhead | 67 | 127 | TB2 13-14 H8 | +| Main Stage Red Overhead | 68 | 118 | TB1 11-12 H8 | +| Main Stage Amber Overhead | 69 | 117 | TB1 9-10 H8 | +| Main Stage Blue Overhead | 70 | 119 | TB1 13-14 H8 | + +### Backdrop + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| -------------- | ------------------ | ------------- | ---------- | +| Red Backdrop | 71 | 114 | TB1 3-4 H8 | +| Amber Backdrop | 72 | 113 | TB1 1-2 H8 | +| Blue Backdrop | 73 | 115 | TB1 5-6 H8 | + +### Organ + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| ----------------- | ------------------ | ------------- | ------------ | +| Organ Face Amber | 74 | 110 | TB2 11-12 H7 | +| Organ Face Blue | 75 | 108 | TB2 7-8 H7 | +| Organ Legs Outer | 76 | 101 | TB1 9-10 H7 | +| Organ Legs Middle | 77 | 106 | TB2 3-4 H7 | +| Organ Legs Inner | 78 | 111 | TB2 13-14 H7 | + +### Special + +| Name | UST Full Stage Bit | RR Engine Bit | CCS Bit | +| -------------------- | ------------------ | ------------- | ------------ | +| CEC Star/Rope Lights | 79 | 103 | TB1 13-14 H7 | +| CEC Sign | 80 | 105 | TB2 1-2 H7 | +| Jukebox Topper | 81 | 125 | TB2 9-10 H8 | +| Fiber Curtain | 82 | 121 | TB2 1-2 H8 | +| Band Sign | 83 | 126 | TB2 11-12 H8 | +| Kick Drum | 84 | 99 | TB1 5-6 H7 | +| Gobo Light | 85 | 124 | TB2 7-8 H8 | +| Helicopter/Gemini | 86 | 122 | TB2 3-4 H8 | +| Live Flood | 87 | 97 | TB1 1-2 H7 | +| Live Strobe | 88 | 98 | TB1 3-4 H7 | + +## Studio C + +### Chuck E. + +| Movement Name | UST Character Bit | UST Full Stage Bit | RR Engine Bit | DTU Bit | 16M | +| ----------------- | ------------------------ | ------------------ | ------------- | ------- | --- | +| Mouth | 1 | 1 | 21 | 1-21 | Yes | +| Nose | 2 | 2 | 28 | 1-28 | No | +| Eyelids Up | 3 | 3 | 25 | 1-25 | No | +| Eyelids Down | 4 | 4 | 24 | 1-24 | Yes | +| Eyes Left | 5 | 5 | 26 | 1-26 | Yes | +| Eyes Right | 6 | 6 | 27 | 1-27 | Yes | +| Eyebrows Up | 7 | 7 | 29 | 1-29 | No | +| Eyebrows Down | 8 | 8 | 30 | 1-30 | No | +| Ears | 9 | 9 | 31 | 1-31 | No | +| Head Turn Left | 10 | 10 | 18 | 1-18 | Yes | +| Head Turn Right | 11 | 11 | 19 | 1-19 | Yes | +| Head Tilt Left | 12 | 12 | 23 | 1-23 | No | +| Head Tilt Right | 13 | 13 | 22 | 1-22 | No | +| Head Up | 14 | 14 | 20 | 1-20 | Yes | +| Left Arm Out | 15 | 15 | 6 | 1-6 | No | +| Left Arm Swing | 16 | 16 | 7 | 1-7 | Yes | +| Left Arm Forward | 17 | 17 | 11 | 1-11 | No | +| Left Elbow | 18 | 18 | 8 | 1-8 | Yes | +| Left Wrist | 19 | 19 | 9 | 1-9 | No | +| Left Hand Wave | 20 | 20 | 10 | 1-10 | Yes | +| Right Arm Out | 21 | 21 | 1 | 1-1 | No | +| Right Arm Swing | 22 | 22 | 2 | 1-2 | Yes | +| Right Arm Forward | 23 | 23 | 17 | 1-17 | No | +| Right Elbow | 24 | 24 | 3 | 1-3 | Yes | +| Right Wrist | 25 | 25 | 4 | 1-4 | No | +| Right Hand Wave | 26 | 26 | 5 | 1-5 | Yes | +| Body Forward | 27 | 27 | 12 | 1-12 | Yes | +| Body Turn Left | 28 | 28 | 16 | 1-16 | Yes | +| Body Turn Right | 29 | 29 | 15 | 1-15 | Yes | +| Body Tilt Left | 30 | 30 | 13 | 1-13 | No | +| Body Tilt Right | 31 | 31 | 14 | 1-14 | No | +| Foot Tap | 32 | 32 | 32 | 1-32 | No | + +### Props + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| ------------- | ------------------ | ------------- | ------- | +| Bird Mouth | 33 | 33 | 1-33 | +| Bird Wings | 34 | 36 | 1-36 | +| Bird Bow | 35 | 34 | 1-34 | +| Bird Turn | 36 | 35 | 1-35 | +| Phone Swing | 37 | 40 | 1-40 | +| Clock Forward | 38 | 160 | 2-10 | +| Clock Reverse | 39 | 161 | 2-11 | + +### Spots + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| ------------- | ------------------ | ------------- | ------- | +| Chuck E. Spot | 40 | 177 | 2-27 | +| Bird Spot | 41 | 178 | 2-28 | + +### Curtains + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| -------------- | ------------------ | ------------- | ------- | +| Curtains Open | 42 | 44 | 1-44 | +| Curtains Close | 43 | 45 | 1-45 | + +### Floods + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| ------------------------ | ------------------ | ------------- | ------- | +| CEC Red Floods | 44 | 151 | 2-1 | +| CEC Amber Floods | 45 | 154 | 2-4 | +| CEC Green Floods | 46 | 152 | 2-2 | +| CEC Blue Floods | 47 | 153 | 2-3 | +| Blue Screen Red Floods | 48 | 155 | 2-5 | +| Blue Screen Amber Floods | 49 | 157 | 2-7 | +| Blue Screen Green Floods | 50 | 156 | 2-6 | +| Room Pink Floods | 51 | 181 | 2-31 | +| Room Amber Floods | 52 | 180 | 2-30 | +| Room Blue Floods | 53 | 182 | 2-32 | + +### Monitor + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| ------------- | ------------------ | ------------- | ------- | +| Monitor Pink | 54 | 172 | 2-22 | +| Monitor Green | 55 | 174 | 2-24 | +| Monitor Blue | 56 | 173 | 2-23 | +| Monitor Chase | 57 | 171 | 2-21 | + +### Desk + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| ----------- | ------------------ | ------------- | ------- | +| Desk Outer | 58 | 166 | 2-16 | +| Desk Middle | 59 | 165 | 2-15 | +| Desk Inner | 60 | 164 | 2-14 | + +### Special + +| Name | UST Full Stage Bit | RR Engine Bit | DTU Bit | +| -------------------- | ------------------ | ------------- | ------- | +| Clock Neon | 61 | 159 | 2-9 | +| City Lights | 62 | 163 | 2-13 | +| Phone Handset Lights | 63 | 167 | 2-17 | +| Phone Dial Lights | 64 | 168 | 2-18 | +| Gemini | 65 | 176 | 2-26 | +| On Air Sign | 66 | 169 | 2-19 | +| Applause Sign | 67 | 170 | 2-20 | +| Strobe | 68 | 162 | 2-12 | +| Live Floods | 69 | 179 | 2-29 | diff --git a/ConsolePlayer/ConsolePlayer.csproj b/ConsolePlayer/ConsolePlayer.csproj new file mode 100644 index 0000000..c461e59 --- /dev/null +++ b/ConsolePlayer/ConsolePlayer.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + diff --git a/ConsolePlayer/Program.cs b/ConsolePlayer/Program.cs new file mode 100644 index 0000000..d8c7ba2 --- /dev/null +++ b/ConsolePlayer/Program.cs @@ -0,0 +1,308 @@ +using System.Globalization; +using System.IO.Ports; +using System.Numerics; +using System.Timers; + +using SoundFlow.Backends.MiniAudio; +using SoundFlow.Components; +using SoundFlow.Enums; +using SoundFlow.Providers; + +namespace ConsolePlayer +{ + public class Program + { + static SerialPort Port; + static System.Timers.Timer FrameTimer; + static System.Timers.Timer ResyncTimer; + static SoundPlayer AudioPlayer; + + static int FramesPerTick = 6; + static int ShowtapeIndex = 0; + static int ControllerBits; + + static string ShowtapeName; + static string ShowtapeFormattedLength; + + static bool DetectedController = false; + static bool Playing = false; + static bool TripFlag = false; + static bool Paused = false; + static bool SyncMsg = false; + + static string[] ShowtapeFrames; + + public static void Main(string[] args) + { + Console.WriteLine("PinkConnection3 Console Player"); + if (args.Length < 2) + { + Console.WriteLine("Not enough arguments!"); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + return; + } + if (!File.Exists(args[0])) + { + Console.WriteLine("Specified showtape does not exist!"); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + return; + } + if (!File.Exists(args[1])) + { + Console.WriteLine("Specified mapping file does not exist!"); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + return; + } + + if (args.Length == 3) OpenSerialPortSpecific(args[2]); + else OpenSerialPort(); + if (TripFlag) return; + + LoadShowtape(args[0], args[1]); + if (TripFlag) return; + + FrameTimer = new System.Timers.Timer((1000d/60d)*FramesPerTick); + FrameTimer.Elapsed += PlayFrame; + FrameTimer.AutoReset = true; + + ResyncTimer = new System.Timers.Timer(15000); + ResyncTimer.Elapsed += Resync; + ResyncTimer.AutoReset = true; + + using MiniAudioEngine audioEngine = new MiniAudioEngine(48000, Capability.Playback); + + using StreamDataProvider dataProvider = new StreamDataProvider(File.OpenRead("pc3playertempaudio.tmp")); + AudioPlayer = new SoundPlayer(dataProvider); + + Mixer.Master.AddComponent(AudioPlayer); + + Console.WriteLine($"Playing Showtape \"{ShowtapeName}\" ({ShowtapeFormattedLength})"); + Console.WriteLine("Controls:\n[SPACE] to pause and unpause\n[TAB] to toggle sync messages"); + Playing = true; + AudioPlayer.Play(); + FrameTimer.Start(); + ResyncTimer.Start(); + while (Playing) + { + ConsoleKeyInfo input = Console.ReadKey(); + if (Playing) + { + if (input.Key == ConsoleKey.Spacebar) + { + if (Paused) + { + Paused = false; + FrameTimer.Start(); + ResyncTimer.Start(); + AudioPlayer.Seek((float)(((float)ShowtapeIndex) / 60.0)); + AudioPlayer.Play(); + } + else + { + Paused = true; + FrameTimer.Stop(); + ResyncTimer.Stop(); + AudioPlayer.Pause(); + } + } + else if (input.Key == ConsoleKey.Tab) SyncMsg = !SyncMsg; + } + else if (!Playing) break; + } + Mixer.Master.RemoveComponent(AudioPlayer); + } + + static void OpenSerialPortSpecific(string specifiedPortName) + { + string successPortName = ""; + + Console.WriteLine("Serial port was manually specified"); + try + { + Console.Write("Waiting for controller"); + Port = new SerialPort(specifiedPortName, 9600, Parity.None, 8, StopBits.One); + Port.Open(); + + for (int i = 0; i < 10; i++) + { + if (i % 5 == 0) Console.Write("."); + Port.Write("! "); + Thread.Sleep(100); + string readAttempt = Port.ReadExisting(); + if (readAttempt.Split(",")[0] == "PC3") + { + ControllerBits = int.Parse(readAttempt.Split(",")[1]); + DetectedController = true; + successPortName = specifiedPortName; + break; + } + } + + if (!DetectedController) + { + Console.WriteLine("\nCould not detect a PinkConnection3 controller on the specified serial port."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + + } + catch (Exception e) + { + Console.WriteLine("\nFailed to connect to the specified serial port."); + Console.WriteLine(e.Message); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + } + + static void OpenSerialPort() + { + string successPortName = ""; + + Console.Write("Searching for controller"); + foreach (string portName in SerialPort.GetPortNames()) + { + if (DetectedController) break; + try + { + Port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); + Port.Open(); + + for (int i = 0; i < 10; i++) + { + if (i % 5 == 0) Console.Write("."); + Port.Write("! "); + Thread.Sleep(100); + string readAttempt = Port.ReadExisting(); + if (readAttempt.Split(",")[0] == "PC3") + { + ControllerBits = int.Parse(readAttempt.Split(",")[1]); + DetectedController = true; + successPortName = portName; + break; + } + } + + } catch (Exception) { continue; } + } + if (!DetectedController) + { + Console.WriteLine("\nCould not detect a PinkConnection3 controller on any of your serial ports."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + Console.WriteLine("\nDetected PinkConnection3 Controller on " + successPortName); + } + + static void LoadShowtape(string ustPath, string mappingPath) + { + Console.WriteLine("Loading showtape file..."); + string tempMappingData = File.ReadAllText(mappingPath); + if (!tempMappingData.StartsWith("PC3MAPPING;")) + { + Console.WriteLine("Specified mapping file is not a PinkConnection3 channel map."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + + List targetBits = new List(); + foreach (string s in tempMappingData.Split(";")[1].Split(",")) + { + targetBits.Add(int.Parse(s)); + } + + if (targetBits.Count != ControllerBits) + { + Console.WriteLine("The mapped channel count is not equal to the connected controller's bit count."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + + if (targetBits.Count % 4 != 0) + { + Console.WriteLine("The mapped channel count is not divisible by 4."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + + string tempUSTData = File.ReadAllText(ustPath); + if (!tempUSTData.StartsWith("UST,2,")) + { + Console.WriteLine("Specified showtape is not a UST version 2 showtape."); + Console.WriteLine("Press any key to exit."); + Console.ReadKey(); + TripFlag = true; + return; + } + + string[] headerData = tempUSTData.Split(';')[0].Split(','); + string[] stringyBits = tempUSTData.Split(';')[1].Split(','); + File.WriteAllBytes("pc3playertempaudio.tmp", Convert.FromBase64String(tempUSTData.Split(';')[2])); + + tempUSTData = null; + + ShowtapeName = headerData[2]; + + TimeSpan time = TimeSpan.FromSeconds(stringyBits.Length/60); + ShowtapeFormattedLength = time.ToString(@"hh\:mm\:ss"); + + List tempShowData = new List(); + + foreach (string stringyFrame in stringyBits) + { + BigInteger frame = BigInteger.Parse(stringyFrame, NumberStyles.HexNumber); + int selectBit = 0; + char[] frameStringOut = new char[64]; + for (int i = 0; i < targetBits.Count / 4; i++) + { + byte quartet = 64; + for (int j = 0; j < 4; j++) + { + if (targetBits[selectBit] == 0) continue; + if ((frame & BigInteger.Pow(2, targetBits[selectBit]-1)) == BigInteger.Pow(2, targetBits[selectBit]-1)) quartet += (byte)Math.Pow(2, j); + selectBit++; + } + frameStringOut[i] = (char)quartet; + } + tempShowData.Add(new string(frameStringOut).Trim()); + } + + ShowtapeFrames = tempShowData.ToArray(); + } + + static void PlayFrame(Object sender, ElapsedEventArgs e) + { + if (ShowtapeIndex >= ShowtapeFrames.Length) + { + FrameTimer.Stop(); + Playing = false; + Console.WriteLine("Complete! Press any key to exit."); + if (File.Exists("pc3playertempaudio.tmp")) File.Delete("pc3playertempaudio.tmp"); + return; + } + Port.Write(ShowtapeFrames[ShowtapeIndex]); + ShowtapeIndex += FramesPerTick; + } + + static void Resync(Object sender, ElapsedEventArgs e) + { + if (SyncMsg) Console.WriteLine($"Resynced by {(int)(AudioPlayer.Time * 60) - ShowtapeIndex} frames"); + ShowtapeIndex = (int)(AudioPlayer.Time * 60); + } + } +} diff --git a/ConsolePlayer/channel mappings/BeachBearJasper.pcm b/ConsolePlayer/channel mappings/BeachBearJasper.pcm new file mode 100644 index 0000000..f25db0c --- /dev/null +++ b/ConsolePlayer/channel mappings/BeachBearJasper.pcm @@ -0,0 +1 @@ +PC3MAPPING;58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ConsolePlayer/channel mappings/BillyBob.pcm b/ConsolePlayer/channel mappings/BillyBob.pcm new file mode 100644 index 0000000..d2f42d2 --- /dev/null +++ b/ConsolePlayer/channel mappings/BillyBob.pcm @@ -0,0 +1 @@ +PC3MAPPING;91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ConsolePlayer/channel mappings/CyberChuck.pcm b/ConsolePlayer/channel mappings/CyberChuck.pcm new file mode 100644 index 0000000..7225c89 --- /dev/null +++ b/ConsolePlayer/channel mappings/CyberChuck.pcm @@ -0,0 +1 @@ +PC3MAPPING;1,2,3,4,5,6,7,8 diff --git a/ConsolePlayer/channel mappings/CyberHelen.pcm b/ConsolePlayer/channel mappings/CyberHelen.pcm new file mode 100644 index 0000000..71bd573 --- /dev/null +++ b/ConsolePlayer/channel mappings/CyberHelen.pcm @@ -0,0 +1 @@ +PC3MAPPING;9,10,11,12,13,14,15,16 diff --git a/ConsolePlayer/channel mappings/CyberJasper.pcm b/ConsolePlayer/channel mappings/CyberJasper.pcm new file mode 100644 index 0000000..103181b --- /dev/null +++ b/ConsolePlayer/channel mappings/CyberJasper.pcm @@ -0,0 +1 @@ +PC3MAPPING;25,26,27,28,29,30,31,32 diff --git a/ConsolePlayer/channel mappings/CyberMunch.pcm b/ConsolePlayer/channel mappings/CyberMunch.pcm new file mode 100644 index 0000000..8338e88 --- /dev/null +++ b/ConsolePlayer/channel mappings/CyberMunch.pcm @@ -0,0 +1 @@ +PC3MAPPING;17,18,19,20,21,22,23,24 diff --git a/ConsolePlayer/channel mappings/CyberPasqually.pcm b/ConsolePlayer/channel mappings/CyberPasqually.pcm new file mode 100644 index 0000000..eac80d9 --- /dev/null +++ b/ConsolePlayer/channel mappings/CyberPasqually.pcm @@ -0,0 +1 @@ +PC3MAPPING;33,34,35,36,37,38,39,40 diff --git a/ConsolePlayer/channel mappings/DookPasqually.pcm b/ConsolePlayer/channel mappings/DookPasqually.pcm new file mode 100644 index 0000000..19b2875 --- /dev/null +++ b/ConsolePlayer/channel mappings/DookPasqually.pcm @@ -0,0 +1 @@ +PC3MAPPING;74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ConsolePlayer/channel mappings/FatzMunch.pcm b/ConsolePlayer/channel mappings/FatzMunch.pcm new file mode 100644 index 0000000..b9ea160 --- /dev/null +++ b/ConsolePlayer/channel mappings/FatzMunch.pcm @@ -0,0 +1 @@ +PC3MAPPING;42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ConsolePlayer/channel mappings/MitziHelen.pcm b/ConsolePlayer/channel mappings/MitziHelen.pcm new file mode 100644 index 0000000..40eed4d --- /dev/null +++ b/ConsolePlayer/channel mappings/MitziHelen.pcm @@ -0,0 +1 @@ +PC3MAPPING;23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/ConsolePlayer/channel mappings/RolfeChuck.pcm b/ConsolePlayer/channel mappings/RolfeChuck.pcm new file mode 100644 index 0000000..72b6811 --- /dev/null +++ b/ConsolePlayer/channel mappings/RolfeChuck.pcm @@ -0,0 +1 @@ +PC3MAPPING;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,0,0,0,0,0,0,0,0,0,0 diff --git a/Future Goals.md b/Future Goals.md index 30f46c1..54cdff2 100644 --- a/Future Goals.md +++ b/Future Goals.md @@ -1,18 +1,15 @@ # Future Goals -## PC2Converter +## USTConverter - .SHW (ProgramBlue) input format - .3ST/.R12/.C&R (APS) input format - Biphase (Pianocorder and Cyberstar) from tape input format - Studio C from Floppy Disk input format - - UST Full Stage to Single Character Stripper ## PC2Player - - ~~make the program~~ done!! - - fix memory leak issue - - make audio player work on windows + - ~~burn the damn thing to the ground and start over~~ Done! ## Firmwares diff --git a/PC2Player/PC2Player.Gtk/PC2Player.Gtk.csproj b/Legacy Tools/PC2Player.Old/PC2Player.Gtk/PC2Player.Gtk.csproj similarity index 100% rename from PC2Player/PC2Player.Gtk/PC2Player.Gtk.csproj rename to Legacy Tools/PC2Player.Old/PC2Player.Gtk/PC2Player.Gtk.csproj diff --git a/PC2Player/PC2Player.Gtk/Program.cs b/Legacy Tools/PC2Player.Old/PC2Player.Gtk/Program.cs similarity index 100% rename from PC2Player/PC2Player.Gtk/Program.cs rename to Legacy Tools/PC2Player.Old/PC2Player.Gtk/Program.cs diff --git a/PC2Converter/PC2Converter.Mac/Icon.icns b/Legacy Tools/PC2Player.Old/PC2Player.Mac/Icon.icns similarity index 100% rename from PC2Converter/PC2Converter.Mac/Icon.icns rename to Legacy Tools/PC2Player.Old/PC2Player.Mac/Icon.icns diff --git a/PC2Player/PC2Player.Mac/Info.plist b/Legacy Tools/PC2Player.Old/PC2Player.Mac/Info.plist similarity index 100% rename from PC2Player/PC2Player.Mac/Info.plist rename to Legacy Tools/PC2Player.Old/PC2Player.Mac/Info.plist diff --git a/PC2Player/PC2Player.Mac/PC2Player.Mac.csproj b/Legacy Tools/PC2Player.Old/PC2Player.Mac/PC2Player.Mac.csproj similarity index 100% rename from PC2Player/PC2Player.Mac/PC2Player.Mac.csproj rename to Legacy Tools/PC2Player.Old/PC2Player.Mac/PC2Player.Mac.csproj diff --git a/PC2Player/PC2Player.Mac/Program.cs b/Legacy Tools/PC2Player.Old/PC2Player.Mac/Program.cs similarity index 100% rename from PC2Player/PC2Player.Mac/Program.cs rename to Legacy Tools/PC2Player.Old/PC2Player.Mac/Program.cs diff --git a/PC2Player/PC2Player.Wpf/PC2Player.Wpf.csproj b/Legacy Tools/PC2Player.Old/PC2Player.Wpf/PC2Player.Wpf.csproj similarity index 100% rename from PC2Player/PC2Player.Wpf/PC2Player.Wpf.csproj rename to Legacy Tools/PC2Player.Old/PC2Player.Wpf/PC2Player.Wpf.csproj diff --git a/PC2Player/PC2Player.Wpf/Program.cs b/Legacy Tools/PC2Player.Old/PC2Player.Wpf/Program.cs similarity index 100% rename from PC2Player/PC2Player.Wpf/Program.cs rename to Legacy Tools/PC2Player.Old/PC2Player.Wpf/Program.cs diff --git a/PC2Player/PC2Player/MainForm.cs b/Legacy Tools/PC2Player.Old/PC2Player/MainForm.cs similarity index 100% rename from PC2Player/PC2Player/MainForm.cs rename to Legacy Tools/PC2Player.Old/PC2Player/MainForm.cs diff --git a/PC2Player/PC2Player/PC2Player.csproj b/Legacy Tools/PC2Player.Old/PC2Player/PC2Player.csproj similarity index 100% rename from PC2Player/PC2Player/PC2Player.csproj rename to Legacy Tools/PC2Player.Old/PC2Player/PC2Player.csproj diff --git a/PC2Converter/PC2Converter/MainForm.cs b/PC2Converter/PC2Converter/MainForm.cs deleted file mode 100644 index af76e5d..0000000 --- a/PC2Converter/PC2Converter/MainForm.cs +++ /dev/null @@ -1,499 +0,0 @@ -using System; -using System.Collections; -using System.Diagnostics; -using System.Numerics; -using System.IO; - -using Eto.Forms; -using Eto.Drawing; - -namespace PC2Converter -{ - public partial class MainForm : Form - { - DropDown InputTypeSelector = new DropDown(); - DropDown OutputTypeSelector = new DropDown(); - DropDown CharacterSelector = new DropDown(); - TextBox FilePathTextBox = new TextBox(); - Button BrowseFileButton = new Button { Text = "Browse", Width = 100 }; - Button ConvertButton = new Button { Text = "Convert", Width = 100 }; - CheckBox CompressAudioCheckBox = new CheckBox { Text = "Compress Audio", Width = 100 }; - - string[] InputTypes = { - "RSHW File (RR Engine)", "CSHW File (RR Engine)", "SSHW File (RR Engine)"/*, - "3ST File (APS)", "ROA/R12/C&R File (APS)"*/ - }; - - string[] RAE3stOutputTypes = { "UST 32 Bits (Single Bot RAE/3st)", "UST 8 Bits (Single Bot Cybers Rosetta)", "UST 256 Bits (Full RAE/3st)" , "UST 256 Bits (Full Cybers Rosetta)" }; - string[] CyberOutputTypes = { "UST 8 Bits (Single Bot Cybers)", "UST 256 Bits (Full Cybers)" }; - string[] StudioCOutputTypes = { "UST 32 Bits (Single Bot Studio C)", "UST 256 Bits (Full Studio C)" }; - - string[] RAE3stCharacters = { "Rolfe/Chuck E.", "Mitzi/Helen", "Fatz/Munch", "Beach Bear/Jasper", "Dook/Pasqually", "Billy Bob", "Looney Bird/PizzaCam"}; - string[] CyberCharacters = { "Chuck E.", "Helen/Guest Star", "Munch", "Jasper", "Pasqually" }; - string[] StudioCCharacters = { "Chuck E." }; - - int[][] SC_CyberBitMapR12 = - { - /* chuck */ new int[]{ 1, 2, 3, 4, 8, 5, 6, 7 }, - /* helen */ new int[]{ 65, 66, 67, 68, 72, 69, 70, 71 }, - /* munch */ new int[]{ 49, 50, 51, 56, 53, 54, 55, 52 }, - /* jasper */ new int[]{ 17, 18, 19, 20, 24, 21, 22, 23 }, - /* pasqually */ new int[]{ 33, 34, 35, 40, 37, 38, 39, 36 } - }; - - int[][] SC_CyberBitMapRosetta = - { - /* chuck */ new int[]{ 1, 6, 7, 8, 4, 5, 2, 19 }, - /* helen */ new int[]{ 185, 178, 179, 180, 183, 184, 181, 169 }, - /* munch */ new int[]{ 45, 54, 55, 43, 44, 41, 58, 59 }, - /* jasper */ new int[]{ 166, 156, 157, 158, 156, 157, 151, 163 }, - /* pasqually */ new int[]{ 30, 25, 21, 28, 29, 26, 31, 35 } - }; - - int[][] SC_RAE3stBitMap = - { - /* rolfe/chuck */ new int[]{ 1, 9, 10, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 17, 18, 19, 14, 15, 16, 20, 36, 37 }, - /* mitzi/helen */ new int[]{ 185, 176, 177, 181, 182, 183, 184, 178, 179, 180, 173, 175, 174, 168, 170, 169, 186, 187, 188 }, - /* fatz/munch */ new int[]{ 45, 41, 42, 43, 44, 54, 55, 51, 52, 53, 57, 59, 58, 60, 61, 62 }, - /* beach bear/jasper */ new int[]{ 166, 151, 152, 153, 156, 157, 158, 161, 162, 163, 164, 154, 155, 159, 160, 165 }, - /* dook/pasqually */ new int[]{ 30, 23, 24, 26, 27, 28, 29, 25, 21, 22, 33, 35, 34, 31, 32, 63, 64 }, - /* billy bob */ new int[]{ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 189, 190, 194, 211, 212, 213 }, - /* looney/pizzacam */ new int[]{ 167, 191, 192, 193, 171, 172, 48 } - }; - - int[][] SC_StudioCBitMap = - { - /* chuck e. */ new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 } - }; - - int[] FS_RAE3stBitMap = { - 1, 9, 10, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 17, 18, 19, 14, 15, 16, 20, 36, 37, - 185, 176, 177, 181, 182, 183, 184, 178, 179, 180, 173, 175, 174, 168, 170, 169, 186, 187, 188, - 45, 41, 42, 43, 44, 54, 55, 51, 52, 53, 57, 59, 58, 60, 61, 62, - 166, 151, 152, 153, 156, 157, 158, 161, 162, 163, 164, 154, 155, 159, 160, 165, - 30, 23, 24, 26, 27, 28, 29, 25, 21, 22, 33, 35, 34, 31, 32, 63, 64, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 189, 190, 194, 211, 212, 213, - 167, 191, 192, 193, 171, 172, 48, - 39, 38, 47, 46, 49, 50, - 88, 86, 85, 82, 242, 84, 83, 81, 238, 239, 240, 87, - 93, 94, 91, 92, 89, 90, - 229, 228, 227, 226, 224, 223, 221, 219, 218, 217, 216, 222, - 235, 232, 231, 234, 236, 237, 233, 242, 243, - 67, 68, 69, 66, 71, 72, 73, - 78, 77, 76, 79, 80, - 220, 244, 245, 225, 230, 241 - }; - - int[] CyberRosettaInvertedBits = { 2, 8, 181, 169, 41, 59, 58, 151, 158, 26, 35, 31 }; - int[] RAE3stAPSDescrambleTable = { 10, 11, 0, 1, 2, 3, 4, 12, 13, 5, 6, 7, 8, 9, 14, 15}; - - bool FullStage = false; - const int USTVersion = 1; - - public MainForm() - { - Title = "PinkConnection2 Showtape Converter"; - Size = new Size(512, 384); - Maximizable = false; - Resizable = false; - - BrowseFileButton.Command = new Command((sender, e) => { Event_BrowseFileButton(); }); - ConvertButton.Command = new Command((sender, e) => { Event_ConvertFileButton(); }); - - InputTypeSelector.SelectedValueChanged += (sender, e) => Event_ChangeInputType(); - OutputTypeSelector.SelectedValueChanged += (sender, e) => Event_ChangeOutputType(); - - foreach (string s in InputTypes) - { - InputTypeSelector.Items.Add(s); - } - - Content = BuildLayout(); - } - - DynamicLayout BuildLayout() - { - DynamicLayout layout = new DynamicLayout { DefaultSpacing = new Size(10, 10), DefaultPadding = new Padding(5, 5, 5, 5) }; - - layout.BeginVertical(); - layout.BeginHorizontal(); - layout.Add(new Label { Text = "Input Format" }); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(InputTypeSelector, true); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(new Label { Text = "Output Type" }); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(OutputTypeSelector, true); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(new Label { Text = "Character" }); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(CharacterSelector, true); - layout.EndHorizontal(); - layout.EndVertical(); - - layout.BeginVertical(); - layout.BeginHorizontal(); - layout.Add(new Label { Text = "File to convert" }); - layout.EndHorizontal(); - - layout.BeginHorizontal(); - layout.Add(FilePathTextBox, true); - layout.Add(BrowseFileButton); - layout.EndHorizontal(); - layout.EndVertical(); - - layout.BeginVertical(); - layout.BeginHorizontal(); - layout.Add(null, true); - layout.Add(CompressAudioCheckBox); - layout.Add(ConvertButton); - layout.EndHorizontal(); - layout.EndVertical(); - - layout.BeginVertical(); - layout.Add(null, true); - layout.EndVertical(); - - return layout; - } - - string MakeHeader(string showName, string outputType, string character) - { - string headerOut = $"UST,{USTVersion.ToString()},{showName.Replace(",", "_").Replace(";", "_")},"; - bool fullStage = false; - switch (outputType) - { - case "UST 32 Bits (Single Bot RAE/3st)": - headerOut += "32,"; - headerOut += "Rockafire Explosion/3-Stage (Single Character),"; - break; - case "UST 8 Bits (Single Bot Cybers Rosetta)": - headerOut += "8,"; - headerOut += "Cyberamics (Single Character),"; - break; - case "UST 256 Bits (Full RAE/3st)": - headerOut += "256,"; - headerOut += "Rockafire Explosion/3-Stage (Full Stage),"; - fullStage = true; - break; - case "UST 256 Bits (Full Cybers Rosetta)": - headerOut += "256,"; - headerOut += "Cyberamics (Full Stage),"; - fullStage = true; - break; - case "UST 8 Bits (Single Bot Cybers)": - headerOut += "8,"; - headerOut += "Cyberamics (Single Character),"; - break; - case "UST 256 Bits (Full Cybers)": - headerOut += "256,"; - headerOut += "Cyberamics (Full Stage),"; - fullStage = true; - break; - case "UST 32 Bits (Single Bot Studio C)": - headerOut += "32,"; - headerOut += "Studio C (Single Character),"; - break; - case "UST 256 Bits (Full Studio C)": - headerOut += "256,"; - headerOut += "Studio C (Full Stage),"; - fullStage = true; - break; - } - if (fullStage) headerOut += "All,"; - else headerOut += character + ";"; - return headerOut; - } - - void Event_ChangeInputType() - { - switch(InputTypeSelector.SelectedIndex) - { - case 0: - OutputTypeSelector.Items.Clear(); - CharacterSelector.Items.Clear(); - foreach (string s in RAE3stOutputTypes) - { - OutputTypeSelector.Items.Add(s); - } - break; - case 1: - OutputTypeSelector.Items.Clear(); - CharacterSelector.Items.Clear(); - foreach (string s in CyberOutputTypes) - { - OutputTypeSelector.Items.Add(s); - } - break; - case 2: - OutputTypeSelector.Items.Clear(); - CharacterSelector.Items.Clear(); - foreach (string s in StudioCOutputTypes) - { - OutputTypeSelector.Items.Add(s); - } - break; - } - } - - void Event_ChangeOutputType() - { - switch(InputTypeSelector.SelectedIndex) - { - case 0: - switch(OutputTypeSelector.SelectedIndex) - { - case 0: - CharacterSelector.Items.Clear(); - foreach (string s in RAE3stCharacters) - { - CharacterSelector.Items.Add(s); - } - CharacterSelector.Enabled = true; - FullStage = false; - break; - case 1: - CharacterSelector.Items.Clear(); - foreach (string s in CyberCharacters) - { - CharacterSelector.Items.Add(s); - } - CharacterSelector.Enabled = true; - FullStage = false; - break; - case 2: - CharacterSelector.Items.Clear(); - CharacterSelector.Enabled = false; - FullStage = true; - break; - case 3: - CharacterSelector.Items.Clear(); - CharacterSelector.Enabled = false; - FullStage = true; - break; - } - break; - case 1: - switch(OutputTypeSelector.SelectedIndex) - { - case 0: - CharacterSelector.Items.Clear(); - foreach (string s in CyberCharacters) - { - CharacterSelector.Items.Add(s); - } - CharacterSelector.Enabled = true; - FullStage = false; - break; - case 1: - CharacterSelector.Items.Clear(); - CharacterSelector.Enabled = false; - FullStage = true; - break; - } - break; - case 2: - switch(OutputTypeSelector.SelectedIndex) - { - case 0: - CharacterSelector.Items.Clear(); - foreach (string s in StudioCCharacters) - { - CharacterSelector.Items.Add(s); - } - CharacterSelector.Enabled = true; - FullStage = false; - break; - case 1: - CharacterSelector.Items.Clear(); - CharacterSelector.Enabled = false; - FullStage = true; - break; - } - break; - } - } - - void Event_BrowseFileButton() - { - OpenFileDialog fileDialog = new OpenFileDialog(); - string[] showFiles = { ".rshw", ".cshw", ".sshw" }; - string[] allFiles = { ".*" }; - fileDialog.Filters.Add(new FileFilter("Show Files (.rshw, .cshw, .sshw)", showFiles)); - fileDialog.Filters.Add(new FileFilter("All Files", allFiles)); - fileDialog.Title = "Select Show File."; - fileDialog.ShowDialog(this); - if (File.Exists(fileDialog.FileName)) FilePathTextBox.Text = fileDialog.FileName; - } - - void Event_ConvertFileButton() - { - // safeties - if (InputTypeSelector.SelectedIndex == -1) - { - MessageBox.Show("Fatal: You must select an input type."); - return; - } - if (OutputTypeSelector.SelectedIndex == -1) - { - MessageBox.Show("Fatal: You must select an output type."); - return; - } - if (CharacterSelector.SelectedIndex == -1 && !FullStage) - { - MessageBox.Show("Fatal: You must select a character."); - return; - } - if (FilePathTextBox.Text.Trim() == "") - { - MessageBox.Show("Fatal: You must select an input file."); - return; - } - if (!File.Exists(FilePathTextBox.Text.Trim())) - { - MessageBox.Show("Fatal: Specified input file does not exist."); - return; - } - - if (FullStage && (string)OutputTypeSelector.SelectedKey != "UST 256 Bits (Full RAE/3st)") - { - MessageBox.Show("Fatal: Full Stage mode is not supported for cybers and studio c at this time."); - return; - } - - SaveFileDialog fileDialog = new SaveFileDialog(); - fileDialog.Filters.Add(new FileFilter("UST Files (.ust)", new string[]{".ust"})); - fileDialog.Title = "Select Show File."; - fileDialog.ShowDialog(this); - if (fileDialog.FileName.Trim() == "") return; - string outFilePath = fileDialog.FileName; - - // now its actually time to start doing some shit - string inputType = InputTypeSelector.SelectedKey; - string outputType = OutputTypeSelector.SelectedKey; - string filePath = FilePathTextBox.Text.Trim(); - if (inputType == "RSHW File (RR Engine)" || inputType == "CSHW File (RR Engine)" || inputType == "SSHW File (RR Engine)") - { - // at some point there should be a warning displayed if the input type does not match the file extension but i dont feel like doing that right now - - // rshw time - RSHWFile file = RSHWLoader.Load(filePath); - if (file.signalData == null) - { - MessageBox.Show("Fatal: This file contains no signal data."); - return; - } - if (file.audioData == null) - { - MessageBox.Show("Fatal: This file contains no audio data."); - return; - } - - List rshwBits = new List(); - int countlength = 0; - if (file.signalData[0] != 0) - { - countlength = 1; - BitArray bit = new BitArray(300); - rshwBits.Add(bit); - } - for (int i = 0; i < file.signalData.Length; i++) - { - if (file.signalData[i] == 0) - { - countlength += 1; - BitArray bit = new BitArray(300); - rshwBits.Add(bit); - } - else - { - rshwBits[countlength - 1].Set(file.signalData[i], true); - } - } - - // pick which target bits to use and how many bytes the output should be - int bitsCount = 0; - int[] targetBits = { 0 }; - switch (outputType) - { - case "UST 32 Bits (Single Bot RAE/3st)": - bitsCount = 32; - targetBits = SC_RAE3stBitMap[Array.IndexOf(RAE3stCharacters, CharacterSelector.SelectedKey)]; - break; - case "UST 8 Bits (Single Bot Cybers Rosetta)": - bitsCount = 8; - targetBits = SC_CyberBitMapRosetta[Array.IndexOf(CyberCharacters, CharacterSelector.SelectedKey)]; - break; - case "UST 256 Bits (Full RAE/3st)": - bitsCount = 256; - targetBits = FS_RAE3stBitMap; - break; - case "UST 256 Bits (Full Cybers Rosetta)": - bitsCount = 256; - break; - case "UST 8 Bits (Single Bot Cybers)": - bitsCount = 8; - targetBits = SC_CyberBitMapR12[Array.IndexOf(CyberCharacters, CharacterSelector.SelectedKey)]; - break; - case "UST 256 Bits (Full Cybers)": - bitsCount = 256; - break; - case "UST 32 Bits (Single Bot Studio C)": - bitsCount = 32; - targetBits = SC_StudioCBitMap[Array.IndexOf(StudioCCharacters, CharacterSelector.SelectedKey)]; - break; - case "UST 256 Bits (Full Studio C)": - bitsCount = 256; - break; - } - - List writeOut = new List(); - foreach (BitArray bits in rshwBits) - { - BigInteger frameByte = 0; - for (int i = 0; i < targetBits.Length; i++) - { - if (bits.Get(targetBits[i])) frameByte += BigInteger.Pow(2, i); - } - writeOut.Add(frameByte.ToString($"X{(bitsCount/4).ToString()}")); - } - - byte[] audioOut = file.audioData; - if ((bool)CompressAudioCheckBox.Checked) - { - MessageBox.Show("press ok to start compressing audio"); - if (File.Exists("tmp.mp3")) File.Delete("tmp.mp3"); - File.WriteAllBytes("tmp.wav", audioOut); - Process ffmpegProcess = new Process(); - ffmpegProcess.StartInfo.FileName = "ffmpeg"; - ffmpegProcess.StartInfo.Arguments = "-i tmp.wav -c:a mp3 -b:a 128k tmp.mp3"; - ffmpegProcess.Start(); - ffmpegProcess.WaitForExit(); - audioOut = File.ReadAllBytes("tmp.mp3"); - File.Delete("tmp.wav"); - File.Delete("tmp.mp3"); - } - - File.WriteAllText(outFilePath, MakeHeader(Path.GetFileNameWithoutExtension(outFilePath), outputType, CharacterSelector.SelectedKey)+String.Join(",", writeOut.ToArray())+";"+Convert.ToBase64String(audioOut)); - } - MessageBox.Show("Conversion complete!"); - } - - int RRtoAPSBit(int rrBit) // aps lower drawer starts at 129 instead of 151 - { - int outAPSBit = rrBit; - if (rrBit > 150) outAPSBit = rrBit - 22; - return outAPSBit; - } - } -} diff --git a/PC3Player/PC3Player.sln b/PC3Player/PC3Player.sln new file mode 100644 index 0000000..d93fe6e --- /dev/null +++ b/PC3Player/PC3Player.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36221.1 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PC3Player", "PC3Player\PC3Player.csproj", "{13092811-9CBA-4FD5-B780-E67E14221992}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {13092811-9CBA-4FD5-B780-E67E14221992}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13092811-9CBA-4FD5-B780-E67E14221992}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13092811-9CBA-4FD5-B780-E67E14221992}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13092811-9CBA-4FD5-B780-E67E14221992}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7BE19417-D601-45AA-B189-5AC9C4B041B6} + EndGlobalSection +EndGlobal diff --git a/PC3Player/PC3Player/AdvancedSettingsForm.Designer.cs b/PC3Player/PC3Player/AdvancedSettingsForm.Designer.cs new file mode 100644 index 0000000..86739b4 --- /dev/null +++ b/PC3Player/PC3Player/AdvancedSettingsForm.Designer.cs @@ -0,0 +1,829 @@ +namespace PC3Player +{ + partial class AdvancedSettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + PlaylistPlaybackGroupBox = new GroupBox(); + LoopCheckBox = new CheckBox(); + IntermissionUnitDropDown = new ComboBox(); + IntermissionTimeCounter = new NumericUpDown(); + IntermissionCheckBox = new CheckBox(); + label2 = new Label(); + ShowEndedDropDown = new ComboBox(); + label1 = new Label(); + PlaylistStartedDropDown = new ComboBox(); + ShowSelectorGroupBox = new GroupBox(); + AddSkitButton = new Button(); + SkitCheckBox = new CheckBox(); + label5 = new Label(); + AlreadyPlayingDropDown = new ComboBox(); + CooldownUnitDropDown = new ComboBox(); + CooldownTimeCounter = new NumericUpDown(); + CooldownCheckBox = new CheckBox(); + label3 = new Label(); + SelectedShowEndDropDown = new ComboBox(); + label4 = new Label(); + ButtonPressDropDown = new ComboBox(); + ShowSelectorAssignmentGroupBox = new GroupBox(); + AssignmentPanel = new Panel(); + ButtonAssignDropDown1 = new ComboBox(); + ButtonAssignDropDown2 = new ComboBox(); + ButtonAssignDropDown3 = new ComboBox(); + ButtonAssignDropDown4 = new ComboBox(); + ButtonAssignDropDown5 = new ComboBox(); + ButtonAssignDropDown6 = new ComboBox(); + ButtonAssignDropDown7 = new ComboBox(); + ButtonAssignDropDown8 = new ComboBox(); + ButtonAssignDropDown9 = new ComboBox(); + ButtonAssignDropDown10 = new ComboBox(); + ButtonAssignDropDown11 = new ComboBox(); + ButtonAssignDropDown12 = new ComboBox(); + label14 = new Label(); + label15 = new Label(); + label16 = new Label(); + label17 = new Label(); + label10 = new Label(); + label11 = new Label(); + label12 = new Label(); + label13 = new Label(); + label8 = new Label(); + label9 = new Label(); + label7 = new Label(); + label6 = new Label(); + SkitListView = new ListView(); + NameColumnHeader = new ColumnHeader(); + LengthColumnHeader = new ColumnHeader(); + SkitContextMenu = new ContextMenuStrip(components); + RemoveButton = new ToolStripMenuItem(); + SaveButton = new Button(); + CancelButton = new Button(); + SelectShowFileDialog = new OpenFileDialog(); + PlaybackGroupBox = new GroupBox(); + label20 = new Label(); + label19 = new Label(); + label18 = new Label(); + ResyncTimeOption = new NumericUpDown(); + FrameShiftOption = new NumericUpDown(); + FrameSkipOption = new NumericUpDown(); + PlaylistPlaybackGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)IntermissionTimeCounter).BeginInit(); + ShowSelectorGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)CooldownTimeCounter).BeginInit(); + ShowSelectorAssignmentGroupBox.SuspendLayout(); + AssignmentPanel.SuspendLayout(); + SkitContextMenu.SuspendLayout(); + PlaybackGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)ResyncTimeOption).BeginInit(); + ((System.ComponentModel.ISupportInitialize)FrameShiftOption).BeginInit(); + ((System.ComponentModel.ISupportInitialize)FrameSkipOption).BeginInit(); + SuspendLayout(); + // + // PlaylistPlaybackGroupBox + // + PlaylistPlaybackGroupBox.Controls.Add(LoopCheckBox); + PlaylistPlaybackGroupBox.Controls.Add(IntermissionUnitDropDown); + PlaylistPlaybackGroupBox.Controls.Add(IntermissionTimeCounter); + PlaylistPlaybackGroupBox.Controls.Add(IntermissionCheckBox); + PlaylistPlaybackGroupBox.Controls.Add(label2); + PlaylistPlaybackGroupBox.Controls.Add(ShowEndedDropDown); + PlaylistPlaybackGroupBox.Controls.Add(label1); + PlaylistPlaybackGroupBox.Controls.Add(PlaylistStartedDropDown); + PlaylistPlaybackGroupBox.Location = new Point(12, 12); + PlaylistPlaybackGroupBox.Name = "PlaylistPlaybackGroupBox"; + PlaylistPlaybackGroupBox.Size = new Size(350, 138); + PlaylistPlaybackGroupBox.TabIndex = 0; + PlaylistPlaybackGroupBox.TabStop = false; + PlaylistPlaybackGroupBox.Text = "Playlist Playback"; + // + // LoopCheckBox + // + LoopCheckBox.AutoSize = true; + LoopCheckBox.Location = new Point(6, 111); + LoopCheckBox.Name = "LoopCheckBox"; + LoopCheckBox.Size = new Size(162, 19); + LoopCheckBox.TabIndex = 5; + LoopCheckBox.Text = "Loop when Playlist is over"; + LoopCheckBox.UseVisualStyleBackColor = true; + // + // IntermissionUnitDropDown + // + IntermissionUnitDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + IntermissionUnitDropDown.FormattingEnabled = true; + IntermissionUnitDropDown.Items.AddRange(new object[] { "Minutes", "Seconds" }); + IntermissionUnitDropDown.Location = new Point(250, 80); + IntermissionUnitDropDown.Name = "IntermissionUnitDropDown"; + IntermissionUnitDropDown.Size = new Size(94, 23); + IntermissionUnitDropDown.TabIndex = 4; + // + // IntermissionTimeCounter + // + IntermissionTimeCounter.Location = new Point(194, 80); + IntermissionTimeCounter.Maximum = new decimal(new int[] { 60, 0, 0, 0 }); + IntermissionTimeCounter.Name = "IntermissionTimeCounter"; + IntermissionTimeCounter.Size = new Size(50, 23); + IntermissionTimeCounter.TabIndex = 3; + // + // IntermissionCheckBox + // + IntermissionCheckBox.AutoSize = true; + IntermissionCheckBox.Location = new Point(6, 82); + IntermissionCheckBox.Name = "IntermissionCheckBox"; + IntermissionCheckBox.Size = new Size(135, 19); + IntermissionCheckBox.TabIndex = 2; + IntermissionCheckBox.Text = "Wait between Shows"; + IntermissionCheckBox.UseVisualStyleBackColor = true; + IntermissionCheckBox.CheckedChanged += IntermissionCheckBox_CheckedChanged; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(6, 54); + label2.Name = "label2"; + label2.Size = new Size(107, 15); + label2.TabIndex = 3; + label2.Text = "When a Show ends"; + // + // ShowEndedDropDown + // + ShowEndedDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + ShowEndedDropDown.FormattingEnabled = true; + ShowEndedDropDown.Items.AddRange(new object[] { "Play Next Show", "Play Random Show", "Repeat Show", "Stop Playlist" }); + ShowEndedDropDown.Location = new Point(194, 51); + ShowEndedDropDown.Name = "ShowEndedDropDown"; + ShowEndedDropDown.Size = new Size(150, 23); + ShowEndedDropDown.TabIndex = 1; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(6, 25); + label1.Name = "label1"; + label1.Size = new Size(128, 15); + label1.TabIndex = 1; + label1.Text = "When Playlist is started"; + // + // PlaylistStartedDropDown + // + PlaylistStartedDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + PlaylistStartedDropDown.FormattingEnabled = true; + PlaylistStartedDropDown.Items.AddRange(new object[] { "Play First Show", "Play Random Show" }); + PlaylistStartedDropDown.Location = new Point(194, 22); + PlaylistStartedDropDown.Name = "PlaylistStartedDropDown"; + PlaylistStartedDropDown.Size = new Size(150, 23); + PlaylistStartedDropDown.TabIndex = 0; + // + // ShowSelectorGroupBox + // + ShowSelectorGroupBox.Controls.Add(AddSkitButton); + ShowSelectorGroupBox.Controls.Add(SkitCheckBox); + ShowSelectorGroupBox.Controls.Add(label5); + ShowSelectorGroupBox.Controls.Add(AlreadyPlayingDropDown); + ShowSelectorGroupBox.Controls.Add(CooldownUnitDropDown); + ShowSelectorGroupBox.Controls.Add(CooldownTimeCounter); + ShowSelectorGroupBox.Controls.Add(CooldownCheckBox); + ShowSelectorGroupBox.Controls.Add(label3); + ShowSelectorGroupBox.Controls.Add(SelectedShowEndDropDown); + ShowSelectorGroupBox.Controls.Add(label4); + ShowSelectorGroupBox.Controls.Add(ButtonPressDropDown); + ShowSelectorGroupBox.Location = new Point(12, 156); + ShowSelectorGroupBox.Name = "ShowSelectorGroupBox"; + ShowSelectorGroupBox.Size = new Size(350, 165); + ShowSelectorGroupBox.TabIndex = 1; + ShowSelectorGroupBox.TabStop = false; + ShowSelectorGroupBox.Text = "Show Selector"; + // + // AddSkitButton + // + AddSkitButton.Location = new Point(250, 136); + AddSkitButton.Name = "AddSkitButton"; + AddSkitButton.Size = new Size(94, 23); + AddSkitButton.TabIndex = 7; + AddSkitButton.Text = "Add Skit"; + AddSkitButton.UseVisualStyleBackColor = true; + AddSkitButton.Click += AddSkitButton_Click; + // + // SkitCheckBox + // + SkitCheckBox.AutoSize = true; + SkitCheckBox.Location = new Point(6, 138); + SkitCheckBox.Name = "SkitCheckBox"; + SkitCheckBox.Size = new Size(231, 19); + SkitCheckBox.TabIndex = 6; + SkitCheckBox.Text = "Play random Skit before Selected Show"; + SkitCheckBox.UseVisualStyleBackColor = true; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(6, 54); + label5.Name = "label5"; + label5.Size = new Size(149, 15); + label5.TabIndex = 8; + label5.Text = "If a Show is already playing"; + // + // AlreadyPlayingDropDown + // + AlreadyPlayingDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + AlreadyPlayingDropDown.FormattingEnabled = true; + AlreadyPlayingDropDown.Items.AddRange(new object[] { "Stop current", "Play after finished", "Ignore button" }); + AlreadyPlayingDropDown.Location = new Point(194, 51); + AlreadyPlayingDropDown.Name = "AlreadyPlayingDropDown"; + AlreadyPlayingDropDown.Size = new Size(150, 23); + AlreadyPlayingDropDown.TabIndex = 1; + // + // CooldownUnitDropDown + // + CooldownUnitDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + CooldownUnitDropDown.FormattingEnabled = true; + CooldownUnitDropDown.Items.AddRange(new object[] { "Minutes", "Seconds" }); + CooldownUnitDropDown.Location = new Point(250, 107); + CooldownUnitDropDown.Name = "CooldownUnitDropDown"; + CooldownUnitDropDown.Size = new Size(94, 23); + CooldownUnitDropDown.TabIndex = 5; + // + // CooldownTimeCounter + // + CooldownTimeCounter.Location = new Point(194, 107); + CooldownTimeCounter.Maximum = new decimal(new int[] { 60, 0, 0, 0 }); + CooldownTimeCounter.Name = "CooldownTimeCounter"; + CooldownTimeCounter.Size = new Size(50, 23); + CooldownTimeCounter.TabIndex = 4; + // + // CooldownCheckBox + // + CooldownCheckBox.AutoSize = true; + CooldownCheckBox.Location = new Point(6, 109); + CooldownCheckBox.Name = "CooldownCheckBox"; + CooldownCheckBox.Size = new Size(185, 19); + CooldownCheckBox.TabIndex = 3; + CooldownCheckBox.Text = "Cooldown between Selections"; + CooldownCheckBox.UseVisualStyleBackColor = true; + CooldownCheckBox.CheckedChanged += CooldownCheckBox_CheckedChanged; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(6, 83); + label3.Name = "label3"; + label3.Size = new Size(154, 15); + label3.TabIndex = 3; + label3.Text = "When a Selected Show ends"; + // + // SelectedShowEndDropDown + // + SelectedShowEndDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + SelectedShowEndDropDown.FormattingEnabled = true; + SelectedShowEndDropDown.Items.AddRange(new object[] { "Return to Playlist", "Do Nothing" }); + SelectedShowEndDropDown.Location = new Point(194, 80); + SelectedShowEndDropDown.Name = "SelectedShowEndDropDown"; + SelectedShowEndDropDown.Size = new Size(150, 23); + SelectedShowEndDropDown.TabIndex = 2; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(6, 25); + label4.Name = "label4"; + label4.Size = new Size(140, 15); + label4.TabIndex = 1; + label4.Text = "When a Button is pressed"; + // + // ButtonPressDropDown + // + ButtonPressDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonPressDropDown.FormattingEnabled = true; + ButtonPressDropDown.Items.AddRange(new object[] { "Play Assigned Show", "Play Random Show" }); + ButtonPressDropDown.Location = new Point(194, 22); + ButtonPressDropDown.Name = "ButtonPressDropDown"; + ButtonPressDropDown.Size = new Size(150, 23); + ButtonPressDropDown.TabIndex = 0; + // + // ShowSelectorAssignmentGroupBox + // + ShowSelectorAssignmentGroupBox.Controls.Add(AssignmentPanel); + ShowSelectorAssignmentGroupBox.Controls.Add(label14); + ShowSelectorAssignmentGroupBox.Controls.Add(label15); + ShowSelectorAssignmentGroupBox.Controls.Add(label16); + ShowSelectorAssignmentGroupBox.Controls.Add(label17); + ShowSelectorAssignmentGroupBox.Controls.Add(label10); + ShowSelectorAssignmentGroupBox.Controls.Add(label11); + ShowSelectorAssignmentGroupBox.Controls.Add(label12); + ShowSelectorAssignmentGroupBox.Controls.Add(label13); + ShowSelectorAssignmentGroupBox.Controls.Add(label8); + ShowSelectorAssignmentGroupBox.Controls.Add(label9); + ShowSelectorAssignmentGroupBox.Controls.Add(label7); + ShowSelectorAssignmentGroupBox.Controls.Add(label6); + ShowSelectorAssignmentGroupBox.Location = new Point(368, 12); + ShowSelectorAssignmentGroupBox.Name = "ShowSelectorAssignmentGroupBox"; + ShowSelectorAssignmentGroupBox.Size = new Size(256, 370); + ShowSelectorAssignmentGroupBox.TabIndex = 3; + ShowSelectorAssignmentGroupBox.TabStop = false; + ShowSelectorAssignmentGroupBox.Text = "Show Selector Assignment"; + // + // AssignmentPanel + // + AssignmentPanel.Controls.Add(ButtonAssignDropDown1); + AssignmentPanel.Controls.Add(ButtonAssignDropDown2); + AssignmentPanel.Controls.Add(ButtonAssignDropDown3); + AssignmentPanel.Controls.Add(ButtonAssignDropDown4); + AssignmentPanel.Controls.Add(ButtonAssignDropDown5); + AssignmentPanel.Controls.Add(ButtonAssignDropDown6); + AssignmentPanel.Controls.Add(ButtonAssignDropDown7); + AssignmentPanel.Controls.Add(ButtonAssignDropDown8); + AssignmentPanel.Controls.Add(ButtonAssignDropDown9); + AssignmentPanel.Controls.Add(ButtonAssignDropDown10); + AssignmentPanel.Controls.Add(ButtonAssignDropDown11); + AssignmentPanel.Controls.Add(ButtonAssignDropDown12); + AssignmentPanel.Location = new Point(100, 22); + AssignmentPanel.Name = "AssignmentPanel"; + AssignmentPanel.Size = new Size(150, 342); + AssignmentPanel.TabIndex = 0; + // + // ButtonAssignDropDown1 + // + ButtonAssignDropDown1.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown1.FormattingEnabled = true; + ButtonAssignDropDown1.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown1.Location = new Point(0, 0); + ButtonAssignDropDown1.Name = "ButtonAssignDropDown1"; + ButtonAssignDropDown1.Size = new Size(150, 23); + ButtonAssignDropDown1.TabIndex = 0; + // + // ButtonAssignDropDown2 + // + ButtonAssignDropDown2.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown2.FormattingEnabled = true; + ButtonAssignDropDown2.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown2.Location = new Point(0, 29); + ButtonAssignDropDown2.Name = "ButtonAssignDropDown2"; + ButtonAssignDropDown2.Size = new Size(150, 23); + ButtonAssignDropDown2.TabIndex = 1; + // + // ButtonAssignDropDown3 + // + ButtonAssignDropDown3.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown3.FormattingEnabled = true; + ButtonAssignDropDown3.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown3.Location = new Point(0, 58); + ButtonAssignDropDown3.Name = "ButtonAssignDropDown3"; + ButtonAssignDropDown3.Size = new Size(150, 23); + ButtonAssignDropDown3.TabIndex = 2; + // + // ButtonAssignDropDown4 + // + ButtonAssignDropDown4.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown4.FormattingEnabled = true; + ButtonAssignDropDown4.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown4.Location = new Point(0, 87); + ButtonAssignDropDown4.Name = "ButtonAssignDropDown4"; + ButtonAssignDropDown4.Size = new Size(150, 23); + ButtonAssignDropDown4.TabIndex = 3; + // + // ButtonAssignDropDown5 + // + ButtonAssignDropDown5.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown5.FormattingEnabled = true; + ButtonAssignDropDown5.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown5.Location = new Point(0, 116); + ButtonAssignDropDown5.Name = "ButtonAssignDropDown5"; + ButtonAssignDropDown5.Size = new Size(150, 23); + ButtonAssignDropDown5.TabIndex = 4; + // + // ButtonAssignDropDown6 + // + ButtonAssignDropDown6.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown6.FormattingEnabled = true; + ButtonAssignDropDown6.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown6.Location = new Point(0, 145); + ButtonAssignDropDown6.Name = "ButtonAssignDropDown6"; + ButtonAssignDropDown6.Size = new Size(150, 23); + ButtonAssignDropDown6.TabIndex = 5; + // + // ButtonAssignDropDown7 + // + ButtonAssignDropDown7.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown7.FormattingEnabled = true; + ButtonAssignDropDown7.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown7.Location = new Point(0, 174); + ButtonAssignDropDown7.Name = "ButtonAssignDropDown7"; + ButtonAssignDropDown7.Size = new Size(150, 23); + ButtonAssignDropDown7.TabIndex = 6; + // + // ButtonAssignDropDown8 + // + ButtonAssignDropDown8.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown8.FormattingEnabled = true; + ButtonAssignDropDown8.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown8.Location = new Point(0, 203); + ButtonAssignDropDown8.Name = "ButtonAssignDropDown8"; + ButtonAssignDropDown8.Size = new Size(150, 23); + ButtonAssignDropDown8.TabIndex = 7; + // + // ButtonAssignDropDown9 + // + ButtonAssignDropDown9.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown9.FormattingEnabled = true; + ButtonAssignDropDown9.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown9.Location = new Point(0, 232); + ButtonAssignDropDown9.Name = "ButtonAssignDropDown9"; + ButtonAssignDropDown9.Size = new Size(150, 23); + ButtonAssignDropDown9.TabIndex = 8; + // + // ButtonAssignDropDown10 + // + ButtonAssignDropDown10.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown10.FormattingEnabled = true; + ButtonAssignDropDown10.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown10.Location = new Point(0, 261); + ButtonAssignDropDown10.Name = "ButtonAssignDropDown10"; + ButtonAssignDropDown10.Size = new Size(150, 23); + ButtonAssignDropDown10.TabIndex = 9; + // + // ButtonAssignDropDown11 + // + ButtonAssignDropDown11.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown11.FormattingEnabled = true; + ButtonAssignDropDown11.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown11.Location = new Point(0, 290); + ButtonAssignDropDown11.Name = "ButtonAssignDropDown11"; + ButtonAssignDropDown11.Size = new Size(150, 23); + ButtonAssignDropDown11.TabIndex = 10; + // + // ButtonAssignDropDown12 + // + ButtonAssignDropDown12.DropDownStyle = ComboBoxStyle.DropDownList; + ButtonAssignDropDown12.FormattingEnabled = true; + ButtonAssignDropDown12.Items.AddRange(new object[] { "(None)" }); + ButtonAssignDropDown12.Location = new Point(0, 319); + ButtonAssignDropDown12.Name = "ButtonAssignDropDown12"; + ButtonAssignDropDown12.Size = new Size(150, 23); + ButtonAssignDropDown12.TabIndex = 11; + // + // label14 + // + label14.AutoSize = true; + label14.Location = new Point(6, 344); + label14.Name = "label14"; + label14.Size = new Size(58, 15); + label14.TabIndex = 30; + label14.Text = "Button 12"; + // + // label15 + // + label15.AutoSize = true; + label15.Location = new Point(6, 315); + label15.Name = "label15"; + label15.Size = new Size(58, 15); + label15.TabIndex = 28; + label15.Text = "Button 11"; + // + // label16 + // + label16.AutoSize = true; + label16.Location = new Point(6, 286); + label16.Name = "label16"; + label16.Size = new Size(58, 15); + label16.TabIndex = 26; + label16.Text = "Button 10"; + // + // label17 + // + label17.AutoSize = true; + label17.Location = new Point(6, 257); + label17.Name = "label17"; + label17.Size = new Size(52, 15); + label17.TabIndex = 24; + label17.Text = "Button 9"; + // + // label10 + // + label10.AutoSize = true; + label10.Location = new Point(6, 228); + label10.Name = "label10"; + label10.Size = new Size(52, 15); + label10.TabIndex = 22; + label10.Text = "Button 8"; + // + // label11 + // + label11.AutoSize = true; + label11.Location = new Point(6, 199); + label11.Name = "label11"; + label11.Size = new Size(52, 15); + label11.TabIndex = 20; + label11.Text = "Button 7"; + // + // label12 + // + label12.AutoSize = true; + label12.Location = new Point(6, 170); + label12.Name = "label12"; + label12.Size = new Size(52, 15); + label12.TabIndex = 18; + label12.Text = "Button 6"; + // + // label13 + // + label13.AutoSize = true; + label13.Location = new Point(6, 141); + label13.Name = "label13"; + label13.Size = new Size(52, 15); + label13.TabIndex = 16; + label13.Text = "Button 5"; + // + // label8 + // + label8.AutoSize = true; + label8.Location = new Point(6, 112); + label8.Name = "label8"; + label8.Size = new Size(52, 15); + label8.TabIndex = 14; + label8.Text = "Button 4"; + // + // label9 + // + label9.AutoSize = true; + label9.Location = new Point(6, 83); + label9.Name = "label9"; + label9.Size = new Size(52, 15); + label9.TabIndex = 12; + label9.Text = "Button 3"; + // + // label7 + // + label7.AutoSize = true; + label7.Location = new Point(6, 54); + label7.Name = "label7"; + label7.Size = new Size(52, 15); + label7.TabIndex = 10; + label7.Text = "Button 2"; + // + // label6 + // + label6.AutoSize = true; + label6.Location = new Point(6, 25); + label6.Name = "label6"; + label6.Size = new Size(52, 15); + label6.TabIndex = 8; + label6.Text = "Button 1"; + // + // SkitListView + // + SkitListView.AutoArrange = false; + SkitListView.Columns.AddRange(new ColumnHeader[] { NameColumnHeader, LengthColumnHeader }); + SkitListView.ContextMenuStrip = SkitContextMenu; + SkitListView.GridLines = true; + SkitListView.HeaderStyle = ColumnHeaderStyle.Nonclickable; + SkitListView.Location = new Point(12, 327); + SkitListView.MultiSelect = false; + SkitListView.Name = "SkitListView"; + SkitListView.Size = new Size(350, 201); + SkitListView.TabIndex = 2; + SkitListView.UseCompatibleStateImageBehavior = false; + SkitListView.View = View.Details; + // + // NameColumnHeader + // + NameColumnHeader.Text = "Skit Name"; + NameColumnHeader.Width = 260; + // + // LengthColumnHeader + // + LengthColumnHeader.Text = "Length"; + // + // SkitContextMenu + // + SkitContextMenu.Items.AddRange(new ToolStripItem[] { RemoveButton }); + SkitContextMenu.Name = "ShowContextMenu"; + SkitContextMenu.Size = new Size(118, 26); + // + // RemoveButton + // + RemoveButton.Name = "RemoveButton"; + RemoveButton.Size = new Size(117, 22); + RemoveButton.Text = "Remove"; + RemoveButton.Click += RemoveButton_Click; + // + // SaveButton + // + SaveButton.DialogResult = DialogResult.OK; + SaveButton.Location = new Point(549, 503); + SaveButton.Name = "SaveButton"; + SaveButton.Size = new Size(75, 25); + SaveButton.TabIndex = 10; + SaveButton.Text = "Save"; + SaveButton.UseVisualStyleBackColor = true; + SaveButton.Click += SaveButton_Click; + // + // CancelButton + // + CancelButton.DialogResult = DialogResult.Cancel; + CancelButton.Location = new Point(468, 503); + CancelButton.Name = "CancelButton"; + CancelButton.Size = new Size(75, 25); + CancelButton.TabIndex = 11; + CancelButton.Text = "Cancel"; + CancelButton.UseVisualStyleBackColor = true; + // + // SelectShowFileDialog + // + SelectShowFileDialog.Filter = "UST Showtapes|*.ust"; + SelectShowFileDialog.Multiselect = true; + // + // PlaybackGroupBox + // + PlaybackGroupBox.Controls.Add(label20); + PlaybackGroupBox.Controls.Add(label19); + PlaybackGroupBox.Controls.Add(label18); + PlaybackGroupBox.Controls.Add(ResyncTimeOption); + PlaybackGroupBox.Controls.Add(FrameShiftOption); + PlaybackGroupBox.Controls.Add(FrameSkipOption); + PlaybackGroupBox.Location = new Point(368, 388); + PlaybackGroupBox.Name = "PlaybackGroupBox"; + PlaybackGroupBox.Size = new Size(256, 109); + PlaybackGroupBox.TabIndex = 4; + PlaybackGroupBox.TabStop = false; + PlaybackGroupBox.Text = "Tracking Adjustments"; + // + // label20 + // + label20.AutoSize = true; + label20.Location = new Point(6, 82); + label20.Name = "label20"; + label20.Size = new Size(67, 15); + label20.TabIndex = 5; + label20.Text = "Frame Shift"; + // + // label19 + // + label19.AutoSize = true; + label19.Location = new Point(6, 53); + label19.Name = "label19"; + label19.Size = new Size(73, 15); + label19.TabIndex = 4; + label19.Text = "Resync Time"; + // + // label18 + // + label18.AutoSize = true; + label18.Location = new Point(6, 24); + label18.Name = "label18"; + label18.Size = new Size(65, 15); + label18.TabIndex = 3; + label18.Text = "Frame Skip"; + // + // ResyncTimeOption + // + ResyncTimeOption.Location = new Point(200, 51); + ResyncTimeOption.Maximum = new decimal(new int[] { 60, 0, 0, 0 }); + ResyncTimeOption.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + ResyncTimeOption.Name = "ResyncTimeOption"; + ResyncTimeOption.Size = new Size(50, 23); + ResyncTimeOption.TabIndex = 1; + ResyncTimeOption.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // FrameShiftOption + // + FrameShiftOption.Location = new Point(200, 80); + FrameShiftOption.Maximum = new decimal(new int[] { 60, 0, 0, 0 }); + FrameShiftOption.Minimum = new decimal(new int[] { 60, 0, 0, int.MinValue }); + FrameShiftOption.Name = "FrameShiftOption"; + FrameShiftOption.Size = new Size(50, 23); + FrameShiftOption.TabIndex = 2; + // + // FrameSkipOption + // + FrameSkipOption.Location = new Point(200, 22); + FrameSkipOption.Maximum = new decimal(new int[] { 10, 0, 0, 0 }); + FrameSkipOption.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + FrameSkipOption.Name = "FrameSkipOption"; + FrameSkipOption.Size = new Size(50, 23); + FrameSkipOption.TabIndex = 0; + FrameSkipOption.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // AdvancedSettingsForm + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(636, 540); + Controls.Add(PlaybackGroupBox); + Controls.Add(CancelButton); + Controls.Add(SaveButton); + Controls.Add(SkitListView); + Controls.Add(ShowSelectorAssignmentGroupBox); + Controls.Add(ShowSelectorGroupBox); + Controls.Add(PlaylistPlaybackGroupBox); + FormBorderStyle = FormBorderStyle.FixedDialog; + MaximizeBox = false; + Name = "AdvancedSettingsForm"; + Text = "Advanced Settings"; + PlaylistPlaybackGroupBox.ResumeLayout(false); + PlaylistPlaybackGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)IntermissionTimeCounter).EndInit(); + ShowSelectorGroupBox.ResumeLayout(false); + ShowSelectorGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)CooldownTimeCounter).EndInit(); + ShowSelectorAssignmentGroupBox.ResumeLayout(false); + ShowSelectorAssignmentGroupBox.PerformLayout(); + AssignmentPanel.ResumeLayout(false); + SkitContextMenu.ResumeLayout(false); + PlaybackGroupBox.ResumeLayout(false); + PlaybackGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)ResyncTimeOption).EndInit(); + ((System.ComponentModel.ISupportInitialize)FrameShiftOption).EndInit(); + ((System.ComponentModel.ISupportInitialize)FrameSkipOption).EndInit(); + ResumeLayout(false); + } + + #endregion + + private GroupBox PlaylistPlaybackGroupBox; + private Label label1; + private ComboBox PlaylistStartedDropDown; + private ComboBox ShowEndedDropDown; + private ComboBox IntermissionUnitDropDown; + private NumericUpDown IntermissionTimeCounter; + private CheckBox IntermissionCheckBox; + private Label label2; + private GroupBox ShowSelectorGroupBox; + private ComboBox CooldownUnitDropDown; + private NumericUpDown CooldownTimeCounter; + private CheckBox CooldownCheckBox; + private Label label3; + private ComboBox SelectedShowEndDropDown; + private Label label4; + private ComboBox ButtonPressDropDown; + private Label label5; + private ComboBox AlreadyPlayingDropDown; + private CheckBox SkitCheckBox; + private Button AddSkitButton; + private GroupBox ShowSelectorAssignmentGroupBox; + private Label label14; + private ComboBox ButtonAssignDropDown12; + private Label label15; + private ComboBox ButtonAssignDropDown11; + private Label label16; + private ComboBox ButtonAssignDropDown10; + private Label label17; + private ComboBox ButtonAssignDropDown9; + private Label label10; + private ComboBox ButtonAssignDropDown8; + private Label label11; + private ComboBox ButtonAssignDropDown7; + private Label label12; + private ComboBox ButtonAssignDropDown6; + private Label label13; + private ComboBox ButtonAssignDropDown5; + private Label label8; + private ComboBox ButtonAssignDropDown4; + private Label label9; + private ComboBox ButtonAssignDropDown3; + private Label label7; + private ComboBox ButtonAssignDropDown2; + private Label label6; + private ComboBox ButtonAssignDropDown1; + private ListView SkitListView; + private ColumnHeader NameColumnHeader; + private ColumnHeader LengthColumnHeader; + private Button SaveButton; + private Button CancelButton; + private ContextMenuStrip SkitContextMenu; + private ToolStripMenuItem RemoveButton; + private OpenFileDialog SelectShowFileDialog; + private Panel AssignmentPanel; + private CheckBox LoopCheckBox; + private GroupBox PlaybackGroupBox; + private Label label18; + private NumericUpDown ResyncTimeOption; + private NumericUpDown FrameShiftOption; + private NumericUpDown FrameSkipOption; + private Label label20; + private Label label19; + } +} \ No newline at end of file diff --git a/PC3Player/PC3Player/AdvancedSettingsForm.cs b/PC3Player/PC3Player/AdvancedSettingsForm.cs new file mode 100644 index 0000000..59d0df6 --- /dev/null +++ b/PC3Player/PC3Player/AdvancedSettingsForm.cs @@ -0,0 +1,146 @@ +namespace PC3Player +{ + public partial class AdvancedSettingsForm : Form + { + public PlaylistConfig EditingObject { get; set; } + public AdvancedSettingsForm(PlaylistConfig playlist) + { + InitializeComponent(); + EditingObject = playlist; + + PlaylistStartedDropDown.SelectedIndex = EditingObject.PlaylistStartOption; + ShowEndedDropDown.SelectedIndex = EditingObject.PlaylistShowEndOption; + IntermissionCheckBox.Checked = EditingObject.PlaylistIntermissionOption; + IntermissionTimeCounter.Value = EditingObject.PlaylistIntermissionTimeOption; + IntermissionUnitDropDown.SelectedIndex = EditingObject.PlaylistIntermissionUnitOption; + LoopCheckBox.Checked = EditingObject.PlaylistLoopOption; + + ButtonPressDropDown.SelectedIndex = EditingObject.SelectorButtonPressOption; + AlreadyPlayingDropDown.SelectedIndex = EditingObject.SelectorShowAlreadyPlayingOption; + SelectedShowEndDropDown.SelectedIndex = EditingObject.SelectorShowEndOption; + CooldownCheckBox.Checked = EditingObject.SelectorCooldownOption; + CooldownTimeCounter.Value = EditingObject.SelectorCooldownTimeOption; + CooldownUnitDropDown.SelectedIndex = EditingObject.SelectorCooldownUnitOption; + SkitCheckBox.Checked = EditingObject.SelectorPlaySkitOption; + + FrameSkipOption.Value = EditingObject.FramesPerTick; + FrameShiftOption.Value = EditingObject.FrameShift; + ResyncTimeOption.Value = EditingObject.ResyncSeconds; + + IntermissionTimeCounter.Enabled = IntermissionCheckBox.Checked; + IntermissionUnitDropDown.Enabled = IntermissionCheckBox.Checked; + + CooldownTimeCounter.Enabled = CooldownCheckBox.Checked; + CooldownUnitDropDown.Enabled = CooldownCheckBox.Checked; + + int i = 0; + foreach (ComboBox c in AssignmentPanel.Controls) + { + foreach (PlaylistShow s in EditingObject.Shows) c.Items.Add(s.Name); + if (EditingObject.SelectorAssignments[i] == null) c.SelectedIndex = 0; + else c.SelectedIndex = (int)EditingObject.SelectorAssignments[i] + 1; + i++; + } + + UpdateListView(); + } + + private void UpdateListView() + { + SkitListView.Items.Clear(); + foreach (PlaylistShow s in EditingObject.Skits) SkitListView.Items.Add(new ListViewItem(new[] { s.Name, s.Length })); + SkitCheckBox.Enabled = EditingObject.Skits.Count != 0; + if (EditingObject.Skits.Count == 0) SkitCheckBox.Checked = false; + } + + private void IntermissionCheckBox_CheckedChanged(object sender, EventArgs e) + { + IntermissionTimeCounter.Enabled = IntermissionCheckBox.Checked; + IntermissionUnitDropDown.Enabled = IntermissionCheckBox.Checked; + } + + private void CooldownCheckBox_CheckedChanged(object sender, EventArgs e) + { + CooldownTimeCounter.Enabled = CooldownCheckBox.Checked; + CooldownUnitDropDown.Enabled = CooldownCheckBox.Checked; + } + + private void RemoveButton_Click(object sender, EventArgs e) + { + if (SkitListView.SelectedIndices.Count == 0) return; + EditingObject.Skits.RemoveAt(SkitListView.SelectedIndices[0]); + UpdateListView(); + } + + private void AddSkitButton_Click(object sender, EventArgs e) + { + if (!MainForm.ChannelMappingLoaded) + { + MessageBox.Show("You must load a channel mapping first.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + if (SelectShowFileDialog.ShowDialog() == DialogResult.OK) + { + string tempUSTData = File.ReadAllText(SelectShowFileDialog.FileName); + if (!tempUSTData.StartsWith("UST,2,")) + { + MessageBox.Show("Selected showtape is not a UST version 2 showtape.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + string[] headerData = tempUSTData.Split(';')[0].Split(','); + string[] stringyBits = tempUSTData.Split(';')[1].Split(','); + + TimeSpan time = TimeSpan.FromSeconds(stringyBits.Length / 60); + string formattedLength = time.ToString(@"hh\:mm\:ss"); + + tempUSTData = null; + stringyBits = null; + + if (headerData[3] != EditingObject.Mapping.Type) + { + MessageBox.Show( + $"Selected showtape type does not match the loaded Channel Map." + + $"\nLoaded Channel Map Type: {EditingObject.Mapping.Type}" + + $"\nShowtape Type: {headerData[3]}" + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + EditingObject.Skits.Add(new PlaylistShow(headerData[2], formattedLength, headerData[3], SelectShowFileDialog.FileName)); + UpdateListView(); + } + } + + private void SaveButton_Click(object sender, EventArgs e) + { + EditingObject.PlaylistStartOption = PlaylistStartedDropDown.SelectedIndex; + EditingObject.PlaylistShowEndOption = ShowEndedDropDown.SelectedIndex; + EditingObject.PlaylistIntermissionOption = IntermissionCheckBox.Checked; + EditingObject.PlaylistIntermissionTimeOption = (int)IntermissionTimeCounter.Value; + EditingObject.PlaylistIntermissionUnitOption = IntermissionUnitDropDown.SelectedIndex; + EditingObject.PlaylistLoopOption = LoopCheckBox.Checked; + + EditingObject.SelectorButtonPressOption = ButtonPressDropDown.SelectedIndex; + EditingObject.SelectorShowAlreadyPlayingOption = AlreadyPlayingDropDown.SelectedIndex; + EditingObject.SelectorShowEndOption = SelectedShowEndDropDown.SelectedIndex; + EditingObject.SelectorCooldownOption = CooldownCheckBox.Checked; + EditingObject.SelectorCooldownTimeOption = (int)CooldownTimeCounter.Value; + EditingObject.SelectorCooldownUnitOption = CooldownUnitDropDown.SelectedIndex; + EditingObject.SelectorPlaySkitOption = SkitCheckBox.Checked; + + EditingObject.ResyncSeconds = (int)ResyncTimeOption.Value; + EditingObject.FrameShift = (int)FrameShiftOption.Value; + EditingObject.FramesPerTick = (int)FrameSkipOption.Value; + + int i = 0; + foreach (ComboBox c in AssignmentPanel.Controls) + { + if (c.SelectedIndex == 0) EditingObject.SelectorAssignments[i] = null; + else EditingObject.SelectorAssignments[i] = c.SelectedIndex - 1; + i++; + } + } + } +} diff --git a/PC3Player/PC3Player/AdvancedSettingsForm.resx b/PC3Player/PC3Player/AdvancedSettingsForm.resx new file mode 100644 index 0000000..d429170 --- /dev/null +++ b/PC3Player/PC3Player/AdvancedSettingsForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 51, 28 + + + 215, 23 + + \ No newline at end of file diff --git a/PC3Player/PC3Player/Channel Mappings/BeachBearJasper.pcm b/PC3Player/PC3Player/Channel Mappings/BeachBearJasper.pcm new file mode 100644 index 0000000..e9e947d --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/BeachBearJasper.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Beach Bear/Jasper,Rockafire Explosion/3-Stage;58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/Channel Mappings/BillyBob.pcm b/PC3Player/PC3Player/Channel Mappings/BillyBob.pcm new file mode 100644 index 0000000..d416da3 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/BillyBob.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Billy Bob,Rockafire Explosion/3-Stage;91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,0,0,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/Channel Mappings/CyberChuck.pcm b/PC3Player/PC3Player/Channel Mappings/CyberChuck.pcm new file mode 100644 index 0000000..9e9bdc3 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/CyberChuck.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Cyberamic Chuck E.,Cyberamics;1,2,3,4,5,6,7,8;0 diff --git a/PC3Player/PC3Player/Channel Mappings/CyberHelen.pcm b/PC3Player/PC3Player/Channel Mappings/CyberHelen.pcm new file mode 100644 index 0000000..32ff5a8 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/CyberHelen.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Cyberamic Helen,Cyberamics;9,10,11,12,13,14,15,16;0 diff --git a/PC3Player/PC3Player/Channel Mappings/CyberJasper.pcm b/PC3Player/PC3Player/Channel Mappings/CyberJasper.pcm new file mode 100644 index 0000000..f44b677 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/CyberJasper.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Cyberamic Jasper,Cyberamics;25,26,27,28,29,30,31,32;0 diff --git a/PC3Player/PC3Player/Channel Mappings/CyberMunch.pcm b/PC3Player/PC3Player/Channel Mappings/CyberMunch.pcm new file mode 100644 index 0000000..cc82fc2 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/CyberMunch.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Cyberamic Munch,Cyberamics;17,18,19,20,21,22,23,24;0 diff --git a/PC3Player/PC3Player/Channel Mappings/CyberPasqually.pcm b/PC3Player/PC3Player/Channel Mappings/CyberPasqually.pcm new file mode 100644 index 0000000..679f158 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/CyberPasqually.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Cyberamic Pasqually,Cyberamics;33,34,35,36,37,38,39,40;0 diff --git a/PC3Player/PC3Player/Channel Mappings/DookPasqually.pcm b/PC3Player/PC3Player/Channel Mappings/DookPasqually.pcm new file mode 100644 index 0000000..3735c20 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/DookPasqually.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Dook/Pasqually,Rockafire Explosion/3-Stage;74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/Channel Mappings/FatzMunch.pcm b/PC3Player/PC3Player/Channel Mappings/FatzMunch.pcm new file mode 100644 index 0000000..2e49933 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/FatzMunch.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Fatz/Munch,Rockafire Explosion/3-Stage;42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/Channel Mappings/MitziHelen.pcm b/PC3Player/PC3Player/Channel Mappings/MitziHelen.pcm new file mode 100644 index 0000000..511704a --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/MitziHelen.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Mitzi/Helen,Rockafire Explosion/3-Stage;23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,0,0,0,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/Channel Mappings/RolfeChuck.pcm b/PC3Player/PC3Player/Channel Mappings/RolfeChuck.pcm new file mode 100644 index 0000000..6875d55 --- /dev/null +++ b/PC3Player/PC3Player/Channel Mappings/RolfeChuck.pcm @@ -0,0 +1 @@ +PC3MAPPING,2,Rolfe/Chuck,Rockafire Explosion/3-Stage;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,0,0,0,0,0,0,0,0,0,0;0 diff --git a/PC3Player/PC3Player/DataTypes.cs b/PC3Player/PC3Player/DataTypes.cs new file mode 100644 index 0000000..353eb32 --- /dev/null +++ b/PC3Player/PC3Player/DataTypes.cs @@ -0,0 +1,73 @@ +using System.Diagnostics.Eventing.Reader; + +namespace PC3Player +{ + public class PlaylistShow + { + public PlaylistShow(string name, string length, string type, string filePath) + { + Name = name; + Type = type; + Length = length; + FilePath = filePath; + } + + public string Name { get; set; } + public string Type { get; set; } + public string Length { get; set; } + public string FilePath { get; set; } + } + + public class ChannelMapping + { + public ChannelMapping(string name, string type, int[] bits, int[] invertedBits) + { + Name = name; + Type = type; + Bits = bits; + InvertedBits = invertedBits; + } + + public string Name { get; set; } + public string Type { get; set; } + public int[] Bits { get; set; } + public int[] InvertedBits { get; set; } + } + + public class PlaylistConfig + { + public int PlaylistStartOption { get; set; } = 0; + public int PlaylistShowEndOption { get; set; } = 0; + public bool PlaylistIntermissionOption { get; set; } = false; + public int PlaylistIntermissionTimeOption { get; set; } = 8; + public int PlaylistIntermissionUnitOption { get; set; } = 0; + public bool PlaylistLoopOption { get; set; } = true; + + public int SelectorButtonPressOption { get; set; } = 0; + public int SelectorShowAlreadyPlayingOption { get; set; } = 0; + public int SelectorShowEndOption { get; set; } = 0; + public bool SelectorCooldownOption { get; set; } = false; + public int SelectorCooldownTimeOption { get; set; } = 30; + public int SelectorCooldownUnitOption { get; set; } = 1; + public bool SelectorPlaySkitOption { get; set; } = false; + + public int?[] SelectorAssignments { get; set; } = new int?[12]; + + public int FramesPerTick { get; set; } = 6; + public int ResyncSeconds { get; set; } = 1; + public int FrameShift { get; set; } = 0; + + public ChannelMapping Mapping { get; set; } + + public List Shows { get; set; } = new List(); + public List Skits { get; set; } = new List(); + } + + public enum StartMethod + { + PlaylistStart, + PlaylistShowEnd, + SelectorPress, + SelectorShowEnd + } +} diff --git a/PC3Player/PC3Player/MainForm.Designer.cs b/PC3Player/PC3Player/MainForm.Designer.cs new file mode 100644 index 0000000..377a583 --- /dev/null +++ b/PC3Player/PC3Player/MainForm.Designer.cs @@ -0,0 +1,414 @@ +namespace PC3Player +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + ControllerGroupBox = new GroupBox(); + ControllerSelectSerialPortButton = new Button(); + ControllerAutoDetectButton = new Button(); + PlaybackControlsGroupBox = new GroupBox(); + TimeLabel = new Label(); + StopButton = new Button(); + SkipButton = new Button(); + PauseButton = new Button(); + StartButton = new Button(); + ShowSelectorGroupBox = new GroupBox(); + ShowSelectorSelectPortButton = new Button(); + ShowSelectorAutoDetectButton = new Button(); + PlaylistGroupBox = new GroupBox(); + AdvancedSettingsButton = new Button(); + AddShowButton = new Button(); + LoadPlaylistButton = new Button(); + SavePlaylistButton = new Button(); + ChannelMappingGroupBox = new GroupBox(); + LoadChannelMapButton = new Button(); + PlaylistListView = new ListView(); + NameColumnHeader = new ColumnHeader(); + LengthColumnHeader = new ColumnHeader(); + ShowContextMenu = new ContextMenuStrip(components); + MoveUpButton = new ToolStripMenuItem(); + MoveDownButton = new ToolStripMenuItem(); + RemoveButton = new ToolStripMenuItem(); + SelectShowFileDialog = new OpenFileDialog(); + SelectMappingFileDialog = new OpenFileDialog(); + SavePlaylistFileDialog = new SaveFileDialog(); + OpenPlaylistFileDialog = new OpenFileDialog(); + NewPlaylistButton = new Button(); + ControllerGroupBox.SuspendLayout(); + PlaybackControlsGroupBox.SuspendLayout(); + ShowSelectorGroupBox.SuspendLayout(); + PlaylistGroupBox.SuspendLayout(); + ChannelMappingGroupBox.SuspendLayout(); + ShowContextMenu.SuspendLayout(); + SuspendLayout(); + // + // ControllerGroupBox + // + ControllerGroupBox.Controls.Add(ControllerSelectSerialPortButton); + ControllerGroupBox.Controls.Add(ControllerAutoDetectButton); + ControllerGroupBox.Location = new Point(12, 12); + ControllerGroupBox.Name = "ControllerGroupBox"; + ControllerGroupBox.Size = new Size(256, 84); + ControllerGroupBox.TabIndex = 0; + ControllerGroupBox.TabStop = false; + ControllerGroupBox.Text = "Controller: Not Connected"; + // + // ControllerSelectSerialPortButton + // + ControllerSelectSerialPortButton.Location = new Point(6, 53); + ControllerSelectSerialPortButton.Name = "ControllerSelectSerialPortButton"; + ControllerSelectSerialPortButton.Size = new Size(244, 25); + ControllerSelectSerialPortButton.TabIndex = 1; + ControllerSelectSerialPortButton.Text = "Select Serial Port"; + ControllerSelectSerialPortButton.UseVisualStyleBackColor = true; + ControllerSelectSerialPortButton.Click += ControllerSelectSerialPortButton_Click; + // + // ControllerAutoDetectButton + // + ControllerAutoDetectButton.Location = new Point(6, 22); + ControllerAutoDetectButton.Name = "ControllerAutoDetectButton"; + ControllerAutoDetectButton.Size = new Size(244, 25); + ControllerAutoDetectButton.TabIndex = 0; + ControllerAutoDetectButton.Text = "Auto Detect"; + ControllerAutoDetectButton.UseVisualStyleBackColor = true; + ControllerAutoDetectButton.Click += ControllerAutoDetectButton_Click; + // + // PlaybackControlsGroupBox + // + PlaybackControlsGroupBox.Controls.Add(TimeLabel); + PlaybackControlsGroupBox.Controls.Add(StopButton); + PlaybackControlsGroupBox.Controls.Add(SkipButton); + PlaybackControlsGroupBox.Controls.Add(PauseButton); + PlaybackControlsGroupBox.Controls.Add(StartButton); + PlaybackControlsGroupBox.Location = new Point(12, 376); + PlaybackControlsGroupBox.Name = "PlaybackControlsGroupBox"; + PlaybackControlsGroupBox.Size = new Size(256, 99); + PlaybackControlsGroupBox.TabIndex = 4; + PlaybackControlsGroupBox.TabStop = false; + PlaybackControlsGroupBox.Text = "Controls: Not Playing"; + // + // TimeLabel + // + TimeLabel.AutoSize = true; + TimeLabel.Location = new Point(6, 81); + TimeLabel.Name = "TimeLabel"; + TimeLabel.Size = new Size(104, 15); + TimeLabel.TabIndex = 4; + TimeLabel.Text = "(00:00:00/00:00:00)"; + // + // StopButton + // + StopButton.Enabled = false; + StopButton.Location = new Point(131, 53); + StopButton.Name = "StopButton"; + StopButton.Size = new Size(119, 25); + StopButton.TabIndex = 3; + StopButton.Text = "Stop"; + StopButton.UseVisualStyleBackColor = true; + StopButton.Click += StopButton_Click; + // + // SkipButton + // + SkipButton.Enabled = false; + SkipButton.Location = new Point(6, 53); + SkipButton.Name = "SkipButton"; + SkipButton.Size = new Size(119, 25); + SkipButton.TabIndex = 2; + SkipButton.Text = "Skip"; + SkipButton.UseVisualStyleBackColor = true; + SkipButton.Click += SkipButton_Click; + // + // PauseButton + // + PauseButton.Enabled = false; + PauseButton.Location = new Point(131, 22); + PauseButton.Name = "PauseButton"; + PauseButton.Size = new Size(119, 25); + PauseButton.TabIndex = 1; + PauseButton.Text = "Pause"; + PauseButton.UseVisualStyleBackColor = true; + PauseButton.Click += PauseButton_Click; + // + // StartButton + // + StartButton.Location = new Point(6, 22); + StartButton.Name = "StartButton"; + StartButton.Size = new Size(119, 25); + StartButton.TabIndex = 0; + StartButton.Text = "Start Playlist"; + StartButton.UseVisualStyleBackColor = true; + StartButton.Click += StartButton_Click; + // + // ShowSelectorGroupBox + // + ShowSelectorGroupBox.Controls.Add(ShowSelectorSelectPortButton); + ShowSelectorGroupBox.Controls.Add(ShowSelectorAutoDetectButton); + ShowSelectorGroupBox.Enabled = false; + ShowSelectorGroupBox.Location = new Point(12, 102); + ShowSelectorGroupBox.Name = "ShowSelectorGroupBox"; + ShowSelectorGroupBox.Size = new Size(256, 84); + ShowSelectorGroupBox.TabIndex = 1; + ShowSelectorGroupBox.TabStop = false; + ShowSelectorGroupBox.Text = "Show Selector: Not Connected"; + // + // ShowSelectorSelectPortButton + // + ShowSelectorSelectPortButton.Location = new Point(6, 53); + ShowSelectorSelectPortButton.Name = "ShowSelectorSelectPortButton"; + ShowSelectorSelectPortButton.Size = new Size(244, 25); + ShowSelectorSelectPortButton.TabIndex = 1; + ShowSelectorSelectPortButton.Text = "Select Serial Port"; + ShowSelectorSelectPortButton.UseVisualStyleBackColor = true; + ShowSelectorSelectPortButton.Click += ShowSelectorSelectPortButton_Click; + // + // ShowSelectorAutoDetectButton + // + ShowSelectorAutoDetectButton.Location = new Point(6, 22); + ShowSelectorAutoDetectButton.Name = "ShowSelectorAutoDetectButton"; + ShowSelectorAutoDetectButton.Size = new Size(244, 25); + ShowSelectorAutoDetectButton.TabIndex = 0; + ShowSelectorAutoDetectButton.Text = "Auto Detect"; + ShowSelectorAutoDetectButton.UseVisualStyleBackColor = true; + ShowSelectorAutoDetectButton.Click += ShowSelectorAutoDetectButton_Click; + // + // PlaylistGroupBox + // + PlaylistGroupBox.Controls.Add(NewPlaylistButton); + PlaylistGroupBox.Controls.Add(AdvancedSettingsButton); + PlaylistGroupBox.Controls.Add(AddShowButton); + PlaylistGroupBox.Controls.Add(LoadPlaylistButton); + PlaylistGroupBox.Controls.Add(SavePlaylistButton); + PlaylistGroupBox.Location = new Point(12, 254); + PlaylistGroupBox.Name = "PlaylistGroupBox"; + PlaylistGroupBox.Size = new Size(256, 116); + PlaylistGroupBox.TabIndex = 3; + PlaylistGroupBox.TabStop = false; + PlaylistGroupBox.Text = "Playlist: Unsaved"; + // + // AdvancedSettingsButton + // + AdvancedSettingsButton.Location = new Point(131, 22); + AdvancedSettingsButton.Name = "AdvancedSettingsButton"; + AdvancedSettingsButton.Size = new Size(119, 25); + AdvancedSettingsButton.TabIndex = 1; + AdvancedSettingsButton.Text = "Advanced"; + AdvancedSettingsButton.UseVisualStyleBackColor = true; + AdvancedSettingsButton.Click += AdvancedSettingsButton_Click; + // + // AddShowButton + // + AddShowButton.Location = new Point(6, 22); + AddShowButton.Name = "AddShowButton"; + AddShowButton.Size = new Size(119, 25); + AddShowButton.TabIndex = 0; + AddShowButton.Text = "Add Show"; + AddShowButton.UseVisualStyleBackColor = true; + AddShowButton.Click += AddShowButton_Click; + // + // LoadPlaylistButton + // + LoadPlaylistButton.Location = new Point(131, 53); + LoadPlaylistButton.Name = "LoadPlaylistButton"; + LoadPlaylistButton.Size = new Size(119, 25); + LoadPlaylistButton.TabIndex = 3; + LoadPlaylistButton.Text = "Load Playlist"; + LoadPlaylistButton.UseVisualStyleBackColor = true; + LoadPlaylistButton.Click += LoadPlaylistButton_Click; + // + // SavePlaylistButton + // + SavePlaylistButton.Location = new Point(6, 53); + SavePlaylistButton.Name = "SavePlaylistButton"; + SavePlaylistButton.Size = new Size(119, 25); + SavePlaylistButton.TabIndex = 2; + SavePlaylistButton.Text = "Save Playlist"; + SavePlaylistButton.UseVisualStyleBackColor = true; + SavePlaylistButton.Click += SavePlaylistButton_Click; + // + // ChannelMappingGroupBox + // + ChannelMappingGroupBox.Controls.Add(LoadChannelMapButton); + ChannelMappingGroupBox.Location = new Point(12, 192); + ChannelMappingGroupBox.Name = "ChannelMappingGroupBox"; + ChannelMappingGroupBox.Size = new Size(256, 56); + ChannelMappingGroupBox.TabIndex = 2; + ChannelMappingGroupBox.TabStop = false; + ChannelMappingGroupBox.Text = "Channel Map: None Loaded"; + // + // LoadChannelMapButton + // + LoadChannelMapButton.Location = new Point(6, 22); + LoadChannelMapButton.Name = "LoadChannelMapButton"; + LoadChannelMapButton.Size = new Size(244, 25); + LoadChannelMapButton.TabIndex = 0; + LoadChannelMapButton.Text = "Load Channel Map"; + LoadChannelMapButton.UseVisualStyleBackColor = true; + LoadChannelMapButton.Click += LoadChannelMapButton_Click; + // + // PlaylistListView + // + PlaylistListView.AutoArrange = false; + PlaylistListView.Columns.AddRange(new ColumnHeader[] { NameColumnHeader, LengthColumnHeader }); + PlaylistListView.ContextMenuStrip = ShowContextMenu; + PlaylistListView.GridLines = true; + PlaylistListView.HeaderStyle = ColumnHeaderStyle.Nonclickable; + PlaylistListView.Location = new Point(274, 12); + PlaylistListView.MultiSelect = false; + PlaylistListView.Name = "PlaylistListView"; + PlaylistListView.Size = new Size(400, 463); + PlaylistListView.TabIndex = 5; + PlaylistListView.UseCompatibleStateImageBehavior = false; + PlaylistListView.View = View.Details; + // + // NameColumnHeader + // + NameColumnHeader.Text = "Show Name"; + NameColumnHeader.Width = 310; + // + // LengthColumnHeader + // + LengthColumnHeader.Text = "Length"; + // + // ShowContextMenu + // + ShowContextMenu.Items.AddRange(new ToolStripItem[] { MoveUpButton, MoveDownButton, RemoveButton }); + ShowContextMenu.Name = "ShowContextMenu"; + ShowContextMenu.Size = new Size(139, 70); + // + // MoveUpButton + // + MoveUpButton.Name = "MoveUpButton"; + MoveUpButton.Size = new Size(138, 22); + MoveUpButton.Text = "Move Up"; + MoveUpButton.Click += MoveUpButton_Click; + // + // MoveDownButton + // + MoveDownButton.Name = "MoveDownButton"; + MoveDownButton.Size = new Size(138, 22); + MoveDownButton.Text = "Move Down"; + MoveDownButton.Click += MoveDownButton_Click; + // + // RemoveButton + // + RemoveButton.Name = "RemoveButton"; + RemoveButton.Size = new Size(138, 22); + RemoveButton.Text = "Remove"; + RemoveButton.Click += RemoveButton_Click; + // + // SelectShowFileDialog + // + SelectShowFileDialog.Filter = "UST Showtapes|*.ust"; + SelectShowFileDialog.Multiselect = true; + // + // SelectMappingFileDialog + // + SelectMappingFileDialog.Filter = "PinkConnection Channel Map|*.pcm"; + // + // SavePlaylistFileDialog + // + SavePlaylistFileDialog.Filter = "PC3Player Playlists (JSON Files)|*.json"; + // + // OpenPlaylistFileDialog + // + OpenPlaylistFileDialog.Filter = "PC3Player Playlists (JSON Files)|*.json"; + // + // NewPlaylistButton + // + NewPlaylistButton.Location = new Point(6, 84); + NewPlaylistButton.Name = "NewPlaylistButton"; + NewPlaylistButton.Size = new Size(244, 25); + NewPlaylistButton.TabIndex = 4; + NewPlaylistButton.Text = "New Playlist"; + NewPlaylistButton.UseVisualStyleBackColor = true; + NewPlaylistButton.Click += NewPlaylistButton_Click; + // + // MainForm + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(686, 487); + Controls.Add(PlaylistListView); + Controls.Add(ChannelMappingGroupBox); + Controls.Add(PlaylistGroupBox); + Controls.Add(ShowSelectorGroupBox); + Controls.Add(PlaybackControlsGroupBox); + Controls.Add(ControllerGroupBox); + FormBorderStyle = FormBorderStyle.FixedSingle; + Icon = (Icon)resources.GetObject("$this.Icon"); + MaximizeBox = false; + Name = "MainForm"; + Text = "PinkConnection3 Player"; + FormClosing += MainForm_FormClosing; + ControllerGroupBox.ResumeLayout(false); + PlaybackControlsGroupBox.ResumeLayout(false); + PlaybackControlsGroupBox.PerformLayout(); + ShowSelectorGroupBox.ResumeLayout(false); + PlaylistGroupBox.ResumeLayout(false); + ChannelMappingGroupBox.ResumeLayout(false); + ShowContextMenu.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private GroupBox ControllerGroupBox; + private Button ControllerSelectSerialPortButton; + private Button ControllerAutoDetectButton; + private GroupBox PlaybackControlsGroupBox; + private Button SkipButton; + private Button PauseButton; + private Button StartButton; + private GroupBox ShowSelectorGroupBox; + private Button ShowSelectorSelectPortButton; + private Button ShowSelectorAutoDetectButton; + private GroupBox PlaylistGroupBox; + private Button AddShowButton; + private GroupBox ChannelMappingGroupBox; + private Button LoadChannelMapButton; + private ListView PlaylistListView; + private ColumnHeader NameColumnHeader; + private ColumnHeader LengthColumnHeader; + private Button StopButton; + private Button SavePlaylistButton; + private Button LoadPlaylistButton; + private OpenFileDialog SelectShowFileDialog; + private OpenFileDialog SelectMappingFileDialog; + private Button AdvancedSettingsButton; + private ContextMenuStrip ShowContextMenu; + private ToolStripMenuItem RemoveButton; + private ToolStripMenuItem MoveUpButton; + private ToolStripMenuItem MoveDownButton; + private SaveFileDialog SavePlaylistFileDialog; + private OpenFileDialog OpenPlaylistFileDialog; + private Label TimeLabel; + private Button NewPlaylistButton; + } +} diff --git a/PC3Player/PC3Player/MainForm.cs b/PC3Player/PC3Player/MainForm.cs new file mode 100644 index 0000000..27aee6a --- /dev/null +++ b/PC3Player/PC3Player/MainForm.cs @@ -0,0 +1,900 @@ +using SoundFlow.Backends.MiniAudio; +using SoundFlow.Components; +using SoundFlow.Enums; +using SoundFlow.Providers; + +using System.Globalization; +using System.IO.Ports; +using System.Numerics; +using System.Text.Json; +using System.Timers; + +namespace PC3Player +{ + public partial class MainForm : Form + { + static PlaylistConfig Config = new(); + + static SerialPort ControllerPort; + static SerialPort ShowSelectorPort; + + static Random SelectRandom = new Random(); + + System.Timers.Timer FrameTimer; + System.Timers.Timer ResyncTimer; + System.Timers.Timer GUIUpdateTimer; + + SoundPlayer AudioPlayer; + StreamDataProvider dataProvider; + + static int ShowtapeIndex = 0; + static int PlaylistIndex = 0; + static int IntermissionSecondsLeft = 0; + static int IntermissionTotalTime = 0; + static int ControllerBits; + static int SelectorButtons; + + static bool ControllerConnected = false; + static bool ShowSelectorConnected = false; + + public static bool ChannelMappingLoaded = false; + + static bool Playing = false; + static bool Paused = false; + static bool InvalidateSave = false; + static bool Intermission; + + static string[] ShowtapeFrames; + static PlaylistShow CurrentlyPlaying; + + public MainForm() + { + InitializeComponent(); + GUIUpdateTimer = new System.Timers.Timer(1000); + GUIUpdateTimer.Elapsed += GUIUpdateTick; + GUIUpdateTimer.AutoReset = true; + MiniAudioEngine audioEngine = new MiniAudioEngine(48000, Capability.Playback); + } + + private void UpdateListView() + { + PlaylistListView.Items.Clear(); + foreach (PlaylistShow s in Config.Shows) PlaylistListView.Items.Add(new ListViewItem(new[] { s.Name, s.Length })); + } + + private void LoadChannelMapButton_Click(object sender, EventArgs e) + { + if (!ControllerConnected) + { + MessageBox.Show("You must connect a Controller first.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + if (SelectMappingFileDialog.ShowDialog() == DialogResult.OK) + { + string tempMappingData = File.ReadAllText(SelectMappingFileDialog.FileName); + if (!tempMappingData.StartsWith("PC3MAPPING,2,")) + { + MessageBox.Show("Selected mapping file is not a Version 2 PinkConnection channel map.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + string[] header = tempMappingData.Split(";")[0].Split(","); + + List targetBits = new List(); + foreach (string s in tempMappingData.Split(";")[1].Split(",")) + { + targetBits.Add(int.Parse(s)); + } + + if (ChannelMappingLoaded) + { + if (header[3] != Config.Mapping.Type) + { + MessageBox.Show( + $"Selected Channel Map \"{header[2]}\"'s type does not match the old Channel Map's type." + + $"\nOld Channel Map Type: {Config.Mapping.Type}" + + $"\nNew Channel Map Type: {header[3]}" + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + + if (targetBits.Count != ControllerBits) + { + MessageBox.Show("The mapped channel count is not equal to the connected controller's bit count.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + if (targetBits.Count % 4 != 0) + { + MessageBox.Show("The mapped channel count is not divisible by 4.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + List invertedBits = new List(); + foreach (string s in tempMappingData.Split(";")[2].Split(",")) + { + int ints = int.Parse(s); + if (ints == 0) continue; + invertedBits.Add(ints); + } + + Config.Mapping = new ChannelMapping(header[2], header[3], targetBits.ToArray(), invertedBits.ToArray()); + ChannelMappingLoaded = true; + + ChannelMappingGroupBox.Text = $"Channel Map: {Config.Mapping.Name}"; + InvalidateSave = true; + } + } + + private void ControllerAutoDetectButton_Click(object sender, EventArgs e) + { + if (ControllerConnected) + { + MessageBox.Show("A Controller is already connected.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + string successPortName = ""; + + foreach (string portName in SerialPort.GetPortNames()) + { + if (ControllerConnected) break; + try + { + SerialPort tempPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); + tempPort.Open(); + + for (int i = 0; i < 10; i++) + { + tempPort.Write("! "); + Thread.Sleep(100); + string readAttempt = tempPort.ReadExisting(); + if (readAttempt.Split(",")[0] == "PC3") + { + ControllerBits = int.Parse(readAttempt.Split(",")[1]); + ControllerConnected = true; + tempPort.Close(); + ControllerPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); + ControllerPort.Open(); + successPortName = portName; + break; + } + } + tempPort.Close(); + } + catch (Exception) { continue; } + } + if (!ControllerConnected) + { + MessageBox.Show("Could not detect a PinkConnection3 controller on any of your serial ports.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + ControllerGroupBox.Text = $"Controller: {ControllerBits} channel on {successPortName}"; + ControllerAutoDetectButton.Enabled = false; + ControllerSelectSerialPortButton.Enabled = false; + } + + private void ControllerSelectSerialPortButton_Click(object sender, EventArgs e) + { + if (ControllerConnected) + { + MessageBox.Show("A Controller is already connected.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + SerialPortSelector portDialog = new SerialPortSelector(); + if (portDialog.ShowDialog() != DialogResult.OK) return; + + string successPortName = ""; + + try + { + SerialPort tempPort = new SerialPort(portDialog.PortName, 9600, Parity.None, 8, StopBits.One); + tempPort.Open(); + + for (int i = 0; i < 10; i++) + { + tempPort.Write("! "); + Thread.Sleep(100); + string readAttempt = tempPort.ReadExisting(); + if (readAttempt.Split(",")[0] == "PC3") + { + ControllerBits = int.Parse(readAttempt.Split(",")[1]); + ControllerConnected = true; + tempPort.Close(); + ControllerPort = new SerialPort(portDialog.PortName, 9600, Parity.None, 8, StopBits.One); + ControllerPort.Open(); + successPortName = portDialog.PortName; + break; + } + } + + tempPort.Close(); + + if (!ControllerConnected) + { + MessageBox.Show("Could not detect a PinkConnection3 controller on the specified serial port.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + } + catch (Exception ex) + { + MessageBox.Show("Could not detect a PinkConnection3 controller on the specified serial port.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + ControllerGroupBox.Text = $"Controller: {ControllerBits} channel on {successPortName}"; + ControllerAutoDetectButton.Enabled = false; + ControllerSelectSerialPortButton.Enabled = false; + } + + private void AddShowButton_Click(object sender, EventArgs e) + { + if (!ChannelMappingLoaded) + { + MessageBox.Show("You must load a channel mapping first.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + if (SelectShowFileDialog.ShowDialog() == DialogResult.OK) + { + foreach (string showFilePath in SelectShowFileDialog.FileNames) + { + string tempUSTData = File.ReadAllText(showFilePath); + if (!tempUSTData.StartsWith("UST,2,")) + { + MessageBox.Show($"Selected showtape \"{Path.GetFileNameWithoutExtension(showFilePath)}\" is not a UST version 2 showtape.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + string[] headerData = tempUSTData.Split(';')[0].Split(','); + string[] stringyBits = tempUSTData.Split(';')[1].Split(','); + + TimeSpan time = TimeSpan.FromSeconds(stringyBits.Length / 60); + string formattedLength = time.ToString(@"hh\:mm\:ss"); + + tempUSTData = null; + stringyBits = null; + + if (headerData[3] != Config.Mapping.Type) + { + MessageBox.Show( + $"Selected Show \"{headerData[2]}\"'s type does not match the loaded Channel Map." + + $"\nLoaded Channel Map Type: {Config.Mapping.Type}" + + $"\nShow Type: {headerData[3]}" + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + Config.Shows.Add(new PlaylistShow(headerData[2], formattedLength, headerData[3], showFilePath)); + } + UpdateListView(); + InvalidateSave = true; + } + } + + private void RemoveButton_Click(object sender, EventArgs e) + { + if (PlaylistListView.SelectedIndices.Count == 0) return; + Config = RemoveShowAt(PlaylistListView.SelectedIndices[0], Config); + UpdateListView(); + InvalidateSave = true; + } + + private void MoveUpButton_Click(object sender, EventArgs e) + { + if (PlaylistListView.SelectedIndices.Count == 0) return; + int selectedIndex = PlaylistListView.SelectedIndices[0]; + if (selectedIndex == 0) return; + int assindex = 0; + foreach (int? assignment in Config.SelectorAssignments) + { + if (assignment == null) continue; + if (assignment == selectedIndex) Config.SelectorAssignments[assindex]--; + if (assignment == selectedIndex - 1) Config.SelectorAssignments[assindex]++; + assindex++; + } + PlaylistShow temp = Config.Shows[selectedIndex]; + Config.Shows.RemoveAt(selectedIndex); + Config.Shows.Insert(selectedIndex - 1, temp); + UpdateListView(); + InvalidateSave = true; + } + + private void MoveDownButton_Click(object sender, EventArgs e) + { + if (PlaylistListView.SelectedIndices.Count == 0) return; + int selectedIndex = PlaylistListView.SelectedIndices[0]; + if (selectedIndex >= PlaylistListView.Items.Count - 1) return; + int assindex = 0; + foreach (int? assignment in Config.SelectorAssignments) + { + if (assignment == null) continue; + if (assignment == selectedIndex) Config.SelectorAssignments[assindex]++; + if (assignment == selectedIndex + 1) Config.SelectorAssignments[assindex]--; + assindex++; + } + PlaylistShow temp = Config.Shows[selectedIndex]; + Config.Shows.RemoveAt(selectedIndex); + Config.Shows.Insert(selectedIndex + 1, temp); + UpdateListView(); + InvalidateSave = true; + } + + private void AdvancedSettingsButton_Click(object sender, EventArgs e) + { + AdvancedSettingsForm advancedSettingsForm = new AdvancedSettingsForm(Config); + if (Config != advancedSettingsForm.EditingObject) InvalidateSave = true; + if (advancedSettingsForm.ShowDialog() == DialogResult.OK) Config = advancedSettingsForm.EditingObject; + } + + private void ShowSelectorAutoDetectButton_Click(object sender, EventArgs e) + { + if (ShowSelectorConnected) + { + MessageBox.Show("A Show Selector is already connected.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + string successPortName = ""; + + foreach (string portName in SerialPort.GetPortNames()) + { + if (ShowSelectorConnected) break; + try + { + SerialPort tempPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); + tempPort.Open(); + + for (int i = 0; i < 10; i++) + { + tempPort.Write("\" "); + Thread.Sleep(100); + string readAttempt = tempPort.ReadExisting(); + if (readAttempt.Split(",")[0] == "PCSELECTOR") + { + SelectorButtons = int.Parse(readAttempt.Split(",")[1]); + ShowSelectorConnected = true; + tempPort.Close(); + ShowSelectorPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One); + ShowSelectorPort.Open(); + successPortName = portName; + break; + } + } + tempPort.Close(); + } + catch (Exception) { continue; } + } + if (!ShowSelectorConnected) + { + MessageBox.Show("Could not detect a PinkConnection Show Selector on any of your serial ports.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + ShowSelectorGroupBox.Text = $"{SelectorButtons} button on {successPortName}"; + ShowSelectorAutoDetectButton.Enabled = false; + ShowSelectorSelectPortButton.Enabled = false; + } + + private void ShowSelectorSelectPortButton_Click(object sender, EventArgs e) + { + if (ShowSelectorConnected) + { + MessageBox.Show("A Show Selector is already connected.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + SerialPortSelector portDialog = new SerialPortSelector(); + if (portDialog.ShowDialog() != DialogResult.OK) return; + + string successPortName = ""; + + try + { + SerialPort tempPort = new SerialPort(portDialog.PortName, 9600, Parity.None, 8, StopBits.One); + tempPort.Open(); + + for (int i = 0; i < 10; i++) + { + tempPort.Write("\" "); + Thread.Sleep(100); + string readAttempt = tempPort.ReadExisting(); + if (readAttempt.Split(",")[0] == "PCSELECTOR") + { + SelectorButtons = int.Parse(readAttempt.Split(",")[1]); + ShowSelectorConnected = true; + tempPort.Close(); + ShowSelectorPort = new SerialPort(portDialog.PortName, 9600, Parity.None, 8, StopBits.One); + ShowSelectorPort.Open(); + successPortName = portDialog.PortName; + break; + } + } + + tempPort.Close(); + + if (!ShowSelectorConnected) + { + MessageBox.Show("Could not detect a PinkConnection Show Selector on the specified serial port.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + } + catch (Exception ex) + { + MessageBox.Show("Could not detect a PinkConnection Show Selector on the specified serial port.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + ShowSelectorGroupBox.Text = $"Show Selector: {SelectorButtons} button on {successPortName}"; + ShowSelectorAutoDetectButton.Enabled = false; + ShowSelectorSelectPortButton.Enabled = false; + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (Playing) Stop(); + if (InvalidateSave) + if (MessageBox.Show( + "You have an unsaved Playlist!\nDo you still want to exit?", + "Unsaved Playlist", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + e.Cancel = true; + } + + private void SavePlaylistButton_Click(object sender, EventArgs e) + { + if (SavePlaylistFileDialog.ShowDialog() == DialogResult.OK) + { + File.WriteAllText(SavePlaylistFileDialog.FileName, JsonSerializer.Serialize(Config)); + InvalidateSave = false; + PlaylistGroupBox.Text = "Playlist: " + Path.GetFileNameWithoutExtension(SavePlaylistFileDialog.FileName); + } + } + + private void LoadPlaylistButton_Click(object sender, EventArgs e) + { + if (Playing) + { + if (MessageBox.Show( + "A show is currently playing!\nPerforming this action will stop it.\nAre you sure?", + "Show Playing", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + return; + Stop(); + } + + if (!ControllerConnected) + { + MessageBox.Show("You must connect a Controller first."); + return; + } + + if (InvalidateSave) + if (MessageBox.Show( + "You have an unsaved Playlist!\nDo you still want to load another?", + "Unsaved Playlist", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + return; + + if (OpenPlaylistFileDialog.ShowDialog() == DialogResult.OK) + { + PlaylistConfig? tempConfig; + try + { + tempConfig = JsonSerializer.Deserialize(File.ReadAllText(OpenPlaylistFileDialog.FileName)); + } + catch (Exception ex) + { + MessageBox.Show("Could not read the selected Playlist file.\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (tempConfig == null) + { + MessageBox.Show("Could not read the selected Playlist file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + if (tempConfig.Mapping != null) + { + if (tempConfig.Mapping.Bits.Length % 4 != 0) + { + MessageBox.Show("The mapped channel count is not divisible by 4.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + ChannelMappingGroupBox.Text = $"Channel Map: {tempConfig.Mapping.Name}"; + ChannelMappingLoaded = true; + } + + int showIndex = 0; + foreach (PlaylistShow show in tempConfig.Shows) + { + if (tempConfig.Mapping == null) + { + MessageBox.Show( + "The Playlist does not have a loaded Channel Map" + + "\nNo Shows or Skits will be loaded." + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + break; + } + if (!File.Exists(show.FilePath)) + { + if (MessageBox.Show( + $"Could not locate the file for the Show {show.Name}" + + $"\nWould you like to relocate it?", + "Could not find Show file", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) == DialogResult.Yes) + { + if (SelectShowFileDialog.ShowDialog() == DialogResult.OK) + { + tempConfig.Shows[showIndex].FilePath = SelectShowFileDialog.FileName; + } + else tempConfig = RemoveShowAt(showIndex, tempConfig); + } + else tempConfig = RemoveShowAt(showIndex, tempConfig); + } + if (show.Type != tempConfig.Mapping.Type) + { + MessageBox.Show( + $"Show \"{show.Name}\"'s type does not match the Playlist's Channel Map." + + $"\nIt will be removed from the playlist." + + $"\nLoaded Channel Map Type: {tempConfig.Mapping.Type}" + + $"\nShow Type: {show.Type}" + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + tempConfig = RemoveShowAt(showIndex, tempConfig); + } + + showIndex++; + } + + int skitIndex = 0; + foreach (PlaylistShow skit in tempConfig.Skits) + { + if (tempConfig.Mapping == null) break; + if (!File.Exists(skit.FilePath)) + { + if (MessageBox.Show( + $"Could not locate the file for the Skit {skit.Name}" + + $"\nWould you like to relocate it?", + "Could not find Skit file", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) == DialogResult.Yes) + { + if (SelectShowFileDialog.ShowDialog() == DialogResult.OK) + { + tempConfig.Skits[skitIndex].FilePath = SelectShowFileDialog.FileName; + } + else tempConfig.Skits.RemoveAt(skitIndex); + } + else tempConfig.Skits.RemoveAt(skitIndex); + } + if (skit.Type != tempConfig.Mapping.Type) + { + MessageBox.Show( + $"Skit \"{skit.Name}\"'s type does not match the Playlist's Channel Map." + + $"\nIt will be removed from the playlist." + + $"\nLoaded Channel Map Type: {tempConfig.Mapping.Type}" + + $"\nSkit Type: {skit.Type}" + , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + tempConfig.Skits.RemoveAt(skitIndex); + } + + skitIndex++; + } + + Config = tempConfig; + PlaylistGroupBox.Text = "Playlist: " + Path.GetFileNameWithoutExtension(OpenPlaylistFileDialog.FileName); + UpdateListView(); + InvalidateSave = false; + } + } + + private PlaylistConfig RemoveShowAt(int position, PlaylistConfig pcfg) + { + int assindex = 0; + foreach (int? assignment in pcfg.SelectorAssignments) + { + if (assignment == null) continue; + if (assignment == position) pcfg.SelectorAssignments[assindex] = null; + if (assignment > position) pcfg.SelectorAssignments[assindex]--; + assindex++; + } + pcfg.Shows.RemoveAt(position); + return pcfg; + } + + private void LoadNextShowtape() + { + string tempUSTData = File.ReadAllText(CurrentlyPlaying.FilePath); + if (!tempUSTData.StartsWith("UST,2,")) + { + MessageBox.Show($"Selected showtape \"{Path.GetFileNameWithoutExtension(CurrentlyPlaying.FilePath)}\" is not a UST version 2 showtape.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + string[] stringyBits = tempUSTData.Split(';')[1].Split(','); + if (File.Exists("pc3playertempaudio.tmp")) File.Delete("pc3playertempaudio.tmp"); + File.WriteAllBytes("pc3playertempaudio.tmp", Convert.FromBase64String(tempUSTData.Split(';')[2])); + + tempUSTData = null; + + List tempShowData = new List(); + + foreach (string stringyFrame in stringyBits) + { + BigInteger frame = BigInteger.Parse(stringyFrame, NumberStyles.HexNumber); + int selectBit = 0; + char[] frameStringOut = new char[64]; + for (int i = 0; i < Config.Mapping.Bits.Count() / 4; i++) + { + byte quartet = 64; + for (int j = 0; j < 4; j++) + { + if (Config.Mapping.Bits[selectBit] == 0) continue; + if (Config.Mapping.InvertedBits.Contains(Config.Mapping.Bits[selectBit])) { if (!((frame & BigInteger.Pow(2, Config.Mapping.Bits[selectBit] - 1)) == BigInteger.Pow(2, Config.Mapping.Bits[selectBit] - 1))) quartet += (byte)Math.Pow(2, j); } + else { if ((frame & BigInteger.Pow(2, Config.Mapping.Bits[selectBit] - 1)) == BigInteger.Pow(2, Config.Mapping.Bits[selectBit] - 1)) quartet += (byte)Math.Pow(2, j); } + selectBit++; + } + frameStringOut[i] = (char)quartet; + } + tempShowData.Add(new string(frameStringOut).Trim()); + } + + ShowtapeFrames = tempShowData.ToArray(); + } + + private void SelectNextShowtape(StartMethod method) + { + ShowtapeFrames = []; + ShowtapeIndex = 0; + if (Config.Shows.Count() == 0) + { + MessageBox.Show("There are no shows in the playlist.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return; + } + bool willStartShow = false; + bool bypassIntermission = false; + if (Intermission) + { + Intermission = false; + bypassIntermission = true; + GUIUpdateTimer.Stop(); + } + switch (method) + { + case StartMethod.PlaylistStart: + switch (Config.PlaylistStartOption) + { + case 0: + PlaylistIndex = 0; + willStartShow = true; + break; + case 1: + PlaylistIndex = SelectRandom.Next(Config.Shows.Count()); + willStartShow = true; + break; + } + break; + case StartMethod.PlaylistShowEnd: + if (Config.PlaylistIntermissionOption && (!bypassIntermission)) + { + Intermission = true; + IntermissionTotalTime = IntermissionSecondsLeft = Config.PlaylistIntermissionTimeOption * ((Config.PlaylistIntermissionUnitOption == 1) ? 1 : 60); + SkipButton.Enabled = true; + StopButton.Enabled = true; + PauseButton.Enabled = true; + Invoke(delegate { PlaybackControlsGroupBox.Text = "Controls: Intermission"; }); + GUIUpdateTimer.Start(); + } + else + { + switch (Config.PlaylistShowEndOption) + { + case 0: + PlaylistIndex++; + if (PlaylistIndex >= Config.Shows.Count()) + { + if (Config.PlaylistLoopOption) + { + PlaylistIndex = 0; + willStartShow = true; + } + } + else willStartShow = true; + break; + case 1: + PlaylistIndex = SelectRandom.Next(Config.Shows.Count()); + willStartShow = true; + break; + case 2: + willStartShow = true; + break; + case 3: + break; + } + } + break; + } + + if (willStartShow) + { + CurrentlyPlaying = Config.Shows[PlaylistIndex]; + LoadNextShowtape(); + + FrameTimer = new System.Timers.Timer((1000d / 60d) * Config.FramesPerTick); + FrameTimer.Elapsed += PlayFrame; + FrameTimer.AutoReset = true; + + ResyncTimer = new System.Timers.Timer(Config.ResyncSeconds * 1000); + ResyncTimer.Elapsed += Resync; + ResyncTimer.AutoReset = true; + + dataProvider = new StreamDataProvider(File.OpenRead("pc3playertempaudio.tmp")); + AudioPlayer = new SoundPlayer(dataProvider); + + Invoke(delegate { PlaybackControlsGroupBox.Text = $"Controls: Playing {CurrentlyPlaying.Name}"; }); + + Mixer.Master.AddComponent(AudioPlayer); + Playing = true; + AudioPlayer.Play(); + FrameTimer.Start(); + ResyncTimer.Start(); + GUIUpdateTimer.Start(); + PauseButton.Enabled = true; + StopButton.Enabled = true; + SkipButton.Enabled = true; + } + } + + void GUIUpdateTick(object sender, ElapsedEventArgs e) + { + if (Playing) + { + Invoke(delegate { TimeLabel.Text = $"({TimeSpan.FromSeconds(AudioPlayer.Time).ToString(@"hh\:mm\:ss")}/{CurrentlyPlaying.Length})"; }); + } + if (Intermission) + { + if (IntermissionSecondsLeft == 0) SelectNextShowtape(StartMethod.PlaylistShowEnd); + Invoke(delegate { TimeLabel.Text = $"({TimeSpan.FromSeconds(IntermissionTotalTime - IntermissionSecondsLeft).ToString(@"hh\:mm\:ss")}/{TimeSpan.FromSeconds(IntermissionTotalTime).ToString(@"hh\:mm\:ss")})"; }); + if (!Paused) IntermissionSecondsLeft--; + } + } + + void PlayFrame(object sender, ElapsedEventArgs e) + { + if (ShowtapeIndex + Config.FrameShift >= ShowtapeFrames.Length) + { + Stop(); + SelectNextShowtape(StartMethod.PlaylistShowEnd); + return; + } + ControllerPort.Write(ShowtapeFrames[ShowtapeIndex + Config.FrameShift]); + ShowtapeIndex += Config.FramesPerTick; + } + + void Resync(object sender, ElapsedEventArgs e) + { + ShowtapeIndex = (int)(AudioPlayer.Time * 60f); + } + + private void PauseButton_Click(object sender, EventArgs e) + { + if (Paused) + { + Paused = false; + PauseButton.Text = "Pause"; + if (Playing) + { + FrameTimer.Start(); + ResyncTimer.Start(); + AudioPlayer.Seek((float)(((float)ShowtapeIndex) / 60.0)); + AudioPlayer.Play(); + } + } + else + { + Paused = true; + PauseButton.Text = "Unpause"; + if (Playing) + { + FrameTimer.Stop(); + ResyncTimer.Stop(); + AudioPlayer.Pause(); + } + } + } + + private void StopButton_Click(object sender, EventArgs e) + { + Stop(); + } + + private void SkipButton_Click(object sender, EventArgs e) + { + if (Playing) Stop(); + SelectNextShowtape(StartMethod.PlaylistShowEnd); + } + + private void StartButton_Click(object sender, EventArgs e) + { + if (Playing) + { + if (MessageBox.Show( + "A show is currently playing!\nPerforming this action will stop it.\nAre you sure?", + "Show Playing", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + return; + Stop(); + } + SelectNextShowtape(StartMethod.PlaylistStart); + } + + void Stop() + { + Playing = false; + AudioPlayer.Stop(); + FrameTimer.Stop(); + ResyncTimer.Stop(); + GUIUpdateTimer.Stop(); + ResyncTimer.Dispose(); + FrameTimer.Dispose(); + PauseButton.Enabled = false; + StopButton.Enabled = false; + SkipButton.Enabled = false; + if (Playing) Mixer.Master.RemoveComponent(AudioPlayer); + Paused = false; + Invoke(delegate + { + PlaybackControlsGroupBox.Text = "Controls: Not Playing"; + PauseButton.Text = "Pause"; + TimeLabel.Text = "(00:00:00/00:00:00)"; + }); + dataProvider.Dispose(); + if (File.Exists("pc3playertempaudio.tmp")) File.Delete("pc3playertempaudio.tmp"); + ShowtapeFrames = []; + ShowtapeIndex = 0; + } + + private void NewPlaylistButton_Click(object sender, EventArgs e) + { + if (Playing) + { + if (MessageBox.Show( + "A show is currently playing!\nPerforming this action will stop it.\nAre you sure?", + "Show Playing", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + return; + Stop(); + } + + if (InvalidateSave) + if (MessageBox.Show( + "You have an unsaved Playlist!\nDo you still want to create a new one?", + "Unsaved Playlist", + MessageBoxButtons.YesNo, + MessageBoxIcon.Exclamation + ) != DialogResult.Yes) + return; + + Config = new PlaylistConfig(); + ChannelMappingGroupBox.Text = "Channel Map: None Loaded"; + PlaylistGroupBox.Text = "Playlist: Unsaved"; + UpdateListView(); + InvalidateSave = false; + } + } +} diff --git a/PC3Player/PC3Player/MainForm.resx b/PC3Player/PC3Player/MainForm.resx new file mode 100644 index 0000000..95d5455 --- /dev/null +++ b/PC3Player/PC3Player/MainForm.resx @@ -0,0 +1,3064 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 387, 56 + + + 36, 56 + + + 202, 56 + + + 543, 56 + + + 710, 56 + + + 131 + + + + + AAABAAkAEBAAAAEAIABoBAAAlgAAABgYAAABACAAiAkAAP4EAAAgIAAAAQAgAKgQAACGDgAAMDAAAAEA + IACoJQAALh8AAEBAAAABACAAKEIAANZEAABISAAAAQAgAIhUAAD+hgAAYGAAAAEAIAColAAAhtsAAICA + AAABACAAKAgBAC5wAQAAAAAAAQAgADo0AABWeAIAKAAAABAAAAAgAAAAAQAgAAAAAAAABAAAACgAAAAo + AAAAAAAAAAAAAMmk/wTLqf9j07b/2trB//3Wwf//zsD//8/A///PwP//z8D//8/A///PwP//z8D//86/ + //3Ntf/azKn/Y8ul/wTLqf9j3cb/7vbw///9+///9Pn//9jz///U8///1fP//9Xz///V8///1fP//9Xz + ///V8v//0+j//8/D/+7Mqf9j07b/2vbw///////////////////p+///1fb//9X2///V9v//1fb//9X3 + ///V9///1fb//9X3///T6P//zbX/2trB//37+f///Pn//////////////f7//+X6///V9v//1fb//9X2 + ///U8f//1O3//9Xy///V9///1fL//86///3bw///7eL//9rC///69//////////////9////7Pv//9r1 + ///R1P//zbj//821///OvP//0t///9Xz///PwP//28T//+fY///Qsf//9/L///////////////////// + ///n3v//zq///9zP///d4P//18X//86z///k6f//2ML//9vE///o2P//0LH///Xu///9+////v7///// + ///9/P//2b///9zE///9/f///v////j2///Wu///693//9zE///bxP//6Nj//82r///Vuv//17z//93G + ///z7P7/+vX5/9K0/v/l1P//////////////////9/H///n1///bwv//28T//+jY///Pr///6Nj//+rc + ///Vuf//17z6//bq4f/TtPr/5NL8/////f////////////z6///8+f//28L//9vE///o2P//0bL///n1 + ////////6Nj//9Cw+//16N3/2b70/9q/9f/99uL///7v//r2/P/bwv//7eH//9vD///bxP//6Nj//86u + ///o2f//697//9a7///Wuff//PHY/+3b5P/Pr/z/4svs/+/e4//dxfb/0bL9//Lp+//bw///28P///Dm + ///Yvv//17z//9a7///bwPX/8eHg///21f/+9db/69jm/9e69v/Ttfn/2Lz0/+/f4v/99N7/28H3/9rB + //38+v///fv///z6///8+fr//vXc///31P//9tX///bV///31f/88dj/+e3a//3y1///99T//fLX/9q+ + 8/3Ttv/a9vD///////////////vs///21f//9tX///bV///21f//9tX///bV///31f//9tX///fU//bo + 3f/Ttfnay6n/Y93G/+728P///fr7//303//989b//fPX//3z1//989f//fPX//3z1//989f//fLX//bo + 3f/dw/Huy6n/Y8mk/wTLqf9j07b/2trA/P3awPT/2sDz/9rA8//awPP/2sDz/9rA8//awPP/2sDz/9q/ + 9P3Ttfnay6n/Y8ml/wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAKAAAABgAAAAwAAAAAQAgAAAAAAAACQAAACgAAAAoAAAAAAAAAAAAAMyq + /wDj0P8Ay6n/Q8uo/7TNq//wzq3//86t///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt + ///Mrf//zK3//8yt///Mq//wzKj/tMyp/0PQyf8AzKr/AOHN/wDLqf9ezq7/597I///t4v//8un//+7o + ///X4///0uP//9Pj///T4///0+P//9Pj///T4///0+P//9Pj///T4///0+P//9Pi///S3P//z8X//8yt + /+fMqf9ez8r/AMup/0POrv/n6dr///79///////////////////n+///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1fX//9HV///Mrf/nzKn/Q8uo/7TeyP///v3///// + ///////////////////5/v//3Pj//9T2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X1///Pxf//zKj/tM2r//Dt4v//////////////////////////////////8/z//9n3 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X2///V9v//1fb//9X3///S3P//zKv/8M6t + ///y6f////////v4///+/v////////////////////////H8///Z9///1Pb//9X2///V9v//1ff//9Xz + ///U7v//1O7//9Xy///V9///1fb//9X3///T4v//zK3//86u///z6v//7uL//9S4///u4/////////// + ///////////////////0/f//3/j//9X2///V9P//0tr//86////NtP//zbP//867///R1f//1fL//9X4 + ///S4///zK3//86u///y6v//4s///8qm///iz///////////////////////////////////+/7//+z6 + ///U0v//zKv//8uq///Ntf//zbb//8ys///Mqv//0Mr//9f1///Y5P//za3//86u///y6v//4s7//8qn + ///izv////////////////////////////////////////Pq///Pr///z67//+LZ///k8v//4fP//97e + ///Qsv//zKz//+jl///w6v//zq7//86u///y6v//4s7//8qn///iz/////////////////////////// + /////////////+HM///Kp///38r///7+/////////v////7////l1P//yqf//+TS///z6v//zq7//86u + ///y6v//4s7//8uo///bw///7+X//+/l///y6f//+fX//////////////Pr//9a7///Mqf//7OD///// + ///////////////////38f//2sL//+7j///y6v//zq7//86u///y6v//4s7//8up///Mqv//zKr//8yq + ///NrP//07b//+na///+/fr/+fT2/9O1///NrP//8ej//////////////////////////////fz///// + ///y6f//zq7//86u///y6v//4s7//8uo///XvP//5tb//+XT///awf//zKv//86u///x5Or/+u/b/9O0 + +v/NrP//8ef////////////////////////////////////////y6f//zq7//86u///y6v//4s7//8qn + ///iz//////////////8+v//2sH//8qo///kzuv//PLX/9a69v/Lqf//69rw///98P///vz///////// + ///7+P//6dr///fx///y6v//zq7//86u///y6v//4s7//8qn///iz///////////////////38r//8qn + ///hyu3///bV/+HJ7v/KqP//3MLx//701///+d////zv////+//m1v//y6j//+XU///z6v//zq7//86u + ///y6v//4s7//8qn///gy///+vf///n2///w5v//07b//8up///o1Oj///jU//Pk3//QsPz/zaz+/+bR + 6v/67tn/+/DZ/+3d6//Qsf//zav//+7j///z6///zq7//86u///y6v//49D//8qn///Orv//07X//9K0 + ///Orf//y6j//9a49//469v///fV///21f/p1ef/zq79/8yq///TtPn/1Lb4/82s/v/Mqv//4cnv//74 + 6v/y6Pn/zq7//86u///y6v//8+r//9vC///Yv///2L7//9i+///awf3/48zt//bp3P//9tX///bV///2 + 1f/+9dX/8N/i/9zC8v/Ttfn/0rP6/9i89f/q1ub//PLX///41P/y4+L/zq3+/86t///y6f////////79 + ///9/P///fz///38///++e////bV///31f//9tX///bV///21f//9tX///fU//701v/679n/+e7a//3z + 1///99X///bV///31P/y4uD/zq39/82r//Dt4v///////////////////////////f//+OD///bU///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///fV///21f//9tX///bV///31P/t3OT/zav+8Muo + /7TeyP///v3////////////////////88v//9tb///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV//711v/exfD/y6j/tMup/0POrv/n6dr///79///////////9///6 + 4f//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T//vXW/+nV + 5//Orf3ny6n/Q+DK/wDLqf9ezq7/597I///t4v//8uj4//Lj4v/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj + 4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Li4P/t3OT/3sXw/86t/efLqf9e4MjuAMyq/wDgzP8Ay6n/Q8uo + /7TNq//wzq3+/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t + /f/Nq/7wy6j/tMup/0Pfx+8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA + AAAgAAAAQAAAAAEAIAAAAAAAABAAAAAoAAAAKAAAAAAAAAAAAADMqv8AzKr/AMyq/wDMqv8mzKr/iMup + /9bLqP/4y6j//8uo///MqP//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKj/+Myp/9bMqv+JzKr/Jsyq/wDMqv8AzKr/AMyq/wDOrf8AzKr/UMup + /9PNrP//1rv//97J///hzf//4M3//9TK///Pyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ + ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Pxf//zrn//8ys///Mqf/TzKr/UM+4/wDMqv8AzKr/AMyq + /1DMqf/r1Lj//+3h///7+f//////////////////6fv//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///U8f//0tz//823///Mqf/rzKr/UMyq + /wDMqv8my6n/09S4///17//////////////////////////////5/v//2/f//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+f//823 + ///Mqf/TzKr/Jsyq/4nNrP//7eL////////////////////////////////////////t+///1vb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9///0tz//8ys///Mqv+Iy6n/1ta7///7+f////////////////////////////////////////3/ + ///k+f//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///U8f//zrn//8yp/9bLqP/43sn///////////////////////////////////// + //////////////v+///h+P//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X3 + ///V9v//1fb//9X2///V9v//1fb//9X2///Pxf//zKn/+Muo///hzf////////7+///69////fz///// + //////////////////////////////r+///i+f//1fb//9X2///V9v//1fb//9X2///V9///1fX//9Tx + ///U7f//1O7//9Xy///V9///1ff//9X2///V9v//1fb//9DJ///Mqf//y6j//+HN////////7N///9O2 + ///izv///fz///////////////////////////////////z+///n+v//1/b//9T2///V9v//1fX//9Lg + ///Pxv//zrj//820///NtP//zrz//9HR///U7f//1ff//9X2///V9v//0Mn//8yp///LqP//4c3///79 + ///awv//yqf//9Cx///38v////////////////////////////////////////7////y/P//3/j//9b0 + ///Q0P//zK7//8yo///MqP//zKj//8yo///MqP//zKn//866///T5v//1ff//9T2///Qyf//zKn//8uo + ///hzf///fz//9m////LqP//0LD///Xv//////////////////////////////////////////////// + ///8////4Nn//8ys///Mqf//zK7//87C///Qz///z8v//824///Mqv//zKn//867///Z8P//5fr//9rL + ///LqP//y6j//+HN///9/P//2b///8uo///QsP//9u////////////////////////////////////// + //////////////jz///Utv//y6n//8+v///n3v//6/n//+f7///k+v//5PH//9jE///Mqf//zKr//+bZ + ////////4c3//8uo///LqP//4c3///38///Zv///y6j//9Cw///27/////////////////////////// + ////////////////////////6Nn//8yq///Lqf//4c3/////////////////////////////9e///9Gy + ///LqP//3MT///7+///hzf//y6j//8uo///hzf///fz//9m////LqP//0LD///Xu/////////v7////+ + //////////////////////////////79///cxP//y6j//86t///x6P////////////////////////// + ///+/v//38r//8qn///dxv///v7//+HN///LqP//y6j//+HN///9/P//2b///8up///NrP//2cD//9zF + ///cxf//3sf//+PR///w5v///fv/////////////+/n//9W5///LqP//0bP///jz//////////////// + ///////////////////38v//6Nj///bw////////4c3//8uo///LqP//4c3///38///Zv///y6n//8yq + ///LqP//yqf//8qn///Kp///y6j//82s///eyP//+vf////98v/59Pb/07X//8up///Ttv//+vb///// + ///////////////////////////////////////////////////hzf//y6j//8uo///hzf///fz//9m/ + ///Lqf//zaz//9vD///fyv//3sj//9i+///Orv//zKn//8up///k0Pr///jb//nu3P/TtPr/y6n//9O2 + ///69v///////////////////////////////////////////////////////+HN///LqP//y6j//+HN + ///9/P//2b///8uo///QsP//9e///////////v///fv//+vd///Orv//y6n//9S2+f/679n//PHY/9W4 + 9//Lqf//0LH+//fv9v////3////////////////////////////+/f//+fX///79////////4c3//8uo + ///LqP//4c3///38///Zv///y6j//9Cw///27////////////////////Pr//9a7///Lqf//z6/8//Xo + 3f//9dX/3MLy/8up///Nq/7/7t7k///63////PD///78/////////////////+jZ///StP//6Nn///// + ///hzf//y6j//8uo///hzf///fz//9m////LqP//0LD///bv///////////////////8+v//17z//8up + ///Pr/z/9efd///41P/p1ef/zKr//8up///dxPH//vTV///31f//+N7///vt////+v/28P//0rP//8qn + ///bxP///v7//+HN///LqP//y6j//+HN///9/P//2b///8uo///QsP//9u///////////////v3//+3i + ///Prv//y6n//9O0+f/57dr///fU//js2v/Utvj/y6n//86s/v/o0+j//fPX///31P//99X/+e/h/9vD + +//Mqf//y6n//+bV////////4c3//8uo///LqP//4c3///38///Zv///y6n//82s///dxv//4cz//+DL + ///awv//z7D//8yq///Lqf//4cnu///11f//9tX///fV/+za5P/Orf3/y6n//82s/v/av/P/5M7r/+PM + 7P/WuPf/zKr//8up///Wufn/+PL3///////hzf//y6j//8uo///hzf///v7//93G///Kp///y6n//8qn + ///Kp///yqf//8qn///LqP//zKr//9q+9P/47Nv///fV///21f//9tX//vXV/+rX5v/Rsfv/y6n//8uo + ///LqP//y6j//8uo///Mqv//17r2//Tl3v//+Nn///rm/+HL+f/LqP//y6j//+HN////////8+z//97J + ///bw///28P//9vD///bw///3MX//+DJ9//r2Ob/+u/Z///31f//9tX///bV///21f//9tX///bV//Xm + 3v/iy+3/17r2/9O0+v/Ttfn/2b30/+fT6f/67tn///fV///21f//9tT/4cnu/8up///LqP//4c3///// + //////////7///79///+/f///v3///79///+/f7///ni///31P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///fV///21f/88dj/+e3a//ru2f/989f///fV///31f//9tX///bV///21f/hye7/y6n//8uo + //jeyf/////////////////////////////////////////99P//99f///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99X///fV///21f//9tX///bV///21f//9tX///bV/97F + 8P/LqP/4y6n/1ta7///7+f////////////////////////////////7///nl///21P//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f/78dj/1rn3/8up/9bMqv+Jzaz//+3i///////////////////////////////99v//99j///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///fU/+3c5P/NrP7/zKr/icyq/ybLqf/T1Lj///Xv//////////////////////////rn///2 + 1P//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31P/1593/1Lf4/8up/9PMqv8mzKr/AMyq/1DMqf/r1Lj//+3i///7+f/////////+ + +P//99r///bU///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f/78dj/7dzk/9S3+P/Mqf/rzKr/UMyq/wDMqv8Azaz/AMyq/1DLqf/Tzaz//9a7 + ///eyf//4cv5/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ + 7v/hye7/4cnu/+HJ7v/hye7/3sXw/9a59//NrP7/y6n/08yq/1DNrP4AzKr/AMyq/wDMqv8AzKr/AMyq + /ybMqv+Jy6n/1suo//nLqP//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///LqP/4y6n/18yq/4nMqv8mzKr/AMyq/wDMqv8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAAAKAAAACgAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq + /wDMqv8EzKr/Ocyq/4vMqv/NzKr/8cyq//7Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq//7Mqv/xzKr/zcyq/4zMqv85zKr/BMyq/wDMqv8AzKr/AMyq/wAAAAAAzKr/AMyq + /wDMqv8AzKr/AMyq/yTMqv+UzKr/58yp///Lqf//y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//8yq///Mqv/nzKr/lMyq/yXMqv8AzKr/AMyr + /wDMqv8AzKr/AMyq/wDMqv8AzKr/RMyq/9HMqv//zKn//9Gy///cxP//5dT//+nb///q3P//6tz//+Pa + ///S1///0df//9HX///R1///0df//9HX///R1///0df//9HX///R1///0df//9HX///R1///0df//9HX + ///R1///0df//9HX///R1///0df//9HX///R1///0df//9HW///Qz///z8L//82x///Mqf//zKr//8yq + /9LMqv9EzKn/AMyq/wDMqv8AzKr/AMyq/wDMqv9EzKr/4cyp///Pr///4s7///bw///+/f////////// + //////////////v////d+f//1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1fT//9Po + ///Qy///zK7//8yp///Mqv/hzKr/RMyq/wDLqv8AzKr/AMyq/yXMqv/SzKn//9Gy///t4f///v7///// + ///////////////////////////////////s+///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X3///V9f//0tv//82y///Mqf//zKr/0syq/yTMqv8AzKr/BMyq/5TMqv//z6///+3h + ///////////////////////////////////////////////////7/v//3vj//9T2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9Lb///Mrv//zKr//8yq/5TMqv8EzKr/Ocyq + /+fMqf//4s7///7+////////////////////////////////////////////////////////8fz//9f2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X1///Qy///zKn//8yq + /+fMqv85zKr/jMyp///Rsv//9vD///////////////////////////////////////////////////// + /////////v///+f6///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///T6P//zbH//8yq///Mqv+MzKr/zcup///cxP///v3///////////////////////////////////// + //////////////////////////////v+///g+P//1Pb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9P//z8L//8yp///Mqv/NzKr/8cup///l1P////////////////////////// + ///////////////////////////////////////////////////4/f//3fj//9T2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///0M///8yp///Mqv/xzKr//syq///p2/////////// + ////////////////////////////////////////////////////////////////////////9v3//9z4 + ///U9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X3 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0db//8yq///Mqv/+zKr//8yq + ///q3P//////////////////+/j///v4//////////////////////////////////////////////// + //////////////f9///f+P//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1ff//9X1 + ///U8f//1O7//9Tt///U7///1fP//9X2///V9///1fb//9X2///V9v//1fb//9X2///V9///0df//8yq + ///Mqv//zKr//8yq///q3P/////////////r3v//1bn//9W6///t4v////////////////////////// + ///////////////////////////////////6/v//5Pn//9b2///V9v//1fb//9X2///V9v//1fb//9X2 + ///U7P//0db//8/D///Ouf//zbX//820///Ntv//zr3//9DO///T5v//1fX//9X3///V9v//1fb//9X2 + ///V9///0df//8yq///Mqv//zKr//8yq///q3P////////n0///Ttv//y6j//8uo///VuP//+vb///// + /////////////////////////////////////////////////////////f///+37///a9///1fb//9X2 + ///V9v//1fT//9HX///Ntf//zKr//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///NsP//0Mz//9Tv + ///V9///1fb//9X2///V9///0df//8yq///Mqv//zKr//8yq///q3P////////Pr///Orv//zKr//8yq + ///Pr///9O3///////////////////////////////////////////////////////////////////// + ///4/f//5vr//9j3///V9P//0M7//8ys///Mqf//zKr//8yq///Mqf//zKn//8yp///Mqf//zKr//8yq + ///Mqv//zKr//8/B///U7v//1ff//9X2///V9///0df//8yq///Mqv//zKr//8yq///q3P////////Lq + ///Orf//zKr//8yq///Prv//9Oz///////////////////////////////////////////////////// + //////////////////////////////b9///a1///zKz//8yq///Mqv//zKn//8yr///Ntf//zr7//8/A + ///OuP//zK3//8yp///Mqv//zKr//8yp///Px///1PP//9b2///e+f//3Nn//8yq///Mqv//zKr//8yq + ///q3P////////Lq///Orf//zKr//8yq///Prv//9Oz///////////////////////////////////// + //////////////////////////////////////////////Xu///Ss///zKn//8yq///Mqf//0LP//9XW + ///V7f//1fT//9T0///U8P//0t///867///Mqv//zKr//8yq///MrP//3d////P9///8////6tz//8yq + ///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Prv//9Oz///////////////////// + /////////////////////////////////////////////////////////v7//+DL///Lqf//zKr//8yp + ///Rsf//7+b///j+///z/f//7/z//+z7///r+///6/z//+vw///Xvf//zKn//8yq///Lqf//3MT///78 + ////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Prv//9Oz///// + ////////////////////////////////////////////////////////////////////////9vH//9Gz + ///Mqf//zKr//8yq///l0//////////////////////////////////////////////w5v//zq7//8yq + ///Mqf//0bP///fy////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq + ///Prv//9Oz///////////////////////////////////////////////////////////////////// + ////////6tz//8yq///Mqv//zKn//9Gy///28f////////////////////////////////////////// + ///9+///2sH//8up///Mqv//zq7///Pr////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq + ///Orf//zKr//8yq///Prv//9O3///////////////////////////////////////////////////// + ////////////////////////38r//8up///Mqv//y6n//9rB///9/P////////////////////////// + ////////////////////////6t3//8yq///LqP//0rT///fy////////6tz//8yq///Mqv//zKr//8yq + ///q3P////////Lq///Orf//zKr//8yq///NrP//3sf//+PQ///j0P//49D//+PQ///l1P//697///Ts + ///8+//////////////////////////////9+///2L7//8up///Mqv//y6n//+LO//////////////// + /////////////////////////////////////////Pn//+TS///cxP//7uP/////////////6tz//8yq + ///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Mqv//y6n//8up///Lqf//y6n//8up + ///Lqf//zKr//8+v///awf//7+T///7+///////////////////69///1Lj//8up///Mqv//y6n//+bW + ///////////////////////////////////////////////////////////////////+/f////////// + ////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Mqv//zKn//8yp + ///Mqf//zKn//8yq///Mqv//zKr//8yq///Lqf//z67//+na/////v////zv///76P/59Pj/07X//8yp + ///Mqv//zKn//+jZ//////////////////////////////////////////////////////////////// + ////////////////////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq + ///Mq///0bP//9O1///Ttf//0rX//9Cx///NrP//y6n//8yq///Mqv//zKn//8+w///x5/v///nd///2 + 1P/57t3/07T6/8yp///Mqv//zKn//+jZ//////////////////////////////////////////////// + ////////////////////////////////////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq + ///Orf//zKr//8yq///Orv//7+X///r2///59f//+fX///bx///u4///28P//8yr///Mqv//zKr//8up + ///exfX//vXX///31f/779j/1Lb4/8up///Mqv//y6n//+XU//////////////////////////////// + ////////////////////////////////////////////////////////6tz//8yq///Mqv//zKr//8yq + ///q3P////////Lq///Orf//zKr//8yq///Prv//9O3/////////////////////////////+/n//9vD + ///Lqf//zKr//8yp///TtPn/+e3a///31f/989f/2Lz1/8up///Mqv//y6n//9/I9////PH///78//// + //////////////////////////////////////////////v4///48////v3/////////////6tz//8yq + ///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Prv//9Oz///////////////////// + /////////////+3h///Mq///zKr//8yq///Prv3/9OXe///31P//9tX/38fv/8up///Mqv//y6n//9e6 + 9v/88tn///nf///87////vv/////////////////////////////////9vD//9i+///Rs///5tX///79 + ////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Prv//9Oz///// + //////////////////////////////Lp///Orf//zKr//8yq///Orf7/8uLg///31P//99T/6tfm/8yq + ///Mqv//zKr//8+u/f/y49////fU///21v//+N3///vt///++v/////////////////+/f//3sj//8uo + ///Lqf//0bL///fy////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq + ///Prv//9Oz//////////////////////////////////+7i///Nq///zKr//8yq///Orv3/8+Tf///3 + 1P//99X/9+rc/9Ky+v/Mqf//zKr//8up///fxvD//vTW///21f//9tX///bV///33P//++r///75//// + ///w5v//z67//8yq///Mqv//0LH///bw////////6tz//8yq///Mqv//zKr//8yq///q3P////////Lq + ///Orf//zKr//8yq///Prv//9Oz//////////////////////////////fz//97I///Lqf//zKr//8yp + ///Ssvr/+Ovb///31f//9tX///XV/+HK7f/Lqf//zKr//8yq///Orf7/6tbn///21f//99X///bV///2 + 1f//9tX///jZ//fu7f/Xu///y6n//8yq///Lqf//173///z5////////6tz//8yq///Mqv//zKr//8yq + ///q3P////////Lq///Orf//zKr//8yq///Orv//8Ob///v5///7+P//+vf///n0///y6v//4Mz//82s + ///Mqv//zKr//8up///bwPP//fPW///21f//9tX///fV//bp3P/Ttfn/y6n//8yq///Mqv//z679/+TO + 6//36tv//fPX//701v/88dj/8ODh/9e79f/Mqf//zKr//8yq///Mq///6tz/////////////6tz//8yq + ///Mqv//zKr//8yq///q3P////////Lq///Orf//zKr//8yq///Mq///07X//9W4///UuP//1Lj//9K0 + ///Orv//zKn//8yq///Mqv//zKr//86s/v/u3OP///fU///21f//9tX///bV///31f/t2+T/z6/8/8yp + ///Mqv//zKr//8yq///Ssvr/2b30/9vA8//Wuff/zq79/8yp///Mqv//zKr//8up///cw/X//Pfz//// + /f//////6tz//8yq///Mqv//zKr//8yq///q3P////////Xu///Pr///zKr//8yq///Mqv//zKn//8up + ///Lqf//y6n//8yp///Mqv//zKr//8yq///Lqf//zKv//+LL7f/99Nb///bV///21f//9tX///bV///2 + 1f//9tX/69jl/9Cw/P/Lqf//zKr//8yq///Mqf//y6n//8up///Lqf//zKr//8yq///Mqf//zKr//9vA + 8//57Nr///fW///54f///fH/6tv8/8yq///Mqv//zKr//8yq///q3P////////z6///awf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//82r/v/TtPn/59Pp//3y1///9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV//Hi4P/ZvvT/zaz+/8up///Lqf//zKn//8yp///Lqf//y6n//8yp + ///Rsfv/5M7r//vw2f//99X///bV///21P//+Nb/6tfq/8yq///Mqv//zKr//8yq///q3P////////// + ///48///59f//+HN///hzf//4c3//+HN///hzf//4c3//+HN///j0P//5tX6/+7d5f/47Nr///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f/88dj/797i/+DI7v/Xu/b/07X5/9K0 + +v/Ut/j/2r/z/+bR6v/16N3///bV///21f//9tX///bV///21f//99T/6tfm/8yq///Mqv//zKr//8yq + ///q3P////////////////////////////////////////////////////////////////////zr///3 + 1P//99X///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fU///2 + 1f/88tf/+u7Z//nt2v/679n//fTW///31f//99X///bV///21f//9tX///bV///21f//99T/6tfm/8yq + ///Mqv//zKr//syq///p2/////////////////////////////////////////////////////////// + /////vv///jc///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV///31f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99T/6dbn/8yq///Mqv/+zKr/8cup///l1P////////////////////////////////////////// + ////////////////////++7///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99T/5c/q/8up///Mqv/xzKr/zcup///cxP///v3///////////////////// + ///////////////////////////////+/P//+N7///bU///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f/+9Nb/3MLy/8up///Mqv/NzKr/jMyp///Rsv//9vD///// + ///////////////////////////////////////////////88P//9tb///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f/26N3/0bH7/8yq///Mqv+MzKr/Ocyq + /+fMqf//4s7///7+///////////////////////////////////////////9///44P//9tT///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV//711f/iy+3/zKn//8yq + /+fMqv85zKr/BMyq/5TMqv//z6///+3h//////////////////////////////////////////zy///2 + 1///9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fV/+3b + 5P/Prv3/zKr//8yq/5TMqv8EzKr/AMyq/yXMqv/SzKn//9Gy///t4f///v7///////////////////// + //////7///ni///21P//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f//9dX/7dvk/9Gy+//Mqf//zKr/0syq/yXMqv8AzKr/AMyq/wDMqv9EzKr/4cyp///Pr///4s7///bw + ///+/f///////////////vT///jX///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T//vTW//bo3f/iy+3/z679/8yp///Mqv/hzKr/RMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/RMyq + /9LMqv//zKn//9Gy///cxP//5dT//+nb///q2fL/6tfm/+rX5v/q1+b/6tfm/+rX5v/q1+b/6tfm/+rX + 5v/q1+b/6tfm/+rX5v/q1+b/6tfm/+rX5v/q1+b/6tfm/+rX5v/q1+b/6tfm/+rX5v/q1+b/6tfm/+rX + 5v/q1+b/6tfm/+nW5//lz+r/3MLy/9Gx+//Mqf//zKr//8yq/9LMqv9EzKr/AMyq/wDMqv8AzKr/AMyq + /wDMqv8AzKr/AMyq/yXMqv+UzKr/58yp///Lqf//y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//y6n//8yq///Mqv/nzKr/lcyq/yXMqv8AzKr/AMyq + /wDMqv8AAAAAAMyq/wDMqv8AzKr/AMyq/wDMqv8EzKr/Ocyq/4zMqv/NzKr/8cyq//7Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq//7Mqv/xzKr/zcyq/4zMqv85zKr/BMyq + /wDMqv8AzKr/AMyq/wAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAKAAAAEAAAACAAAAAAQAgAAAA + AAAAQAAAACgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMuq/wDMqv8AzKr/AMyq/wDMqv8AzKr/Csyq + /z/Mqv+GzKr/wsyq/+jMqv/6zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/+syq/+nMqv/CzKr/h8yq + /z/Mqv8KzKr/AMyq/wDMqv8AzKr/AMyq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq + /wDMqv8HzKr/S8yq/6/Mqv/rzKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv/szKr/r8yq/0vMqv8HzKr/AMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAMyq + /wDMqv8AzKr/AMyq/wDMqv8hzKr/m8yq//PMqv//zKr//8up///Lqf//zKr//82s///Orf//zq3//86t + ///Orf//za3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt + ///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt///Mrf//zK3//8yt + ///Mrf//zK3//8yt///MrP//zKr//8yp///Mqf//zKr//8yq///Mqv/zzKr/m8yq/yLMqv8AzKv/AMyr + /wDMqv8AAAAAAM2q/wDMqv8AzKr/AMyq/wDMqv84zKr/ycyq///Mqv//y6n//82s///Wuv//4s7//+ve + ///w5///8un///Lq///y6v//8un//97l///S4///0+P//9Pj///T4///0+P//9Pj///T4///0+P//9Pj + ///T4///0+P//9Pj///T4///0+P//9Pj///T4///0+P//9Pj///T4///0+P//9Pj///T4///0+P//9Pj + ///T4///0+P//9Pj///T4///0+P//9Pj///T4///0uD//9LZ///Qy///zrn//8ys///Mqf//zKr//8yq + ///Mqv/JzKr/OMyp/wDMqv8AzKr/AMyq/wDMqv8Azar/AMyq/wDMqv84zKr/1cyq///Mqv//zKr//9e9 + ///t4P//+/j////////////////////////////////////////x/f//1vf//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1fb//9Tv + ///S2///zrv//8yq///Mqv//zKr//8yq/9bMqv84zKr/AMyq/wDMqv8AzKr/AMyq/wDMqv8izKr/ycyq + ///Mqv//zq3//+PQ///69////////////////////////////////////////////////////P7//9/4 + ///U9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9Tv///QzP//zKz//8yq///Mqv//zKr/ycyq/yLMqv8AzKr/AMyq + /wDMqv8HzKr/m8yq///Mqv//zq3//+fX///+/f////////////////////////////////////////// + ///////////////////w/P//1vb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1fT//9HS///MrP//zKr//8yq + ///Mqv+bzKr/B8yq/wDMqv8AzKr/S8yq//PMqv//zKr//+PQ///+/f////////////////////////// + /////////////////////////////////////////f///+L5///U9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9P//0Mz//8yq///Mqv//zKr/88yq/0vMqv8AzKr/Csyq/6/Mqv//y6n//9e9///69/////////// + ///////////////////////////////////////////////////////////////////1/f//2ff//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9Tv///Ou///zKn//8yq///Mqv+vzKr/Csyq/z/Mqv/szKr//82s + ///t4P////////////////////////////////////////////////////////////////////////// + /////////////+v7///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0tv//8ys///Mqv//zKr/68yq + /z/Mqv+HzKr//8up///Wuv//+/j///////////////////////////////////////////////////// + ///////////////////////////////////8/v//4vn//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9Tv + ///Ouf//zKn//8yq///Mqv+HzKr/wsyq///Lqf//4s7///////////////////////////////////// + //////////////////////////////////////////////////////////////j+///d+P//1Pb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//0Mr//8yp///Mqv//zKr/wsyq/+nMqv//zKr//+ve//////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////9P3//9r3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9LZ///Mqv//zKr//8yq/+nMqv/6zKr//82s + ///w5/////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////y/P//2ff//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///S4P//zKz//8yq + ///Mqv/6zKr//8yq///Orf//8un///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////L8///a9///1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1ff//9X3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9///0+P//8yt///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////////////////Pn///n2 + ///9/P////////////////////////////////////////////////////////////////////////// + ////////9P3//9z4///U9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9///1ff//9X1///U8f//1O7//9Tt///U7f//1PD//9X0///V9v//1ff//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9Pj///Mrf//zKr//8yq///Mqv//zKr//86t///y6v////////// + /////v//7eD//9e8///Ttv//3sf///fy//////////////////////////////////////////////// + ///////////////////////////////////3/f//4fn//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X3///V8///0+X//9HS///Pw///zrr//822///NtP//zbT//864///Pv///0M7//9Pi + ///V8v//1ff//9X2///V9v//1fb//9X2///V9v//1fb//9X3///T4///zK3//8yq///Mqv//zKr//8yq + ///Orf//8ur/////////////9O3//9Gy///Lqf//zKn//8uo///dx////fz///////////////////// + //////////////////////////////////////////////////////////////z+///p+v//2Pf//9T2 + ///V9v//1fb//9X2///V9v//1fb//9X1///T4v//z8L//82v///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mrv//z8D//9Ph///V9f//1fb//9X2///V9v//1fb//9X2///V9///0+P//8yt + ///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+fX///Lqf//zKr//8yq///Mqf//0bL///bx + //////////////////////////////////////////////////////////////////////////////// + //////////////P8///g+P//1fb//9X2///V9v//1fb//9Xz///R0f//za///8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Nr///0dD//9Xy///V9v//1fb//9X2 + ///V9v//1ff//9Pj///Mrf//zKr//8yq///Mqv//zKr//86t///y6v/////////////izv//y6n//8yq + ///Mqv//zKr//86t///y6v////////////////////////////////////////////////////////// + /////////////////////////////////////////P7//+37///d+P//1fb//9Tz///Qzf//zKv//8yp + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///QzP//1fP//9X2///V9v//1fb//9X3///S4///zK3//8yq///Mqv//zKr//8yq///Orf//8ur///// + ////////4c3//8up///Mqv//zKr//8yq///Orf//8un///////////////////////////////////// + ////////////////////////////////////////////////////////////////////////+/7//+37 + ///V1f//zKz//8yq///Mqv//zKr//8yq///Mqv//zKn//8ys///Nsf//zbT//82y///Mrf//zKn//8yq + ///Mqv//zKr//8yq///Mqv//zKz//9HU///V9v//1Pb//9X2///Z+P//2+X//82t///Mqv//zKr//8yq + ///Mqv//zq3///Lq/////////////+HN///Lqf//zKr//8yq///Mqv//zq3///Lp//////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////z6v//0LH//8yp///Mqv//zKr//8yq///Mqf//zLD//8/J///S3///0+r//9Tt + ///U6///0uH//9DL///Nsf//zKn//8yq///Mqv//zKr//8yp///Nsv//1eb//9/5///q+///9/7///Hp + ///Orf//zKr//8yq///Mqv//zKr//86t///y6v/////////////hzf//y6n//8yq///Mqv//zKr//86t + ///y6f////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////9+///28T//8up///Mqv//zKr//8yq///Mqf//1Ln//+Hk + ///e9///2vj//9j3///W9///1vf//9b3///V9v//1OT//8+5///Mqf//zKr//8yq///Mqv//y6n//9vJ + ///7/f/////////////y6v//zq3//8yq///Mqv//zKr//8yq///Orf//8ur/////////////4c3//8up + ///Mqv//zKr//8yq///Orf//8un///////////////////////////////////////////////////// + ////////////////////////////////////////////////////////7+X//86t///Mqv//zKr//8yq + ///Mqf//0rT///Pr/////////P////n+///2/f//8/z///H8///w/P//8fz///L9///u7P//07b//8yp + ///Mqv//zKr//8yp///Ss///9/H/////////////8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq + /////////////+HN///Lqf//zKr//8yq///Mqv//zq3///Lp//////////////////////////////// + /////////////////////////////////////////////////////////////////////////v3//93H + ///Lqf//zKr//8yq///Mqv//zKv//+jZ//////////////////////////////////////////////// + /////////////+rc///Nq///zKr//8yq///Mqv//zKv//+zf//////////////Lq///Orf//zKr//8yq + ///Mqv//zKr//86t///y6v/////////////hzf//y6n//8yq///Mqv//zKr//86t///y6f////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////fy///Ss///zKn//8yq///Mqv//y6n//9W4///59v////////////////////////// + ///////////////////////////////////69///1rr//8up///Mqv//zKr//8up///k0f////////// + ///y6v//zq3//8yq///Mqv//zKr//8yq///Orf//8ur/////////////4c3//8up///Mqv//zKr//8yq + ///Orf//8un///////////////////////////////////////////////////////////////////// + ///////////////////////////////////s4P//zav//8yq///Mqv//zKr//8up///izv////////// + /////////////////////////////////////////////////////////////+TT///Lqf//zKr//8yq + ///Lqf//4s//////////////8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+HN + ///Lqf//zKr//8yq///Mqv//zq3///Lq//////////////////////////////////////////////// + ////////////////////////////////////////////////////////4s///8up///Mqv//zKr//8yq + ///Nq///7eH///////////////////////////////////////////////////////////////////// + ///07f//0LH//8up///Lqf//zaz//+3h//////////////Lq///Orf//zKr//8yq///Mqv//zKr//86t + ///y6v/////////////hzf//y6n//8yq///Mqv//zKr//82s///hzv//6dv//+na///p2v//6dr//+nb + ///q3P//7eH///Lq///49P///v3//////////////////////////////////////////////v3//9vD + ///Lqf//zKr//8yq///Mqv//z6////Tt//////////////////////////////////////////////// + //////////////////////////7//+nb///Ut///1Lf//+XU///9+//////////////y6v//zq3//8yq + ///Mqv//zKr//8yq///Orf//8ur/////////////4c3//8up///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//82r///Orv//07X//9zF///t4f///Pr///////////////////// + //////////////z5///Wu///y6n//8yq///Mqv//zKn//9K0///49P////////////////////////// + /////////////////////////////////////////////////////v//+vf///r2///+/v////////// + ////////8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Lqf//zaz//9rC + ///17v////////////////7///77///////69///1Lf//8up///Mqv//zKr//8up///UuP//+vf///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////Lq///Orf//zKr//8yq///Mqv//zKr//86t///y6v////////// + ///hzf//y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//1Lj///Tt//////////zx///43f//++r/+fT5/9O1///Mqf//zKr//8yq + ///Lqf//1bn///v4//////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////y6v//zq3//8yq///Mqv//zKr//8yq + ///Orf//8ur/////////////4c3//8up///Mqv//zKr//8yq///Mqv//zKv//82r///Nq///zav//82r + ///Mqv//y6n//8up///Mqv//zKr//8yq///Mqv//zKr//8up///ZwP//+/j9///54f//9tT///fV//nu + 3v/Ttfv/zKn//8yq///Mqv//y6n//9W5///7+P////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////8ur//86t + ///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+HN///Lqf//zKr//8yq///Mqv//zaz//+XU + ///u4///7uL//+7i///t4v//697//+XU///awv//z6///8yp///Mqv//zKr//8yq///Mqv//zKv//+ra + 9P//99f///bV///21f/679n/1Lb4/8up///Mqv//zKr//8yp///Ttv//+fb///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////Lq///Orf//zKr//8yq///Mqv//zKr//86t///y6v/////////////hzf//y6n//8yq + ///Mqv//zKr//86t///y6v///////////////////////////////////fz///Dm///UuP//zKn//8yq + ///Mqv//zKr//8up///av/P//fPX///21f//9tX//PHY/9e69v/Lqf//zKr//8yq///Mqf//0bL///fx + /v////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////y6v//zq3//8yq///Mqv//zKr//8yq///Orf//8ur///// + ////////4c3//8up///Mqv//zKr//8yq///Orf//8un///////////////////////////////////// + ////////8Ob//8+v///Mqv//zKr//8yq///Mqf//0rP6//jr2///99X///bV//701v/bwfL/y6n//8yq + ///Mqv//zKr//86t/v/y5Ov///3w///+/P////////////////////////////////////////////// + ///////////////////+/f//+PP///jz///+/f//////////////////8ur//86t///Mqv//zKr//8yq + ///Mqv//zq3///Lq/////////////+HN///Lqf//zKr//8yq///Mqv//zq3///Lp//////////////// + //////////////////////////////37///Zv///y6n//8yq///Mqv//zKr//86t/f/z49////fU///2 + 1f//9tX/48zs/8up///Mqv//zKr//8yq///Mqv//6dTn///31f//+N////vu///++/////////////// + ///////////////////////////////////9/P//5dP//9K0///Ss///5NP///38//////////////Lq + ///Orf//zKr//8yq///Mqv//zKr//86t///y6v/////////////hzf//y6n//8yq///Mqv//zKr//86t + ///y6f//////////////////////////////////////////////////4Mv//8up///Mqv//zKr//8yq + ///NrP7/79/i///31P//9tX///fU/+3b5P/Nq/7/zKr//8yq///Mqv//y6n//9zC8v/+9Nb///bU///2 + 1f//+N3///vs///++v//////////////////////////////////////7uL//86t///Lqf//y6n//86t + ///v5f/////////////y6v//zq3//8yq///Mqv//zKr//8yq///Orf//8ur/////////////4c3//8up + ///Mqv//zKr//8yq///Orf//8un//////////////////////////////////////////////////+DL + ///Lqf//zKr//8yq///Mqv//zav+/+/e4v//99T///bV///31f/369v/0rP6/8yp///Mqv//zKr//8yq + ///QsPv/9Obe///31P//9tX///bV///21f//99v///rq///9+P//////////////////////+/n//9i/ + ///Lqf//zKr//8yq///Lqf//5tX/////////////8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq + /////////////+HN///Lqf//zKr//8yq///Mqv//zq3///Lp//////////////////////////////// + //////////////38///awf//y6n//8yq///Mqv//zKr//86t/v/x4uD///fU///21f//9tX//vXW/9/G + 8P/Lqf//zKr//8yq///Mqv//zKn//+DH7//+9Nb///bV///21f//9tX///bV///21f//99r///rn///9 + 9v////7//////+nb///Nq///zKr//8yq///Mqv//zKn//+jZ//////////////Lq///Orf//zKr//8yq + ///Mqv//zKr//86t///y6v/////////////hzf//y6n//8yq///Mqv//zKr//86t///y6f////////// + ///////////////////////////////////z6///0LH//8yq///Mqv//zKr//8yq///Rsfv/9unc///3 + 1f//9tX///bV///31P/x4eH/z679/8yq///Mqv//zKr//8yq///Orf3/69jm///21f//9tX///bV///2 + 1f//9tX///bV///21f//99n///vk//Pq+P/StP//zKn//8yq///Mqv//zKr//86u///y6f////////// + ///y6v//zq3//8yq///Mqv//zKr//8yq///Orf//8ur/////////////4c3//8up///Mqv//zKr//8yq + ///Orf//8ur////////////////////////////////////////28P//2cD//8yp///Mqv//zKr//8yq + ///Lqf//2Lv1//zx1///9tX///bV///21f//9tX//fTW/97F8P/Lqf//zKr//8yq///Mqv//zKn//9Cw + /P/q1ub//fPX///31P//99X///fV///31f//99T///bV//Pj3//VuPj/zKn//8yq///Mqv//zKr//8up + ///awf///Pr/////////////8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+HN + ///Lqf//zKr//8yq///Mqv//zaz//+fX///x6P//8ef///Hn///x5///7+T//+rc///gy///0rX//8yq + ///Mqv//zKr//8yq///Mqv//zKr//+bR6f//99X///bV///21f//9tX///bV///31f/26N3/07X5/8up + ///Mqv//zKr//8yq///Mqv//zqz+/9zC8v/t2+T/9unc//nt2v/469v/8uPg/+TN7P/Rsvv/zKn//8yq + ///Mqv//zKr//8yq///Prv//7+X///////////////////Lq///Orf//zKr//8yq///Mqv//zKr//86t + ///y6v/////////////hzf//y6n//8yq///Mqv//zKr//8yq///NrP//zq3//86t///Orf//zaz//82r + ///Mqv//y6n//8yp///Mqv//zKr//8yq///Mqv//y6n//9S2+P/469v///fV///21f//9tX///bV///2 + 1f//9tX///fV/+7d4//QsPz/zKn//8yq///Mqv//zKr//8yq///Lqf//zav+/9Cw+//TtPr/0rL6/86u + /f/Mqf//zKn//8yq///Mqv//zKr//8yq///Mqv//5M7v//767f///vv////////////y6v//zq3//8yq + ///Mqv//zKr//8yq///Orf//8ur/////////////5NH//8up///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//8+v/P/u3OP///fV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/7Nrl/9Cx+//Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8yp///Nq/7/4cnu//zy1///99X///jc///7 + 6/////n/8ur//86t///Mqv//zKr//8yq///Mqv//zq3///Lq/////////////+3h///Nq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//y6n//9Kz + +v/s2uT///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f/w4OH/1rn3/8yq + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Qsfv/59Lp//3y + 1///99X///bV///21f//9tX///jb//Lm7P/Orf7/zKr//8yq///Mqv//zKr//86t///y6v////////// + ///7+f//3sj//82s///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKr//8yr + ///Orv7/1Lb4/+LK7f/16N3///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///fV//nt2v/l0Or/1Lb5/82r///Lqf//y6n//8up///Mqf//zKn//8up///Lqf//zKn//8+v + /P/dxPH/8+Tf///21f//9tX///bV///21f//9tX///bV///31P/y49//zq39/8yq///Mqv//zKr//8yq + ///Orf//8ur///////////////////z6///w5v//6Nn//+fX///n1///59f//+fX///n1///59f//+fX + ///n1///59j//+nb///t4f3/8+Xm//ru2f//9tX///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99X///bV//nt2v/s2uT/4Mju/9i89f/Utvj/07T6/9O1 + +f/Wuff/3MHy/+bR6f/05d7//fTW///31f//9tX///bV///21f//9tX///bV///21f//99T/8uPg/86t + /f/Mqv//zKr//8yq///Mqv//zq3///Lq//////////////////////////////////////////////// + //////////////////////////////////////////70///41///9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X///fU///2 + 1f/88tf/+u/Z//nt2v/57dr/+/DY//701v//99X///fU///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///fU//Lj4P/Orf3/zKr//8yq///Mqv//zKr//86t///y6f////////////////////////// + ///////////////////////////////////////////////////////////+///55P//9tT///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99X///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///31P/y4+D/zq39/8yq///Mqv//zKr/+syq///NrP//8Of///// + ///////////////////////////////////////////////////////////////////////////////9 + 9v//99j///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99T/8ODh/82s/v/Mqv//zKr/+syq + /+nMqv//zKr//+ve//////////////////////////////////////////////////////////////// + ////////////////////+ub///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fU/+vZ + 5f/Mqv//zKr//8yq/+nMqv/CzKr//8up///izv////////////////////////////////////////// + /////////////////////////////////////ff///fZ///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f/iy+3/y6n//8yq///Mqv/CzKr/h8yq///Lqf//1rr///v4//////////////// + //////////////////////////////////////////////////////////rp///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f/779n/1rn3/8up///Mqv//zKr/h8yq/z/Mqv/szKr//82s + ///t4P////////////////////////////////////////////////////////////////////75///3 + 2///9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99T/7dvk/82s/v/Mqv//zKr/7Myq + /z/Mqv8KzKr/r8yq///Lqf//173///r3//////////////////////////////////////////////// + ///////////////76///9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X/+u/Z/9e7 + 9v/Lqf//zKr//8yq/6/Mqv8KzKr/AMyq/0zMqv/zzKr//8yq///j0P///v3///////////////////// + ///////////////////////////////++///+Nz///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX//vTW/+PM7P/Mqv//zKr//8yq//PMqv9LzKr/AMyq/wDMqv8HzKr/m8yq///Mqv//zq3//+fX + ///+/f//////////////////////////////////////////////++7///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99X//vTW/+fS6f/OrP7/zKr//8yq///Mqv+bzKr/B8yq/wDMqv8AzKr/AMyq + /yLMqv/JzKr//8yq///Orf//49D///r3/////////////////////////////////////vz///je///2 + 1P//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99T/+u/Z/+PM7P/OrP7/zKr//8yq///Mqv/JzKr/Isyq + /wDMqv8AzKr/AMyq/wDMqv8AzKr/OMyq/9XMqv//zKr//8yq///Xvf//7eD///v4//////////////// + //////////3v///31f//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///21f/779n/7dvk/9e79v/Mqv//zKr//8yq + ///Mqv/WzKr/OMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/AMyq/wDMqv84zKr/ycyq///Mqv//y6n//82s + ///Wuv//4s7//+ve///w5///8un+//Ll6v/y49//8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj + 4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj + 4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8uPg//Lj4P/y4+D/8ODh/+vZ5f/iy+3/1rn3/82s + /v/Lqf//zKr//8yq///Mqv/JzKr/OMyq/wDMqv8AzKr/AMuq/wAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq + /yLMqv+bzKr/88yq///Mqv//y6n//8up///Mqv//zaz//86t///Orf3/zq39/86t/f/Orf3/zq39/86t + /f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t + /f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/86t/f/Orf3/zq39/82s + /v/Mqv//y6n//8up///Mqv//zKr//8yq//PMqv+czKr/Isyq/wDMqv8AzKr/AMyq/wAAAAAAAAAAAAAA + AADMqv8AzKr/AMyq/wDMqv8AzKr/B8yq/0vMqv+vzKr/7Myq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/7Myq/6/Mqv9MzKr/B8yq/wDMqv8AzKr/AMyq + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/Csyq/z/Mqv+HzKr/wsyq + /+nMqv/7zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/+syq/+nMqv/DzKr/h8yq/0DMqv8KzKr/AMyq + /wDMqv8AzKr/AM2p/wAAAAAAAAAAAAAAAADgAAAAAAAAB8AAAAAAAAADgAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAPgAAAAAAAABygA + AABIAAAAkAAAAAEAIAAAAAAAAFEAAAAoAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRsqAMyq + /wDMqv8AzKr/AMyq/wDMqf8AzKr/Isyq/2HMqv+hzKr/0syq//DMqv/8zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq//zMqv/wzKr/08yq/6LMqv9hzKr/Isyr/wHMqv8AzKr/AMyq + /wDMqv8AKiE0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq/wDMqv8Ax6j/AMyq + /y3Mqv+JzKr/1syq//jMqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/4zKr/1syq/4rMqv8ty7X/AMyq/wDMqv8AzKr/AMyq + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq/wDMqv8SzKr/ecyq/+HMqv//zKr//8yq + ///Mqv//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yq///Mqv//zKr//8yq///Mqv/hzKr/esyq/xPMqv8AzK3/AMyr/wDMqf8AAAAAAAAA + AAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/yrMqv+yzKr//cyq///Mqv//zKn//8yp///Pr///1rr//9zF + ///gy///4c3//+HN///hzf//4c3//9nL///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ + ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ + ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DJ///Qyf//0Mn//9DI///Pwv//zrn//82v + ///Mqv//zKn//8yq///Mqv//zKr//cyq/7PMqv8qzKn/AMys/wDMqv8AzKr/AAAAAAAqITQAzKr/AMyq + /wDMqv8AzKr/NMyq/8zMqv//zKr//8yq///Mqv//1Lj//+XU///z7P//+/j///79//////////////// + //////////////P9///X9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9P//1PD//9Pl///Q0P//zbf//8yq + ///Mqv//zKr//8yq///Mqv/MzKr/NMyq/wDMq/8AzKr/ACQeLgDMqv8AzKr/AMyq/wDMqv8qzKr/zMyq + ///Mqv//zKn//9Cw///k0///+fT///////////////////////////////////////////////////3/ + ///h+f//1Pb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V9v//1O3//9DO///NsP//zKn//8yq + ///Mqv//zKr/zMyq/yrMqv8AzKr/AMyq/wDMqv8AzKr/AMyq/xLMqv+zzKr//8yq///Lqf//1Lf//+/l + ///////////////////////////////////////////////////////////////////x/P//1vb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X2///S3///zbX//8yp///Mqv//zKr//8yq + /7PMqv8SzKr/AMyq/wDMqv8AyaT/AMyq/3rMqv/9zKr//8yp///Ut///8+v///////////////////// + ///////////////////////////////////////////////////9////4vn//9T2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+T//821///Mqf//zKr//8yq//3Mqv95yav/AMyq + /wDMqv8AzKr/Lcyq/+HMqv//zKr//9Cw///w5f////////////////////////////////////////// + ////////////////////////////////////////9P3//9j3///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9Lf///NsP//zKr//8yq///Mqv/hzKr/Lcyq/wDNqv8AzKr/isyq + ///Mqv//zKr//+TT//////////////////////////////////////////////////////////////// + /////////////////////////v///+f6///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///Qzv//zKr//8yq///Mqv//zKr/icyr/wDMqv8izKr/1syq///Mqf//1Lj///n0 + //////////////////////////////////////////////////////////////////////////////// + //////////////r+///e+P//1Pb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///U7f//zbf//8yp///Mqv//zKr/1syq/yLMqv9hzKr/+Myq///Mqf//5dT///////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///z/P//2Pf//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0M///8yq + ///Mqv//zKr/+Myq/2HMqv+izKr//8yq///Pr///8+z///////////////////////////////////// + ////////////////////////////////////////////////////////////////////////6/v//9b2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+X//82v///Mqv//zKr//8yq + /6HMqv/TzKr//8up///Wuv//+/j///////////////////////////////////////////////////// + /////////////////////////////////////////////////////////f///+b6///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1PD//864///Mqf//zKr//8yq/9LMqv/wzKr//8up + ///cxf///v3///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////v+///j+f//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fT//8/C///Mqf//zKr//8yq//DMqv/8zKr//8up///gy/////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////6/v//4vn//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9DI///Mqf//zKr//8yq//zMqv//zKr//8up///hzf////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////+v7//+L5///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V9///1ff//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9DJ + ///Mqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////////////////////8+v//+fX///z7 + //////////////////////////////////////////////////////////////////////////////// + //////////////v+///m+v//1vb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9///1ff//9X2///V8///1PD//9Tu///U7f//1O7//9Tw///V9P//1ff//9X3 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9DJ///Mqf//zKr//8yq + ///Mqv//zKr//8up///hzf////////////////////7//+7i///Yvv//07X//9nA///w5v////////// + //////////////////////////////////////////////////////////////////////////////// + ///9////6/v//9j3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X1 + ///U6///0tn//9DJ///Ovv//zrj//821///NtP//zbX//865///PwP//0M7//9Lh///U8f//1ff//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9DJ///Mqf//zKr//8yq///Mqv//zKr//8up + ///hzf//////////////////8ur//9Cx///Lqf//zKn//8uo///Stf//9e////////////////////// + //////////////////////////////////////////////////////////////////////////////L8 + ///d+P//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0+f//9DJ///Ns///zKv//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yt///Ovf//0tv//9Xz///V9///1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9DJ///Mqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ////////4s///8up///Mqv//zKr//8yq///Lqf//5dT///////////////////////////////////// + ///////////////////////////////////////////////////////////////////5/v//5/r//9f3 + ///U9v//1fb//9X2///V9v//1fb//9Xz///R1f//zbP//8yp///Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKz//8/F///U6///1ff//9X2///V9v//1fb//9X2 + ///V9v//1fb//9DJ///Mqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////+/f//28L//8up + ///Mqv//zKr//8yq///Lqf//3cf///7+//////////////////////////////////////////////// + /////////////////////////////////////////////////////////v////P8///h+P//1vb//9T2 + ///V9v//1fP//9DN///MrP//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Ouv//0+j//9X3///V9v//1fb//9X2///V9v//1fb//9DJ + ///Mqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9/P//2cD//8up///Mqv//zKr//8yq + ///Lqf//28P///79//////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////9/v//8Pz//+D5///X9f//0M///8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//zrv//9Ts///V9///1fb//9X2///V9v//1fb//9DK///Mqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////3////j3v//zK3//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8yq///Ns///zr///8/H///QyP//z8P//865///Mrf//zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8/G///U8///1Pb//9b2///c+P//6fr//9zM///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////fy///Ut///zKn//8yq///Mqv//zKr//8yq///Mqf//zbP//9DS + ///T6v//1PP//9X2///V9v//1fX//9Tw///S4P//z8D//8yr///Mqv//zKr//8yq///Mqv//zKr//8ys + ///W3P//5vr///H8///7/v///////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////7//+LP///Mqf//zKr//8yq///Mqv//zKr//8yp///WvP//5+r//+T6///f+f//2/f//9n3 + ///X9///1/b//9b3///W9///1vL//9PO///NrP//zKr//8yq///Mqv//zKr//8up///Yv///+/r///// + /////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up + ///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9u///9Gz + ///Mqf//zKr//8yq///Mqv//zKn//9O1///07f////////7////9/v//+v7///j9///1/f//9P3///P8 + ///z/P//9P3///X6///fy///zKr//8yq///Mqv//zKr//8yq///Orv//8ej//////////////////+HN + ///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq + ///Lqf//28P///79//////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////5dT//8yp///Mqv//zKr//8yq + ///Mqv//zav//+nb//////////////////////////////////////////////////////////////// + ///48///1Lj//8yp///Mqv//zKr//8yq///Lqf//5dP//////////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79 + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////7+f//17z//8up///Mqv//zKr//8yq///Lqf//1rv///r3 + ////////////////////////////////////////////////////////////////////////59b//8yq + ///Mqv//zKr//8yq///Lqf//3MX///79/////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////z6///z6///8yq///Mqv//zKr//8yq///Mqf//5dT///////////////////// + ////////////////////////////////////////////////////////9vD//9Gy///Mqf//zKr//8yq + ///Lqf//2cD///38/////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///p2v//zKr//8yq///Mqv//zKr//8yq///Orf//8ej///////////////////////////////////// + /////////////////////////////////////////v3//93G///Lqf//zKr//8yq///LqP//38n///7+ + /////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up + ///Mqv//zKr//8yq///Lqf//2sL///v4///8+v///Pr///z6///8+v///Pr///z7///9/P///v7///// + ///////////////////////////////////////////////////////////////////gy///y6n//8yq + ///Mqv//zKr//8yp///Ttf//+fT///////////////////////////////////////////////////// + //////////////////////////////Ho///Qsf//y6j//8uo///StP//8un//////////////////+HN + ///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq + ///Mqv//z7D//9e8///Xvf//173//9e9///Xvf//173//9i+///awf//3sj//+XT///u4///+PT////+ + //////////////////////////////////////////////38///awf//y6n//8yq///Mqv//zKr//8up + ///Yvf///Pr///////////////////////////////////////////////////////////////////// + ///////////////+///w5v//4c3//+LP///z6////////////////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Mqv//zKr//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///NrP//07b//+LO///27/////////// + //////////////////////////////v5///Wu///y6n//8yq///Mqv//zKr//8up///bxP///v3///// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8up///Stf//697///7+///////////////+ + +f///vr///////r3///Ut///zKn//8yq///Mqv//zKr//8up///eyP////7///////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///9+///2cD//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//zq7//+rc///////////9///54///+Nz///vr//n0 + +f/Ttf//zKn//8yq///Mqv//zKr//8up///fyv////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Mqf//zKn//8yp///Lqf//y6n//8up///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//9Gy///y6v////70///21///9tT///fV//nu3v/Ttfv/zKn//8yq + ///Mqv//zKr//8up///fyf////7///////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+HN + ///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq + ///Mqf//1Lf//+bV///n1///59f//+fX///m1v//5NL//9/K///Xvf//z6///8yp///Mqv//zKr//8yq + ///Mqv//zKr//8up///dxv7//fbk///21P//9tX///bV//ru2f/Utvj/zKn//8yq///Mqv//zKr//8up + ///dxv///v7///////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28T///7+ + ///////////////////////////////////8+v//8ej//9rC///Mqv//zKr//8yq///Mqv//zKr//8yq + ///QsP3/9Obf///31P//9tX///bV//zx2P/Wuff/y6n//8yq///Mqv//zKr//8up///ZwP///fz///// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////// + //////////////////////////////r3///bwv//zKn//8yq///Mqv//zKr//8yq///Mqv//6NTo///3 + 1P//9tX///bV//301v/av/P/y6n//8yq///Mqv//zKr//8up///VuPz/+/X0/////P////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////// + ///////////////////x5///zq7//8yq///Mqv//zKr//8yq///Lqf//4Mfv///21f//9tX///bV///2 + 1f/hye7/y6n//8yq///Mqv//zKr//8yq///QsPv/9eje///53////O////77//////////////////// + //////////////////////////////////////////////7+///x5///49D//+TT///17/////////// + /////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up + ///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////////////////////// + ///69///1bj//8up///Mqv//zKr//8yq///Lqf//28Dz//301v//9tX///bV///31P/p1uf/zKr//8yq + ///Mqv//zKr//8yq///Mq///7Nrl///31P//9tb///je///77f///vr///////////////////////// + /////////////////////////////+/k///QsP//y6n//8up///VuP//9vD//////////////////+HN + ///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq + ///Lqf//28P///79///////////////////////////////////////////////////9+///2L7//8up + ///Mqv//zKr//8yq///Lqf//2Lz1//3y1///9tX///bV///31P/z5d//z6/8/8yq///Mqv//zKr//8yq + ///Lqf//3sXw//711v//9tX///bV///21f//99z///vq///++f////////////////////////////// + ////////+vf//9e8///Lqf//zKr//8yq///Lqf//49H//////////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79 + ///////////////////////////////////////////////////8+v//173//8up///Mqv//zKr//8yq + ///Lqf//2b31//3z1///9tX///bV///21f/88dj/17v2/8up///Mqv//zKr//8yq///Mqv//0bH7//Xn + 3f//99T///bV///21f//9tX///bV///32v//+uj///33/////v//////////////////////6dr//8yr + ///Mqv//zKr//8yq///Lqf//3cb///7+/////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////// + ///////////////////////////////////48///0rT//8yp///Mqv//zKr//8yq///Lqf//28Hz//70 + 1v//9tX///bV///21f//99X/59Lp/8yq///Mqv//zKr//8yq///Mqv//zKn//+DI7//+9Nb///bV///2 + 1f//9tX///bV///21f//9tX///fZ///65v///fX////+///////38v//1Lj//8yp///Mqv//zKr//8yq + ///Lqf//4cz//////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///9+///2cD//8up///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////// + ///////////////////q3f//zav//8yq///Mqv//zKr//8yq///Lqf//4cnu///21f//9tX///bV///2 + 1f//99X/9+rc/9O0+v/Mqf//zKr//8yq///Mqv//zKr//86t/f/r2OX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21P//99j///rj//z49P/fyf//zKn//8yq///Mqv//zKr//8yq///Mq///697///// + /////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up + ///Mqv//zKr//8yq///Lqf//28P///79//////////////////////////////////////////////Ts + ///UuP//zKn//8yq///Mqv//zKr//8yq///Mqv//69jm///31P//9tX///bV///21f//9tX///bV/+XQ + 6v/Mqv//zKr//8yq///Mqv//zKr//8yp///Qsfv/7Nnl//711v//99T///bV///21f//9tX///bV///2 + 1f//99T//PHX/+LM7v/Nq///zKr//8yq///Mqv//zKr//8up///Ut///+PT//////////////////+HN + ///Lqf//zKr//8yq///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq + ///Lqf//2sH///r3///7+f//+/n///v5///7+f//+vf///jz///x6P//5dP//9O1///Mqf//zKr//8yq + ///Mqv//zKr//8yp///Ss/r/9+rc///31f//9tX///bV///21f//9tX///fV//ru2f/Xu/b/y6n//8yq + ///Mqv//zKr//8yq///Mqf//zq79/+DI7v/05d7//PLX///11f//9tX//vXV//zx2P/x4uD/3MHy/82r + /v/Mqv//zKr//8yq///Mqv//zKr//8yq///n1////////////////////////+HN///Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf/////////////9+///2cD//8up///Mqv//zKr//8yq///Mqv//z6///9a6 + ///Wuv//1rr//9a6///Wuv//1Lj//9Kz///Orv//zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8up + ///iyu3//vXV///21f//9tX///bV///21f//9tX///bV///31f/y4uD/0bL7/8up///Mqv//zKr//8yq + ///Mqv//zKr//8yp///QsPz/2Lz1/97F8P/hye7/3sXw/9e69v/Prv3/y6n//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9rA+f/79/n//////////////////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf/////////////9/P//2sH//8up///Mqv//zKr//8yq///Mqv//zKr//8up///Lqf//y6n//8up + ///Lqf//y6n//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9W3+P/36tz///fV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/7dvk/9Cw/P/Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//8up///Lqf//y6n//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//1bj3//Xo + 3v//+Nv///rq///++P///////////+HN///Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + ///+/v//3sj//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//0rP6//Dg4f//99X///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV/+7c4//Ss/r/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Xu/b/9Obe///31f//9tX///bV///3 + 2v//+uf///32/+HN/v/Lqf//zKr//8yq///Mqv//zKr//8up///hzf//////////////////693//8yr + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqf//y6n//8yr///YvPX/8uPg///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f/05d7/28Dz/82r/v/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//zq79/+DI7v/47Nr///fV///21f//9tX///bV///21f//9tX///fZ/+HK + 8v/Lqf//zKr//8yq///Mqv//zKr//8up///hzf///////////////////Pn//+HN///PsP//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zav//86u///Ss/r/2r/z/+rX + 5v/679n///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X//PHY/+zZ5f/ZvfX/z679/8yp///Lqf//y6n//8yp///Mqf//zKn//8up///Lqf//zKn//8+v + /P/bwfL/8N/i//701v//99X///bV///21f//9tX///bV///21f//9tX///bV/+HJ7f/Lqf//zKr//8yq + ///Mqv//zKr//8up///hzf////////////////////////38///07P//7N///+rc///q2///6tz//+rc + ///q3P//6tz//+rc///q3P//6tz//+rc///r3v//7uP///Lo9//47N3//fPW///31f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f/88dj/8uLg/+XQ6v/cwvL/1rn3/9O1+f/TtPr/07X5/9e69v/dw/H/59Lp//Pk3//989f///fU///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV/+HJ7v/Lqf//zKr//8yq///Mqv//zKr//8up + ///hzf////////////////////////////////////////////////////////////////////////// + ///////////////////////////////75///99T///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fU///3 + 1f/+9Nb/+/HY//nu2v/57dr/+u7Z//zx2P/+9db///fV///31P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV/+HJ7v/Lqf//zKr//8yq///Mqv//zKr//8up///hzf////////// + //////////////////////////////////////////////////////////////////////////////// + //////////34///32v//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f//99X///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV/+HJ7v/Lqf//zKr//8yq///Mqv/8zKr//8up///gy/////////////////////////// + //////////////////////////////////////////////////////////////////////////rq///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV/+DI + 7//Lqf//zKr//8yq//zMqv/wzKr//8up///cxf///v3///////////////////////////////////// + /////////////////////////////////////////////////////vr///fb///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX//vTW/9zC8v/Lqf//zKr//8yq + //DMqv/TzKr//8up///Wuv//+/j///////////////////////////////////////////////////// + ////////////////////////////////////++z///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/+/DY/9a49//Lqf//zKr//8yq/9PMqv+izKr//8yq + ///Pr///8+z///////////////////////////////////////////////////////////////////// + ///////////////++///+N3///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99T/8+Xf/8+v/P/Mqv//zKr//8yq/6LMqv9hzKr/+Myq///Mqf//5dT///// + ///////////////////////////////////////////////////////////////////////////////7 + 7v//9tb///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX/5dDq/8yq///Mqv//zKr/+Myq/2HMqv8izKr/1syq///Mqf//1Lj///n0//////////////// + //////////////////////////////////////////////////////////78///43///9tT///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f/57dr/1Lf4/8yp + ///Mqv//zKr/1syq/yLMqv8AzKr/isyq///Mqv//zKr//+TT//////////////////////////////// + //////////////////////////////////////////zx///21v//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f/kzuv/zKr//8yq///Mqv//zKr/is2p + /wDMqv8AzKr/Lcyq/+HMqv//zKr//9Cw///w5f////////////////////////////////////////// + //////////////////////3///nh///21P//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//Df4v/QsPz/zKr//8yq///Mqv/hzKr/Lcyq/wDMqv8A/9T/AMyq + /3rMqv/9zKr//8yp///Ut///8+v///////////////////////////////////////////////////// + /////PP///bX///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X/8+Tf/9S1+f/Mqf//zKr//8yq//3Mqv962aL/AMyq/wDMqv8AzKr/AMyq/xPMqv+zzKr//8yq + ///Lqf//1Lf///Dl/////////////////////////////////////////////////v//+eP///bU///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fV///21f/w3+L/1LX5/8up + ///Mqv//zKr//8yq/7PMqv8SzKr/AMyq/wDMqv8AzKr/AMyq/wDMqv8qzKr/zMyq///Mqv//zKn//9Cw + ///k0///+fT////////////////////////////////////99f//99j///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///31P//9tX/+e3a/+TP6//QsPz/zKn//8yq///Mqv//zKr/zMyq + /yrMqv8AzKr/AMyq/wAtJzoAzKr/AMyq/wDMqv8AzKr/NMyq/8zMqv//zKr//8yq///Mqv//1Lj//+XU + ///z7P//+/j///79///////////+///65f//9tT///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f/+9Nb/+/DY//Tl3v/l0Or/1bf4/8yq///Mqv//zKr//8yq///Mqv/MzKr/NMyq/wDMqv8AzKr/ACch + MQAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/yrMqv+zzKr//cyq///Mqv//zKn//8yp///Pr///1rr//9zF + ///gy///4c39/+HK8f/hye3/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ + 7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ + 7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+HJ7v/hye7/4cnu/+DI7//cwvL/1rn3/8+v + /P/Mqv//zKn//8yq///Mqv//zKr//cyq/7PMqv8qzKr/AMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAMyp + /wDMqv8AzKr/AMyq/wDMqv8SzKr/esyq/+HMqv//zKr//8yq///Mqv//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8yq///Mqv//zKr//8yq + ///Mqv/hzKr/esyq/xPMqv8AzKr/AMyq/wDMqv8AAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq + /wDMqv8A17X/AMyq/y3Mqv+JzKr/1syq//jMqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/4zKr/1syq/4rMqv8t1K3/AMyq + /wDMqv8AzKr/AMyq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJB4uAMyq/wDMqv8AzKr/AMyq + /wDNqf8AzKr/Isyq/2HMqv+hzKr/08yq//DMqv/9zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq//zMqv/wzKr/08yq/6LMqv9izKv/I8up/wHMqv8AzKr/AMyq/wDMqv8ALSc6AAAA + AAAAAAAAAAAAAAAAAADwAAAAAAAAAA8AAADgAAAAAAAAAAcAAADAAAAAAAAAAAMAAACAAAAAAAAAAAEA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAEA + AADAAAAAAAAAAAMAAADgAAAAAAAAAAcAAADwAAAAAAAAAA8AAAAoAAAAYAAAAMAAAAABACAAAAAAAACQ + AAAAKAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNqv8AzKr/AMyq + /wDMqv8AzKr/AMyq/wDMqv8QzKr/PMyq/3XMqv+qzKr/1Myq/+7Mqv/6zKr//syq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv/+zKr/+syq/+7Mqv/UzKr/q8yq/3bMqv89zKr/EMyq/wDMqv8AzKr/AMyq + /wDMqv8Azar/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAALyc8AMyq/wDMqv8AzKr/AMyq/wDPqP8AzKr/JMyq/3DMqv+7zKr/6cyq//zMqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + //zMqv/pzKr/u8yq/3DMqv8lzqz/AMyq/wDMqv8AzKr/AMyq/wA8L0kAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq/wDMqv8AzKr/AMyq/yDMqv9/zKr/2cyq + //7Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq//7Mqv/ZzKr/gMyq/yDMqv8AzKr/AMyq + /wDNq/8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq + /wDMqv8HzKr/Wsyq/87Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq/8/Mqv9azKr/B8yq/wDMqv8AzKr/AMyr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzKr/AMyq/wDMqf8AzKr/AMyq/xbMqv+PzKr/88yq///Mqv//zKr//8yq///Mqv//y6n//8up + ///NrP//0bL//9S4///Yvf//2b///9nA///ZwP//2cD//9nA///ZwP//0r7//869///Ovf//zr3//869 + ///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869 + ///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869 + ///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//869///Ovf//zr3//86+///Ovf//zrv//823 + ///Nsf//zKz//8yp///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv/zzKr/j8yq/xbMq/8AzKr/AMyq + /wDMqv8AAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8Ay6r/AM2q/wDMqv8AzKr/Isyq/6/Mqv/+zKr//8yq + ///Mqv//zKr//8up///Nq///1bn//+LO///u4v//9u////r3///8+v///fv///37///9+////fv///37 + ///9+///6ff//9Ty///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz + ///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz + ///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz///V8///1fP//9Xz + ///V8///1fP//9Xz///V8v//1PH//9Tu///T6P//0tz//9DK///Ot///zKv//8yp///Mqv//zKr//8yq + ///Mqv//zKr//syq/6/Mq/8izKr/AMyr/wDMqv8AzKr/AAAAAAAAAAAAAAAAADwvSQDMqf8AzKr/AMyq + /wDMqv8izKr/uMyq///Mqv//zKr//8yq///Mqf//zav//9e9///r3f//+fX///////////////////// + ////////////////////////////////////////9/7//9r3///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1ff//9X2 + ///U7v//0dj//867///Mq///zKn//8yq///Mqv//zKr//8yq///Mqv+5zKr/Isyq/wDMqv8AzKr/ADQr + QQAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq/xbMqv+vzKr//8yq///Mqv//zKr//8up///Rsv//59b///r3 + /////////////////////////////////////////////////////////////////////////v///+b6 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///1ff//9Tv///R0v//zbH//8yp///Mqv//zKr//8yq + ///Mqv//zKr/r8yq/xbMqv8AzKr/AMyq/wAAAAAAzKr/AMyq/wDMqv8AzKr/B8yq/4/Mqv/+zKr//8yq + ///Mqv//zKn//9a7///x6P////////////////////////////////////////////////////////// + //////////////////////////////b9///Z9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///V9v//0+L//865///Mqf//zKr//8yq///Mqv//zKr//syq/4/Mqv8HzKr/AMyq/wDMqv8AzKr/AMyq + /wDMqv8AzKr/Wsyq//PMqv//zKr//8yq///Mqf//2L7///bw//////////////////////////////// + //////////////////////////////////////////////////////////////7////m+v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9Pp///OvP//zKn//8yq///Mqv//zKr//8yq + //PMqv9azKr/AMyq/wDLqP8AzKr/AMyq/wDMqv8gzKr/z8yq///Mqv//zKr//8up///Wu///9vD///// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////3/f//2vf//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///T6P//zrn//8yp///Mqv//zKr//8yq///Mqv/OzKr/IMyq/wDMqv8AzKr/AMqp/wDMqv+AzKr//8yq + ///Mqv//zKn//9Gy///x6P////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////6vv//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+L//82x///Mqf//zKr//8yq///Mqv//zKr/gM2t + /wDMqv8AzKr/AMyq/yXMqv/ZzKr//8yq///Mqv//zav//+fW//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+/7//9/4///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9HS + ///Mq///zKr//8yq///Mqv//zKr/2cyq/yTMqv8AzKr/AMyq/3DMqv/+zKr//8yq///Lqf//2L3///r3 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////L8///Y9///1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9Tv///Ou///zKn//8yq///Mqv//zKr//syq/3DMqv8AzKr/EMyq + /7vMqv//zKr//8yq///NrP//697///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////7/ + ///o+v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///R2P//zKv//8yq + ///Mqv//zKr//8yq/7vMqv8QzKr/PMyq/+nMqv//zKr//8up///Vuf//+fb///////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////7/v//4Pj//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X3///U7f//zrf//8yp///Mqv//zKr//8yq/+nMqv88zKr/dcyq//zMqv//zKr//8up + ///izv////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9v3//9v3 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0Mr//8yp///Mqv//zKr//8yq + //zMqv91zKr/q8yq///Mqv//zKr//82s///u4v////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////H8///Y9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9///0tz//8ys///Mqv//zKr//8yq///Mqv+qzKr/1Myq///Mqv//zKr//9Gy///27/////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////s+///1vb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+j//82x///Mqv//zKr//8yq///Mqv/UzKr/7syq + ///Mqv//y6n//9W4///69/////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+////6fr//9b2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1O7//863 + ///Mqf//zKr//8yq///Mqv/uzKr/+syq///Mqv//y6n//9i9///8+v////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////f///+j6///W9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1PH//867///Mqf//zKr//8yq///Mqv/6zKr//syq///Mqv//y6n//9m/ + ///9+/////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////3////o+v//1vb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fL//869///Mqf//zKr//8yq + ///Mqv/+zKr//8yq///Mqv//y6n//9nA///9+/////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////9////6vr//9f2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V9///1ff//9X3///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fP//86+///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + /////////////////////////fz///n2///69v///v3///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v///+37///Y9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V9///1ff//9X1///V8v//1O///9Tt + ///U7P//1O3//9Tv///U8f//1fX//9X3///V9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fP//869///Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+//////////////////////////+///w5///3MT//9S3///Ut///3sj///Ps + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////y/P//3Pf//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1fX//9Ts + ///S3v//0ND//8/E///Ovf//zrj//821///NtP//zbX//863///OvP//z8T//9HQ///S4P//1O///9X2 + ///V9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fP//869 + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////////////////////Dl + ///Rsv//y6n//8up///Lqf//y6n//9O2///z7P////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////9/3//+L5///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1ff//9Xz///S4P//z8f//821///MrP//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mrf//zrj//9DQ///U6v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fP//869///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+////////////////////Pn//9m////Lqf//zKr//8yq///Mqv//zKr//8up///dxv///fz///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////z+///r+///2ff//9T2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0+T//8/D///Mrv//zKn//8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8yq///NtP//0dL//9Tv + ///V9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fP//869///Mqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////8+v//8+v///Mqv//zKr//8yq + ///Mqv//zKr//8yp///Rs///9vD///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////9P3//+H5///W9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9Xz///R1P//zbL//8yp + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//zKv//86////T5v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fP//869///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////7eH//82r///Mqv//zKr//8yq///Mqv//zKr//8yq///Orf//8Ob///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////z+///u+///3Pj//9X2///V9v//1fb//9X2 + ///V9///1PL//9DM///MrP//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Ntv//0uH//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fP//869///Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Nq///7eL///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+f7//+r6///b9///1fb//9X2///V8///0Mv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//zbT//9Pj///V9///1fb//9X2///V9v//1fb//9X2///V9v//1PL//869 + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////5/v//6vv//9z3///R0v//zKz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//865///U6v//1ff//9X2 + ///V9v//1fb//9X2///V9v//1/P//9C+///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+zl///OsP//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKr//82x + ///Ovf//0Mn//9DQ///R0f//0M7//8/F///Ouf//zK3//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yp///Pxv//1fP//9X2///U9v//1vb//9v3///n+v//8vn//9jA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+fX//9e8///Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yp///Ns///0M7//9Pn///V8v//1fb//9X3///V9///1fb//9X1///U7///0t///8/D + ///Mrf//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mrf//09v//9v4///k+f//8Pz///r+ + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////5dT//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//9TA///X5v//1vb//9X3///V9v//1Pb//9T2 + ///V9v//1fb//9X2///V9v//1ff//9Tz///R1///zLL//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqf//1L3///X3///+/////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Nq///7eH///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////28f//07X//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//3MT///f1 + ///4/v//8vz//+37///n+v//4/n//+D4///e+P//3Pj//9v3///b9///2/f//9z4///d+P//29///9Cy + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zqz//+7i/////////////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////l0///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8up///Wuv//9/L//////////////////////////////v////3////8/v//+/7///r+ + ///6/v//+v7///r+///7/v///P7//+nb///Orf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//97I + ///+/f///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////n1 + ///Vuf//y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//86u///u4v////////////////////////// + //////////////////////////////////////////////////////////////37///dxv//y6n//8yq + ///Mqv//zKr//8yq///Mqv//zKn//9O2///59P///////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+3h///NrP//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9vE + ///9+/////////////////////////////////////////////////////////////////////////// + ///////////////////y6f//z7D//8yq///Mqv//zKr//8yq///Mqv//zKr//86u///y6f////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7//9/K///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zaz//+3h//////////////////////////////////////////////// + ///////////////////////////////////////////////////9/P//28T//8up///Mqv//zKr//8yq + ///Mqv//zKr//8yr///s4P///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Nq///7eH///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+vb//9S4///Lqf//zKr//8yq///Mqv//zKr//8yq///Lqf//1bj///n2//////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////693//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///q3f///////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////8un//8+u///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Lqf//38n///7+//////////////////////////////////////////////////////////////// + ////////////////////////////////////////9/L//9O1///Mqf//zKr//8yq///Mqv//zKr//82s + ///v5f///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eL///// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////6dv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6dr///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////7//+PR + ///Mqf//zKr//8yq///Mqv//y6n//9e9///69////////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///5tb///Xu///07f//9O3///Tt///07f//9O3///Tt///07f//9e////fx + ///59f///Pr///7+//////////////////////////////////////////////////////////////// + ////////////////////////4s///8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Orf//8Of///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////n0///ZwP//zKr//8up///Mqv//1bn///Lp//////////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zq7//9Cw///QsP//0LD//9Cw + ///QsP//0LD//9Cw///QsP//0LH//9Gz///Ut///2L7//9/J///o2f//8+v///z6//////////////// + ///////////////////////////////////////////////////+/f//3MX//8up///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Qsf//9e////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////59f//693//+XT + ///q2///+PP//////////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Mqf//y6n//8up + ///Mqv//z7D//9nA///q3f//+/j///////////////////////////////////////////////////// + ///8+v//2L7//8up///Mqv//zKr//8yq///Mqv//zKr//8yp///Ttv//+fT///////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Nq///2b////Hn/////v////////// + ///////////////////////////////////7+P//1br//8up///Mqv//zKr//8yq///Mqv//zKr//8up + ///Vuf//+vf///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9Cx///q3P///v7////////////////+///77f///PD///78///////59v//1Lf//8up + ///Mqv//zKr//8yq///Mqv//zKr//8up///Wu///+/n///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Pr///7N////////////////33///3 + 2f//9tb///jf///87v/59Pr/07b//8yp///Mqv//zKr//8yq///Mqv//zKr//8up///XvP///Pn///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8yp///Mqf//zKn//8yp + ///Mqf//zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Lqf//0rT///Ts//////////rp///21f//9tX///bU///31f/57uD/07X7/8yp///Mqv//zKr//8yq + ///Mqv//zKr//8up///XvP//+/n///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//0bL//9S3///Ut///1Lf//9S3///Ut///07b//9O1///Rsv//zq7//8yq///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//93H///9+vn///jb///21f//9tX///bV///3 + 1f/67tn/1Lb4/8up///Mqv//zKr//8yq///Mqv//zKr//8up///Wuv//+/j///////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///6dv///r3///59v//+fb///n2///59v//+fX///j0 + ///28P//8ej//+na///cxf//0LD//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8+v + ///y5ez///fV///21f//9tX///bV///21f/78Nj/1rj3/8up///Mqv//zKr//8yq///Mqv//zKr//8yp + ///Ut///+fX///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eL///// + ///////////////////////////////////////////////////9/P//8un//9nA///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///iy+3///bV///21f//9tX///bV///21f/88tf/2L31/8up + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Rsv//9vH///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////////////////////// + //////////////n0///ZwP//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Xuvb/+/DY///2 + 1f//9tX///bV///21f/+9Nb/3cPx/8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Prv7/8uj4//// + /P////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////// + ///////////////////////////////////////////////////y6f//0LD//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Qsfv/9ejd///31f//9tX///bV///21f//9tX/48zs/8up///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mq///69nn///64P///O////77//////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v//+PT///Xu + ///48////v7//////////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Nq///7eH///////////////////////////////////////////////////////////////////// + ///9+///2sL//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///OrP7/8N/i///31P//9tX///bV///2 + 1f//99T/6tfm/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//4svt///21P//9tb///je///7 + 7f///vr///////////////////////////////////////////////////////////////////////// + //////////////z6///k0///07b//9Cw///Ttf//5NP///z6/////////////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////// + ////////////////////////////////////////5NL//8up///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///7Nnl///31P//9tX///bV///21f//99T/8+Pf/8+u/f/Mqv//zKr//8yq///Mqv//zKr//8yq + ///Lqf//2Lz1//zx2P//9tX///bU///21f//+Nz///vr///++f////////////////////////////// + /////////////////////////////////////////////+fX///Nq///y6n//8yq///Lqf//zKv//+XU + ///+/v///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///// + ////////////////////////////////////////////////////////////////////////6dr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6dXn///31P//9tX///bV///21f//9tX/+u7Z/9W3 + +P/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//z6/8//Pk3///99T///bV///21f//9tX///bV///3 + 2///+uj///33/////v//////////////////////////////////////////////////////9e7//9Kz + ///Mqf//zKr//8yq///Mqv//zKn//9K1///38v///////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////////////////////// + ////////////////////////6dr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6dXn///3 + 1P//9tX///bV///21f//9tX//vXW/+DI7//Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//+PM + 7P//9tX///bV///21f//9tX///bV///21f//9tX///fZ///65v///fX////+//////////////////// + ///////////////////+/f//4Mz//8up///Mqv//zKr//8yq///Mqv//zKr//86t///w5v////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////// + ////////////////////////////////////////////////////////5dP//8up///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//6tfm///31P//9tX///bV///21f//9tX///fU/+7d4//NrP7/zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//9O0+v/26dz///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99j///nk///88/////3////////////////////////////z6v//0LH//8yp///Mqv//zKr//8yq + ///Mqv//zKr//82s///w5v///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Nq///7eH///////////////////////////////////////////////////////////////////// + ///+/f//3MX//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq/7/7tzj///31P//9tX///bV///2 + 1f//9tX///bV//rv2f/Wuff/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///hye7//vTW///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21///+eL///zx///+/P////////////z6 + ///cxf//y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//9Cw///07f///////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////// + ///////////////////////////////////17///0bP//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Pr/3/8+Tf///31P//9tX///bV///21f//9tX///bV///21f/n0+j/zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Prv3/7Nrl///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tT///bW///43////O////77/+jY///NrP//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9a7 + ///7+P///////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///7eH///// + //////////////////////////////////////////////////////////////38///gy///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///Utvn/+e3a///31f//9tX///bV///21f//9tX///bV///3 + 1f/57Nr/1bj4/8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//0rL6/+/e4v//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21P//9tb/7dzr/9Cw///Mqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//+TS/////////////////////////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Nq///7eH///////////////////////////////////////////////////// + ////////+vb//+TR///Orf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///exPD//vTW///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/6tfm/82s/v/Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//9Gy+//q1+b//fPX///31P//9tX///bV///21f//9tX///bV///21f//9tX///fU//3z + 1//q1+b/0bH7/8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//0rT///Xv//////////////// + /////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq///697///37///8+v///Pr///z6 + ///8+v///Pn///v5///69v//9vH///Dm///l1P//1rv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//82r/v/s2uT///fU///21f//9tX///bV///21f//9tX///bV///21f//9tX//PLX/93D + 8f/Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Orf7/3MPx//Df4v/679n//vXW///2 + 1f//99X///fV///11f/88dj/8uLg/97F8P/Orf3/zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//5dP////+/////////////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+///////////////////6tz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//07b//9e9///Xvf//173//9e9///Xvf//17z//9a7///Ut///0bL//86t///Mqf//y6n//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9e69v/679n///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//bp3P/Vt/j/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//86t/f/Wuff/3sbw/+TO6//m0en/5c/q/+DI7//Yu/X/z6/9/8up///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///Yvfz/+fX9/////////////////////////////fv//9nA + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////6tz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Mqf//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zq39/+za + 5P//99X///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f/x4eH/0rP6/8up + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//y6n//8up///Mqf//zKn//8up + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9Kz+v/y5OL///rj///8 + 8v///v3//////////////////fv//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+///////////////////7N///8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//4cnu//3z1///9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX/797i/9Kz+v/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Lqf//0rL6/+/e4v//9tX///bU///21///+eH///zw///+/P///////fv//9nA///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+///////////////////8un//86u///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///exPH/+u/Z///31f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV//Hh4f/Vt/j/y6n//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///Ut/j/8ODh///21f//9tX///bV///21f//9tT///bW///4 + 3////O7//fr6/9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + ////////+vb//9a6///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//z679/+LL + 7f/779n///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31f/26dz/3cTx/82s/v/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//zaz+/9zC8f/26N3///fV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tb//fTe/9m++P/Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///9+////////////////////////+vd///Orv//y6n//8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8up + ///Lqf//zKn//8+u/f/av/P/797i//701v//99X///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X//PLX/+vZ5f/Xuvb/zav+/8up + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//8yr + ///WuPf/6tfm//zy1///99X///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX//fLX/9m9 + 9P/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////////////////////79 + ///t4P//2cD//9Gy///Prv//zq7//86u///Orv//zq7//86u///Orv//zq7//86u///Orv//zq7//86u + ///Orv//zq7//8+v///Qsf//0rT//9a6/v/cwvP/5dDq//Li4P/88tf///fV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31f/679n/69nl/9vA8//Rsfv/zKr//8up///Lqf//y6n//8yp///Mqf//zKn//8up + ///Lqf//y6n//8yq///Pr/z/2b31/+nV5//57dr///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX//fPX/9m99P/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA + ///9+////////////////////////////////////Pr///bw///z6v//8un///Lp///y6f//8un///Lp + ///y6f//8un///Lp///y6f//8un///Lp///y6f//8ur///Ps///17///+PP///v18//99Nj///bV///3 + 1P//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fV//3z1//1593/69jm/+HJ + 7v/av/P/1rn3/9S1+f/TtPn/07X5/9W49//ZvfT/38fv/+jU6P/z5N///PHY///31f//99X///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX//fPX/9m99P/Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////+///64///9tT///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99X///fU///21f/989f/+/DY//nt2v/57Nr/+e3a//rv2f/98tf///XV///3 + 1P//99T///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX//fPX/9m99P/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9nA///9+/////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////31///32P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f//99X///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX//fPX/9m+9P/Lqf//zKr//8yq///Mqv//zKr//syq + ///Mqv//y6n//9m////9+/////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////7///rm///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX//fLX/9m9 + 9P/Lqf//zKr//8yq///Mqv//zKr/+syq///Mqv//y6n//9i9///8+v////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////ff///fZ///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX//PHY/9i79v/Lqf//zKr//8yq///Mqv/6zKr/7syq///Mqv//y6n//9W4 + ///69/////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////+uj///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX/+u7Z/9S3+P/Lqf//zKr//8yq + ///Mqv/uzKr/1Myq///Mqv//zKr//9Gy///27/////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////+ + +P//99v///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X/9ujd/9Gx+//Mqv//zKr//8yq///Mqv/UzKr/q8yq///Mqv//zKr//82s///u4v////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////76v//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99T/7tzj/82s/v/Mqv//zKr//8yq///Mqv+rzKr/dcyq + //zMqv//zKr//8up///izv////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////76///43P//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX/4srt/8up + ///Mqv//zKr//8yq//zMqv91zKr/Pcyq/+nMqv//zKr//8up///Vuf//+fb///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////vt///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31f/57tr/1bf4/8up///Mqv//zKr//8yq/+nMqv88zKr/EMyq/7vMqv//zKr//8yq + ///NrP//697///////////////////////////////////////////////////////////////////// + /////////////////////////////////////vv///je///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f/r2Ob/zav+/8yq///Mqv//zKr//8yq + /7vMqv8QzKr/AMyq/3DMqv/+zKr//8yq///Lqf//2L3///r3//////////////////////////////// + /////////////////////////////////////////////////////////////////////O////bW///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fV//rv + 2f/Yu/b/y6n//8yq///Mqv//zKr//syq/3DMqv8AzKr/AMyq/yXMqv/ZzKr//8yq///Mqv//zav//+fX + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/P//+OD///bU///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV/+fS6f/Nq///zKr//8yq///Mqv//zKr/2cyq/yTMqv8AzKr/AM6q + /wDMqv+AzKr//8yq///Mqv//zKn//9Gy///x6P////////////////////////////////////////// + ///////////////////////////////////////////////88f//9tf///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X/8eLg/9Gx+//Mqf//zKr//8yq + ///Mqv//zKr/gM6p/wDMqv8AzKr/AMyq/wDMqv8gzKr/z8yq///Mqv//zKr//8up///Wu///9vD///// + ///////////////////////////////////////////////////////////////////////////9///5 + 4v//9tT///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1P/26dz/1rn3/8up///Mqv//zKr//8yq///Mqv/PzKr/IMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/Wsyq + //PMqv//zKr//8yq///Mqf//2L7///bw//////////////////////////////////////////////// + //////////////////////////3z///31///9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//bp3P/YvPX/zKn//8yq///Mqv//zKr//8yq//PMqv9azKr/AMyq + /wDMqv8AzKr/AMyq/wDMqv8AzKr/B8yq/4/Mqv/+zKr//8yq///Mqv//zKn//9a7///x6P////////// + //////////////////////////////////////////////////////7///nk///21P//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31f//9tX/8eLg/9a59//Mqf//zKr//8yq + ///Mqv//zKr//syq/4/Mqv8HzKr/AMyq/wDMqv8AAAAAAMyq/wDMqv8AzKr/AMyq/xbMqv+vzKr//8yq + ///Mqv//zKr//8up///Rsv//59f///r3//////////////////////////////////////////////// + /////fX///fY///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X///fV//rv + 2f/n0un/0bH7/8up///Mqv//zKr//8yq///Mqv//zKr/r8yq/xbMqv8AzKr/AMyq/wAAAAAAAAAAAEE4 + UgDMrP8AzKr/AMyq/wDMqv8izKr/ucyq///Mqv//zKr//8yq///Mqf//zav//9i9///r3v//+fX///// + /////////////////////////////////v//+ub///bU///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X///fU///21f/57tr/69jl/9i79f/Nq///zKn//8yq///Mqv//zKr//8yq///Mqv+5zKr/Isyq + /wDMqv8AzKn/ADgvRQAAAAAAAAAAAAAAAADMqv8AzKr/AMup/wDMqv8AzKr/Isyq/6/Mqv/+zKr//8yq + ///Mqv//zKr//8up///NrP//1bn//+LO///u4v//9u////r3///8+v///fv///36+P/99Nz//fLX//3z + 1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z + 1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z + 1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z1//989f//fPX//3z + 1//989f//fPX//3z1//98tf//PHY//ru2f/26N3/7tzj/+LL7f/Vt/j/zav+/8up///Mqv//zKr//8yq + ///Mqv//zKr//syq/6/Mqv8izKr/AMyr/wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAzKr/AMyq + /wDLqf8AzKr/AMyq/xbMqv+PzKr/88yq///Mqv//zKr//8yq///Mqv//y6n//8up///NrP//0bL//9W4 + ///Yvf//2cD//9m/+//ZvvT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m9 + 9P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m9 + 9P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m9 + 9P/ZvfT/2b30/9m99P/ZvfT/2b30/9m99P/ZvfT/2b30/9m+9P/ZvfT/2Lv1/9W3+P/Rsfv/zaz+/8up + ///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv/zzKr/j8yq/xbMqv8AzKr/AMyq/wDMqf8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq/wDMqv8HzKr/Wsyq/8/Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq/8/Mqv9bzKr/B8yq + /wDMqv8AzKr/AMyr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8Azar/AMyq + /wDMqv8AzKr/AMyq/yDMqv+AzKr/2cyq//7Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + //7Mqv/azKr/gMyq/yHMqv8AzKr/AMyq/wDLqf8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAANCtBAMyq/wDMqv8AzKr/AMyq/wDOqf8AzKr/JMyq/3DMqv+7zKr/6cyq + //zMqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq//zMqv/qzKr/vMyq/3HMqv8lzqv/AMyq/wDMqv8AzKr/AMyq/wBBOFIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq + /wDMqv8AzKr/AMyq/wDMqv8QzKr/PMyq/3XMqv+qzKr/1Myq/+7Mq//8zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv/+zKr/+syq/+7Mqv/UzKr/q8yq/3bMqv89zaz+Ecup/wDMqv8AzKr/AMyq + /wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAD//AAAAAAA + AAAAAAA/+AAAAAAAAAAAAAAf8AAAAAAAAAAAAAAP4AAAAAAAAAAAAAAHwAAAAAAAAAAAAAADgAAAAAAA + AAAAAAABgAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAABgAAAAAAAAAAAAAABwAAAAAAAAAAAAAAD4AAAAAAA + AAAAAAAH8AAAAAAAAAAAAAAP+AAAAAAAAAAAAAAf/AAAAAAAAAAAAAA//wAAAAAAAAAAAAD/KAAAAIAA + AAAAAQAAAQAgAAAAAAAAAAEAACgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKq/8AzKr/AMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/EMyq + /zLMqv9izKr/ksyq/7zMqv/bzKr/78yq//nMqv/+zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq//7Mqv/5zKr/78yq/9vMqv+9zKr/k8yq/2PMqv8zzKr/EMyp/wDMqv8AzKr/AMyq + /wDMqv8AzKr/AM2q/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNqv8AzKr/AMyq + /wDMqv8AzKr/AMyq/wDMqv8KzKr/Ncyq/3fMqv+2zKr/4Myq//bMqv/+zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv/+zKr/9syq/+HMqv+2zKr/eMyq/zXMqv8KzKr/AMyq/wDMqv8AzKr/AMyq/wDNqv8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADIpP8AzKr/AMyq/wDMqv8AzKr/AMyq/wDMqv8PzKr/T8yq/6fMqv/lzKr//syq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/+zKr/5syq + /6jMqv9QzKr/D8yq/wDMqv8AzKr/AMyq/wDMqv8A0qX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq + /wDMqv8IzKr/Ssyq/7DMqv/xzKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq//LMqv+xzKr/Ssyq/wjMqv8AzKr/AMyq + /wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAMyq/wDsnv8AzKr/AMyq/wDMqv8AzKr/J8yq/5XMqv/szKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv/szKr/lcyq/yjMqv8AzKr/AMyq/wC8pP8AzKr/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq/wDMqv8AzKr/BMyq + /1LMqv/MzKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Lqf//y6n//8yp + ///Mqv//zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKr//8yp + ///Mqf//zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/zcyq + /1LMqv8EzKr/AMyq/wDMqv8AzKv/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/w3Mqv94zKr/6syq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8yp///Orf//0rX//9nA///fyv//5dP//+jY///p2///6tv//+rb///q2///6tv//+rb + ///q2///6tv//9zZ///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW + ///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW + ///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW + ///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW///R1v//0db//9HW + ///R1v//0db//9HW///R1v//0db//9HW///R0///0M///8/H///Ovf//zbT//8yt///Mqf//zKn//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/6syq/3jMqv8NzKv/AMys/wDMqv8AzKr/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyq/wDMqv8AzKr/AMyq/wDMqv8TzKr/j8yq + //fMqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//82r///Ut///4c3//+7i///38f///Pr///7+ + ////////////////////////////////////////////////////////8f3//9f3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9///1ff//9X3 + ///V9v//1fX//9Tx///U6v//0tz//9DJ///Ntv//zKv//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr/98yq/5DMrP8TzKv/AMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADMqv8Ayp3/AMyq/wDMqv8AzKr/E8yq/5fMqv/7zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//82r + ///XvP//6dr///jz///+/v////////////////////////////////////////////////////////// + ///////////////////7/v//3/j//9T2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V9///1fX//9Tr + ///R1f//zrv//8yr///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/+8yq/5fMqv8TzKr/AMyq + /wDSpP8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAA0qX/AMyq/wDMqv8AzKr/AMyq/w3Mqv+PzKr/+8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Ttv//6Nj///n2//////////////////////////////// + ///////////////////////////////////////////////////////////////////u+///1vb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X2///U7v//0dP//821///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr/+8yq/4/Mqv8NzKr/AMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAA + AADMqv8AzKr/AMyq/wDMqv8EzKr/eMyq//fMqv//zKr//8yq///Mqv//zKr//8yq///Nq///3MX///Tt + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////r+///d+P//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X3///V9v//0+b//8/C///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/9syq + /3jMqv8EzKr/AMyq/wDMqv8AAAAAAAAAAAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/1LMqv/qzKr//8yq + ///Mqv//zKr//8yq///Mqf//z67//+TS///7+P////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+z7 + ///W9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1PD//9DO + ///Mrv//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr/6syq/1LMqv8AzKr/AMyq/wDMqv8AAAAAAAAA + AADMqv8AzKr/AMyq/wDMqv8ozKr/zcyq///Mqv//zKr//8yq///Mqv//zKn//8+v///o2f///fz///// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+v7//974///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///1fP//9HU///Nr///zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr/zcyq/yfMqv8AzKr/AMyq/wBaWloAzKv/AMyq/wDMqv8AzKr/CMyq/5XMqv//zKr//8yq + ///Mqv//zKr//8yq///Prv//6Nn///79//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////7vv//9b2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fT//9HU///Mrv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/lcyq/wjMqv8AzKr/AMmp + /wDMqv8AzKr/AMyq/wDMqv9KzKr/7Myq///Mqv//zKr//8yq///Mqv//zaz//+TS///9/P////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////8/v//4fn//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fP//9DO///Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv/szKr/Ssyq/wDNqv8AzKr/AMyq/wDMqv8AzKr/D8yq/7HMqv//zKr//8yq + ///Mqv//zKr//8yp///cxf//+/j///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////y/P//2Pf//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9///1PD//8/C///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv+wzKr/D8yq + /wDMqv8AzKr/AMyq/wDMqv9QzKr/8syq///Mqv//zKr//8yq///Mqf//07b///Tt//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7////n+v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0+b//821 + ///Mqf//zKr//8yq///Mqv//zKr//8yq//HMqv9QzKr/AMyr/wDMqv8AzKr/Csyq/6fMqv//zKr//8yq + ///Mqv//zKr//82r///o2P////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////j+///d+P//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0dP//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + /6fMqv8KzKr/AMyq/wDMqv81zKr/5cyq///Mqv//zKr//8yq///Lqf//173///n2//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////D8 + ///X9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///U7v//zrv//8yp///Mqv//zKr//8yq///Mqv//zKr/5cyq/zXMqv8AzKr/AMyq/3jMqv/+zKr//8yq + ///Mqv//zKr//82r///p2/////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////f///+b6///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///R1f//zKv//8yq///Mqv//zKr//8yq + ///Mqv/+zKr/d8yp/wDMqv8QzKr/tsyq///Mqv//zKr//8yq///Mqf//1Lj///jz//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+f7//9/4///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1ff//9Tr///Ntv//zKn//8yq///Mqv//zKr//8yq///Mqv+2zKr/EMyq/zPMqv/hzKr//8yq + ///Mqv//zKr//8yp///hzf///v7///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////9P3//9r3///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fX//9DJ///Mqf//zKr//8yq + ///Mqv//zKr//8yq/+HMqv8zzKr/Ysyq//bMqv//zKr//8yq///Mqv//zq3//+7i//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////7vv//9f2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9///0tz//8ys///Mqv//zKr//8yq///Mqv//zKr/9syq/2LMqv+TzKr//syq + ///Mqv//zKr//8yp///Stf//9/H///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////9////6Pr//9b2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///U6v//zbT//8yp + ///Mqv//zKr//8yq///Mqv/+zKr/ksyq/73Mqv//zKr//8yq///Mqv//y6n//9nA///8+v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////8/v//5Pn//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9Tx///Ovf//zKn//8yq///Mqv//zKr//8yq///Mqv+8zKr/3Myq + ///Mqv//zKr//8yq///Lqf//38r///7+//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///6/v//4fn//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fX//8/H + ///Mqf//zKr//8yq///Mqv//zKr//8yq/9vMqv/vzKr//8yq///Mqv//zKr//8yp///l0/////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////4/v//3/j//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//0M7//8yp///Mqv//zKr//8yq///Mqv//zKr/78yq + //nMqv//zKr//8yq///Mqv//zKr//+jY//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////3/f//3/j//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///R0///zKr//8yq///Mqv//zKr//8yq///Mqv/5zKr//syq///Mqv//zKr//8yq///Mq///6dv///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////3/f//3/j//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9HW///Mqv//zKr//8yq///Mqv//zKr//8yq + //7Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////4/f//4Pj//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9///0db//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///5/v//4/n//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9X3///V9///1ff//9X3///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///R1v//zKv//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////////////////////// + //////////////7+///7+P//+PT///r2///+/f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////7/v//5/r//9b2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1ff//9X2///V9f//1fL//9Tw + ///U7v//1Oz//9Ts///U7P//1O7//9Tw///V8///1fX//9X3///V9///1ff//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1ff//9HW///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///q2//////////////////////////////////////////////07f//4s7//9e8///Ttv//1br//9/K + ///x6P///v7///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9////7Pv//9n3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3 + ///V9v//1PH//9Po///S3P//0dD//8/H///Pv///zrr//863///Ntf//zbX//821///Ot///zrr//8/A + ///Qyf//0dT//9Ph///U7f//1fX//9X3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0db//8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////// + ////////7+X//9S3///Mqf//y6n//8yp///Lqf//y6n//9Gy///r3f///v7///////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+////8vz//934 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X3///V8///0+X//9HQ///Ovv//zbL//8ys///Mqv//zKn//8yp + ///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqf//zKn//8yp///Mqv//zK7//864///Qyf//0uD//9Tx + ///V9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X3///R1v//zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///6tv///////////////////////////////////bx///Vuf//y6n//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9Gy///x6P////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+P3//+P5///W9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///V8///0t///8/E + ///Nsf//zKr//8yp///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//8yp///Nrv//z8D//9Lc///U8v//1ff//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9HW///Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////// + ////////5dT//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//93H///9/P////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////P7//+z7///a9///1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//0+b//8/F///Nr///zKn//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqf//zK7//8/E///T5f//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9///0db//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKv//+rb//////////////////////////////v5///Yvv//y6n//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//0rT///bx//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////b9///j+f//1vb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///1fP//9HX///NtP//zKn//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//820///R1f//1fL//9X3 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X3///R1v//zKv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////// + ////////9/H//9K0///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Orf//7+X///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////z+///u+///3fj//9X2///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1ff//9Tx///Qzf//zK7//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//8yt///Qy///1O///9X3///V9v//1fb//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1ff//9HW///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yr///q2//////////////////////////////z6///0LD//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//82r///r3f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///5/v//6fr//9r3///V9v//1fb//9X2///V9v//1fb//9X3///U8P//0Mn//8ys///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///Pxv//1O///9X3///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9///0db//8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////// + //////////////Lp///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+na + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////9/3//+f6///a9///1fb//9X2 + ///V9v//1PL//9DK///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///Qyf//1PH//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X3///R1v//zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v////b9///n+v//2/f//9X0///R0f//zKz//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//8yp + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8ys///R0f//1fX//9X2///V9v//1fb//9X2///V9v//1fb//9X2///V9v//1ff//9LW + ///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////// + ///////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///o2f////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////7/ + ///4/v//39///8yv///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8yp///Mq///za///82z///Ntf//zbb//820///NsP//zKz//8yp///Mqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//82w///S3v//1ff//9X2 + ///V9v//1fb//9X2///U9v//1fb//9r3///m+v//4Nn//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////fx///Wuv//zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8yr///Ntv//0Mj//9HY///T4///1Or//9Ts + ///U7f//1Or//9Pl///S2///0Mv//865///MrP//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//867///U7P//1ff//9T2///V9v//2Pf//+D4///s+///9/3///// + ///q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///// + ////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//6Nn///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///9/P//4Mz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Ntv//0dP//9Tr///V9f//1ff//9X3///V9///1ff//9X3///V9///1ff//9X3///V9f//1O7//9HY + ///Ouv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//9HP + ///Z9v//4Pj//+r6///0/f///P7//////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+/l///Pr///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///NrP//0cX//9Po///U9v//1ff//9X2///V9v//1fb//9X2 + ///V9v//1fb//9X2///V9v//1fb//9X2///V9///1ff//9Ts///Qyv//zK3//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//z7T//+3t///9//////////////////////////// + ////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb + //////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//+jZ//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///7+f//28L//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zq3//+LR + ///x9///6/z//+X5///f+P//2/f//9n3///X9v//1vb//9X2///V9v//1fb//9T2///U9v//1Pb//9T2 + ///U9v//1ff//9Tz///R0v//zK7//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//5NL////+///////////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+3h///Orv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//82r///izv///Pv//////////////v////z+///6/v//9v3///P8 + ///v/P//7Pv//+r6///o+v//5vr//+X6///l+f//5fn//+b6///n+v//6fv//+v4///h0///zaz//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Vuf//+fX///////////////////// + /////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///o2f////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///8+v//28P//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//2sL///r3 + /////////////////////////////////////////////////////////////////////////v////7/ + ///+//////////////////////////v5///dx///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//86t///u4v//////////////////////////////////6tv//8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho + ///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////Ho///QsP//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//9Gy///y6f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////Xu + ///Ttf//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//+HO///+/v////////// + ///////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//6Nn///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+/v//4s///8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//4s////79 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////7//+XU///Mq///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//2L7///v5/////////////////////////////+rb///Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////// + ///x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////n1///Vuv//y6n//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//9Kz///07f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////9/H//9O2///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Stf//9/L///// + ////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////7+X//86u///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//3sn///38 + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v//4s7//8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//9Cw///z7P/////////////////////////////q2///zKv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////// + ////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////k0f//zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//86t///t4f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////w5v//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//z6////Lp + /////////////////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////Pr//9nA///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//07b///fy + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////r3///XvP//y6n//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Qsf//9O3/////////////////////////////6tv//8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////// + //////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////38f//0rT//8yp///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///bxP///fv///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+bW///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9e8 + ///69//////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nr///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////Dm///Orv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//+TS + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9/L//9W5 + ///Lqf//zKr//8yq///Mqv//zKr//8yq///NrP//6Nn//////////////////////////////////+rb + ///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////// + ///////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///m1v///Pr///z5///8+f///Pn///z5///8+f///Pn///z5///8+f///Pn///z5///8+v///fv///79 + /////v////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////6dr//8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///NrP//7N////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////697//8+v///Lqf//zKn//8yp///Lqf//zaz//+DM + ///7+f//////////////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//9O1///Yvv//2L7//9i+///Yvv//2L7//9i+ + ///Yvv//2L7//9i+///Yvv//2L///9nA///bw///3cf//+HO///n1v//7eH///Tt///69////v7///// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////j0P//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8+v + ///y6f////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+/f//7eD//9rB///Ttv//07X//9i+///p2v//+/n///////////////////////////////////// + ///q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///// + ////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8yq///NrP//0LH//9e8///hzf//7+T///r3//////////////////////////////// + /////////////////////////////////////////////////////////v3//97I///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//0bP///bw//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////Pr///jz///38v//+/n///// + /////////////////////////////////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//y6n//8yp + ///Orv//173//+jZ///59f////////////////////////////////////////////////////////// + ///////////////////8+///2sH//8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp + ///Ut///+fT///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb + //////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//zav//9e9///u4v///v3///// + //////////////////////////////////////////////////////////////v4///Xvf//y6n//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9a7///69/////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//8+v///k0v//+/n///////////////////////////////78///9 + 9/////3/////////////////+vb//9W6///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Lqf//2L7///v5//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//82r + ///gzP//+/j/////////////////////////++7///fa///55P///PP////9///////59f//1Lj//8up + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Zv////Pr///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////6tv//8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho + ///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//82r///j0P///fv///////////////78///4 + 4P//9tT///bV///32P//+eL///3x//n0/P/Ut///zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9nA///8+v////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//86u///r3f///////////////PD///bX///21f//9tX///bV///21f//99f/+e7j/9S2 + +//Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//2b////z6//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+rb///Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////// + ///x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9S4///38f/////9///5 + 4v//9tX///bV///21f//9tX///bV///31f/57dn/1Lf4/8up///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8up///Yvv//+/n///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//9e9///hzf//4cz//+HM///hzP//4cz//+HM///hzP//4Mz//+DL + ///dx///2sH//9W6///Rsv//zaz//8up///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//+TS///++/L///fX///21f//9tX///bV///21f//9tX///fV//rv + 2f/WuPf/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9a7///69/////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////q2///zKv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////// + ////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///// + /////v///v7///7+///+/v///v7///7+///+/v///v7///79///8+///+vb///Tt///r3v//3sj//9Gy + ///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//1Lf+//ft + 5f//99X///bV///21f//9tX///bV///21f//9tX/+/DY/9i79f/Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//1Lf///n1//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////////////////////////////////////// + ///////////////////////////////////9/P//8+v//93G///NrP//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Nq/7/6tfm///31f//9tX///bV///21f//9tX///bV///2 + 1f/98tf/28Dz/8up///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Rs///9vD///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////6tv//8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////// + //////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ + //////////////////////////////////////////////////////////////////////////////// + ////////+/n//+LP///NrP//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up + ///exPD//fTW///21f//9tX///bV///21f//9tX///bV//701v/exvD/y6n//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8+v///y6f7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///////////////////////////////////// + ////////////////////////////////////////////////////////+/n//93G///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9W3+P/57dr///fV///21f//9tX///bV///2 + 1f//9tX///bV/+TN7P/Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zaz+/+zc + 7////fD///77//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+rb + ///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////// + ///////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///o2f////////////////////////////////////////////////////////////////////////// + ////////////////////////8+r//9Gy///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//0K/8//Pk3///99T///bV///21f//9tX///bV///21f//99X/6tbm/8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//5c/q///21///+N////vu///++v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////7+///59f//9Oz///Pr///49P///v7///// + ////////////////////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////////////////////// + ///////////////////////////////////////////////////////////////////9+///3MX//8up + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///NrP7/7dvk///31P//9tX///bV///2 + 1f//9tX///bV///31P/x4eH/z679/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up + ///cwvL//fPW///21P//9tb///je///77P///vn///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///7+P//5dT//9W4///QsP//z7D//9S3///l1P//+/j///////////////////////////////////// + ///q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///// + ////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//6Nn///////////////////////////////////////////////////////////////////// + ///////////////////////////////////n1///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///o1Oj///fV///21f//9tX///bV///21f//9tX///fV//fq2//TtPn/zKn//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//9S2+f/47Nv///fV///21f//9tX///bV///3 + 3P//+un///33/////v////////////////////////////////////////////////////////////// + /////////////////////////////////////////fz//+LP///Nq///y6n//8yq///Mqv//y6n//82r + ///hzf///Pr//////////////////////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////////////////////// + /////////////////////////////////////////////////////////////////////////////+3i + ///NrP//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//+XP6///9tX///bV///2 + 1f//9tX///bV///21f//9tX//PLX/9q/8//Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zq39/+7d4///99T///bV///21f//9tX///bV///21f//99r///rn///99f////7///////// + //////////////////////////////////////////////////////////////////////////////// + ///t4f//z6///8yp///Mqv//zKr//8yq///Mqv//zKr//86t///s3/////////////////////////// + ////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb + //////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//+jZ//////////////////////////////////////////////////////////////// + ////////////////////////////////////////8Of//86u///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//48zs///21f//9tX///bV///21f//9tX///bV///21f//9tX/5M7r/8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//4cnu//711v//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fZ///55f///fT////9//////////////////////////////////// + ////////////////////////////////////////+vb//9i+///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//y6n//9vD///8+//////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///x5///zq7//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///iy+3///bV///2 + 1f//9tX///bV///21f//9tX///bV///31P/w4OH/z679/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yp///Utfn/9+rc///31f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 2P//+eP///zy///+/P////////////////////////////////////////////////////////////// + ///p2v//zaz//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//1Lf///j0//////////////// + /////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///o2f////////////////////////////////////////////////////////// + /////////////////////////////////////////////+7j///Orf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKn//+PN7P//9tX///bV///21f//9tX///bV///21f//9tX///fV//ru + 2f/Wufb/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///n0un///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tf///nh///87////vv///////// + ////////////////////////////////////////+PT//9a7///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yp///StP//9/L/////////////////////////////6tv//8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Ho + ///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////6Nn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//5tHq///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV/+TO6//Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//y6n//9W3+P/36tz///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bW///43///++3///76///////////////////////////////////+ + ///m1f//zav//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9S4///59f////////// + ///////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//6Nn///////////////////////////////////////////////////// + //////////////////////////////////////////////79///fyf//y6n//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yr///q1+b///fU///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X/8+Xf/9Gx+//Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+LL + 7f/+9Nb///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1v//+N3///vr///++P//////////////////////8+z//9K0///Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//2cD///z6/////////////////////////////+rb///Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////// + ///x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////// + //////////////////////////////////////////////////////////////////////////////// + ////////9vH//9O2///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zq39//Df + 4v//99T///bV///21f//9tX///bV///21f//9tX///bV///21f/989f/3sXw/8up///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//z6/8/+3b5P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fb///66f///ff////+//r3 + ///bw///zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///j0P////7///// + ////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKv//+rb//////////////////////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//+jZ//////////////////////////////////////////////// + //////////////////////////////////////////////7+///k0v//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Ssvr/9ujc///31f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31f/x4eH/0LD8/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqf//07X5//Li4P//99X///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///42v/99un/4s/8/82r///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//z67///Dm///////////////////////////////////q2///zKv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////// + ////////8ej//8+v///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//6Nn///// + //////////////////////////////////////////////////////////////////////////////// + ////////7+T//9Gy///Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9m9 + 9f/88dj///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV//3z1//fx+//zKn//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//1bf4//Hh4f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X//PLX/+XP + 6v/Orf7/zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Zv///+/j///// + /////////////////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yr///q2//////////////////////////////x6P//z6///8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///o2f////////////////////////////////////////// + /////////////////////////////////////////Pn//+ve///Ttf//zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//5M7r///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//Tm3v/TtPn/zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//0rT6/+rX5v/88tf///fU///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//nt2v/hye7/zqz+/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zq3//+ve////////////////////////////////////////6tv//8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////// + //////////////Ho///Pr///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//+na + /////////////////////////////////////////////////////////v7///38///7+P//9e7//+rc + ///awv//zq7//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//9Cv + /P/y4uD///fU///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV/+jU + 6P/NrP7/zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zq39/93D + 8f/x4OH//PHY///21f//99T///fV///31f//99X///fV///31f//99T///bV//vw2P/t2+T/2Lz1/8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///awv//+/j///// + ///////////////////////////////////q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mq///6tv/////////////////////////////8ej//8+v///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//28P//+fX///n1///59f//+fX///n1///59f//+fX + ///n1v//5tX//+TS///hzf//3MX//9e8///Rsv//zav//8up///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//3MHy//zy1///9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/+/HY/97E8f/Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8+v/P/av/T/5tHp//Df4v/16N3/+Ozb//nt + 2v/469v/9efd/+/e4v/lz+r/2Lz1/86t/f/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqf//0bL///Ho/////////////////////////////////////////////+rb + ///Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////// + ///////////////////x6P//z6///8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8up///Lqf//y6n//8yp + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8+u + /f/v3uL///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X/9+rc/9e79v/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8up///Mqv//zq39/9Gx+//Ttfn/1Lb5/9O0+f/Rsfv/zq39/8yq///Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//82r/v/m0/P//vz4//// + ////////////////////////////////////////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////Lp///Pr///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//38fv//3z1///9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X/8+Tf/9S3+P/Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//8yp + ///Mqf//zKn//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//38bw//vx2f//+Nv///ro///99v////7///////////////////////// + ///q2///zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///// + ////////////////////////8+z//9Cw///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//y6n//9a5 + 9//26dz///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX/8eHh/9S2+P/Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//9zC8v/57dr///fV///2 + 1f//9tX///fa///65v///fT////9/////////////////+rb///Mq///zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yr///q2//////////////////////////////38f//0rT//8yp + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8up///Ttfn/8eHg///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX/8uLg/9a5 + 9//Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//82r///exPH/+e3a///31f//9tX///bV///21f//9tX///bV///32P//+eT///zy///+ + /P//////6tv//8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb + //////////////////////////////v5///Zv///y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Lqf//1Lb4//Dg + 4f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/9efd/9vA8//Nq///zKn//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Prv3/48zs//vv2f//99X///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//99f///nh///98P/q2/z/zKv//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv//////////////////////////////////+bV + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Lqf//zav+/9q/8//z5d7///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//99X/+u/Z/+XP6//Rsfv/y6n//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp + ///Mqv//1bf4/+za5P/989b///fV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tT///fW/+rX6//Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr + ///q2///////////////////////////////////9/L//9a7///Lqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yp///Lqf//zav+/9W3+P/n0+n/+u/Z///3 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X//vXW//Hi4P/cwvL/z679/8up + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yp///Mqf//0bH7/+LK7f/36dz///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99T/6tbm/8yr///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKv//+rb//////////////////////////////// + ////////8ur//9i+///NrP//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up + ///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8up///Lqf//y6n//8yq + ///Orf7/0rP6/9vA8//p1ef/+Ovb///21f//99X///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fV//zx2P/u3eP/3MLy/9Cw/P/Mqv//y6n//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Mqv//0bL7/9/H + 7//y4+D//vTW///31f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///31P/q1uf/zKv//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mq///6tv/////////////////////////////////////////////+fb//+ve///fyf//2L7//9W6 + ///Vuf//1bn//9W5///Vuf//1bn//9W5///Vuf//1bn//9W5///Vuf//1bn//9W5///Vuf//1bn//9W5 + ///Vuf//1bn//9a7///Xvf//2sH//93G///hzv//59X1/+7d4//26dz//PLX///21f//99X///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f/88tf/8+Pf/+TO6//YvPX/0LD8/82r/v/Mqf//y6n//8up///Lqf//zKn//8yp///Mqf//y6n//8up + ///Lqf//zKn//82r/v/Rsfv/2b30/+bR6v/05t7//fTW///31f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fU/+rW5//Mq///zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yr///q2/////////////////////////// + //////////////////////////////79///8+f//+vb///n2///59v//+fb///n2///59v//+fb///n2 + ///59v//+fb///n2///59v//+fb///n2///59v//+fb///n2///69v//+vf///v5///8+v///fz////+ + /f//+uP///fU///31f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99T///bV//vw2P/05d7/69jm/+PM + 7P/cwvL/2Lz1/9W4+P/Utfn/07X5/9S1+f/VuPf/2Lz1/93D8f/jzOz/69nl//Tm3v/78dj///bV///3 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99T/6tbn/8yr///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKv//+rb//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////30///32P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///31P//99T///bV//3z1v/78dj/+u7Z//ns2v/47Nv/+eza//ru + 2f/88dj//fTW///21f//99T///fU///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///31P/q1uf/zKv//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mq///6tv///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v//+eX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99X///fV///31f//99X///fV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///fU/+rW5//Mq///zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yr///q2/////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////32///32f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99T/6tbn/8yr + ///Mqv//zKr//8yq///Mqv//zKr//8yq//7Mqv//zKr//8yq///Mqv//zKv//+nb//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v//+uf///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///31f/p1uf/zKr//8yq///Mqv//zKr//8yq///Mqv/+zKr/+cyq + ///Mqv//zKr//8yq///Mqv//6Nj///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////33///32v//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///fV/+jT + 6P/Mqv//zKr//8yq///Mqv//zKr//8yq//nMqv/vzKr//8yq///Mqv//zKr//8yp///l0/////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////+un///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX/5M/r/8yp///Mqv//zKr//8yq///Mqv//zKr/78yq + /9zMqv//zKr//8yq///Mqv//y6n//+DL///+/v////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////75///33P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV//71 + 1v/fx+//y6n//8yq///Mqv//zKr//8yq///Mqv/bzKr/vcyq///Mqv//zKr//8yq///Lqf//2cD///z6 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////++z///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX//PHY/9m99P/Lqf//zKr//8yq///Mqv//zKr//8yq + /7zMqv+TzKr//syq///Mqv//zKr//8yp///Stf//9/H///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////76///43v//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f/36tz/0rT6/8yp///Mqv//zKr//8yq///Mqv/+zKr/ksyq/2LMqv/2zKr//8yq///Mqv//zKr//86t + ///u4v////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////++7///bW///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///fU/+7c4//OrP7/zKr//8yq///Mqv//zKr//8yq + //bMqv9izKr/M8yq/+HMqv//zKr//8yq///Mqv//zKn//+HN///+/v////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////77///43///9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f/+9db/4cnu/8yp///Mqv//zKr//8yq///Mqv//zKr/4cyq/zPMqv8QzKr/t8yq///Mqv//zKr//8yq + ///Mqf//1Lj///jz//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////PD///bX///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///fV//jr2//Utvj/zKn//8yq///Mqv//zKr//8yq + ///Mqv+2zKr/EMyq/wDMqv94zKr//syq///Mqv//zKr//8yq///Nq///6dv///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////78///54f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX/6dXn/82r/v/Mqv//zKr//8yq///Mqv//zKr//syq/3fMqv8AzKr/AMyq/zXMqv/mzKr//8yq + ///Mqv//zKr//8up///Xvf//+fb///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////PL///fX///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///fV//nu2v/Xu/b/y6n//8yq///Mqv//zKr//8yq + ///Mqv/lzKr/Ncyq/wDMqv8AzKr/Csyq/6jMqv//zKr//8yq///Mqv//zKr//82r///o2P////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////9///55P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX/6NPo/82r/v/Mqv//zKr//8yq///Mqv//zKr//8yq/6fMqv8KzKr/AMyq/wDMqv8AzKr/UMyq + //LMqv//zKr//8yq///Mqv//zKn//9O2///17v////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////fT///fY///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///fV//Xm3v/Ttfn/zKn//8yq///Mqv//zKr//8yq + ///Mqv/yzKr/UMyq/wDMqv8AzKr/AMyq/wDMqv8PzKr/scyq///Mqv//zKr//8yq///Mqv//zKn//9zF + ///7+P////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////+///65v//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f/78Nj/3MLy/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq/7HMqv8PzKr/AMyq/wDMqv8AzKr/AMyq + /wDMqv9LzKr/7cyq///Mqv//zKr//8yq///Mqv//zaz//+TS///9/P////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////fb///fa///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX//fPW/+TO6//Nq/7/zKr//8yq///Mqv//zKr//8yq + ///Mqv/szKr/Ssyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/AMyq/wjMqv+VzKr//8yq///Mqv//zKr//8yq + ///Mqv//z67//+jZ///+/f////////////////////////////////////////////////////////// + ///////////////////////////////////////////+///66P//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV//70 + 1v/o1Oj/z679/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq/5XMqv8IzKr/AMyq/wDKrP8AAAAAAMyq + /wDMqv8AzKr/AMyq/yjMqv/NzKr//8yq///Mqv//zKr//8yq///Mqf//z6///+jZ///9/P////////// + //////////////////////////////////////////////////////////////////////////////// + /////fj///fb///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///31f/99Nb/6NTo/8+v/P/Mqf//zKr//8yq///Mqv//zKr//8yq + ///Mqv/NzKr/KMyq/wDMqv8AzKr/AAAAAAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/1LMqv/qzKr//8yq + ///Mqv//zKr//8yq///Mqf//z67//+TS///7+P////////////////////////////////////////// + ///////////////////////////////////////////////76v//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X/+/DY/+TO + 6//Prv3/zKn//8yq///Mqv//zKr//8yq///Mqv//zKr/6syq/1LMqv8AzKr/AMyq/wDMqv8AAAAAAAAA + AAAAAAAAzKr/AMyq/wDMqv8AzKr/BMyq/3jMqv/3zKr//8yq///Mqv//zKr//8yq///Mqv//zaz//9zF + ///17v////////////////////////////////////////////////////////////////////////// + /////vn///jc///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//99X///bV//Xm3v/cwvH/zav+/8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + //fMqv94zKr/BMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAADJrv8AzKr/AMyq/wDMqv8AzKr/Dcyq + /5DMqv/7zKr//8yq///Mqv//zKr//8yq///Mqv//zKn//9O2///o2P//+fb///////////////////// + ///////////////////////////////////////////////77f//9tb///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//99X///bV//nu2v/o0+j/07X5/8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/7zKr/kMyq/w3Mqv8AzKr/AMyq/wDPr/8AAAAAAAAA + AAAAAAAAAAAAAAAAAADMqv8A/5v/AMyq/wDMqv8AzKr/E8yq/5fMqv/7zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKn//82r///Xvf//6dv///jz///+/v////////////////////////////////////////// + /////vv///je///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///2 + 1f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///21f//9tX///bV///3 + 1f//99T//vXW//jr2//p1ef/17v2/82r/v/Mqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/+8yq + /5fMqv8TzKr/AMyq/wDMuf8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq + /wDMqv8AzKr/E8yq/4/Mqv/3zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8up///Nq///1Lj//+HN + ///u4v//9/H///z6///+/v/////////////////////////87v//99b///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///31P//99T///fU///3 + 1P//99T///fU///31f//99X///bV//711v/88dj/9+rc/+7c4//hye7/1Lb4/82r/v/Lqf//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq//fMqv+QzKr/E8yq/wDMqv8Azar/AMyq/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKv/AMyq/wDMqv8AzKr/Dcyq/3jMqv/qzKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqf//zKn//86t///Stf//2cD//+DL///l0///6Nj//+nb + ///q2/7/6tjv/+rW5v/q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW + 5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW + 5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW + 5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW + 5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6tbn/+rW5//q1uf/6dbn/+jT6P/lz+v/38fv/9m9 + 9P/TtPr/zq3+/8yp///Lqf//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/qzKr/eMyq + /w3Mqv8AzKr/AMyq/wDMqf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADMqv8AzKr/AMyq/wDMqv8AzKr/BMyq/1LMqv/NzKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yp///Lqf//y6n//8yp///Mqv//zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr///Mq///zKv//8yr + ///Mq///zKv//8yr///Mq///zKr//8yp///Lqf//y6n//8yp///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr/zcyq/1PMqv8EzKr/AMyq/wDMqv8AzKv/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8A8d3/AMyq/wDMqv8AzKr/AMyq + /yfMqv+VzKr/7Myq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr/7cyq/5bMqv8ozKr/AMyq + /wDMqv8A0q7/AMyq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq/wDMqv8AzKr/AMyq/wjMqv9KzKr/scyq//LMqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr/8syq/7HMqv9LzKr/CMyq/wDMqv8AzKr/AMyq/wDMqv8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMqv8AzKr/AMyq + /wDMqv8AzKr/AMyq/wDMqv8PzKr/UMyq/6fMqv/lzKr//syq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv/+zKr/5syq/6jMqv9RzKr/EMyq/wDMqv8Ay6r/AMyq + /wDMqv8Aya7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzKr/AMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/Csyq + /zXMqv94zKr/tsyq/+HMqv/2zKr//syq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//syq//bMqv/hzKr/t82r + /3nMq/82zKr/Csyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAMqs/wDMqv8AzKr/AM2q/wDMqv8AzKr/AMyq/wDMqv8QzKr/M8yq/2LMqv+SzKr/vcyq + /9zMqv/vzav+/Myq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq + ///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//8yq///Mqv//zKr//syq + //nMqv/vzKr/3Myq/73Mqv+TzKr/Y8yq/zPMqv8QxqL/AMyq/wDMqv8AzKr/AMyq/wDMqv8AzKr/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAA + AAAAAB///+AAAAAAAAAAAAAAAAAH//+AAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAD//gAAAAAA + AAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAD+AA + AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAHAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAA + AAAAAAAP+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAA + AAAAAAAAAAAA//+AAAAAAAAAAAAAAAAAAf//4AAAAAAAAAAAAAAAAAf///gAAAAAAAAAAAAAAAAf/4lQ + TkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFvck5UAc+id5oAADP0SURBVHja7Z1pjCxZ + Vpi/GxG5Z9Zer5a3db/u6dcz08xMzwxmX/yDwTIGBGJ62iCZRRgsEDJeQCCEf9hgLGwjLGzJGBuzmunu + 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 + + + \ No newline at end of file diff --git a/PC3Player/PC3Player/PC3Player.csproj b/PC3Player/PC3Player/PC3Player.csproj new file mode 100644 index 0000000..f0b2d04 --- /dev/null +++ b/PC3Player/PC3Player/PC3Player.csproj @@ -0,0 +1,21 @@ + + + + WinExe + net8.0-windows + enable + true + enable + icon.ico + + + + + + + + + + + + \ No newline at end of file diff --git a/PC3Player/PC3Player/PC3Player.csproj.user b/PC3Player/PC3Player/PC3Player.csproj.user new file mode 100644 index 0000000..d5594ae --- /dev/null +++ b/PC3Player/PC3Player/PC3Player.csproj.user @@ -0,0 +1,17 @@ + + + + <_LastSelectedProfileId>C:\Users\Persephone\source\repos\PC3Player\PC3Player\Properties\PublishProfiles\FolderProfile.pubxml + + + + Form + + + Form + + + Form + + + \ No newline at end of file diff --git a/PC3Player/PC3Player/Program.cs b/PC3Player/PC3Player/Program.cs new file mode 100644 index 0000000..e19890b --- /dev/null +++ b/PC3Player/PC3Player/Program.cs @@ -0,0 +1,17 @@ +namespace PC3Player +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml b/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..6af5f01 --- /dev/null +++ b/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,13 @@ + + + + + Release + Any CPU + bin\Release\net8.0-windows\publish\ + FileSystem + <_TargetId>Folder + net8.0-windows + false + + \ No newline at end of file diff --git a/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml.user b/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 0000000..0694e5c --- /dev/null +++ b/PC3Player/PC3Player/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -0,0 +1,8 @@ + + + + + True|2025-07-08T03:32:00.3108399Z||;True|2025-07-07T16:13:43.3420483-07:00||; + + + \ No newline at end of file diff --git a/PC3Player/PC3Player/SerialPortSelector.Designer.cs b/PC3Player/PC3Player/SerialPortSelector.Designer.cs new file mode 100644 index 0000000..a14d3be --- /dev/null +++ b/PC3Player/PC3Player/SerialPortSelector.Designer.cs @@ -0,0 +1,114 @@ +namespace PC3Player +{ + partial class SerialPortSelector + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + PortDropDown = new ComboBox(); + CancelButton = new Button(); + OKButton = new Button(); + panel1 = new Panel(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 15); + label1.Name = "label1"; + label1.Size = new Size(29, 15); + label1.TabIndex = 0; + label1.Text = "Port"; + // + // PortDropDown + // + PortDropDown.DropDownStyle = ComboBoxStyle.DropDownList; + PortDropDown.FormattingEnabled = true; + PortDropDown.Location = new Point(47, 12); + PortDropDown.Name = "PortDropDown"; + PortDropDown.Size = new Size(191, 23); + PortDropDown.TabIndex = 1; + // + // CancelButton + // + CancelButton.DialogResult = DialogResult.Cancel; + CancelButton.Location = new Point(82, 13); + CancelButton.Name = "CancelButton"; + CancelButton.Size = new Size(75, 25); + CancelButton.TabIndex = 2; + CancelButton.Text = "Cancel"; + CancelButton.UseVisualStyleBackColor = true; + // + // OKButton + // + OKButton.DialogResult = DialogResult.OK; + OKButton.Location = new Point(163, 13); + OKButton.Name = "OKButton"; + OKButton.Size = new Size(75, 25); + OKButton.TabIndex = 3; + OKButton.Text = "OK"; + OKButton.UseVisualStyleBackColor = true; + OKButton.Click += OKButton_Click; + // + // panel1 + // + panel1.BackColor = SystemColors.MenuBar; + panel1.Controls.Add(OKButton); + panel1.Controls.Add(CancelButton); + panel1.Location = new Point(0, 50); + panel1.Name = "panel1"; + panel1.Size = new Size(250, 50); + panel1.TabIndex = 4; + // + // SerialPortSelector + // + AcceptButton = OKButton; + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(250, 100); + Controls.Add(panel1); + Controls.Add(PortDropDown); + Controls.Add(label1); + FormBorderStyle = FormBorderStyle.FixedDialog; + Name = "SerialPortSelector"; + Text = "Select a Serial Port"; + Load += SerialPortSelector_Load; + panel1.ResumeLayout(false); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private ComboBox PortDropDown; + private Button CancelButton; + private Button OKButton; + private Panel panel1; + } +} \ No newline at end of file diff --git a/PC3Player/PC3Player/SerialPortSelector.cs b/PC3Player/PC3Player/SerialPortSelector.cs new file mode 100644 index 0000000..ea4bc91 --- /dev/null +++ b/PC3Player/PC3Player/SerialPortSelector.cs @@ -0,0 +1,24 @@ +using System.IO.Ports; + +namespace PC3Player +{ + public partial class SerialPortSelector : Form + { + public string PortName { get; set; } + public SerialPortSelector() + { + InitializeComponent(); + } + + private void SerialPortSelector_Load(object sender, EventArgs e) + { + PortDropDown.Items.Clear(); + foreach (string port in SerialPort.GetPortNames()) PortDropDown.Items.Add(port); + } + + private void OKButton_Click(object sender, EventArgs e) + { + PortName = (string)PortDropDown.SelectedItem; + } + } +} diff --git a/PC3Player/PC3Player/SerialPortSelector.resx b/PC3Player/PC3Player/SerialPortSelector.resx new file mode 100644 index 0000000..4f24d55 --- /dev/null +++ b/PC3Player/PC3Player/SerialPortSelector.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PC3Player/PC3Player/icon.ico b/PC3Player/PC3Player/icon.ico new file mode 100644 index 0000000..4514321 Binary files /dev/null and b/PC3Player/PC3Player/icon.ico differ diff --git a/README.md b/README.md index c5b91a8..3573266 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# PinkConnection2 +# PinkConnection -Software for use with PinkConnection2 Animatronic Controllers \ No newline at end of file +Software for use with PinkConnection Animatronic Controllers diff --git a/PC2Converter/PC2Converter.Gtk/Program.cs b/USTConverter/USTConverter.Gtk/Program.cs similarity index 81% rename from PC2Converter/PC2Converter.Gtk/Program.cs rename to USTConverter/USTConverter.Gtk/Program.cs index 3297df7..1d1b0b0 100644 --- a/PC2Converter/PC2Converter.Gtk/Program.cs +++ b/USTConverter/USTConverter.Gtk/Program.cs @@ -1,7 +1,7 @@ using System; using Eto.Forms; -namespace PC2Converter.Gtk +namespace USTConverter.Gtk { class Program { diff --git a/PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj b/USTConverter/USTConverter.Gtk/USTConverter.Gtk.csproj similarity index 83% rename from PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj rename to USTConverter/USTConverter.Gtk/USTConverter.Gtk.csproj index 7e86dbd..3832d00 100644 --- a/PC2Converter/PC2Converter.Gtk/PC2Converter.Gtk.csproj +++ b/USTConverter/USTConverter.Gtk/USTConverter.Gtk.csproj @@ -7,7 +7,7 @@ - + diff --git a/PC2Player/PC2Player.Mac/Icon.icns b/USTConverter/USTConverter.Mac/Icon.icns similarity index 100% rename from PC2Player/PC2Player.Mac/Icon.icns rename to USTConverter/USTConverter.Mac/Icon.icns diff --git a/PC2Converter/PC2Converter.Mac/Info.plist b/USTConverter/USTConverter.Mac/Info.plist similarity index 81% rename from PC2Converter/PC2Converter.Mac/Info.plist rename to USTConverter/USTConverter.Mac/Info.plist index 6157797..667bce4 100644 --- a/PC2Converter/PC2Converter.Mac/Info.plist +++ b/USTConverter/USTConverter.Mac/Info.plist @@ -3,11 +3,11 @@ CFBundleName - PC2Converter + USTConverter CFBundleIdentifier - com.example.PC2Converter + me.kawaiizenbo.USTConverter CFBundleShortVersionString - 1.0 + 1.3 LSMinimumSystemVersion 10.15 CFBundleDevelopmentRegion diff --git a/PC2Converter/PC2Converter.Mac/Program.cs b/USTConverter/USTConverter.Mac/Program.cs similarity index 81% rename from PC2Converter/PC2Converter.Mac/Program.cs rename to USTConverter/USTConverter.Mac/Program.cs index 973dc3d..089435e 100644 --- a/PC2Converter/PC2Converter.Mac/Program.cs +++ b/USTConverter/USTConverter.Mac/Program.cs @@ -1,7 +1,7 @@ using System; using Eto.Forms; -namespace PC2Converter.Mac +namespace USTConverter.Mac { class Program { diff --git a/PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj b/USTConverter/USTConverter.Mac/USTConverter.Mac.csproj similarity index 84% rename from PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj rename to USTConverter/USTConverter.Mac/USTConverter.Mac.csproj index 437ecec..2f87570 100644 --- a/PC2Converter/PC2Converter.Mac/PC2Converter.Mac.csproj +++ b/USTConverter/USTConverter.Mac/USTConverter.Mac.csproj @@ -8,7 +8,7 @@ - + diff --git a/PC2Converter/PC2Converter.Wpf/Program.cs b/USTConverter/USTConverter.Wpf/Program.cs similarity index 81% rename from PC2Converter/PC2Converter.Wpf/Program.cs rename to USTConverter/USTConverter.Wpf/Program.cs index 8a370b0..df54590 100644 --- a/PC2Converter/PC2Converter.Wpf/Program.cs +++ b/USTConverter/USTConverter.Wpf/Program.cs @@ -1,7 +1,7 @@ using System; using Eto.Forms; -namespace PC2Converter.Wpf +namespace USTConverter.Wpf { class Program { diff --git a/PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj b/USTConverter/USTConverter.Wpf/USTConverter.Wpf.csproj similarity index 83% rename from PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj rename to USTConverter/USTConverter.Wpf/USTConverter.Wpf.csproj index 32ab58c..89efd4b 100644 --- a/PC2Converter/PC2Converter.Wpf/PC2Converter.Wpf.csproj +++ b/USTConverter/USTConverter.Wpf/USTConverter.Wpf.csproj @@ -7,7 +7,7 @@ - + diff --git a/USTConverter/USTConverter/MainForm.cs b/USTConverter/USTConverter/MainForm.cs new file mode 100644 index 0000000..66a1bd5 --- /dev/null +++ b/USTConverter/USTConverter/MainForm.cs @@ -0,0 +1,360 @@ +using System.Collections; +using System.Diagnostics; +using System.IO; +using System.Numerics; + +using Eto.Forms; +using Eto.Drawing; + +namespace USTConverter +{ + public partial class MainForm : Form + { + DropDown InputTypeSelector = new DropDown(); + DropDown OutputTypeSelector = new DropDown(); + TextBox FilePathTextBox = new TextBox(); + Button BrowseFileButton = new Button { Text = "Browse", Width = 100 }; + Button ConvertButton = new Button { Text = "Convert", Width = 100 }; + CheckBox CompressAudioCheckBox = new CheckBox { Text = "Compress Audio" }; + + string[] InputTypes = { + "RSHW File (RR Engine)", "CSHW File (RR Engine)", "SSHW File (RR Engine)"/*, + "3ST File (APS)", "ROA/R12/C&R File (APS)"*/ + }; + + string[] RAE3stOutputTypes = { "UST (Rock-afire Explosion/3-Stage)" , "UST (Cyberamics Rosetta)" }; + string[] CyberOutputTypes = { "UST (Cyberamics)" }; + string[] StudioCOutputTypes = { "UST (Studio C)" }; + + + int[] CyberBitMap = { + 1, 2, 3, 4, 8, 5, 6, 7, + 65, 66, 67, 68, 72, 69, 70, 71, + 49, 50, 51, 56, 53, 54, 55, 52, + 17, 18, 19, 20, 24, 21, 22, 23, + 33, 34, 35, 40, 37, 38, 39, 36, + 9, 46, 62, 10, 74, 75, 76, 77, 78, + 104, 102, 109, 107, 100, 123, 41, + 27, 28, 29, 30, 25, 26, 57, 58, + 120, 116, 127, 118, 117, 119, + 114, 113, 115, + 110, 108, 101, 106, 111, + 103, 105, 125, 121, 126, 99, 124, 122, 97, 98 + }; + + int[] CyberBitMapRosetta = { + 1, 6, 7, 8, 4, 5, 2, 19, + 185, 178, 179, 180, 183, 184, 181, 169, + 45, 54, 55, 43, 44, 41, 58, 59, + 166, 156, 157, 158, 156, 157, 151, 163, + 30, 25, 21, 28, 29, 26, 31, 35, + 0, 0, 0, 49, 0, 0, 0, 0, 0, + 88, 86, 85, 82, 84, 81, 0, + 93, 94, 91, 92, 91, 92, 0, 0, + 229, 228, 226, 224, 223, 221, + 235, 232, 234, + 67, 68, 71, 72, 73, + 220, 244, 245, 225, 77, 241, 240, 87, 222, 0 + }; + + int[] RAE3stBitMap = { + 1, 9, 10, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 17, 18, 19, 14, 15, 16, 20, 36, 37, + 185, 176, 177, 181, 182, 183, 184, 178, 179, 180, 173, 175, 174, 168, 170, 169, 186, 187, 188, + 45, 41, 42, 43, 44, 54, 55, 51, 52, 53, 57, 59, 58, 60, 61, 62, + 166, 151, 152, 153, 156, 157, 158, 161, 162, 163, 164, 154, 155, 159, 160, 165, + 30, 23, 24, 26, 27, 28, 29, 25, 21, 22, 33, 35, 34, 31, 32, 63, 64, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 189, 190, 194, 211, 212, 213, + 167, 191, 192, 193, 171, 172, 48, + 39, 38, 47, 46, 49, 50, + 88, 86, 85, 82, 242, 84, 83, 81, 238, 239, 240, 87, + 93, 94, 91, 92, 89, 90, + 229, 228, 227, 226, 224, 223, 221, 219, 218, 217, 216, 222, + 235, 232, 231, 234, 236, 237, 233, 242, 243, + 67, 68, 69, 66, 71, 72, 73, + 78, 77, 76, 79, 80, + 220, 244, 245, 225, 230, 241 + }; + + int[] StudioCBitMap = { + 21, 28, 25, 24, 26, 27, 29, 30, 31, 18, 19, 23, 22, 20, 6, 7, 11, 8, 9, 10, 1, 2, 17, 3, 4, 5, 12, 16, 15, 13, 14, 32, + 33, 36, 34, 35, 40, 160, 161, + 177, 178, + 44, 45, + 151, 154, 152, 153, 155, 157, 156, 181, 180, 182, + 172, 174, 173, 171, + 166, 165, 164, + 159, 163, 167, 168, 176, 169, 170, 162, 179 + }; + + int[] CyberRosettaInvertedBits = { 2, 181, 41, 59, 58, 151, 163, 26, 35, 31 }; + int[] RAE3stAPSDescrambleTable = { 10, 11, 0, 1, 2, 3, 4, 12, 13, 5, 6, 7, 8, 9, 14, 15}; + + bool Rosetta = false; + const int USTVersion = 2; + + public MainForm() + { + Title = "UST Showtape Converter"; + Size = new Size(500, 300); + Maximizable = false; + Resizable = false; + + BrowseFileButton.Command = new Command((sender, e) => { Event_BrowseFileButton(); }); + ConvertButton.Command = new Command((sender, e) => { Event_ConvertFileButton(); }); + + InputTypeSelector.SelectedValueChanged += (sender, e) => Event_ChangeInputType(); + + foreach (string s in InputTypes) + { + InputTypeSelector.Items.Add(s); + } + + Content = BuildLayout(); + } + + DynamicLayout BuildLayout() + { + DynamicLayout layout = new DynamicLayout { DefaultSpacing = new Size(10, 10), DefaultPadding = new Padding(5, 5, 5, 5) }; + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Input Format" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(InputTypeSelector, true); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Output Type" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(OutputTypeSelector, true); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "File to convert" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(FilePathTextBox, true); + layout.Add(BrowseFileButton); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(null, true); + layout.Add(CompressAudioCheckBox); + layout.Add(ConvertButton); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.Add(null, true); + layout.EndVertical(); + + return layout; + } + + string MakeHeader(string showName, string outputType) + { + string headerOut = $"UST,{USTVersion.ToString()},{showName.Replace(",", "_").Replace(";", "_")},"; + switch (outputType) + { + case "UST (Rock-afire Explosion/3-Stage)": + headerOut += "Rockafire Explosion/3-Stage;"; + break; + case "UST (Cyberamics Rosetta)": + headerOut += "Cyberamics;"; + break; + case "UST (Cyberamics)": + headerOut += "Cyberamics;"; + break; + case "UST (Studio C)": + headerOut += "Studio C;"; + break; + } + return headerOut; + } + + void Event_ChangeInputType() + { + switch(InputTypeSelector.SelectedIndex) + { + case 0: + OutputTypeSelector.Items.Clear(); + foreach (string s in RAE3stOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + case 1: + OutputTypeSelector.Items.Clear(); + foreach (string s in CyberOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + case 2: + OutputTypeSelector.Items.Clear(); + foreach (string s in StudioCOutputTypes) + { + OutputTypeSelector.Items.Add(s); + } + break; + } + } + + void Event_BrowseFileButton() + { + OpenFileDialog fileDialog = new OpenFileDialog(); + string[] showFiles = { ".rshw", ".cshw", ".sshw" }; + string[] allFiles = { ".*" }; + fileDialog.Filters.Add(new FileFilter("Show Files (.rshw, .cshw, .sshw)", showFiles)); + fileDialog.Filters.Add(new FileFilter("All Files", allFiles)); + fileDialog.Title = "Select Show File."; + fileDialog.ShowDialog(this); + if (File.Exists(fileDialog.FileName)) FilePathTextBox.Text = fileDialog.FileName; + } + + void Event_ConvertFileButton() + { + // safeties + if (InputTypeSelector.SelectedIndex == -1) + { + MessageBox.Show("Fatal: You must select an input type."); + return; + } + if (OutputTypeSelector.SelectedIndex == -1) + { + MessageBox.Show("Fatal: You must select an output type."); + return; + } + if (FilePathTextBox.Text.Trim() == "") + { + MessageBox.Show("Fatal: You must select an input file."); + return; + } + if (!File.Exists(FilePathTextBox.Text.Trim())) + { + MessageBox.Show("Fatal: Specified input file does not exist."); + return; + } + + SaveFileDialog fileDialog = new SaveFileDialog(); + fileDialog.Filters.Add(new FileFilter("UST Files (.ust)", new string[]{".ust"})); + fileDialog.Title = "Select Output File."; + fileDialog.ShowDialog(this); + if (fileDialog.FileName.Trim() == "") return; + string outFilePath = fileDialog.FileName; + + // now its actually time to start doing some shit + string inputType = InputTypeSelector.SelectedKey; + string outputType = OutputTypeSelector.SelectedKey; + string filePath = FilePathTextBox.Text.Trim(); + if (inputType == "RSHW File (RR Engine)" || inputType == "CSHW File (RR Engine)" || inputType == "SSHW File (RR Engine)") + { + // at some point there should be a warning displayed if the input type does not match the file extension but i dont feel like doing that right now + + // rshw time + RSHWFile file = RSHWLoader.Load(filePath); + if (file.signalData == null) + { + MessageBox.Show("Fatal: This file contains no signal data."); + return; + } + if (file.audioData == null) + { + MessageBox.Show("Fatal: This file contains no audio data."); + return; + } + + List rshwBits = new List(); + int countlength = 0; + if (file.signalData[0] != 0) + { + countlength = 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + for (int i = 0; i < file.signalData.Length; i++) + { + if (file.signalData[i] == 0) + { + countlength += 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + else + { + rshwBits[countlength - 1].Set(file.signalData[i], true); + } + } + + // pick which target bits to use and how many bytes the output should be + int[] targetBits = { 0 }; + switch (outputType) + { + case "UST (Rock-afire Explosion/3-Stage)": + targetBits = RAE3stBitMap; + break; + case "UST (Cyberamics Rosetta)": + targetBits = CyberBitMapRosetta; + Rosetta = true; + break; + case "UST (Cyberamics)": + targetBits = CyberBitMap; + break; + case "UST (Studio C)": + targetBits = StudioCBitMap; + break; + } + + List writeOut = new List(); + foreach (BitArray bits in rshwBits) + { + BigInteger frameByte = 0; + for (int i = 0; i < targetBits.Length; i++) + { + if (Rosetta && CyberRosettaInvertedBits.Contains(targetBits[i])) + { + if (!bits.Get(targetBits[i])) frameByte += BigInteger.Pow(2, i); + } + else { if (bits.Get(targetBits[i])) frameByte += BigInteger.Pow(2, i); } + } + writeOut.Add(frameByte.ToString($"X{(64).ToString()}")); + } + writeOut[0] = (0).ToString($"X{(64).ToString()}"); + + byte[] audioOut = file.audioData; + if ((bool)CompressAudioCheckBox.Checked) + { + if (File.Exists("tmp.mp3")) File.Delete("tmp.mp3"); + File.WriteAllBytes("tmp.wav", audioOut); + Process ffmpegProcess = new Process(); + ffmpegProcess.StartInfo.FileName = "ffmpeg"; + ffmpegProcess.StartInfo.Arguments = "-i tmp.wav -c:a mp3 -b:a 128k tmp.mp3"; + ffmpegProcess.Start(); + ffmpegProcess.WaitForExit(); + audioOut = File.ReadAllBytes("tmp.mp3"); + File.Delete("tmp.wav"); + File.Delete("tmp.mp3"); + } + + File.WriteAllText(outFilePath, MakeHeader(Path.GetFileNameWithoutExtension(outFilePath), outputType)+String.Join(",", writeOut.ToArray())+";"+Convert.ToBase64String(audioOut)); + } + MessageBox.Show("Conversion complete!"); + } + + int RRtoAPSBit(int rrBit) // aps lower drawer starts at 129 instead of 151 + { + int outAPSBit = rrBit; + if (rrBit > 150) outAPSBit = rrBit - 22; + return outAPSBit; + } + } +} diff --git a/PC2Converter/PC2Converter/RSHWFile.cs b/USTConverter/USTConverter/RSHWFile.cs similarity index 97% rename from PC2Converter/PC2Converter/RSHWFile.cs rename to USTConverter/USTConverter/RSHWFile.cs index d155ddf..8e09a5f 100644 --- a/PC2Converter/PC2Converter/RSHWFile.cs +++ b/USTConverter/USTConverter/RSHWFile.cs @@ -1,4 +1,3 @@ -using System.IO; using System.Reflection; using System.Runtime.Serialization.Formatters.Binary; diff --git a/PC2Converter/PC2Converter/PC2Converter.csproj b/USTConverter/USTConverter/USTConverter.csproj similarity index 100% rename from PC2Converter/PC2Converter/PC2Converter.csproj rename to USTConverter/USTConverter/USTConverter.csproj