diff --git a/Extension/background.js b/Extension/background.js index 8756d94..cb8f587 100644 --- a/Extension/background.js +++ b/Extension/background.js @@ -41,6 +41,130 @@ async function executeLocalScript(scriptName, tabId) { try { console.log(`Loading script: ${scriptName}`); + // Check if we need to inject dependencies first for Auto-Image.js + if (scriptName === 'Auto-Image.js') { + console.log('๐Ÿ”‘ Auto-Image.js detected, ensuring dependencies are loaded first...'); + + try { + // First inject token-manager.js + const tokenManagerUrl = chrome.runtime.getURL('scripts/token-manager.js'); + const tokenManagerResponse = await fetch(tokenManagerUrl); + + if (tokenManagerResponse.ok) { + const tokenManagerCode = await tokenManagerResponse.text(); + console.log('๐Ÿ”‘ Token manager loaded, injecting first...'); + + // Execute token manager first + await chrome.scripting.executeScript({ + target: { tabId: tabId }, + world: "MAIN", + func: (code) => { + console.log('%c๐Ÿ”‘ Loading WPlace Token Manager...', 'color: #4ade80; font-weight: bold;'); + const script = document.createElement('script'); + script.textContent = code; + document.head.appendChild(script); + script.remove(); + console.log('%cโœ… Token Manager loaded successfully', 'color: #4ade80; font-weight: bold;'); + }, + args: [tokenManagerCode] + }); + + console.log('โœ… Token manager injected successfully'); + } else { + console.warn('โš ๏ธ Could not load token-manager.js, proceeding without it'); + } + + // Then inject image-processor.js + const imageProcessorUrl = chrome.runtime.getURL('scripts/image-processor.js'); + const imageProcessorResponse = await fetch(imageProcessorUrl); + + if (imageProcessorResponse.ok) { + const imageProcessorCode = await imageProcessorResponse.text(); + console.log('๐Ÿ–ผ๏ธ Image processor loaded, injecting second...'); + + // Execute image processor second + await chrome.scripting.executeScript({ + target: { tabId: tabId }, + world: "MAIN", + func: (code) => { + console.log('%c๐Ÿ–ผ๏ธ Loading WPlace Image Processor...', 'color: #3b82f6; font-weight: bold;'); + const script = document.createElement('script'); + script.textContent = code; + document.head.appendChild(script); + script.remove(); + console.log('%cโœ… Image Processor loaded successfully', 'color: #3b82f6; font-weight: bold;'); + }, + args: [imageProcessorCode] + }); + + console.log('โœ… Image processor injected successfully'); + } else { + console.warn('โš ๏ธ Could not load image-processor.js, proceeding without it'); + } + + // Then inject overlay-manager.js + const overlayManagerUrl = chrome.runtime.getURL('scripts/overlay-manager.js'); + const overlayManagerResponse = await fetch(overlayManagerUrl); + + if (overlayManagerResponse.ok) { + const overlayManagerCode = await overlayManagerResponse.text(); + console.log('๐ŸŽจ Overlay manager loaded, injecting third...'); + + // Execute overlay manager third + await chrome.scripting.executeScript({ + target: { tabId: tabId }, + world: "MAIN", + func: (code) => { + console.log('%c๐ŸŽจ Loading WPlace Overlay Manager...', 'color: #8b5cf6; font-weight: bold;'); + const script = document.createElement('script'); + script.textContent = code; + document.head.appendChild(script); + script.remove(); + console.log('%cโœ… Overlay Manager loaded successfully', 'color: #8b5cf6; font-weight: bold;'); + }, + args: [overlayManagerCode] + }); + + console.log('โœ… Overlay manager injected successfully'); + } else { + console.warn('โš ๏ธ Could not load overlay-manager.js, proceeding without it'); + } + + // Finally inject utils-manager.js + const utilsManagerUrl = chrome.runtime.getURL('scripts/utils-manager.js'); + const utilsManagerResponse = await fetch(utilsManagerUrl); + + if (utilsManagerResponse.ok) { + const utilsManagerCode = await utilsManagerResponse.text(); + console.log('๐Ÿ› ๏ธ Utils manager loaded, injecting fourth...'); + + // Execute utils manager fourth + await chrome.scripting.executeScript({ + target: { tabId: tabId }, + world: "MAIN", + func: (code) => { + console.log('%c๐Ÿ› ๏ธ Loading WPlace Utils Manager...', 'color: #f59e0b; font-weight: bold;'); + const script = document.createElement('script'); + script.textContent = code; + document.head.appendChild(script); + script.remove(); + console.log('%cโœ… Utils Manager loaded successfully', 'color: #f59e0b; font-weight: bold;'); + }, + args: [utilsManagerCode] + }); + + console.log('โœ… Utils manager injected successfully'); + } else { + console.warn('โš ๏ธ Could not load utils-manager.js, proceeding without it'); + } + + // Small delay to ensure dependencies are fully initialized + await new Promise(resolve => setTimeout(resolve, 200)); + } catch (error) { + console.warn('โš ๏ธ Error loading dependencies:', error); + } + } + // Determine script path - Script-manager files are in root, others in scripts/ let scriptUrl; if (scriptName === 'Script-manager.js' || scriptName === 'Script-manager-fixed.js') { diff --git a/Extension/extractor/ext.py b/Extension/extractor/ext.py new file mode 100644 index 0000000..a0390dc --- /dev/null +++ b/Extension/extractor/ext.py @@ -0,0 +1,56 @@ +import json +import base64 +from PIL import Image + +def extract_image_from_data(data, output_filename): + """Extracts the original image from the imageData.""" + image_data = data['imageData'] + width = image_data['width'] + height = image_data['height'] + pixels = image_data['pixels'] + + # Create a new image with RGBA mode + img = Image.new('RGBA', (width, height)) + # The pixel data is a flat list of R, G, B, A values + img.putdata([tuple(pixels[i:i+4]) for i in range(0, len(pixels), 4)]) + img.save(output_filename) + print(f"Saved original image to {output_filename}") + +def extract_painted_map(data, output_filename): + """Extracts the painted map from the paintedMapPacked.""" + painted_map = data['paintedMapPacked'] + width = painted_map['width'] + height = painted_map['height'] + encoded_data = painted_map['data'] + + # Decode the base64 data + decoded_data = base64.b64decode(encoded_data) + + # Create a color palette from the available colors + # The 'id' from the color list is the index for the color + color_palette = {color['id']: tuple(color['rgb']) for color in data['state']['availableColors']} + + # Create a new image with RGB mode + img = Image.new('RGB', (width, height)) + pixels = [] + for byte in decoded_data: + # Get the color from the palette using the byte as the key + # Default to black if the color is not found + color = color_palette.get(byte, (0, 0, 0)) + pixels.append(color) + + img.putdata(pixels) + img.save(output_filename) + print(f"Saved painted map to {output_filename}") + + +if __name__ == "__main__": + # Load the JSON file + with open('wplace-bot-progress-2025-09-12T19-27-37.json', 'r') as f: + data = json.load(f) + + # Extract and save the original image + extract_image_from_data(data, 'original_image.png') + + # Extract and save the painted map + extract_painted_map(data, 'painted_map.png') \ No newline at end of file diff --git a/Extension/extractor/original_image.png b/Extension/extractor/original_image.png new file mode 100644 index 0000000..e0e1005 Binary files /dev/null and b/Extension/extractor/original_image.png differ diff --git a/Extension/extractor/painted_map.png b/Extension/extractor/painted_map.png new file mode 100644 index 0000000..9e6af2b Binary files /dev/null and b/Extension/extractor/painted_map.png differ diff --git a/Extension/extractor/wplace-bot-progress-2025-09-12T19-27-37.json b/Extension/extractor/wplace-bot-progress-2025-09-12T19-27-37.json new file mode 100644 index 0000000..87655ca --- /dev/null +++ b/Extension/extractor/wplace-bot-progress-2025-09-12T19-27-37.json @@ -0,0 +1,188103 @@ +{ + "timestamp": 1757705257447, + "version": "2.1", + "state": { + "totalPixels": 46875, + "paintedPixels": 234, + "lastPosition": { + "x": 999, + "y": 382 + }, + "startPosition": { + "x": 929, + "y": 344 + }, + "region": { + "x": 1089, + "y": 752 + }, + "imageLoaded": true, + "colorsChecked": true, + "availableColors": [ + { + "id": 1, + "name": "Black", + "rgb": [ + 0, + 0, + 0 + ] + }, + { + "id": 2, + "name": "Dark Gray", + "rgb": [ + 60, + 60, + 60 + ] + }, + { + "id": 3, + "name": "Gray", + "rgb": [ + 120, + 120, + 120 + ] + }, + { + "id": 32, + "name": "Medium Gray", + "rgb": [ + 170, + 170, + 170 + ] + }, + { + "id": 4, + "name": "Light Gray", + "rgb": [ + 210, + 210, + 210 + ] + }, + { + "id": 5, + "name": "White", + "rgb": [ + 255, + 255, + 255 + ] + }, + { + "id": 6, + "name": "Deep Red", + "rgb": [ + 96, + 0, + 24 + ] + }, + { + "id": 33, + "name": "Dark Red", + "rgb": [ + 165, + 14, + 30 + ] + }, + { + "id": 7, + "name": "Red", + "rgb": [ + 237, + 28, + 36 + ] + }, + { + "id": 34, + "name": "Light Red", + "rgb": [ + 250, + 128, + 114 + ] + }, + { + "id": 35, + "name": "Dark Orange", + "rgb": [ + 228, + 92, + 26 + ] + }, + { + "id": 8, + "name": "Orange", + "rgb": [ + 255, + 127, + 39 + ] + }, + { + "id": 9, + "name": "Gold", + "rgb": [ + 246, + 170, + 9 + ] + }, + { + "id": 10, + "name": "Yellow", + "rgb": [ + 249, + 221, + 59 + ] + }, + { + "id": 11, + "name": "Light Yellow", + "rgb": [ + 255, + 250, + 188 + ] + }, + { + "id": 37, + "name": "Dark Goldenrod", + "rgb": [ + 156, + 132, + 49 + ] + }, + { + "id": 38, + "name": "Goldenrod", + "rgb": [ + 197, + 173, + 49 + ] + }, + { + "id": 39, + "name": "Light Goldenrod", + "rgb": [ + 232, + 212, + 95 + ] + }, + { + "id": 40, + "name": "Dark Olive", + "rgb": [ + 74, + 107, + 58 + ] + }, + { + "id": 41, + "name": "Olive", + "rgb": [ + 90, + 148, + 74 + ] + }, + { + "id": 42, + "name": "Light Olive", + "rgb": [ + 132, + 197, + 115 + ] + }, + { + "id": 12, + "name": "Dark Green", + "rgb": [ + 14, + 185, + 104 + ] + }, + { + "id": 13, + "name": "Green", + "rgb": [ + 19, + 230, + 123 + ] + }, + { + "id": 14, + "name": "Light Green", + "rgb": [ + 135, + 255, + 94 + ] + }, + { + "id": 15, + "name": "Dark Teal", + "rgb": [ + 12, + 129, + 110 + ] + }, + { + "id": 16, + "name": "Teal", + "rgb": [ + 16, + 174, + 166 + ] + }, + { + "id": 17, + "name": "Light Teal", + "rgb": [ + 19, + 225, + 190 + ] + }, + { + "id": 43, + "name": "Dark Cyan", + "rgb": [ + 15, + 121, + 159 + ] + }, + { + "id": 20, + "name": "Cyan", + "rgb": [ + 96, + 247, + 242 + ] + }, + { + "id": 44, + "name": "Light Cyan", + "rgb": [ + 187, + 250, + 242 + ] + }, + { + "id": 18, + "name": "Dark Blue", + "rgb": [ + 40, + 80, + 158 + ] + }, + { + "id": 19, + "name": "Blue", + "rgb": [ + 64, + 147, + 228 + ] + }, + { + "id": 45, + "name": "Light Blue", + "rgb": [ + 125, + 199, + 255 + ] + }, + { + "id": 46, + "name": "Dark Indigo", + "rgb": [ + 77, + 49, + 184 + ] + }, + { + "id": 21, + "name": "Indigo", + "rgb": [ + 107, + 80, + 246 + ] + }, + { + "id": 22, + "name": "Light Indigo", + "rgb": [ + 153, + 177, + 251 + ] + }, + { + "id": 47, + "name": "Dark Slate Blue", + "rgb": [ + 74, + 66, + 132 + ] + }, + { + "id": 48, + "name": "Slate Blue", + "rgb": [ + 122, + 113, + 196 + ] + }, + { + "id": 49, + "name": "Light Slate Blue", + "rgb": [ + 181, + 174, + 241 + ] + }, + { + "id": 23, + "name": "Dark Purple", + "rgb": [ + 120, + 12, + 153 + ] + }, + { + "id": 24, + "name": "Purple", + "rgb": [ + 170, + 56, + 185 + ] + }, + { + "id": 25, + "name": "Light Purple", + "rgb": [ + 224, + 159, + 249 + ] + }, + { + "id": 26, + "name": "Dark Pink", + "rgb": [ + 203, + 0, + 122 + ] + }, + { + "id": 27, + "name": "Pink", + "rgb": [ + 236, + 31, + 128 + ] + }, + { + "id": 28, + "name": "Light Pink", + "rgb": [ + 243, + 141, + 169 + ] + }, + { + "id": 53, + "name": "Dark Peach", + "rgb": [ + 155, + 82, + 73 + ] + }, + { + "id": 54, + "name": "Peach", + "rgb": [ + 209, + 128, + 120 + ] + }, + { + "id": 55, + "name": "Light Peach", + "rgb": [ + 250, + 182, + 164 + ] + }, + { + "id": 29, + "name": "Dark Brown", + "rgb": [ + 104, + 70, + 52 + ] + }, + { + "id": 30, + "name": "Brown", + "rgb": [ + 149, + 104, + 42 + ] + }, + { + "id": 50, + "name": "Light Brown", + "rgb": [ + 219, + 164, + 99 + ] + }, + { + "id": 56, + "name": "Dark Tan", + "rgb": [ + 123, + 99, + 82 + ] + }, + { + "id": 57, + "name": "Tan", + "rgb": [ + 156, + 132, + 107 + ] + }, + { + "id": 36, + "name": "Light Tan", + "rgb": [ + 214, + 181, + 148 + ] + }, + { + "id": 51, + "name": "Dark Beige", + "rgb": [ + 209, + 128, + 81 + ] + }, + { + "id": 31, + "name": "Beige", + "rgb": [ + 248, + 178, + 119 + ] + }, + { + "id": 52, + "name": "Light Beige", + "rgb": [ + 255, + 197, + 165 + ] + }, + { + "id": 61, + "name": "Dark Stone", + "rgb": [ + 109, + 100, + 63 + ] + }, + { + "id": 62, + "name": "Stone", + "rgb": [ + 148, + 140, + 107 + ] + }, + { + "id": 63, + "name": "Light Stone", + "rgb": [ + 205, + 197, + 158 + ] + }, + { + "id": 58, + "name": "Dark Slate", + "rgb": [ + 51, + 57, + 65 + ] + }, + { + "id": 59, + "name": "Slate", + "rgb": [ + 109, + 117, + 141 + ] + }, + { + "id": 60, + "name": "Light Slate", + "rgb": [ + 179, + 185, + 209 + ] + } + ] + }, + "imageData": { + "width": 375, + "height": 125, + "pixels": [ + 3, + 7, + 26, + 255, + 8, + 11, + 53, + 255, + 1, + 5, + 31, + 255, + 5, + 6, + 20, + 255, + 4, + 8, + 28, + 255, + 40, + 48, + 111, + 255, + 51, + 59, + 124, + 255, + 3, + 6, + 24, + 255, + 1, + 2, + 13, + 255, + 3, + 12, + 50, + 255, + 48, + 51, + 119, + 255, + 7, + 10, + 23, + 255, + 2, + 3, + 4, + 255, + 0, + 4, + 11, + 255, + 3, + 5, + 29, + 255, + 6, + 4, + 23, + 255, + 0, + 2, + 3, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 11, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 1, + 255, + 1, + 0, + 6, + 255, + 2, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 4, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 6, + 255, + 6, + 4, + 25, + 255, + 9, + 14, + 65, + 255, + 0, + 3, + 18, + 255, + 0, + 1, + 6, + 255, + 6, + 0, + 20, + 255, + 44, + 46, + 102, + 255, + 5, + 4, + 52, + 255, + 0, + 3, + 0, + 255, + 1, + 0, + 12, + 255, + 1, + 4, + 22, + 255, + 0, + 0, + 33, + 255, + 0, + 4, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 6, + 255, + 4, + 3, + 8, + 255, + 2, + 0, + 8, + 255, + 2, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 3, + 0, + 2, + 255, + 2, + 0, + 2, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 6, + 255, + 1, + 0, + 1, + 255, + 0, + 1, + 6, + 255, + 0, + 3, + 29, + 255, + 12, + 14, + 63, + 255, + 3, + 0, + 10, + 255, + 0, + 2, + 0, + 255, + 0, + 4, + 13, + 255, + 10, + 14, + 51, + 255, + 2, + 1, + 18, + 255, + 1, + 2, + 17, + 255, + 0, + 1, + 18, + 255, + 3, + 6, + 25, + 255, + 2, + 3, + 24, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 23, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 12, + 255, + 0, + 0, + 19, + 255, + 1, + 0, + 20, + 255, + 2, + 0, + 18, + 255, + 2, + 0, + 17, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 21, + 255, + 1, + 0, + 21, + 255, + 4, + 6, + 31, + 255, + 2, + 2, + 37, + 255, + 4, + 4, + 38, + 255, + 0, + 1, + 24, + 255, + 3, + 2, + 28, + 255, + 12, + 10, + 49, + 255, + 9, + 9, + 46, + 255, + 2, + 6, + 35, + 255, + 1, + 2, + 30, + 255, + 2, + 2, + 36, + 255, + 1, + 2, + 34, + 255, + 0, + 0, + 27, + 255, + 1, + 3, + 25, + 255, + 1, + 2, + 30, + 255, + 3, + 4, + 33, + 255, + 1, + 3, + 28, + 255, + 1, + 3, + 28, + 255, + 1, + 2, + 29, + 255, + 1, + 2, + 31, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 30, + 255, + 2, + 3, + 31, + 255, + 3, + 4, + 31, + 255, + 7, + 9, + 34, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 12, + 13, + 41, + 255, + 11, + 12, + 40, + 255, + 10, + 11, + 39, + 255, + 16, + 17, + 47, + 255, + 11, + 15, + 42, + 255, + 16, + 22, + 47, + 255, + 38, + 46, + 69, + 255, + 71, + 82, + 100, + 255, + 71, + 82, + 100, + 255, + 70, + 81, + 99, + 255, + 72, + 83, + 101, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 73, + 81, + 100, + 255, + 73, + 81, + 100, + 255, + 73, + 81, + 102, + 255, + 73, + 81, + 102, + 255, + 73, + 81, + 102, + 255, + 75, + 83, + 104, + 255, + 77, + 84, + 102, + 255, + 77, + 84, + 102, + 255, + 73, + 80, + 98, + 255, + 75, + 82, + 100, + 255, + 54, + 62, + 91, + 255, + 56, + 64, + 95, + 255, + 52, + 60, + 91, + 255, + 52, + 59, + 93, + 255, + 59, + 68, + 101, + 255, + 54, + 63, + 96, + 255, + 48, + 57, + 92, + 255, + 54, + 62, + 99, + 255, + 55, + 63, + 99, + 255, + 55, + 65, + 100, + 255, + 55, + 67, + 101, + 255, + 54, + 67, + 101, + 255, + 55, + 65, + 101, + 255, + 57, + 67, + 103, + 255, + 58, + 68, + 104, + 255, + 58, + 68, + 104, + 255, + 60, + 67, + 110, + 255, + 67, + 75, + 106, + 255, + 84, + 90, + 114, + 255, + 87, + 93, + 117, + 255, + 83, + 91, + 114, + 255, + 84, + 92, + 116, + 255, + 84, + 91, + 118, + 255, + 88, + 95, + 123, + 255, + 88, + 95, + 121, + 255, + 90, + 97, + 124, + 255, + 45, + 51, + 87, + 255, + 35, + 39, + 85, + 255, + 30, + 36, + 84, + 255, + 28, + 34, + 84, + 255, + 30, + 36, + 87, + 255, + 32, + 38, + 90, + 255, + 33, + 41, + 90, + 255, + 42, + 48, + 97, + 255, + 63, + 69, + 109, + 255, + 97, + 104, + 133, + 255, + 101, + 105, + 132, + 255, + 102, + 106, + 134, + 255, + 100, + 103, + 134, + 255, + 96, + 99, + 130, + 255, + 87, + 93, + 127, + 255, + 94, + 100, + 134, + 255, + 87, + 93, + 127, + 255, + 89, + 95, + 129, + 255, + 95, + 98, + 131, + 255, + 105, + 107, + 141, + 255, + 121, + 122, + 149, + 255, + 123, + 124, + 143, + 255, + 123, + 125, + 140, + 255, + 123, + 125, + 148, + 255, + 77, + 79, + 119, + 255, + 71, + 73, + 122, + 255, + 70, + 72, + 119, + 255, + 71, + 73, + 122, + 255, + 73, + 77, + 122, + 255, + 84, + 90, + 127, + 255, + 128, + 130, + 159, + 255, + 129, + 128, + 160, + 255, + 132, + 130, + 157, + 255, + 131, + 129, + 148, + 255, + 199, + 188, + 203, + 255, + 186, + 166, + 174, + 255, + 168, + 149, + 162, + 255, + 132, + 126, + 152, + 255, + 143, + 136, + 163, + 255, + 169, + 150, + 172, + 255, + 195, + 169, + 172, + 255, + 196, + 175, + 165, + 255, + 212, + 192, + 167, + 255, + 218, + 199, + 169, + 255, + 220, + 202, + 166, + 255, + 222, + 205, + 163, + 255, + 221, + 206, + 167, + 255, + 222, + 207, + 168, + 255, + 222, + 207, + 168, + 255, + 224, + 209, + 170, + 255, + 227, + 208, + 175, + 255, + 228, + 209, + 176, + 255, + 227, + 211, + 177, + 255, + 227, + 213, + 176, + 255, + 228, + 212, + 177, + 255, + 229, + 213, + 180, + 255, + 230, + 214, + 182, + 255, + 230, + 213, + 185, + 255, + 231, + 214, + 186, + 255, + 231, + 214, + 186, + 255, + 232, + 215, + 187, + 255, + 232, + 215, + 187, + 255, + 230, + 214, + 188, + 255, + 230, + 214, + 190, + 255, + 231, + 215, + 192, + 255, + 231, + 214, + 194, + 255, + 231, + 215, + 193, + 255, + 231, + 215, + 193, + 255, + 231, + 215, + 193, + 255, + 231, + 215, + 193, + 255, + 231, + 214, + 196, + 255, + 231, + 214, + 196, + 255, + 230, + 213, + 195, + 255, + 230, + 213, + 195, + 255, + 228, + 213, + 197, + 255, + 227, + 212, + 196, + 255, + 227, + 212, + 196, + 255, + 226, + 211, + 195, + 255, + 221, + 205, + 199, + 255, + 215, + 200, + 188, + 255, + 225, + 208, + 206, + 255, + 215, + 196, + 206, + 255, + 185, + 166, + 184, + 255, + 206, + 182, + 206, + 255, + 207, + 179, + 203, + 255, + 205, + 176, + 197, + 255, + 204, + 177, + 196, + 255, + 201, + 174, + 201, + 255, + 200, + 176, + 203, + 255, + 194, + 172, + 194, + 255, + 195, + 169, + 196, + 255, + 200, + 172, + 192, + 255, + 200, + 180, + 189, + 255, + 203, + 191, + 195, + 255, + 163, + 157, + 177, + 255, + 158, + 152, + 187, + 255, + 151, + 148, + 192, + 255, + 148, + 150, + 191, + 255, + 146, + 144, + 189, + 255, + 144, + 143, + 187, + 255, + 142, + 140, + 186, + 255, + 124, + 122, + 168, + 255, + 118, + 120, + 163, + 255, + 117, + 119, + 163, + 255, + 118, + 118, + 162, + 255, + 121, + 121, + 164, + 255, + 130, + 124, + 151, + 255, + 167, + 166, + 182, + 255, + 113, + 111, + 157, + 255, + 106, + 107, + 151, + 255, + 104, + 106, + 156, + 255, + 106, + 107, + 152, + 255, + 131, + 131, + 168, + 255, + 127, + 126, + 159, + 255, + 113, + 114, + 158, + 255, + 107, + 110, + 162, + 255, + 100, + 107, + 161, + 255, + 98, + 107, + 158, + 255, + 98, + 103, + 158, + 255, + 96, + 101, + 157, + 255, + 95, + 100, + 158, + 255, + 93, + 98, + 156, + 255, + 90, + 96, + 154, + 255, + 89, + 95, + 153, + 255, + 87, + 93, + 153, + 255, + 86, + 92, + 154, + 255, + 84, + 90, + 152, + 255, + 83, + 88, + 152, + 255, + 83, + 88, + 154, + 255, + 82, + 87, + 153, + 255, + 80, + 85, + 150, + 255, + 78, + 83, + 151, + 255, + 77, + 81, + 153, + 255, + 70, + 74, + 148, + 255, + 69, + 71, + 146, + 255, + 68, + 68, + 146, + 255, + 68, + 66, + 140, + 255, + 67, + 66, + 133, + 255, + 67, + 65, + 130, + 255, + 67, + 65, + 130, + 255, + 67, + 65, + 130, + 255, + 67, + 65, + 130, + 255, + 68, + 65, + 134, + 255, + 68, + 65, + 136, + 255, + 69, + 66, + 138, + 255, + 70, + 66, + 140, + 255, + 70, + 68, + 152, + 255, + 72, + 69, + 157, + 255, + 73, + 70, + 160, + 255, + 74, + 70, + 164, + 255, + 72, + 71, + 165, + 255, + 73, + 72, + 166, + 255, + 73, + 72, + 166, + 255, + 74, + 73, + 167, + 255, + 74, + 73, + 167, + 255, + 75, + 74, + 168, + 255, + 76, + 75, + 169, + 255, + 77, + 76, + 170, + 255, + 78, + 76, + 173, + 255, + 80, + 79, + 173, + 255, + 80, + 79, + 172, + 255, + 86, + 85, + 177, + 255, + 84, + 84, + 172, + 255, + 88, + 88, + 176, + 255, + 88, + 88, + 176, + 255, + 83, + 83, + 171, + 255, + 87, + 84, + 172, + 255, + 83, + 81, + 166, + 255, + 82, + 80, + 161, + 255, + 82, + 81, + 159, + 255, + 82, + 81, + 161, + 255, + 82, + 81, + 161, + 255, + 82, + 81, + 161, + 255, + 83, + 82, + 162, + 255, + 82, + 80, + 163, + 255, + 83, + 81, + 164, + 255, + 84, + 82, + 165, + 255, + 85, + 83, + 166, + 255, + 86, + 84, + 167, + 255, + 89, + 87, + 170, + 255, + 94, + 92, + 175, + 255, + 108, + 106, + 189, + 255, + 108, + 106, + 187, + 255, + 109, + 107, + 188, + 255, + 111, + 109, + 190, + 255, + 111, + 109, + 190, + 255, + 111, + 109, + 192, + 255, + 111, + 109, + 192, + 255, + 111, + 109, + 192, + 255, + 111, + 109, + 192, + 255, + 111, + 108, + 189, + 255, + 110, + 107, + 188, + 255, + 110, + 107, + 188, + 255, + 109, + 106, + 187, + 255, + 110, + 107, + 184, + 255, + 109, + 106, + 183, + 255, + 109, + 106, + 183, + 255, + 109, + 106, + 183, + 255, + 109, + 106, + 183, + 255, + 108, + 106, + 181, + 255, + 108, + 106, + 179, + 255, + 108, + 106, + 179, + 255, + 109, + 105, + 179, + 255, + 108, + 105, + 177, + 255, + 107, + 104, + 174, + 255, + 106, + 103, + 172, + 255, + 103, + 100, + 168, + 255, + 99, + 96, + 165, + 255, + 91, + 88, + 157, + 255, + 2, + 0, + 4, + 255, + 0, + 1, + 11, + 255, + 0, + 5, + 3, + 255, + 2, + 4, + 10, + 255, + 4, + 4, + 11, + 255, + 3, + 8, + 27, + 255, + 6, + 11, + 30, + 255, + 3, + 2, + 9, + 255, + 2, + 1, + 15, + 255, + 1, + 6, + 38, + 255, + 30, + 32, + 82, + 255, + 4, + 6, + 21, + 255, + 4, + 0, + 19, + 255, + 4, + 9, + 15, + 255, + 57, + 56, + 135, + 255, + 0, + 4, + 27, + 255, + 2, + 1, + 18, + 255, + 0, + 6, + 2, + 255, + 3, + 3, + 57, + 255, + 0, + 7, + 23, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 6, + 255, + 1, + 4, + 5, + 255, + 1, + 3, + 9, + 255, + 0, + 4, + 4, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 1, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 2, + 0, + 255, + 2, + 0, + 10, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 3, + 255, + 3, + 3, + 3, + 255, + 0, + 0, + 18, + 255, + 0, + 2, + 19, + 255, + 0, + 2, + 0, + 255, + 3, + 1, + 13, + 255, + 10, + 8, + 49, + 255, + 22, + 17, + 67, + 255, + 1, + 3, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 4, + 25, + 255, + 24, + 21, + 73, + 255, + 1, + 4, + 2, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 8, + 255, + 2, + 1, + 17, + 255, + 1, + 2, + 5, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 2, + 14, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 34, + 255, + 1, + 0, + 11, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 15, + 255, + 31, + 28, + 72, + 255, + 6, + 4, + 40, + 255, + 0, + 0, + 12, + 255, + 0, + 2, + 15, + 255, + 2, + 1, + 31, + 255, + 4, + 2, + 40, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 24, + 255, + 0, + 1, + 26, + 255, + 0, + 1, + 21, + 255, + 1, + 0, + 18, + 255, + 2, + 0, + 19, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 21, + 255, + 0, + 3, + 20, + 255, + 1, + 3, + 27, + 255, + 0, + 1, + 24, + 255, + 0, + 3, + 19, + 255, + 1, + 1, + 21, + 255, + 1, + 1, + 29, + 255, + 8, + 9, + 38, + 255, + 0, + 4, + 27, + 255, + 2, + 3, + 30, + 255, + 3, + 4, + 35, + 255, + 20, + 21, + 51, + 255, + 0, + 2, + 27, + 255, + 1, + 2, + 29, + 255, + 1, + 1, + 34, + 255, + 13, + 13, + 47, + 255, + 0, + 0, + 30, + 255, + 1, + 3, + 28, + 255, + 1, + 2, + 29, + 255, + 2, + 3, + 32, + 255, + 2, + 3, + 33, + 255, + 2, + 3, + 31, + 255, + 3, + 4, + 32, + 255, + 6, + 7, + 36, + 255, + 9, + 10, + 39, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 12, + 13, + 41, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 40, + 255, + 9, + 13, + 40, + 255, + 17, + 23, + 48, + 255, + 50, + 58, + 81, + 255, + 70, + 81, + 99, + 255, + 70, + 81, + 99, + 255, + 70, + 81, + 99, + 255, + 71, + 82, + 100, + 255, + 73, + 81, + 102, + 255, + 73, + 81, + 102, + 255, + 72, + 80, + 101, + 255, + 72, + 80, + 101, + 255, + 73, + 81, + 102, + 255, + 73, + 81, + 102, + 255, + 73, + 81, + 102, + 255, + 74, + 82, + 103, + 255, + 77, + 84, + 103, + 255, + 74, + 81, + 100, + 255, + 79, + 86, + 105, + 255, + 46, + 53, + 72, + 255, + 35, + 41, + 69, + 255, + 27, + 32, + 62, + 255, + 28, + 33, + 65, + 255, + 27, + 32, + 64, + 255, + 25, + 33, + 64, + 255, + 30, + 37, + 70, + 255, + 35, + 42, + 76, + 255, + 53, + 60, + 96, + 255, + 56, + 63, + 99, + 255, + 56, + 64, + 100, + 255, + 56, + 66, + 101, + 255, + 55, + 66, + 101, + 255, + 54, + 64, + 100, + 255, + 58, + 68, + 104, + 255, + 58, + 68, + 104, + 255, + 58, + 68, + 104, + 255, + 60, + 68, + 107, + 255, + 67, + 75, + 104, + 255, + 85, + 91, + 115, + 255, + 86, + 92, + 117, + 255, + 85, + 93, + 116, + 255, + 83, + 91, + 115, + 255, + 86, + 93, + 120, + 255, + 84, + 91, + 119, + 255, + 87, + 94, + 120, + 255, + 89, + 96, + 123, + 255, + 55, + 61, + 97, + 255, + 39, + 43, + 89, + 255, + 30, + 36, + 84, + 255, + 28, + 34, + 84, + 255, + 29, + 35, + 86, + 255, + 31, + 37, + 89, + 255, + 32, + 40, + 90, + 255, + 38, + 44, + 94, + 255, + 52, + 58, + 101, + 255, + 88, + 94, + 128, + 255, + 100, + 104, + 131, + 255, + 101, + 105, + 133, + 255, + 99, + 102, + 133, + 255, + 97, + 100, + 131, + 255, + 87, + 93, + 127, + 255, + 96, + 102, + 136, + 255, + 88, + 94, + 128, + 255, + 87, + 93, + 127, + 255, + 92, + 97, + 129, + 255, + 98, + 101, + 136, + 255, + 112, + 113, + 143, + 255, + 122, + 124, + 145, + 255, + 120, + 121, + 139, + 255, + 122, + 124, + 145, + 255, + 75, + 78, + 113, + 255, + 71, + 73, + 120, + 255, + 69, + 71, + 118, + 255, + 70, + 72, + 120, + 255, + 80, + 82, + 123, + 255, + 105, + 108, + 142, + 255, + 130, + 125, + 156, + 255, + 132, + 128, + 155, + 255, + 120, + 116, + 133, + 255, + 178, + 173, + 184, + 255, + 172, + 148, + 166, + 255, + 134, + 121, + 147, + 255, + 142, + 139, + 166, + 255, + 140, + 134, + 153, + 255, + 187, + 167, + 170, + 255, + 194, + 169, + 165, + 255, + 211, + 188, + 163, + 255, + 214, + 200, + 161, + 255, + 217, + 200, + 157, + 255, + 219, + 202, + 159, + 255, + 220, + 203, + 161, + 255, + 222, + 205, + 163, + 255, + 224, + 206, + 167, + 255, + 225, + 207, + 168, + 255, + 225, + 207, + 168, + 255, + 227, + 209, + 170, + 255, + 229, + 211, + 170, + 255, + 230, + 212, + 172, + 255, + 228, + 213, + 173, + 255, + 228, + 214, + 175, + 255, + 228, + 212, + 177, + 255, + 229, + 213, + 179, + 255, + 230, + 214, + 180, + 255, + 230, + 214, + 181, + 255, + 231, + 215, + 183, + 255, + 231, + 215, + 183, + 255, + 232, + 216, + 184, + 255, + 232, + 216, + 184, + 255, + 231, + 216, + 187, + 255, + 231, + 215, + 189, + 255, + 231, + 215, + 189, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 193, + 255, + 231, + 215, + 193, + 255, + 230, + 214, + 192, + 255, + 230, + 214, + 192, + 255, + 229, + 215, + 190, + 255, + 228, + 214, + 189, + 255, + 229, + 215, + 190, + 255, + 229, + 215, + 190, + 255, + 226, + 210, + 197, + 255, + 226, + 211, + 192, + 255, + 225, + 209, + 192, + 255, + 223, + 207, + 194, + 255, + 224, + 205, + 198, + 255, + 213, + 196, + 197, + 255, + 182, + 165, + 175, + 255, + 203, + 188, + 202, + 255, + 208, + 186, + 199, + 255, + 199, + 178, + 186, + 255, + 200, + 177, + 194, + 255, + 197, + 173, + 203, + 255, + 177, + 155, + 184, + 255, + 199, + 175, + 202, + 255, + 195, + 172, + 190, + 255, + 198, + 178, + 188, + 255, + 203, + 185, + 182, + 255, + 205, + 192, + 191, + 255, + 160, + 152, + 169, + 255, + 156, + 149, + 190, + 255, + 151, + 148, + 183, + 255, + 147, + 143, + 182, + 255, + 144, + 139, + 184, + 255, + 130, + 125, + 173, + 255, + 124, + 123, + 174, + 255, + 127, + 126, + 160, + 255, + 131, + 128, + 145, + 255, + 166, + 163, + 171, + 255, + 181, + 177, + 174, + 255, + 116, + 113, + 138, + 255, + 106, + 106, + 157, + 255, + 100, + 106, + 150, + 255, + 101, + 103, + 151, + 255, + 106, + 107, + 151, + 255, + 130, + 130, + 166, + 255, + 127, + 126, + 158, + 255, + 124, + 125, + 164, + 255, + 106, + 108, + 157, + 255, + 102, + 106, + 159, + 255, + 96, + 103, + 155, + 255, + 96, + 101, + 156, + 255, + 94, + 99, + 155, + 255, + 93, + 98, + 156, + 255, + 91, + 96, + 154, + 255, + 89, + 95, + 153, + 255, + 88, + 94, + 152, + 255, + 86, + 92, + 152, + 255, + 85, + 91, + 153, + 255, + 84, + 90, + 152, + 255, + 83, + 88, + 152, + 255, + 85, + 90, + 156, + 255, + 84, + 89, + 155, + 255, + 83, + 88, + 154, + 255, + 81, + 85, + 155, + 255, + 75, + 79, + 153, + 255, + 69, + 72, + 149, + 255, + 68, + 70, + 146, + 255, + 67, + 67, + 145, + 255, + 66, + 64, + 139, + 255, + 66, + 65, + 132, + 255, + 65, + 63, + 128, + 255, + 65, + 63, + 128, + 255, + 66, + 64, + 129, + 255, + 66, + 64, + 129, + 255, + 67, + 64, + 132, + 255, + 67, + 64, + 134, + 255, + 67, + 64, + 135, + 255, + 68, + 65, + 137, + 255, + 69, + 67, + 150, + 255, + 71, + 69, + 155, + 255, + 70, + 67, + 157, + 255, + 71, + 68, + 160, + 255, + 71, + 69, + 162, + 255, + 72, + 70, + 163, + 255, + 71, + 69, + 162, + 255, + 72, + 70, + 163, + 255, + 73, + 71, + 164, + 255, + 74, + 72, + 165, + 255, + 74, + 72, + 165, + 255, + 75, + 73, + 166, + 255, + 77, + 75, + 168, + 255, + 79, + 77, + 169, + 255, + 80, + 78, + 168, + 255, + 79, + 77, + 166, + 255, + 81, + 80, + 167, + 255, + 82, + 81, + 168, + 255, + 86, + 85, + 172, + 255, + 84, + 83, + 170, + 255, + 84, + 81, + 169, + 255, + 83, + 81, + 166, + 255, + 80, + 78, + 159, + 255, + 80, + 79, + 157, + 255, + 81, + 78, + 157, + 255, + 81, + 78, + 157, + 255, + 80, + 77, + 156, + 255, + 81, + 78, + 157, + 255, + 81, + 78, + 158, + 255, + 82, + 79, + 159, + 255, + 82, + 79, + 159, + 255, + 83, + 80, + 160, + 255, + 85, + 83, + 164, + 255, + 91, + 89, + 170, + 255, + 102, + 100, + 181, + 255, + 106, + 104, + 185, + 255, + 108, + 107, + 187, + 255, + 109, + 108, + 188, + 255, + 110, + 109, + 189, + 255, + 110, + 109, + 189, + 255, + 110, + 108, + 189, + 255, + 110, + 108, + 189, + 255, + 110, + 108, + 189, + 255, + 110, + 108, + 189, + 255, + 110, + 107, + 185, + 255, + 109, + 106, + 184, + 255, + 108, + 105, + 183, + 255, + 107, + 104, + 182, + 255, + 107, + 105, + 180, + 255, + 106, + 104, + 179, + 255, + 108, + 106, + 181, + 255, + 108, + 106, + 181, + 255, + 108, + 106, + 181, + 255, + 107, + 105, + 179, + 255, + 108, + 106, + 178, + 255, + 108, + 107, + 177, + 255, + 107, + 104, + 176, + 255, + 106, + 103, + 174, + 255, + 106, + 103, + 173, + 255, + 105, + 102, + 171, + 255, + 103, + 100, + 167, + 255, + 99, + 96, + 163, + 255, + 94, + 91, + 158, + 255, + 6, + 6, + 26, + 255, + 4, + 6, + 27, + 255, + 0, + 5, + 3, + 255, + 1, + 0, + 4, + 255, + 3, + 2, + 7, + 255, + 1, + 3, + 8, + 255, + 2, + 4, + 8, + 255, + 1, + 1, + 2, + 255, + 2, + 2, + 2, + 255, + 1, + 2, + 12, + 255, + 2, + 5, + 14, + 255, + 0, + 3, + 2, + 255, + 2, + 0, + 6, + 255, + 2, + 6, + 0, + 255, + 0, + 1, + 51, + 255, + 2, + 6, + 14, + 255, + 2, + 1, + 7, + 255, + 1, + 4, + 10, + 255, + 30, + 27, + 97, + 255, + 10, + 14, + 68, + 255, + 1, + 3, + 0, + 255, + 0, + 2, + 10, + 255, + 0, + 0, + 43, + 255, + 28, + 25, + 103, + 255, + 0, + 5, + 11, + 255, + 1, + 0, + 3, + 255, + 4, + 1, + 10, + 255, + 0, + 4, + 26, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 7, + 255, + 3, + 0, + 1, + 255, + 1, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 2, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 5, + 255, + 1, + 3, + 0, + 255, + 3, + 0, + 21, + 255, + 1, + 0, + 0, + 255, + 2, + 6, + 24, + 255, + 6, + 3, + 46, + 255, + 1, + 4, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 3, + 5, + 255, + 36, + 29, + 89, + 255, + 0, + 0, + 32, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 2, + 19, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 1, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 7, + 255, + 3, + 1, + 31, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 16, + 255, + 1, + 3, + 19, + 255, + 4, + 4, + 29, + 255, + 10, + 8, + 47, + 255, + 1, + 2, + 21, + 255, + 0, + 2, + 18, + 255, + 2, + 2, + 29, + 255, + 17, + 17, + 51, + 255, + 3, + 5, + 27, + 255, + 0, + 0, + 19, + 255, + 2, + 0, + 23, + 255, + 1, + 1, + 27, + 255, + 0, + 0, + 23, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 18, + 255, + 0, + 2, + 20, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 18, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 23, + 255, + 1, + 3, + 26, + 255, + 0, + 5, + 27, + 255, + 1, + 3, + 28, + 255, + 3, + 4, + 33, + 255, + 2, + 3, + 31, + 255, + 3, + 5, + 29, + 255, + 1, + 3, + 28, + 255, + 1, + 2, + 33, + 255, + 2, + 2, + 35, + 255, + 3, + 4, + 33, + 255, + 1, + 3, + 28, + 255, + 1, + 2, + 29, + 255, + 9, + 10, + 39, + 255, + 0, + 0, + 30, + 255, + 2, + 3, + 30, + 255, + 4, + 5, + 34, + 255, + 12, + 12, + 45, + 255, + 12, + 12, + 47, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 8, + 9, + 37, + 255, + 10, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 12, + 13, + 41, + 255, + 12, + 13, + 43, + 255, + 12, + 16, + 43, + 255, + 18, + 24, + 49, + 255, + 72, + 80, + 103, + 255, + 70, + 81, + 99, + 255, + 70, + 81, + 99, + 255, + 71, + 82, + 100, + 255, + 71, + 82, + 100, + 255, + 73, + 81, + 104, + 255, + 73, + 81, + 104, + 255, + 73, + 81, + 104, + 255, + 71, + 79, + 102, + 255, + 73, + 81, + 102, + 255, + 71, + 79, + 100, + 255, + 73, + 81, + 102, + 255, + 74, + 82, + 103, + 255, + 76, + 82, + 104, + 255, + 71, + 77, + 99, + 255, + 75, + 81, + 103, + 255, + 34, + 40, + 62, + 255, + 22, + 25, + 52, + 255, + 16, + 18, + 47, + 255, + 15, + 17, + 48, + 255, + 15, + 17, + 49, + 255, + 13, + 17, + 47, + 255, + 14, + 17, + 50, + 255, + 18, + 21, + 55, + 255, + 23, + 26, + 61, + 255, + 45, + 49, + 86, + 255, + 57, + 64, + 100, + 255, + 56, + 64, + 100, + 255, + 55, + 65, + 100, + 255, + 54, + 64, + 100, + 255, + 55, + 65, + 101, + 255, + 57, + 67, + 103, + 255, + 58, + 68, + 104, + 255, + 62, + 71, + 105, + 255, + 80, + 88, + 115, + 255, + 81, + 87, + 111, + 255, + 80, + 86, + 112, + 255, + 84, + 92, + 115, + 255, + 86, + 94, + 118, + 255, + 80, + 87, + 114, + 255, + 84, + 91, + 119, + 255, + 88, + 95, + 121, + 255, + 89, + 96, + 123, + 255, + 66, + 72, + 108, + 255, + 37, + 41, + 87, + 255, + 29, + 35, + 83, + 255, + 28, + 34, + 84, + 255, + 28, + 34, + 85, + 255, + 29, + 35, + 87, + 255, + 30, + 37, + 89, + 255, + 35, + 41, + 94, + 255, + 45, + 50, + 99, + 255, + 72, + 77, + 119, + 255, + 100, + 104, + 131, + 255, + 98, + 102, + 130, + 255, + 100, + 103, + 134, + 255, + 99, + 102, + 133, + 255, + 86, + 92, + 126, + 255, + 90, + 96, + 130, + 255, + 91, + 97, + 131, + 255, + 87, + 93, + 127, + 255, + 88, + 95, + 126, + 255, + 94, + 99, + 133, + 255, + 105, + 108, + 140, + 255, + 109, + 112, + 137, + 255, + 121, + 122, + 142, + 255, + 120, + 123, + 141, + 255, + 91, + 94, + 125, + 255, + 72, + 75, + 119, + 255, + 66, + 70, + 115, + 255, + 70, + 73, + 117, + 255, + 82, + 81, + 119, + 255, + 132, + 130, + 159, + 255, + 129, + 126, + 152, + 255, + 127, + 125, + 147, + 255, + 178, + 174, + 191, + 255, + 117, + 111, + 130, + 255, + 136, + 136, + 154, + 255, + 132, + 132, + 157, + 255, + 143, + 128, + 143, + 255, + 191, + 159, + 155, + 255, + 204, + 183, + 156, + 255, + 217, + 195, + 163, + 255, + 213, + 197, + 153, + 255, + 213, + 202, + 149, + 255, + 219, + 203, + 154, + 255, + 221, + 205, + 156, + 255, + 222, + 205, + 159, + 255, + 223, + 206, + 160, + 255, + 225, + 206, + 163, + 255, + 226, + 207, + 164, + 255, + 227, + 208, + 165, + 255, + 229, + 210, + 167, + 255, + 229, + 212, + 167, + 255, + 230, + 213, + 170, + 255, + 227, + 212, + 172, + 255, + 227, + 213, + 175, + 255, + 228, + 212, + 178, + 255, + 232, + 216, + 181, + 255, + 230, + 214, + 178, + 255, + 231, + 216, + 177, + 255, + 231, + 215, + 179, + 255, + 231, + 215, + 179, + 255, + 232, + 216, + 180, + 255, + 232, + 216, + 180, + 255, + 232, + 217, + 185, + 255, + 232, + 217, + 186, + 255, + 232, + 217, + 187, + 255, + 232, + 217, + 188, + 255, + 231, + 216, + 187, + 255, + 231, + 216, + 187, + 255, + 231, + 216, + 187, + 255, + 231, + 216, + 187, + 255, + 231, + 215, + 191, + 255, + 231, + 215, + 191, + 255, + 230, + 214, + 190, + 255, + 230, + 214, + 190, + 255, + 230, + 214, + 188, + 255, + 230, + 214, + 188, + 255, + 229, + 213, + 187, + 255, + 229, + 213, + 187, + 255, + 228, + 211, + 191, + 255, + 228, + 212, + 188, + 255, + 227, + 211, + 186, + 255, + 226, + 210, + 186, + 255, + 225, + 207, + 186, + 255, + 224, + 209, + 189, + 255, + 220, + 206, + 194, + 255, + 213, + 201, + 195, + 255, + 192, + 175, + 173, + 255, + 218, + 202, + 196, + 255, + 207, + 187, + 190, + 255, + 199, + 177, + 189, + 255, + 202, + 179, + 198, + 255, + 175, + 154, + 180, + 255, + 202, + 179, + 205, + 255, + 193, + 168, + 188, + 255, + 194, + 170, + 178, + 255, + 203, + 184, + 176, + 255, + 208, + 195, + 177, + 255, + 205, + 195, + 177, + 255, + 189, + 180, + 185, + 255, + 162, + 152, + 160, + 255, + 148, + 138, + 150, + 255, + 152, + 141, + 156, + 255, + 168, + 154, + 156, + 255, + 196, + 183, + 173, + 255, + 191, + 177, + 166, + 255, + 178, + 165, + 158, + 255, + 119, + 114, + 151, + 255, + 110, + 105, + 163, + 255, + 104, + 107, + 152, + 255, + 98, + 104, + 144, + 255, + 99, + 101, + 149, + 255, + 104, + 106, + 147, + 255, + 129, + 129, + 164, + 255, + 129, + 128, + 159, + 255, + 125, + 125, + 159, + 255, + 112, + 113, + 158, + 255, + 102, + 105, + 156, + 255, + 96, + 102, + 154, + 255, + 95, + 100, + 155, + 255, + 93, + 98, + 154, + 255, + 90, + 95, + 153, + 255, + 90, + 95, + 153, + 255, + 87, + 93, + 151, + 255, + 87, + 93, + 151, + 255, + 87, + 93, + 153, + 255, + 88, + 94, + 156, + 255, + 88, + 94, + 156, + 255, + 86, + 91, + 155, + 255, + 85, + 90, + 156, + 255, + 84, + 89, + 155, + 255, + 81, + 86, + 154, + 255, + 80, + 84, + 156, + 255, + 71, + 74, + 150, + 255, + 66, + 69, + 147, + 255, + 67, + 68, + 147, + 255, + 67, + 67, + 147, + 255, + 67, + 65, + 141, + 255, + 65, + 64, + 133, + 255, + 64, + 62, + 127, + 255, + 63, + 61, + 126, + 255, + 64, + 62, + 127, + 255, + 64, + 62, + 127, + 255, + 64, + 62, + 127, + 255, + 65, + 62, + 130, + 255, + 66, + 63, + 133, + 255, + 67, + 64, + 135, + 255, + 67, + 65, + 146, + 255, + 68, + 66, + 150, + 255, + 68, + 65, + 154, + 255, + 69, + 66, + 156, + 255, + 71, + 66, + 158, + 255, + 72, + 67, + 159, + 255, + 72, + 67, + 159, + 255, + 73, + 68, + 160, + 255, + 74, + 69, + 161, + 255, + 75, + 70, + 162, + 255, + 74, + 69, + 161, + 255, + 75, + 70, + 162, + 255, + 76, + 72, + 161, + 255, + 77, + 73, + 161, + 255, + 79, + 75, + 162, + 255, + 78, + 74, + 160, + 255, + 80, + 76, + 162, + 255, + 82, + 78, + 164, + 255, + 83, + 79, + 165, + 255, + 82, + 78, + 164, + 255, + 82, + 79, + 167, + 255, + 82, + 80, + 165, + 255, + 79, + 77, + 158, + 255, + 77, + 76, + 154, + 255, + 78, + 75, + 152, + 255, + 78, + 75, + 152, + 255, + 78, + 75, + 152, + 255, + 78, + 75, + 152, + 255, + 78, + 76, + 151, + 255, + 79, + 77, + 152, + 255, + 80, + 78, + 153, + 255, + 82, + 80, + 155, + 255, + 87, + 86, + 163, + 255, + 93, + 92, + 169, + 255, + 104, + 103, + 180, + 255, + 107, + 106, + 183, + 255, + 107, + 106, + 184, + 255, + 109, + 108, + 186, + 255, + 109, + 108, + 186, + 255, + 109, + 108, + 186, + 255, + 109, + 108, + 185, + 255, + 109, + 108, + 185, + 255, + 109, + 108, + 185, + 255, + 109, + 108, + 185, + 255, + 109, + 107, + 180, + 255, + 107, + 105, + 178, + 255, + 105, + 103, + 176, + 255, + 105, + 103, + 176, + 255, + 100, + 98, + 171, + 255, + 106, + 104, + 177, + 255, + 107, + 105, + 178, + 255, + 108, + 106, + 179, + 255, + 108, + 106, + 179, + 255, + 107, + 105, + 177, + 255, + 107, + 106, + 175, + 255, + 106, + 105, + 174, + 255, + 106, + 103, + 174, + 255, + 106, + 103, + 173, + 255, + 105, + 102, + 170, + 255, + 104, + 102, + 168, + 255, + 103, + 101, + 166, + 255, + 101, + 99, + 164, + 255, + 95, + 93, + 158, + 255, + 43, + 49, + 101, + 255, + 48, + 53, + 112, + 255, + 2, + 4, + 25, + 255, + 5, + 1, + 7, + 255, + 6, + 8, + 20, + 255, + 9, + 8, + 30, + 255, + 5, + 4, + 25, + 255, + 0, + 3, + 5, + 255, + 3, + 0, + 10, + 255, + 6, + 2, + 16, + 255, + 3, + 4, + 5, + 255, + 0, + 1, + 7, + 255, + 2, + 0, + 8, + 255, + 0, + 1, + 5, + 255, + 2, + 2, + 2, + 255, + 6, + 0, + 13, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 17, + 255, + 4, + 7, + 1, + 255, + 4, + 4, + 24, + 255, + 0, + 0, + 10, + 255, + 0, + 2, + 6, + 255, + 0, + 0, + 21, + 255, + 5, + 12, + 58, + 255, + 3, + 2, + 17, + 255, + 5, + 0, + 0, + 255, + 5, + 3, + 17, + 255, + 38, + 43, + 115, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 1, + 255, + 4, + 4, + 12, + 255, + 9, + 4, + 42, + 255, + 2, + 4, + 27, + 255, + 0, + 3, + 6, + 255, + 0, + 0, + 0, + 255, + 3, + 2, + 10, + 255, + 2, + 0, + 12, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 6, + 255, + 1, + 1, + 0, + 255, + 2, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 2, + 2, + 0, + 255, + 1, + 0, + 8, + 255, + 2, + 0, + 0, + 255, + 1, + 4, + 11, + 255, + 0, + 3, + 13, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 2, + 255, + 6, + 6, + 51, + 255, + 2, + 3, + 40, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 20, + 255, + 14, + 10, + 43, + 255, + 1, + 2, + 5, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 3, + 255, + 2, + 0, + 7, + 255, + 2, + 0, + 9, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 7, + 255, + 1, + 0, + 8, + 255, + 2, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 3, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 14, + 255, + 0, + 0, + 21, + 255, + 1, + 1, + 24, + 255, + 0, + 1, + 22, + 255, + 2, + 3, + 24, + 255, + 0, + 0, + 36, + 255, + 0, + 2, + 25, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 25, + 255, + 34, + 33, + 76, + 255, + 3, + 3, + 37, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 22, + 255, + 0, + 3, + 22, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 2, + 26, + 255, + 0, + 3, + 29, + 255, + 0, + 2, + 25, + 255, + 3, + 4, + 32, + 255, + 1, + 2, + 29, + 255, + 1, + 3, + 25, + 255, + 1, + 3, + 24, + 255, + 1, + 2, + 29, + 255, + 2, + 3, + 31, + 255, + 3, + 5, + 29, + 255, + 1, + 3, + 28, + 255, + 1, + 2, + 29, + 255, + 5, + 6, + 35, + 255, + 4, + 5, + 35, + 255, + 2, + 4, + 29, + 255, + 6, + 7, + 36, + 255, + 7, + 7, + 42, + 255, + 16, + 16, + 54, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 16, + 17, + 45, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 41, + 255, + 12, + 13, + 43, + 255, + 15, + 19, + 46, + 255, + 19, + 25, + 50, + 255, + 69, + 77, + 100, + 255, + 70, + 81, + 99, + 255, + 70, + 81, + 99, + 255, + 71, + 82, + 100, + 255, + 71, + 82, + 100, + 255, + 73, + 81, + 104, + 255, + 73, + 81, + 104, + 255, + 72, + 80, + 103, + 255, + 73, + 81, + 104, + 255, + 71, + 79, + 100, + 255, + 72, + 80, + 101, + 255, + 74, + 82, + 103, + 255, + 76, + 84, + 105, + 255, + 76, + 82, + 106, + 255, + 71, + 77, + 101, + 255, + 49, + 55, + 79, + 255, + 26, + 32, + 56, + 255, + 26, + 26, + 53, + 255, + 19, + 19, + 47, + 255, + 15, + 14, + 45, + 255, + 12, + 11, + 43, + 255, + 12, + 13, + 43, + 255, + 10, + 11, + 42, + 255, + 11, + 11, + 45, + 255, + 13, + 13, + 47, + 255, + 19, + 23, + 60, + 255, + 41, + 47, + 83, + 255, + 57, + 64, + 100, + 255, + 56, + 64, + 100, + 255, + 54, + 64, + 100, + 255, + 55, + 65, + 101, + 255, + 57, + 67, + 103, + 255, + 61, + 71, + 107, + 255, + 73, + 82, + 114, + 255, + 83, + 92, + 116, + 255, + 84, + 90, + 114, + 255, + 86, + 92, + 118, + 255, + 85, + 93, + 116, + 255, + 82, + 90, + 114, + 255, + 83, + 90, + 117, + 255, + 80, + 87, + 115, + 255, + 85, + 92, + 118, + 255, + 87, + 94, + 121, + 255, + 74, + 80, + 116, + 255, + 39, + 43, + 89, + 255, + 29, + 35, + 83, + 255, + 28, + 34, + 84, + 255, + 26, + 32, + 83, + 255, + 28, + 34, + 86, + 255, + 30, + 37, + 90, + 255, + 33, + 38, + 94, + 255, + 41, + 45, + 98, + 255, + 58, + 62, + 109, + 255, + 96, + 100, + 127, + 255, + 99, + 103, + 131, + 255, + 100, + 103, + 134, + 255, + 99, + 102, + 133, + 255, + 84, + 90, + 124, + 255, + 87, + 93, + 127, + 255, + 94, + 100, + 134, + 255, + 87, + 93, + 127, + 255, + 85, + 94, + 125, + 255, + 90, + 96, + 131, + 255, + 97, + 102, + 135, + 255, + 102, + 106, + 135, + 255, + 119, + 120, + 142, + 255, + 118, + 121, + 138, + 255, + 113, + 117, + 144, + 255, + 72, + 75, + 118, + 255, + 69, + 73, + 117, + 255, + 75, + 78, + 121, + 255, + 125, + 122, + 157, + 255, + 131, + 127, + 152, + 255, + 118, + 122, + 143, + 255, + 189, + 192, + 210, + 255, + 131, + 130, + 153, + 255, + 133, + 129, + 160, + 255, + 136, + 131, + 159, + 255, + 137, + 124, + 142, + 255, + 190, + 171, + 155, + 255, + 208, + 192, + 149, + 255, + 210, + 195, + 149, + 255, + 212, + 199, + 153, + 255, + 212, + 200, + 153, + 255, + 214, + 202, + 155, + 255, + 220, + 203, + 160, + 255, + 222, + 205, + 160, + 255, + 222, + 205, + 159, + 255, + 223, + 207, + 158, + 255, + 226, + 208, + 162, + 255, + 227, + 209, + 163, + 255, + 229, + 211, + 165, + 255, + 230, + 212, + 166, + 255, + 229, + 212, + 169, + 255, + 230, + 212, + 173, + 255, + 229, + 213, + 177, + 255, + 229, + 214, + 182, + 255, + 231, + 215, + 181, + 255, + 230, + 214, + 178, + 255, + 230, + 215, + 176, + 255, + 231, + 216, + 175, + 255, + 232, + 217, + 178, + 255, + 232, + 217, + 178, + 255, + 232, + 217, + 178, + 255, + 232, + 217, + 178, + 255, + 232, + 218, + 183, + 255, + 232, + 217, + 184, + 255, + 233, + 218, + 186, + 255, + 233, + 218, + 187, + 255, + 232, + 217, + 186, + 255, + 232, + 217, + 186, + 255, + 232, + 217, + 186, + 255, + 232, + 217, + 186, + 255, + 231, + 215, + 189, + 255, + 231, + 215, + 189, + 255, + 230, + 214, + 188, + 255, + 230, + 214, + 188, + 255, + 231, + 213, + 189, + 255, + 231, + 213, + 189, + 255, + 230, + 212, + 188, + 255, + 230, + 212, + 188, + 255, + 229, + 212, + 184, + 255, + 229, + 211, + 187, + 255, + 228, + 210, + 188, + 255, + 227, + 209, + 187, + 255, + 227, + 209, + 188, + 255, + 226, + 209, + 180, + 255, + 224, + 208, + 177, + 255, + 223, + 204, + 179, + 255, + 218, + 207, + 188, + 255, + 178, + 163, + 157, + 255, + 217, + 200, + 193, + 255, + 221, + 203, + 188, + 255, + 207, + 179, + 184, + 255, + 194, + 173, + 195, + 255, + 196, + 177, + 205, + 255, + 176, + 155, + 180, + 255, + 192, + 171, + 194, + 255, + 188, + 166, + 190, + 255, + 191, + 168, + 178, + 255, + 204, + 184, + 174, + 255, + 207, + 194, + 169, + 255, + 205, + 192, + 166, + 255, + 203, + 190, + 163, + 255, + 201, + 188, + 161, + 255, + 196, + 187, + 170, + 255, + 183, + 179, + 170, + 255, + 122, + 118, + 136, + 255, + 118, + 113, + 159, + 255, + 106, + 110, + 147, + 255, + 106, + 107, + 155, + 255, + 101, + 103, + 136, + 255, + 101, + 97, + 153, + 255, + 98, + 101, + 146, + 255, + 110, + 112, + 152, + 255, + 127, + 127, + 160, + 255, + 127, + 127, + 155, + 255, + 126, + 125, + 155, + 255, + 122, + 123, + 163, + 255, + 104, + 106, + 156, + 255, + 97, + 101, + 152, + 255, + 94, + 99, + 154, + 255, + 92, + 97, + 153, + 255, + 92, + 97, + 155, + 255, + 93, + 98, + 156, + 255, + 93, + 99, + 157, + 255, + 91, + 97, + 155, + 255, + 90, + 96, + 156, + 255, + 91, + 97, + 159, + 255, + 89, + 95, + 157, + 255, + 87, + 92, + 156, + 255, + 84, + 89, + 155, + 255, + 84, + 89, + 155, + 255, + 81, + 85, + 156, + 255, + 70, + 74, + 146, + 255, + 68, + 71, + 148, + 255, + 65, + 68, + 147, + 255, + 64, + 65, + 145, + 255, + 64, + 63, + 146, + 255, + 66, + 63, + 141, + 255, + 63, + 61, + 132, + 255, + 63, + 61, + 126, + 255, + 62, + 60, + 125, + 255, + 62, + 60, + 125, + 255, + 62, + 60, + 125, + 255, + 62, + 60, + 125, + 255, + 63, + 61, + 127, + 255, + 63, + 60, + 129, + 255, + 64, + 61, + 130, + 255, + 64, + 63, + 142, + 255, + 65, + 63, + 145, + 255, + 66, + 64, + 150, + 255, + 67, + 64, + 153, + 255, + 68, + 63, + 153, + 255, + 69, + 64, + 154, + 255, + 70, + 65, + 155, + 255, + 71, + 66, + 156, + 255, + 71, + 66, + 156, + 255, + 72, + 67, + 157, + 255, + 72, + 67, + 157, + 255, + 73, + 68, + 158, + 255, + 73, + 69, + 157, + 255, + 74, + 70, + 156, + 255, + 75, + 71, + 155, + 255, + 74, + 70, + 154, + 255, + 76, + 72, + 157, + 255, + 77, + 73, + 158, + 255, + 80, + 76, + 161, + 255, + 78, + 74, + 159, + 255, + 78, + 75, + 163, + 255, + 78, + 76, + 161, + 255, + 76, + 74, + 155, + 255, + 75, + 74, + 152, + 255, + 76, + 72, + 148, + 255, + 76, + 72, + 148, + 255, + 76, + 72, + 148, + 255, + 76, + 72, + 148, + 255, + 77, + 73, + 147, + 255, + 78, + 74, + 148, + 255, + 80, + 76, + 150, + 255, + 82, + 78, + 152, + 255, + 83, + 83, + 157, + 255, + 101, + 101, + 175, + 255, + 104, + 104, + 178, + 255, + 107, + 107, + 181, + 255, + 108, + 107, + 183, + 255, + 108, + 107, + 183, + 255, + 108, + 107, + 183, + 255, + 108, + 107, + 183, + 255, + 107, + 107, + 181, + 255, + 107, + 107, + 181, + 255, + 107, + 107, + 181, + 255, + 107, + 107, + 181, + 255, + 108, + 106, + 177, + 255, + 106, + 104, + 175, + 255, + 106, + 104, + 175, + 255, + 101, + 99, + 170, + 255, + 92, + 90, + 163, + 255, + 103, + 101, + 174, + 255, + 104, + 102, + 175, + 255, + 105, + 103, + 176, + 255, + 106, + 104, + 177, + 255, + 107, + 105, + 176, + 255, + 106, + 105, + 174, + 255, + 105, + 104, + 172, + 255, + 106, + 103, + 172, + 255, + 106, + 103, + 171, + 255, + 105, + 103, + 168, + 255, + 104, + 102, + 167, + 255, + 103, + 101, + 164, + 255, + 101, + 99, + 162, + 255, + 98, + 96, + 159, + 255, + 17, + 26, + 68, + 255, + 33, + 36, + 94, + 255, + 2, + 7, + 11, + 255, + 2, + 4, + 11, + 255, + 7, + 13, + 53, + 255, + 43, + 49, + 125, + 255, + 6, + 17, + 45, + 255, + 3, + 1, + 12, + 255, + 5, + 7, + 24, + 255, + 18, + 24, + 67, + 255, + 1, + 6, + 30, + 255, + 5, + 1, + 8, + 255, + 0, + 1, + 5, + 255, + 6, + 6, + 15, + 255, + 5, + 5, + 14, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 6, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 4, + 255, + 1, + 0, + 0, + 255, + 3, + 1, + 5, + 255, + 0, + 1, + 9, + 255, + 3, + 2, + 1, + 255, + 0, + 0, + 6, + 255, + 0, + 4, + 12, + 255, + 0, + 0, + 26, + 255, + 1, + 2, + 14, + 255, + 1, + 2, + 0, + 255, + 0, + 3, + 19, + 255, + 24, + 30, + 83, + 255, + 3, + 3, + 46, + 255, + 2, + 0, + 0, + 255, + 3, + 2, + 2, + 255, + 0, + 5, + 37, + 255, + 12, + 19, + 56, + 255, + 2, + 1, + 6, + 255, + 2, + 0, + 0, + 255, + 0, + 1, + 14, + 255, + 4, + 2, + 22, + 255, + 4, + 0, + 7, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 2, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 7, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 1, + 9, + 255, + 2, + 0, + 13, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 2, + 0, + 22, + 255, + 6, + 2, + 27, + 255, + 4, + 3, + 11, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 5, + 255, + 40, + 35, + 76, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 3, + 255, + 2, + 2, + 20, + 255, + 0, + 2, + 15, + 255, + 0, + 1, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 7, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 13, + 255, + 1, + 0, + 17, + 255, + 1, + 1, + 12, + 255, + 1, + 1, + 13, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 20, + 255, + 0, + 1, + 21, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 24, + 255, + 1, + 1, + 27, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 34, + 255, + 0, + 0, + 27, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 17, + 255, + 2, + 2, + 27, + 255, + 9, + 7, + 43, + 255, + 1, + 0, + 33, + 255, + 1, + 1, + 26, + 255, + 2, + 4, + 26, + 255, + 11, + 12, + 40, + 255, + 2, + 3, + 32, + 255, + 0, + 2, + 27, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 28, + 255, + 1, + 3, + 28, + 255, + 2, + 4, + 29, + 255, + 2, + 4, + 29, + 255, + 4, + 5, + 33, + 255, + 8, + 9, + 37, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 11, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 7, + 11, + 38, + 255, + 15, + 21, + 47, + 255, + 13, + 13, + 47, + 255, + 16, + 20, + 49, + 255, + 29, + 35, + 60, + 255, + 72, + 80, + 101, + 255, + 72, + 80, + 99, + 255, + 73, + 81, + 100, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 72, + 80, + 99, + 255, + 71, + 79, + 98, + 255, + 72, + 80, + 99, + 255, + 72, + 80, + 99, + 255, + 71, + 79, + 98, + 255, + 75, + 83, + 102, + 255, + 74, + 82, + 101, + 255, + 73, + 81, + 100, + 255, + 75, + 82, + 101, + 255, + 61, + 68, + 87, + 255, + 41, + 46, + 68, + 255, + 32, + 34, + 59, + 255, + 24, + 26, + 49, + 255, + 22, + 24, + 49, + 255, + 13, + 14, + 42, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 41, + 255, + 9, + 10, + 40, + 255, + 8, + 9, + 39, + 255, + 10, + 11, + 41, + 255, + 15, + 15, + 49, + 255, + 25, + 29, + 64, + 255, + 59, + 66, + 102, + 255, + 56, + 66, + 102, + 255, + 52, + 65, + 100, + 255, + 57, + 68, + 104, + 255, + 58, + 67, + 102, + 255, + 63, + 71, + 107, + 255, + 83, + 90, + 118, + 255, + 84, + 92, + 114, + 255, + 84, + 92, + 113, + 255, + 84, + 92, + 116, + 255, + 85, + 92, + 111, + 255, + 86, + 92, + 114, + 255, + 86, + 92, + 116, + 255, + 88, + 94, + 118, + 255, + 80, + 87, + 113, + 255, + 87, + 94, + 121, + 255, + 72, + 78, + 114, + 255, + 37, + 41, + 87, + 255, + 31, + 35, + 82, + 255, + 29, + 33, + 81, + 255, + 27, + 30, + 81, + 255, + 33, + 36, + 88, + 255, + 29, + 35, + 85, + 255, + 32, + 36, + 89, + 255, + 38, + 40, + 90, + 255, + 46, + 49, + 94, + 255, + 83, + 88, + 121, + 255, + 97, + 103, + 130, + 255, + 98, + 104, + 130, + 255, + 97, + 102, + 132, + 255, + 83, + 89, + 125, + 255, + 82, + 88, + 124, + 255, + 95, + 101, + 135, + 255, + 86, + 92, + 124, + 255, + 84, + 92, + 128, + 255, + 87, + 94, + 130, + 255, + 94, + 99, + 133, + 255, + 100, + 105, + 137, + 255, + 101, + 105, + 133, + 255, + 120, + 122, + 142, + 255, + 123, + 125, + 148, + 255, + 73, + 78, + 117, + 255, + 74, + 77, + 120, + 255, + 76, + 81, + 112, + 255, + 121, + 124, + 143, + 255, + 115, + 115, + 141, + 255, + 164, + 166, + 187, + 255, + 122, + 122, + 147, + 255, + 134, + 132, + 154, + 255, + 134, + 132, + 151, + 255, + 132, + 123, + 128, + 255, + 189, + 173, + 150, + 255, + 208, + 188, + 133, + 255, + 209, + 194, + 140, + 255, + 212, + 195, + 151, + 255, + 215, + 197, + 153, + 255, + 219, + 199, + 156, + 255, + 222, + 200, + 158, + 255, + 222, + 205, + 145, + 255, + 223, + 205, + 148, + 255, + 225, + 207, + 152, + 255, + 226, + 208, + 154, + 255, + 225, + 210, + 164, + 255, + 226, + 209, + 172, + 255, + 222, + 208, + 173, + 255, + 228, + 215, + 177, + 255, + 231, + 221, + 193, + 255, + 229, + 217, + 185, + 255, + 227, + 213, + 176, + 255, + 229, + 213, + 171, + 255, + 230, + 215, + 172, + 255, + 231, + 216, + 173, + 255, + 231, + 216, + 173, + 255, + 232, + 217, + 174, + 255, + 232, + 217, + 174, + 255, + 232, + 217, + 175, + 255, + 232, + 217, + 176, + 255, + 233, + 218, + 179, + 255, + 233, + 218, + 178, + 255, + 233, + 218, + 178, + 255, + 234, + 219, + 179, + 255, + 234, + 219, + 179, + 255, + 235, + 220, + 181, + 255, + 235, + 219, + 183, + 255, + 234, + 218, + 184, + 255, + 234, + 218, + 185, + 255, + 231, + 218, + 184, + 255, + 231, + 218, + 184, + 255, + 230, + 217, + 183, + 255, + 229, + 216, + 182, + 255, + 231, + 214, + 184, + 255, + 231, + 214, + 184, + 255, + 231, + 214, + 184, + 255, + 231, + 214, + 184, + 255, + 231, + 214, + 186, + 255, + 229, + 212, + 184, + 255, + 229, + 212, + 183, + 255, + 228, + 211, + 181, + 255, + 227, + 210, + 182, + 255, + 227, + 210, + 182, + 255, + 225, + 208, + 180, + 255, + 225, + 208, + 180, + 255, + 221, + 206, + 175, + 255, + 222, + 205, + 184, + 255, + 192, + 175, + 165, + 255, + 199, + 184, + 179, + 255, + 219, + 199, + 182, + 255, + 210, + 186, + 182, + 255, + 172, + 152, + 162, + 255, + 193, + 179, + 204, + 255, + 147, + 142, + 165, + 255, + 148, + 138, + 172, + 255, + 147, + 134, + 161, + 255, + 151, + 140, + 152, + 255, + 155, + 148, + 162, + 255, + 151, + 145, + 154, + 255, + 142, + 136, + 148, + 255, + 141, + 133, + 153, + 255, + 128, + 125, + 153, + 255, + 120, + 119, + 151, + 255, + 111, + 111, + 149, + 255, + 107, + 107, + 149, + 255, + 103, + 104, + 149, + 255, + 100, + 101, + 147, + 255, + 98, + 99, + 147, + 255, + 97, + 97, + 147, + 255, + 98, + 100, + 150, + 255, + 120, + 122, + 161, + 255, + 126, + 127, + 159, + 255, + 126, + 125, + 157, + 255, + 127, + 123, + 157, + 255, + 122, + 122, + 156, + 255, + 113, + 116, + 157, + 255, + 100, + 105, + 155, + 255, + 96, + 102, + 152, + 255, + 95, + 102, + 154, + 255, + 91, + 100, + 153, + 255, + 87, + 97, + 150, + 255, + 94, + 101, + 155, + 255, + 96, + 103, + 158, + 255, + 94, + 100, + 158, + 255, + 90, + 96, + 154, + 255, + 85, + 94, + 151, + 255, + 82, + 91, + 151, + 255, + 80, + 88, + 153, + 255, + 78, + 85, + 153, + 255, + 76, + 80, + 152, + 255, + 68, + 70, + 144, + 255, + 67, + 67, + 143, + 255, + 66, + 65, + 143, + 255, + 65, + 64, + 144, + 255, + 65, + 64, + 144, + 255, + 64, + 63, + 143, + 255, + 63, + 62, + 142, + 255, + 61, + 58, + 126, + 255, + 61, + 59, + 121, + 255, + 60, + 58, + 119, + 255, + 60, + 58, + 123, + 255, + 61, + 59, + 124, + 255, + 61, + 59, + 122, + 255, + 61, + 58, + 126, + 255, + 64, + 60, + 135, + 255, + 63, + 61, + 144, + 255, + 64, + 62, + 146, + 255, + 64, + 62, + 148, + 255, + 65, + 62, + 150, + 255, + 66, + 64, + 148, + 255, + 67, + 65, + 151, + 255, + 67, + 64, + 153, + 255, + 68, + 65, + 155, + 255, + 68, + 65, + 152, + 255, + 68, + 65, + 152, + 255, + 70, + 67, + 154, + 255, + 71, + 68, + 155, + 255, + 70, + 67, + 156, + 255, + 71, + 69, + 153, + 255, + 71, + 70, + 148, + 255, + 70, + 70, + 144, + 255, + 71, + 69, + 143, + 255, + 74, + 71, + 148, + 255, + 74, + 71, + 152, + 255, + 75, + 71, + 155, + 255, + 77, + 74, + 156, + 255, + 76, + 72, + 157, + 255, + 74, + 71, + 151, + 255, + 73, + 71, + 144, + 255, + 74, + 72, + 145, + 255, + 74, + 72, + 145, + 255, + 73, + 71, + 144, + 255, + 74, + 72, + 145, + 255, + 74, + 72, + 145, + 255, + 76, + 74, + 147, + 255, + 78, + 76, + 149, + 255, + 81, + 79, + 152, + 255, + 93, + 91, + 164, + 255, + 104, + 102, + 175, + 255, + 105, + 103, + 176, + 255, + 107, + 105, + 178, + 255, + 109, + 107, + 182, + 255, + 109, + 107, + 182, + 255, + 108, + 106, + 181, + 255, + 108, + 106, + 181, + 255, + 109, + 105, + 179, + 255, + 109, + 105, + 179, + 255, + 108, + 104, + 178, + 255, + 108, + 104, + 178, + 255, + 106, + 105, + 175, + 255, + 104, + 103, + 173, + 255, + 102, + 101, + 171, + 255, + 91, + 90, + 160, + 255, + 90, + 89, + 159, + 255, + 100, + 100, + 171, + 255, + 102, + 102, + 173, + 255, + 104, + 104, + 175, + 255, + 103, + 104, + 169, + 255, + 103, + 104, + 169, + 255, + 104, + 105, + 170, + 255, + 104, + 105, + 170, + 255, + 106, + 104, + 169, + 255, + 106, + 104, + 169, + 255, + 105, + 103, + 168, + 255, + 104, + 102, + 167, + 255, + 103, + 101, + 164, + 255, + 102, + 100, + 162, + 255, + 101, + 100, + 159, + 255, + 5, + 7, + 16, + 255, + 6, + 6, + 24, + 255, + 2, + 5, + 1, + 255, + 2, + 3, + 9, + 255, + 7, + 9, + 24, + 255, + 4, + 6, + 48, + 255, + 1, + 5, + 18, + 255, + 3, + 0, + 7, + 255, + 3, + 8, + 30, + 255, + 52, + 53, + 127, + 255, + 2, + 5, + 50, + 255, + 2, + 5, + 2, + 255, + 6, + 2, + 8, + 255, + 11, + 17, + 61, + 255, + 21, + 27, + 71, + 255, + 4, + 0, + 6, + 255, + 0, + 2, + 3, + 255, + 0, + 4, + 16, + 255, + 0, + 4, + 25, + 255, + 0, + 1, + 13, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 13, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 2, + 0, + 2, + 255, + 4, + 1, + 0, + 255, + 2, + 0, + 4, + 255, + 2, + 0, + 3, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 9, + 255, + 0, + 6, + 3, + 255, + 1, + 0, + 0, + 255, + 2, + 0, + 13, + 255, + 0, + 0, + 26, + 255, + 2, + 4, + 42, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 0, + 255, + 3, + 5, + 11, + 255, + 52, + 53, + 115, + 255, + 0, + 0, + 18, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 5, + 255, + 4, + 10, + 31, + 255, + 0, + 1, + 17, + 255, + 0, + 2, + 0, + 255, + 2, + 0, + 7, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 7, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 1, + 0, + 17, + 255, + 2, + 2, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 8, + 255, + 10, + 9, + 36, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 13, + 255, + 7, + 5, + 27, + 255, + 2, + 0, + 13, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 9, + 255, + 1, + 0, + 26, + 255, + 1, + 0, + 21, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 21, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 2, + 16, + 255, + 0, + 1, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 2, + 21, + 255, + 2, + 5, + 25, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 20, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 27, + 255, + 1, + 0, + 30, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 27, + 255, + 36, + 37, + 68, + 255, + 3, + 4, + 36, + 255, + 2, + 3, + 32, + 255, + 1, + 2, + 31, + 255, + 3, + 4, + 33, + 255, + 3, + 4, + 33, + 255, + 1, + 2, + 31, + 255, + 1, + 2, + 29, + 255, + 1, + 2, + 29, + 255, + 2, + 3, + 30, + 255, + 5, + 6, + 33, + 255, + 7, + 8, + 36, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 11, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 9, + 13, + 40, + 255, + 8, + 14, + 40, + 255, + 13, + 14, + 45, + 255, + 19, + 23, + 50, + 255, + 32, + 38, + 62, + 255, + 69, + 77, + 97, + 255, + 73, + 81, + 100, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 72, + 80, + 99, + 255, + 71, + 79, + 98, + 255, + 73, + 81, + 100, + 255, + 71, + 79, + 98, + 255, + 77, + 85, + 104, + 255, + 73, + 81, + 100, + 255, + 73, + 81, + 100, + 255, + 74, + 82, + 101, + 255, + 70, + 77, + 95, + 255, + 79, + 86, + 105, + 255, + 38, + 43, + 64, + 255, + 30, + 32, + 55, + 255, + 24, + 26, + 48, + 255, + 25, + 27, + 51, + 255, + 17, + 19, + 44, + 255, + 12, + 13, + 41, + 255, + 10, + 11, + 41, + 255, + 9, + 10, + 40, + 255, + 7, + 8, + 38, + 255, + 9, + 10, + 40, + 255, + 13, + 13, + 47, + 255, + 20, + 24, + 59, + 255, + 53, + 60, + 96, + 255, + 54, + 64, + 100, + 255, + 53, + 64, + 101, + 255, + 59, + 68, + 103, + 255, + 61, + 70, + 102, + 255, + 70, + 77, + 110, + 255, + 87, + 93, + 120, + 255, + 85, + 92, + 113, + 255, + 85, + 92, + 112, + 255, + 85, + 91, + 115, + 255, + 85, + 92, + 111, + 255, + 86, + 92, + 114, + 255, + 87, + 93, + 117, + 255, + 87, + 93, + 117, + 255, + 85, + 92, + 118, + 255, + 88, + 95, + 122, + 255, + 71, + 77, + 113, + 255, + 35, + 39, + 85, + 255, + 30, + 34, + 81, + 255, + 28, + 32, + 80, + 255, + 27, + 30, + 81, + 255, + 30, + 33, + 85, + 255, + 25, + 31, + 81, + 255, + 31, + 35, + 88, + 255, + 37, + 39, + 89, + 255, + 40, + 43, + 88, + 255, + 74, + 78, + 113, + 255, + 96, + 101, + 130, + 255, + 97, + 102, + 130, + 255, + 96, + 101, + 132, + 255, + 82, + 88, + 124, + 255, + 81, + 87, + 123, + 255, + 93, + 99, + 133, + 255, + 86, + 92, + 124, + 255, + 83, + 91, + 127, + 255, + 85, + 92, + 128, + 255, + 91, + 96, + 130, + 255, + 97, + 102, + 134, + 255, + 97, + 102, + 133, + 255, + 106, + 108, + 131, + 255, + 117, + 118, + 141, + 255, + 79, + 82, + 115, + 255, + 80, + 81, + 117, + 255, + 122, + 124, + 153, + 255, + 127, + 129, + 150, + 255, + 147, + 147, + 172, + 255, + 127, + 126, + 147, + 255, + 127, + 127, + 152, + 255, + 131, + 132, + 154, + 255, + 138, + 136, + 151, + 255, + 192, + 184, + 171, + 255, + 200, + 186, + 157, + 255, + 206, + 191, + 149, + 255, + 206, + 194, + 156, + 255, + 209, + 199, + 147, + 255, + 212, + 201, + 149, + 255, + 215, + 202, + 151, + 255, + 218, + 203, + 153, + 255, + 215, + 203, + 171, + 255, + 218, + 206, + 175, + 255, + 220, + 208, + 178, + 255, + 226, + 214, + 184, + 255, + 227, + 222, + 193, + 255, + 230, + 224, + 193, + 255, + 220, + 211, + 177, + 255, + 223, + 212, + 172, + 255, + 232, + 213, + 166, + 255, + 228, + 210, + 162, + 255, + 231, + 214, + 166, + 255, + 232, + 215, + 171, + 255, + 232, + 215, + 169, + 255, + 233, + 216, + 170, + 255, + 233, + 216, + 170, + 255, + 234, + 217, + 171, + 255, + 232, + 218, + 171, + 255, + 232, + 218, + 173, + 255, + 232, + 218, + 174, + 255, + 233, + 218, + 176, + 255, + 236, + 217, + 177, + 255, + 236, + 217, + 177, + 255, + 237, + 218, + 178, + 255, + 237, + 218, + 178, + 255, + 237, + 219, + 180, + 255, + 237, + 219, + 180, + 255, + 236, + 218, + 180, + 255, + 236, + 218, + 182, + 255, + 232, + 218, + 181, + 255, + 232, + 218, + 181, + 255, + 231, + 217, + 180, + 255, + 230, + 216, + 179, + 255, + 231, + 215, + 181, + 255, + 231, + 215, + 181, + 255, + 231, + 215, + 181, + 255, + 231, + 215, + 181, + 255, + 231, + 215, + 183, + 255, + 229, + 212, + 182, + 255, + 229, + 212, + 182, + 255, + 228, + 211, + 182, + 255, + 227, + 211, + 179, + 255, + 227, + 211, + 179, + 255, + 227, + 211, + 179, + 255, + 226, + 210, + 178, + 255, + 224, + 208, + 172, + 255, + 221, + 206, + 175, + 255, + 219, + 203, + 180, + 255, + 217, + 202, + 181, + 255, + 204, + 192, + 170, + 255, + 216, + 202, + 166, + 255, + 217, + 195, + 198, + 255, + 183, + 162, + 169, + 255, + 185, + 171, + 189, + 255, + 166, + 156, + 175, + 255, + 154, + 148, + 177, + 255, + 145, + 139, + 183, + 255, + 147, + 144, + 181, + 255, + 143, + 140, + 177, + 255, + 144, + 141, + 179, + 255, + 138, + 134, + 176, + 255, + 126, + 124, + 161, + 255, + 109, + 108, + 149, + 255, + 105, + 105, + 149, + 255, + 101, + 102, + 149, + 255, + 98, + 101, + 145, + 255, + 95, + 98, + 143, + 255, + 94, + 96, + 144, + 255, + 95, + 97, + 146, + 255, + 98, + 100, + 147, + 255, + 126, + 128, + 165, + 255, + 124, + 125, + 156, + 255, + 124, + 123, + 155, + 255, + 124, + 122, + 157, + 255, + 125, + 126, + 158, + 255, + 123, + 126, + 161, + 255, + 105, + 108, + 151, + 255, + 99, + 104, + 153, + 255, + 96, + 102, + 152, + 255, + 97, + 104, + 156, + 255, + 91, + 99, + 153, + 255, + 93, + 100, + 154, + 255, + 89, + 96, + 151, + 255, + 89, + 95, + 153, + 255, + 89, + 95, + 153, + 255, + 84, + 93, + 150, + 255, + 81, + 90, + 150, + 255, + 78, + 86, + 151, + 255, + 76, + 83, + 151, + 255, + 67, + 71, + 143, + 255, + 66, + 68, + 142, + 255, + 64, + 64, + 140, + 255, + 63, + 62, + 140, + 255, + 62, + 61, + 139, + 255, + 62, + 61, + 139, + 255, + 61, + 60, + 138, + 255, + 60, + 59, + 137, + 255, + 60, + 57, + 126, + 255, + 60, + 58, + 120, + 255, + 59, + 58, + 118, + 255, + 59, + 57, + 120, + 255, + 58, + 56, + 120, + 255, + 58, + 56, + 119, + 255, + 59, + 57, + 123, + 255, + 61, + 57, + 132, + 255, + 60, + 58, + 139, + 255, + 61, + 59, + 142, + 255, + 62, + 60, + 145, + 255, + 63, + 61, + 147, + 255, + 63, + 61, + 145, + 255, + 64, + 62, + 146, + 255, + 65, + 63, + 148, + 255, + 66, + 63, + 151, + 255, + 66, + 64, + 149, + 255, + 66, + 64, + 149, + 255, + 67, + 65, + 150, + 255, + 68, + 66, + 151, + 255, + 69, + 67, + 152, + 255, + 68, + 66, + 148, + 255, + 67, + 66, + 141, + 255, + 66, + 66, + 137, + 255, + 68, + 66, + 137, + 255, + 69, + 67, + 142, + 255, + 73, + 70, + 149, + 255, + 74, + 71, + 152, + 255, + 73, + 70, + 150, + 255, + 72, + 69, + 150, + 255, + 72, + 70, + 146, + 255, + 71, + 70, + 139, + 255, + 70, + 68, + 139, + 255, + 70, + 68, + 139, + 255, + 70, + 68, + 139, + 255, + 71, + 69, + 140, + 255, + 71, + 69, + 140, + 255, + 73, + 71, + 142, + 255, + 77, + 75, + 146, + 255, + 83, + 81, + 152, + 255, + 103, + 101, + 172, + 255, + 102, + 100, + 171, + 255, + 105, + 103, + 174, + 255, + 107, + 105, + 176, + 255, + 108, + 106, + 177, + 255, + 108, + 106, + 177, + 255, + 107, + 105, + 176, + 255, + 107, + 105, + 176, + 255, + 108, + 105, + 176, + 255, + 108, + 105, + 176, + 255, + 108, + 105, + 176, + 255, + 106, + 103, + 174, + 255, + 103, + 102, + 171, + 255, + 101, + 100, + 169, + 255, + 98, + 97, + 167, + 255, + 82, + 81, + 151, + 255, + 85, + 84, + 154, + 255, + 98, + 97, + 167, + 255, + 100, + 99, + 169, + 255, + 102, + 101, + 171, + 255, + 104, + 104, + 168, + 255, + 104, + 104, + 168, + 255, + 104, + 104, + 168, + 255, + 104, + 104, + 168, + 255, + 104, + 102, + 165, + 255, + 104, + 102, + 165, + 255, + 104, + 102, + 165, + 255, + 103, + 101, + 164, + 255, + 103, + 101, + 163, + 255, + 102, + 101, + 161, + 255, + 101, + 100, + 158, + 255, + 6, + 7, + 25, + 255, + 1, + 3, + 9, + 255, + 1, + 2, + 2, + 255, + 2, + 1, + 8, + 255, + 2, + 3, + 7, + 255, + 1, + 1, + 16, + 255, + 1, + 3, + 6, + 255, + 3, + 1, + 6, + 255, + 0, + 5, + 14, + 255, + 2, + 8, + 13, + 255, + 0, + 7, + 0, + 255, + 0, + 1, + 6, + 255, + 4, + 2, + 7, + 255, + 3, + 7, + 44, + 255, + 5, + 9, + 46, + 255, + 5, + 3, + 8, + 255, + 0, + 1, + 9, + 255, + 7, + 9, + 68, + 255, + 40, + 36, + 112, + 255, + 2, + 3, + 8, + 255, + 1, + 1, + 0, + 255, + 0, + 4, + 13, + 255, + 8, + 8, + 53, + 255, + 1, + 6, + 9, + 255, + 1, + 0, + 9, + 255, + 0, + 1, + 0, + 255, + 3, + 0, + 20, + 255, + 4, + 1, + 11, + 255, + 2, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 0, + 255, + 0, + 1, + 5, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 3, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 0, + 13, + 255, + 0, + 7, + 20, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 11, + 255, + 29, + 28, + 79, + 255, + 0, + 0, + 29, + 255, + 0, + 0, + 1, + 255, + 2, + 1, + 0, + 255, + 2, + 6, + 27, + 255, + 5, + 4, + 36, + 255, + 1, + 1, + 2, + 255, + 1, + 0, + 9, + 255, + 1, + 3, + 12, + 255, + 0, + 0, + 19, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 5, + 255, + 1, + 1, + 2, + 255, + 0, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 4, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 1, + 255, + 2, + 0, + 1, + 255, + 2, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 10, + 255, + 0, + 2, + 5, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 14, + 255, + 1, + 0, + 22, + 255, + 0, + 1, + 2, + 255, + 0, + 2, + 2, + 255, + 2, + 3, + 24, + 255, + 42, + 40, + 88, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 28, + 255, + 2, + 2, + 26, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 19, + 255, + 0, + 2, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 4, + 26, + 255, + 3, + 4, + 33, + 255, + 3, + 4, + 33, + 255, + 0, + 2, + 28, + 255, + 0, + 1, + 31, + 255, + 4, + 5, + 35, + 255, + 2, + 3, + 33, + 255, + 2, + 3, + 33, + 255, + 2, + 3, + 32, + 255, + 3, + 4, + 33, + 255, + 9, + 10, + 39, + 255, + 3, + 4, + 33, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 10, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 11, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 9, + 13, + 40, + 255, + 9, + 15, + 41, + 255, + 13, + 14, + 43, + 255, + 23, + 27, + 52, + 255, + 38, + 45, + 66, + 255, + 76, + 85, + 102, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 72, + 80, + 99, + 255, + 74, + 82, + 101, + 255, + 72, + 80, + 99, + 255, + 76, + 84, + 103, + 255, + 79, + 87, + 106, + 255, + 71, + 79, + 98, + 255, + 73, + 81, + 100, + 255, + 74, + 82, + 101, + 255, + 80, + 88, + 103, + 255, + 83, + 90, + 107, + 255, + 39, + 44, + 64, + 255, + 28, + 30, + 51, + 255, + 24, + 26, + 47, + 255, + 24, + 26, + 48, + 255, + 24, + 26, + 50, + 255, + 13, + 15, + 40, + 255, + 11, + 12, + 42, + 255, + 9, + 10, + 40, + 255, + 8, + 9, + 39, + 255, + 7, + 8, + 38, + 255, + 11, + 11, + 45, + 255, + 19, + 23, + 58, + 255, + 58, + 65, + 101, + 255, + 57, + 67, + 103, + 255, + 57, + 65, + 104, + 255, + 59, + 68, + 102, + 255, + 65, + 73, + 103, + 255, + 73, + 79, + 106, + 255, + 84, + 90, + 115, + 255, + 85, + 92, + 111, + 255, + 85, + 92, + 110, + 255, + 86, + 93, + 114, + 255, + 86, + 93, + 112, + 255, + 86, + 92, + 114, + 255, + 87, + 93, + 117, + 255, + 87, + 93, + 117, + 255, + 90, + 97, + 123, + 255, + 81, + 88, + 115, + 255, + 55, + 61, + 97, + 255, + 37, + 41, + 87, + 255, + 28, + 32, + 79, + 255, + 28, + 32, + 80, + 255, + 28, + 31, + 82, + 255, + 27, + 30, + 82, + 255, + 26, + 32, + 82, + 255, + 29, + 33, + 86, + 255, + 35, + 37, + 87, + 255, + 35, + 38, + 83, + 255, + 49, + 53, + 90, + 255, + 96, + 101, + 131, + 255, + 96, + 101, + 131, + 255, + 93, + 98, + 131, + 255, + 81, + 87, + 123, + 255, + 79, + 85, + 121, + 255, + 89, + 95, + 129, + 255, + 86, + 92, + 124, + 255, + 82, + 90, + 126, + 255, + 84, + 91, + 127, + 255, + 91, + 96, + 130, + 255, + 94, + 99, + 131, + 255, + 92, + 99, + 133, + 255, + 96, + 99, + 126, + 255, + 120, + 120, + 143, + 255, + 110, + 112, + 137, + 255, + 121, + 120, + 146, + 255, + 121, + 120, + 144, + 255, + 98, + 100, + 121, + 255, + 121, + 123, + 146, + 255, + 126, + 124, + 146, + 255, + 123, + 124, + 145, + 255, + 132, + 127, + 129, + 255, + 193, + 180, + 161, + 255, + 196, + 190, + 156, + 255, + 202, + 196, + 161, + 255, + 209, + 204, + 170, + 255, + 212, + 209, + 177, + 255, + 215, + 210, + 190, + 255, + 216, + 211, + 191, + 255, + 219, + 211, + 192, + 255, + 220, + 211, + 193, + 255, + 224, + 211, + 178, + 255, + 219, + 206, + 172, + 255, + 219, + 206, + 171, + 255, + 221, + 208, + 172, + 255, + 226, + 209, + 165, + 255, + 228, + 210, + 160, + 255, + 229, + 211, + 157, + 255, + 232, + 212, + 160, + 255, + 231, + 212, + 169, + 255, + 233, + 216, + 163, + 255, + 232, + 215, + 160, + 255, + 232, + 214, + 165, + 255, + 233, + 215, + 166, + 255, + 234, + 216, + 167, + 255, + 235, + 217, + 168, + 255, + 235, + 217, + 168, + 255, + 232, + 219, + 168, + 255, + 232, + 218, + 169, + 255, + 232, + 218, + 170, + 255, + 233, + 219, + 172, + 255, + 235, + 218, + 175, + 255, + 235, + 218, + 175, + 255, + 236, + 219, + 176, + 255, + 236, + 219, + 176, + 255, + 237, + 218, + 175, + 255, + 237, + 218, + 176, + 255, + 236, + 217, + 176, + 255, + 236, + 217, + 178, + 255, + 232, + 217, + 178, + 255, + 233, + 218, + 179, + 255, + 232, + 217, + 178, + 255, + 232, + 217, + 178, + 255, + 232, + 216, + 180, + 255, + 232, + 216, + 180, + 255, + 231, + 215, + 179, + 255, + 230, + 214, + 178, + 255, + 230, + 214, + 178, + 255, + 230, + 214, + 180, + 255, + 223, + 206, + 176, + 255, + 231, + 214, + 186, + 255, + 227, + 211, + 175, + 255, + 227, + 211, + 175, + 255, + 226, + 210, + 174, + 255, + 225, + 209, + 173, + 255, + 226, + 208, + 171, + 255, + 223, + 206, + 171, + 255, + 221, + 206, + 173, + 255, + 220, + 205, + 173, + 255, + 208, + 194, + 183, + 255, + 208, + 193, + 185, + 255, + 218, + 205, + 160, + 255, + 222, + 200, + 177, + 255, + 178, + 164, + 164, + 255, + 195, + 185, + 193, + 255, + 196, + 193, + 214, + 255, + 148, + 148, + 181, + 255, + 139, + 140, + 170, + 255, + 138, + 138, + 172, + 255, + 137, + 137, + 172, + 255, + 135, + 135, + 169, + 255, + 126, + 125, + 167, + 255, + 107, + 107, + 151, + 255, + 101, + 102, + 147, + 255, + 96, + 98, + 145, + 255, + 94, + 98, + 142, + 255, + 92, + 96, + 141, + 255, + 91, + 95, + 142, + 255, + 91, + 95, + 143, + 255, + 95, + 98, + 140, + 255, + 125, + 128, + 162, + 255, + 124, + 125, + 156, + 255, + 124, + 123, + 157, + 255, + 121, + 121, + 157, + 255, + 126, + 127, + 157, + 255, + 123, + 127, + 156, + 255, + 120, + 123, + 157, + 255, + 103, + 105, + 154, + 255, + 96, + 101, + 150, + 255, + 91, + 97, + 147, + 255, + 95, + 102, + 154, + 255, + 91, + 98, + 152, + 255, + 90, + 97, + 152, + 255, + 87, + 93, + 151, + 255, + 85, + 91, + 149, + 255, + 83, + 92, + 149, + 255, + 80, + 89, + 149, + 255, + 75, + 83, + 148, + 255, + 67, + 74, + 142, + 255, + 64, + 68, + 140, + 255, + 61, + 63, + 137, + 255, + 62, + 62, + 138, + 255, + 62, + 61, + 139, + 255, + 60, + 59, + 135, + 255, + 60, + 59, + 135, + 255, + 60, + 59, + 135, + 255, + 60, + 59, + 135, + 255, + 60, + 57, + 129, + 255, + 58, + 56, + 119, + 255, + 57, + 56, + 114, + 255, + 56, + 55, + 115, + 255, + 57, + 55, + 117, + 255, + 57, + 56, + 116, + 255, + 58, + 56, + 121, + 255, + 60, + 57, + 129, + 255, + 59, + 58, + 137, + 255, + 60, + 58, + 139, + 255, + 61, + 59, + 142, + 255, + 62, + 60, + 144, + 255, + 62, + 60, + 144, + 255, + 63, + 61, + 145, + 255, + 63, + 61, + 144, + 255, + 63, + 61, + 142, + 255, + 64, + 62, + 145, + 255, + 65, + 63, + 146, + 255, + 65, + 63, + 146, + 255, + 65, + 63, + 146, + 255, + 66, + 64, + 146, + 255, + 66, + 65, + 142, + 255, + 64, + 64, + 135, + 255, + 64, + 65, + 131, + 255, + 65, + 64, + 131, + 255, + 66, + 65, + 135, + 255, + 69, + 67, + 142, + 255, + 72, + 69, + 146, + 255, + 71, + 68, + 145, + 255, + 71, + 68, + 146, + 255, + 70, + 68, + 141, + 255, + 68, + 67, + 133, + 255, + 69, + 66, + 134, + 255, + 69, + 66, + 134, + 255, + 69, + 66, + 134, + 255, + 70, + 67, + 135, + 255, + 70, + 69, + 138, + 255, + 73, + 72, + 141, + 255, + 76, + 75, + 144, + 255, + 92, + 91, + 160, + 255, + 101, + 100, + 169, + 255, + 104, + 103, + 172, + 255, + 105, + 104, + 173, + 255, + 106, + 105, + 174, + 255, + 107, + 106, + 175, + 255, + 107, + 106, + 175, + 255, + 106, + 105, + 174, + 255, + 106, + 105, + 174, + 255, + 107, + 104, + 174, + 255, + 107, + 104, + 174, + 255, + 105, + 102, + 172, + 255, + 104, + 101, + 172, + 255, + 104, + 101, + 170, + 255, + 99, + 96, + 165, + 255, + 87, + 84, + 153, + 255, + 80, + 77, + 146, + 255, + 81, + 79, + 145, + 255, + 94, + 92, + 158, + 255, + 100, + 98, + 164, + 255, + 102, + 100, + 166, + 255, + 104, + 102, + 165, + 255, + 105, + 103, + 166, + 255, + 104, + 102, + 165, + 255, + 103, + 101, + 164, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 162, + 255, + 104, + 103, + 163, + 255, + 103, + 102, + 162, + 255, + 102, + 101, + 161, + 255, + 101, + 100, + 158, + 255, + 101, + 100, + 156, + 255, + 28, + 32, + 86, + 255, + 1, + 7, + 30, + 255, + 3, + 3, + 12, + 255, + 6, + 2, + 10, + 255, + 5, + 6, + 17, + 255, + 4, + 5, + 10, + 255, + 1, + 3, + 5, + 255, + 0, + 2, + 8, + 255, + 1, + 3, + 6, + 255, + 2, + 0, + 14, + 255, + 1, + 0, + 4, + 255, + 2, + 0, + 12, + 255, + 0, + 2, + 5, + 255, + 5, + 3, + 5, + 255, + 3, + 1, + 3, + 255, + 0, + 2, + 5, + 255, + 1, + 0, + 4, + 255, + 0, + 6, + 0, + 255, + 0, + 0, + 27, + 255, + 5, + 1, + 2, + 255, + 1, + 0, + 0, + 255, + 0, + 3, + 26, + 255, + 34, + 33, + 110, + 255, + 0, + 4, + 27, + 255, + 3, + 0, + 8, + 255, + 1, + 3, + 0, + 255, + 10, + 8, + 56, + 255, + 14, + 17, + 58, + 255, + 0, + 1, + 5, + 255, + 0, + 3, + 1, + 255, + 0, + 3, + 10, + 255, + 5, + 0, + 20, + 255, + 2, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 3, + 0, + 11, + 255, + 3, + 0, + 9, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 3, + 0, + 5, + 255, + 2, + 0, + 2, + 255, + 0, + 2, + 0, + 255, + 6, + 3, + 2, + 255, + 1, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 13, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 28, + 255, + 1, + 3, + 0, + 255, + 1, + 0, + 3, + 255, + 0, + 0, + 21, + 255, + 27, + 22, + 77, + 255, + 0, + 1, + 6, + 255, + 0, + 2, + 0, + 255, + 1, + 0, + 4, + 255, + 4, + 2, + 16, + 255, + 1, + 0, + 9, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 1, + 255, + 1, + 0, + 4, + 255, + 2, + 1, + 0, + 255, + 2, + 0, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 13, + 255, + 1, + 2, + 8, + 255, + 2, + 2, + 12, + 255, + 2, + 1, + 16, + 255, + 1, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 2, + 19, + 255, + 4, + 7, + 23, + 255, + 0, + 2, + 20, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 28, + 255, + 8, + 7, + 51, + 255, + 0, + 0, + 27, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 22, + 255, + 3, + 2, + 35, + 255, + 3, + 1, + 37, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 2, + 26, + 255, + 0, + 1, + 24, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 21, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 1, + 4, + 21, + 255, + 1, + 3, + 26, + 255, + 2, + 4, + 28, + 255, + 1, + 4, + 24, + 255, + 2, + 3, + 31, + 255, + 3, + 4, + 32, + 255, + 4, + 5, + 33, + 255, + 3, + 4, + 32, + 255, + 3, + 4, + 34, + 255, + 4, + 5, + 35, + 255, + 3, + 4, + 34, + 255, + 6, + 7, + 37, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 22, + 23, + 51, + 255, + 12, + 13, + 41, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 11, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 9, + 13, + 40, + 255, + 9, + 15, + 41, + 255, + 14, + 15, + 43, + 255, + 26, + 31, + 54, + 255, + 40, + 47, + 67, + 255, + 74, + 83, + 99, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 74, + 82, + 101, + 255, + 71, + 79, + 98, + 255, + 74, + 82, + 101, + 255, + 71, + 79, + 98, + 255, + 76, + 84, + 103, + 255, + 71, + 79, + 98, + 255, + 76, + 84, + 103, + 255, + 74, + 82, + 101, + 255, + 73, + 81, + 100, + 255, + 74, + 82, + 101, + 255, + 81, + 89, + 102, + 255, + 71, + 78, + 94, + 255, + 34, + 39, + 58, + 255, + 26, + 29, + 48, + 255, + 24, + 27, + 46, + 255, + 24, + 26, + 47, + 255, + 24, + 26, + 49, + 255, + 20, + 22, + 45, + 255, + 13, + 14, + 44, + 255, + 9, + 10, + 40, + 255, + 8, + 9, + 39, + 255, + 7, + 8, + 38, + 255, + 11, + 11, + 45, + 255, + 19, + 23, + 58, + 255, + 61, + 68, + 104, + 255, + 56, + 66, + 102, + 255, + 56, + 64, + 103, + 255, + 62, + 69, + 104, + 255, + 78, + 83, + 112, + 255, + 76, + 82, + 106, + 255, + 84, + 88, + 113, + 255, + 88, + 93, + 112, + 255, + 88, + 94, + 111, + 255, + 86, + 91, + 112, + 255, + 86, + 93, + 112, + 255, + 86, + 92, + 114, + 255, + 86, + 92, + 116, + 255, + 86, + 92, + 116, + 255, + 84, + 91, + 117, + 255, + 69, + 76, + 103, + 255, + 45, + 51, + 87, + 255, + 33, + 37, + 83, + 255, + 28, + 32, + 79, + 255, + 28, + 32, + 80, + 255, + 26, + 29, + 80, + 255, + 26, + 29, + 81, + 255, + 24, + 30, + 80, + 255, + 28, + 32, + 85, + 255, + 34, + 36, + 86, + 255, + 31, + 34, + 79, + 255, + 40, + 44, + 83, + 255, + 92, + 97, + 128, + 255, + 96, + 101, + 131, + 255, + 85, + 89, + 123, + 255, + 78, + 84, + 120, + 255, + 78, + 84, + 120, + 255, + 84, + 90, + 124, + 255, + 84, + 90, + 122, + 255, + 81, + 89, + 125, + 255, + 83, + 90, + 126, + 255, + 92, + 97, + 131, + 255, + 91, + 96, + 128, + 255, + 87, + 96, + 131, + 255, + 93, + 97, + 126, + 255, + 114, + 112, + 135, + 255, + 121, + 122, + 142, + 255, + 122, + 119, + 138, + 255, + 123, + 121, + 142, + 255, + 99, + 99, + 123, + 255, + 119, + 121, + 144, + 255, + 129, + 126, + 152, + 255, + 122, + 121, + 138, + 255, + 201, + 189, + 166, + 255, + 217, + 191, + 133, + 255, + 213, + 187, + 129, + 255, + 215, + 191, + 138, + 255, + 213, + 193, + 143, + 255, + 214, + 195, + 145, + 255, + 215, + 198, + 145, + 255, + 218, + 199, + 147, + 255, + 222, + 201, + 149, + 255, + 225, + 203, + 152, + 255, + 224, + 204, + 152, + 255, + 224, + 204, + 150, + 255, + 228, + 209, + 152, + 255, + 229, + 210, + 151, + 255, + 227, + 211, + 152, + 255, + 226, + 213, + 152, + 255, + 227, + 215, + 158, + 255, + 216, + 205, + 160, + 255, + 183, + 170, + 144, + 255, + 230, + 218, + 170, + 255, + 231, + 216, + 159, + 255, + 234, + 215, + 159, + 255, + 233, + 216, + 164, + 255, + 234, + 217, + 165, + 255, + 235, + 218, + 166, + 255, + 235, + 218, + 166, + 255, + 232, + 219, + 166, + 255, + 232, + 219, + 167, + 255, + 233, + 220, + 169, + 255, + 231, + 217, + 169, + 255, + 232, + 219, + 174, + 255, + 232, + 219, + 174, + 255, + 232, + 219, + 174, + 255, + 232, + 219, + 174, + 255, + 236, + 218, + 172, + 255, + 236, + 217, + 173, + 255, + 236, + 217, + 174, + 255, + 236, + 217, + 175, + 255, + 231, + 213, + 173, + 255, + 235, + 217, + 177, + 255, + 234, + 216, + 176, + 255, + 234, + 216, + 176, + 255, + 232, + 217, + 177, + 255, + 232, + 217, + 177, + 255, + 231, + 216, + 176, + 255, + 230, + 215, + 175, + 255, + 230, + 215, + 176, + 255, + 230, + 214, + 179, + 255, + 225, + 208, + 178, + 255, + 216, + 199, + 171, + 255, + 227, + 212, + 173, + 255, + 227, + 212, + 173, + 255, + 227, + 212, + 173, + 255, + 227, + 212, + 173, + 255, + 229, + 209, + 176, + 255, + 226, + 207, + 174, + 255, + 222, + 206, + 172, + 255, + 221, + 205, + 171, + 255, + 220, + 204, + 167, + 255, + 199, + 187, + 166, + 255, + 204, + 189, + 185, + 255, + 219, + 203, + 160, + 255, + 211, + 201, + 183, + 255, + 195, + 187, + 193, + 255, + 209, + 206, + 216, + 255, + 207, + 210, + 208, + 255, + 140, + 139, + 170, + 255, + 139, + 137, + 176, + 255, + 137, + 135, + 175, + 255, + 133, + 132, + 166, + 255, + 129, + 131, + 171, + 255, + 103, + 105, + 146, + 255, + 98, + 101, + 143, + 255, + 93, + 98, + 139, + 255, + 92, + 96, + 140, + 255, + 90, + 94, + 139, + 255, + 88, + 92, + 139, + 255, + 89, + 93, + 141, + 255, + 93, + 97, + 135, + 255, + 122, + 125, + 157, + 255, + 123, + 124, + 154, + 255, + 125, + 124, + 158, + 255, + 123, + 126, + 161, + 255, + 124, + 128, + 156, + 255, + 128, + 130, + 155, + 255, + 129, + 130, + 158, + 255, + 108, + 110, + 158, + 255, + 100, + 104, + 152, + 255, + 97, + 102, + 152, + 255, + 91, + 97, + 147, + 255, + 87, + 94, + 148, + 255, + 92, + 99, + 154, + 255, + 86, + 92, + 150, + 255, + 82, + 88, + 146, + 255, + 79, + 88, + 145, + 255, + 79, + 88, + 148, + 255, + 69, + 77, + 142, + 255, + 61, + 68, + 136, + 255, + 61, + 65, + 137, + 255, + 60, + 62, + 136, + 255, + 59, + 59, + 135, + 255, + 59, + 58, + 136, + 255, + 59, + 59, + 133, + 255, + 56, + 56, + 130, + 255, + 59, + 59, + 133, + 255, + 59, + 59, + 133, + 255, + 59, + 55, + 129, + 255, + 57, + 55, + 119, + 255, + 55, + 54, + 111, + 255, + 54, + 53, + 111, + 255, + 55, + 54, + 114, + 255, + 55, + 54, + 112, + 255, + 55, + 53, + 117, + 255, + 57, + 54, + 125, + 255, + 57, + 56, + 134, + 255, + 58, + 57, + 136, + 255, + 58, + 56, + 138, + 255, + 59, + 57, + 140, + 255, + 60, + 58, + 143, + 255, + 61, + 59, + 142, + 255, + 61, + 59, + 140, + 255, + 61, + 60, + 138, + 255, + 62, + 60, + 143, + 255, + 63, + 61, + 144, + 255, + 63, + 61, + 144, + 255, + 63, + 61, + 144, + 255, + 64, + 63, + 142, + 255, + 64, + 63, + 138, + 255, + 62, + 62, + 131, + 255, + 61, + 62, + 126, + 255, + 63, + 62, + 127, + 255, + 64, + 63, + 131, + 255, + 65, + 63, + 135, + 255, + 68, + 66, + 140, + 255, + 73, + 71, + 145, + 255, + 66, + 64, + 139, + 255, + 67, + 66, + 136, + 255, + 65, + 65, + 128, + 255, + 67, + 62, + 128, + 255, + 67, + 62, + 128, + 255, + 68, + 63, + 129, + 255, + 69, + 64, + 130, + 255, + 69, + 68, + 136, + 255, + 72, + 71, + 139, + 255, + 80, + 79, + 147, + 255, + 99, + 98, + 166, + 255, + 101, + 100, + 168, + 255, + 104, + 103, + 171, + 255, + 105, + 104, + 172, + 255, + 106, + 105, + 173, + 255, + 105, + 104, + 170, + 255, + 105, + 104, + 170, + 255, + 105, + 104, + 170, + 255, + 105, + 104, + 170, + 255, + 106, + 103, + 172, + 255, + 106, + 103, + 172, + 255, + 104, + 101, + 170, + 255, + 102, + 99, + 168, + 255, + 101, + 96, + 163, + 255, + 95, + 90, + 157, + 255, + 80, + 75, + 142, + 255, + 80, + 75, + 142, + 255, + 79, + 74, + 138, + 255, + 93, + 88, + 152, + 255, + 100, + 95, + 159, + 255, + 102, + 97, + 161, + 255, + 104, + 100, + 161, + 255, + 105, + 101, + 162, + 255, + 105, + 101, + 162, + 255, + 104, + 100, + 161, + 255, + 102, + 101, + 161, + 255, + 102, + 101, + 161, + 255, + 102, + 101, + 161, + 255, + 101, + 100, + 160, + 255, + 102, + 101, + 159, + 255, + 101, + 100, + 157, + 255, + 101, + 100, + 155, + 255, + 56, + 61, + 132, + 255, + 11, + 10, + 43, + 255, + 6, + 3, + 5, + 255, + 4, + 4, + 19, + 255, + 55, + 59, + 121, + 255, + 0, + 3, + 35, + 255, + 1, + 6, + 9, + 255, + 4, + 2, + 12, + 255, + 2, + 4, + 26, + 255, + 2, + 3, + 21, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 4, + 255, + 3, + 6, + 12, + 255, + 0, + 2, + 2, + 255, + 1, + 0, + 3, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 1, + 255, + 1, + 0, + 9, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 5, + 255, + 2, + 1, + 6, + 255, + 2, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 2, + 1, + 0, + 255, + 0, + 1, + 4, + 255, + 2, + 3, + 33, + 255, + 0, + 4, + 33, + 255, + 2, + 0, + 3, + 255, + 1, + 1, + 10, + 255, + 8, + 10, + 44, + 255, + 32, + 32, + 93, + 255, + 2, + 0, + 12, + 255, + 1, + 1, + 0, + 255, + 0, + 4, + 13, + 255, + 1, + 7, + 41, + 255, + 3, + 2, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 6, + 255, + 3, + 0, + 9, + 255, + 0, + 0, + 2, + 255, + 1, + 3, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 4, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 4, + 255, + 3, + 2, + 11, + 255, + 1, + 0, + 7, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 9, + 255, + 15, + 10, + 49, + 255, + 1, + 0, + 18, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 1, + 255, + 9, + 5, + 27, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 9, + 255, + 2, + 0, + 10, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 8, + 255, + 2, + 0, + 23, + 255, + 1, + 1, + 13, + 255, + 1, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 16, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 28, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 19, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 30, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 22, + 255, + 34, + 32, + 69, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 23, + 255, + 0, + 0, + 27, + 255, + 3, + 3, + 28, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 2, + 24, + 255, + 0, + 2, + 25, + 255, + 2, + 4, + 29, + 255, + 2, + 4, + 29, + 255, + 0, + 4, + 33, + 255, + 0, + 4, + 31, + 255, + 1, + 5, + 30, + 255, + 1, + 5, + 30, + 255, + 1, + 5, + 30, + 255, + 2, + 6, + 31, + 255, + 3, + 7, + 32, + 255, + 7, + 11, + 36, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 8, + 9, + 37, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 41, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 41, + 255, + 13, + 14, + 42, + 255, + 13, + 17, + 45, + 255, + 30, + 34, + 59, + 255, + 66, + 71, + 93, + 255, + 74, + 79, + 98, + 255, + 74, + 81, + 102, + 255, + 73, + 80, + 101, + 255, + 73, + 80, + 101, + 255, + 75, + 82, + 103, + 255, + 74, + 81, + 101, + 255, + 72, + 79, + 97, + 255, + 79, + 86, + 102, + 255, + 82, + 90, + 103, + 255, + 79, + 84, + 106, + 255, + 77, + 82, + 103, + 255, + 75, + 80, + 99, + 255, + 82, + 88, + 105, + 255, + 82, + 88, + 100, + 255, + 60, + 66, + 82, + 255, + 32, + 37, + 57, + 255, + 23, + 28, + 50, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 14, + 15, + 43, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 37, + 255, + 12, + 12, + 46, + 255, + 23, + 26, + 60, + 255, + 60, + 67, + 103, + 255, + 54, + 64, + 100, + 255, + 58, + 68, + 102, + 255, + 67, + 77, + 106, + 255, + 76, + 85, + 108, + 255, + 78, + 86, + 106, + 255, + 88, + 90, + 114, + 255, + 90, + 92, + 115, + 255, + 87, + 89, + 112, + 255, + 85, + 87, + 109, + 255, + 82, + 90, + 111, + 255, + 84, + 92, + 113, + 255, + 84, + 92, + 113, + 255, + 86, + 94, + 115, + 255, + 83, + 91, + 115, + 255, + 75, + 81, + 117, + 255, + 36, + 40, + 84, + 255, + 31, + 36, + 78, + 255, + 28, + 32, + 79, + 255, + 27, + 31, + 79, + 255, + 25, + 28, + 79, + 255, + 28, + 31, + 83, + 255, + 25, + 28, + 81, + 255, + 27, + 33, + 85, + 255, + 34, + 38, + 84, + 255, + 31, + 30, + 70, + 255, + 38, + 38, + 76, + 255, + 72, + 75, + 107, + 255, + 97, + 102, + 134, + 255, + 78, + 83, + 121, + 255, + 75, + 83, + 119, + 255, + 75, + 83, + 119, + 255, + 81, + 89, + 125, + 255, + 83, + 91, + 127, + 255, + 81, + 87, + 123, + 255, + 84, + 90, + 126, + 255, + 88, + 94, + 130, + 255, + 86, + 92, + 128, + 255, + 86, + 92, + 127, + 255, + 88, + 94, + 129, + 255, + 93, + 99, + 126, + 255, + 116, + 121, + 140, + 255, + 117, + 122, + 143, + 255, + 118, + 121, + 140, + 255, + 122, + 123, + 144, + 255, + 123, + 124, + 147, + 255, + 122, + 119, + 127, + 255, + 204, + 193, + 165, + 255, + 205, + 184, + 131, + 255, + 207, + 189, + 124, + 255, + 209, + 190, + 131, + 255, + 210, + 191, + 132, + 255, + 213, + 194, + 135, + 255, + 215, + 196, + 137, + 255, + 215, + 199, + 137, + 255, + 218, + 202, + 140, + 255, + 221, + 202, + 141, + 255, + 224, + 204, + 143, + 255, + 227, + 203, + 146, + 255, + 229, + 206, + 148, + 255, + 229, + 207, + 149, + 255, + 230, + 208, + 150, + 255, + 225, + 206, + 142, + 255, + 220, + 203, + 158, + 255, + 207, + 192, + 171, + 255, + 221, + 217, + 190, + 255, + 231, + 213, + 166, + 255, + 231, + 213, + 163, + 255, + 232, + 215, + 161, + 255, + 234, + 218, + 159, + 255, + 233, + 218, + 161, + 255, + 233, + 218, + 163, + 255, + 234, + 218, + 166, + 255, + 234, + 218, + 167, + 255, + 237, + 217, + 164, + 255, + 237, + 216, + 172, + 255, + 235, + 217, + 167, + 255, + 235, + 216, + 173, + 255, + 238, + 220, + 166, + 255, + 231, + 219, + 171, + 255, + 230, + 219, + 173, + 255, + 235, + 217, + 170, + 255, + 234, + 220, + 175, + 255, + 234, + 220, + 175, + 255, + 233, + 219, + 174, + 255, + 232, + 218, + 173, + 255, + 230, + 219, + 190, + 255, + 234, + 222, + 207, + 255, + 231, + 221, + 166, + 255, + 234, + 212, + 180, + 255, + 234, + 217, + 174, + 255, + 234, + 217, + 174, + 255, + 233, + 216, + 173, + 255, + 232, + 215, + 172, + 255, + 232, + 214, + 176, + 255, + 232, + 215, + 171, + 255, + 231, + 213, + 178, + 255, + 221, + 201, + 177, + 255, + 226, + 205, + 176, + 255, + 229, + 211, + 174, + 255, + 228, + 212, + 172, + 255, + 226, + 210, + 173, + 255, + 225, + 210, + 169, + 255, + 224, + 209, + 168, + 255, + 223, + 208, + 167, + 255, + 222, + 207, + 166, + 255, + 223, + 206, + 161, + 255, + 220, + 204, + 172, + 255, + 175, + 158, + 139, + 255, + 201, + 185, + 171, + 255, + 215, + 202, + 174, + 255, + 212, + 204, + 209, + 255, + 186, + 184, + 187, + 255, + 210, + 206, + 211, + 255, + 203, + 204, + 198, + 255, + 144, + 143, + 169, + 255, + 140, + 141, + 171, + 255, + 133, + 132, + 171, + 255, + 125, + 127, + 164, + 255, + 100, + 102, + 141, + 255, + 96, + 99, + 141, + 255, + 92, + 95, + 140, + 255, + 89, + 93, + 140, + 255, + 87, + 91, + 138, + 255, + 86, + 90, + 137, + 255, + 89, + 93, + 140, + 255, + 103, + 102, + 143, + 255, + 122, + 122, + 155, + 255, + 122, + 123, + 151, + 255, + 125, + 126, + 156, + 255, + 126, + 126, + 160, + 255, + 127, + 128, + 159, + 255, + 130, + 131, + 161, + 255, + 126, + 127, + 157, + 255, + 122, + 126, + 155, + 255, + 100, + 105, + 147, + 255, + 94, + 102, + 151, + 255, + 92, + 101, + 150, + 255, + 84, + 94, + 145, + 255, + 88, + 98, + 150, + 255, + 82, + 92, + 146, + 255, + 82, + 91, + 146, + 255, + 74, + 80, + 138, + 255, + 80, + 84, + 146, + 255, + 68, + 70, + 139, + 255, + 64, + 64, + 137, + 255, + 61, + 60, + 136, + 255, + 59, + 58, + 134, + 255, + 58, + 57, + 133, + 255, + 58, + 57, + 133, + 255, + 57, + 56, + 132, + 255, + 56, + 55, + 131, + 255, + 56, + 55, + 131, + 255, + 56, + 55, + 131, + 255, + 56, + 55, + 130, + 255, + 53, + 53, + 116, + 255, + 52, + 53, + 110, + 255, + 52, + 51, + 109, + 255, + 55, + 52, + 109, + 255, + 53, + 52, + 110, + 255, + 54, + 53, + 120, + 255, + 55, + 54, + 129, + 255, + 55, + 54, + 132, + 255, + 56, + 55, + 133, + 255, + 57, + 56, + 136, + 255, + 58, + 56, + 139, + 255, + 58, + 56, + 139, + 255, + 58, + 56, + 139, + 255, + 59, + 57, + 140, + 255, + 59, + 57, + 140, + 255, + 60, + 59, + 139, + 255, + 60, + 59, + 139, + 255, + 62, + 60, + 141, + 255, + 62, + 60, + 143, + 255, + 62, + 61, + 140, + 255, + 63, + 61, + 135, + 255, + 61, + 60, + 127, + 255, + 61, + 59, + 121, + 255, + 61, + 59, + 124, + 255, + 61, + 59, + 124, + 255, + 63, + 61, + 126, + 255, + 66, + 64, + 129, + 255, + 68, + 64, + 139, + 255, + 62, + 59, + 129, + 255, + 64, + 62, + 128, + 255, + 63, + 61, + 124, + 255, + 63, + 61, + 124, + 255, + 63, + 61, + 124, + 255, + 64, + 62, + 125, + 255, + 66, + 64, + 127, + 255, + 69, + 67, + 132, + 255, + 75, + 73, + 138, + 255, + 94, + 92, + 157, + 255, + 100, + 98, + 163, + 255, + 102, + 100, + 165, + 255, + 104, + 102, + 167, + 255, + 105, + 103, + 168, + 255, + 105, + 103, + 168, + 255, + 105, + 102, + 169, + 255, + 106, + 103, + 170, + 255, + 106, + 103, + 170, + 255, + 106, + 103, + 170, + 255, + 104, + 102, + 167, + 255, + 103, + 101, + 166, + 255, + 104, + 102, + 167, + 255, + 101, + 99, + 164, + 255, + 95, + 93, + 156, + 255, + 79, + 77, + 140, + 255, + 73, + 71, + 134, + 255, + 72, + 70, + 133, + 255, + 74, + 73, + 133, + 255, + 86, + 85, + 145, + 255, + 96, + 95, + 155, + 255, + 100, + 99, + 159, + 255, + 102, + 101, + 161, + 255, + 102, + 101, + 161, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 162, + 255, + 102, + 101, + 158, + 255, + 102, + 101, + 158, + 255, + 102, + 101, + 158, + 255, + 102, + 101, + 158, + 255, + 101, + 101, + 153, + 255, + 100, + 100, + 152, + 255, + 99, + 99, + 151, + 255, + 13, + 15, + 40, + 255, + 8, + 7, + 24, + 255, + 1, + 2, + 7, + 255, + 0, + 6, + 11, + 255, + 27, + 29, + 84, + 255, + 1, + 3, + 34, + 255, + 1, + 5, + 8, + 255, + 6, + 5, + 11, + 255, + 43, + 49, + 107, + 255, + 41, + 41, + 102, + 255, + 2, + 5, + 4, + 255, + 3, + 0, + 12, + 255, + 0, + 2, + 5, + 255, + 10, + 11, + 75, + 255, + 0, + 5, + 0, + 255, + 2, + 0, + 7, + 255, + 0, + 1, + 13, + 255, + 0, + 3, + 11, + 255, + 0, + 2, + 5, + 255, + 2, + 0, + 11, + 255, + 2, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 2, + 1, + 0, + 255, + 2, + 0, + 2, + 255, + 3, + 0, + 7, + 255, + 2, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 0, + 2, + 7, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 2, + 255, + 0, + 3, + 12, + 255, + 0, + 2, + 21, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 2, + 255, + 1, + 0, + 26, + 255, + 32, + 32, + 84, + 255, + 3, + 1, + 10, + 255, + 0, + 4, + 0, + 255, + 0, + 1, + 11, + 255, + 21, + 25, + 63, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 20, + 255, + 1, + 2, + 8, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 6, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 2, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 17, + 255, + 2, + 0, + 17, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 26, + 255, + 23, + 19, + 44, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 8, + 255, + 2, + 0, + 26, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 23, + 255, + 1, + 0, + 18, + 255, + 0, + 1, + 15, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 23, + 255, + 2, + 3, + 22, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 26, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 27, + 255, + 11, + 11, + 37, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 32, + 255, + 1, + 2, + 31, + 255, + 2, + 4, + 29, + 255, + 2, + 4, + 28, + 255, + 0, + 3, + 32, + 255, + 1, + 5, + 32, + 255, + 1, + 5, + 30, + 255, + 1, + 5, + 30, + 255, + 1, + 5, + 31, + 255, + 2, + 6, + 32, + 255, + 6, + 10, + 36, + 255, + 6, + 10, + 36, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 41, + 255, + 13, + 14, + 42, + 255, + 14, + 18, + 46, + 255, + 34, + 38, + 63, + 255, + 75, + 80, + 102, + 255, + 73, + 78, + 97, + 255, + 75, + 82, + 100, + 255, + 74, + 81, + 99, + 255, + 74, + 81, + 99, + 255, + 77, + 84, + 102, + 255, + 80, + 86, + 103, + 255, + 80, + 86, + 102, + 255, + 82, + 88, + 104, + 255, + 82, + 88, + 104, + 255, + 74, + 79, + 100, + 255, + 77, + 82, + 101, + 255, + 81, + 87, + 104, + 255, + 82, + 88, + 104, + 255, + 85, + 91, + 105, + 255, + 45, + 51, + 68, + 255, + 29, + 34, + 55, + 255, + 22, + 27, + 50, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 51, + 255, + 14, + 15, + 43, + 255, + 12, + 13, + 41, + 255, + 11, + 12, + 41, + 255, + 17, + 20, + 54, + 255, + 39, + 45, + 79, + 255, + 58, + 65, + 100, + 255, + 55, + 64, + 99, + 255, + 59, + 68, + 100, + 255, + 73, + 83, + 110, + 255, + 71, + 80, + 103, + 255, + 80, + 87, + 107, + 255, + 82, + 87, + 106, + 255, + 88, + 93, + 113, + 255, + 89, + 94, + 114, + 255, + 87, + 92, + 114, + 255, + 83, + 91, + 115, + 255, + 83, + 91, + 115, + 255, + 82, + 90, + 114, + 255, + 86, + 94, + 118, + 255, + 81, + 89, + 113, + 255, + 73, + 79, + 115, + 255, + 37, + 41, + 85, + 255, + 31, + 36, + 78, + 255, + 27, + 31, + 78, + 255, + 25, + 29, + 77, + 255, + 24, + 27, + 78, + 255, + 27, + 30, + 82, + 255, + 26, + 29, + 80, + 255, + 27, + 33, + 84, + 255, + 26, + 30, + 75, + 255, + 30, + 29, + 68, + 255, + 33, + 33, + 71, + 255, + 49, + 51, + 88, + 255, + 90, + 94, + 130, + 255, + 75, + 81, + 117, + 255, + 75, + 82, + 118, + 255, + 75, + 82, + 118, + 255, + 79, + 86, + 122, + 255, + 79, + 86, + 122, + 255, + 77, + 83, + 119, + 255, + 86, + 92, + 128, + 255, + 83, + 89, + 125, + 255, + 83, + 89, + 125, + 255, + 84, + 89, + 127, + 255, + 85, + 90, + 129, + 255, + 95, + 100, + 133, + 255, + 102, + 106, + 132, + 255, + 116, + 119, + 135, + 255, + 119, + 119, + 145, + 255, + 127, + 125, + 145, + 255, + 136, + 135, + 138, + 255, + 196, + 186, + 152, + 255, + 198, + 183, + 124, + 255, + 207, + 184, + 124, + 255, + 206, + 189, + 127, + 255, + 210, + 190, + 127, + 255, + 211, + 191, + 128, + 255, + 214, + 194, + 131, + 255, + 216, + 196, + 133, + 255, + 217, + 200, + 136, + 255, + 218, + 201, + 137, + 255, + 222, + 202, + 139, + 255, + 225, + 204, + 141, + 255, + 223, + 207, + 138, + 255, + 228, + 207, + 142, + 255, + 230, + 207, + 146, + 255, + 230, + 208, + 150, + 255, + 213, + 199, + 160, + 255, + 167, + 159, + 154, + 255, + 229, + 222, + 202, + 255, + 240, + 220, + 167, + 255, + 233, + 216, + 153, + 255, + 231, + 214, + 152, + 255, + 233, + 215, + 156, + 255, + 235, + 217, + 159, + 255, + 234, + 218, + 161, + 255, + 234, + 217, + 161, + 255, + 235, + 218, + 164, + 255, + 235, + 218, + 166, + 255, + 233, + 218, + 168, + 255, + 234, + 218, + 168, + 255, + 234, + 219, + 161, + 255, + 235, + 216, + 175, + 255, + 231, + 217, + 165, + 255, + 228, + 215, + 165, + 255, + 232, + 218, + 170, + 255, + 235, + 217, + 170, + 255, + 234, + 218, + 170, + 255, + 234, + 218, + 170, + 255, + 234, + 218, + 170, + 255, + 233, + 217, + 169, + 255, + 231, + 218, + 185, + 255, + 172, + 155, + 163, + 255, + 225, + 212, + 189, + 255, + 236, + 219, + 165, + 255, + 234, + 217, + 171, + 255, + 234, + 217, + 171, + 255, + 233, + 216, + 170, + 255, + 232, + 215, + 169, + 255, + 232, + 215, + 173, + 255, + 232, + 215, + 170, + 255, + 231, + 213, + 174, + 255, + 231, + 212, + 181, + 255, + 213, + 187, + 180, + 255, + 229, + 208, + 175, + 255, + 229, + 212, + 167, + 255, + 227, + 211, + 166, + 255, + 227, + 210, + 166, + 255, + 226, + 209, + 165, + 255, + 226, + 209, + 165, + 255, + 226, + 209, + 165, + 255, + 224, + 207, + 162, + 255, + 221, + 208, + 156, + 255, + 218, + 204, + 169, + 255, + 178, + 161, + 152, + 255, + 209, + 199, + 181, + 255, + 214, + 208, + 193, + 255, + 208, + 206, + 192, + 255, + 177, + 172, + 184, + 255, + 199, + 200, + 201, + 255, + 214, + 202, + 206, + 255, + 165, + 155, + 164, + 255, + 135, + 135, + 176, + 255, + 129, + 127, + 166, + 255, + 101, + 100, + 143, + 255, + 93, + 96, + 140, + 255, + 88, + 92, + 135, + 255, + 86, + 90, + 137, + 255, + 84, + 88, + 135, + 255, + 84, + 88, + 135, + 255, + 86, + 90, + 137, + 255, + 110, + 109, + 148, + 255, + 120, + 121, + 151, + 255, + 123, + 124, + 154, + 255, + 125, + 125, + 158, + 255, + 123, + 123, + 157, + 255, + 125, + 126, + 157, + 255, + 123, + 124, + 154, + 255, + 124, + 125, + 155, + 255, + 122, + 124, + 155, + 255, + 108, + 112, + 150, + 255, + 95, + 100, + 148, + 255, + 89, + 97, + 147, + 255, + 86, + 96, + 148, + 255, + 80, + 90, + 143, + 255, + 78, + 87, + 142, + 255, + 76, + 85, + 142, + 255, + 77, + 83, + 142, + 255, + 72, + 76, + 140, + 255, + 62, + 63, + 134, + 255, + 61, + 60, + 136, + 255, + 59, + 59, + 133, + 255, + 57, + 57, + 131, + 255, + 57, + 57, + 131, + 255, + 57, + 57, + 131, + 255, + 55, + 54, + 130, + 255, + 54, + 53, + 129, + 255, + 54, + 53, + 129, + 255, + 54, + 53, + 129, + 255, + 54, + 53, + 128, + 255, + 54, + 53, + 121, + 255, + 51, + 51, + 111, + 255, + 51, + 50, + 108, + 255, + 53, + 50, + 107, + 255, + 51, + 50, + 108, + 255, + 51, + 50, + 117, + 255, + 52, + 51, + 126, + 255, + 53, + 52, + 128, + 255, + 54, + 53, + 131, + 255, + 54, + 53, + 131, + 255, + 55, + 54, + 134, + 255, + 57, + 55, + 138, + 255, + 57, + 55, + 138, + 255, + 57, + 55, + 138, + 255, + 57, + 55, + 138, + 255, + 59, + 57, + 139, + 255, + 59, + 57, + 138, + 255, + 59, + 58, + 138, + 255, + 59, + 58, + 137, + 255, + 59, + 58, + 135, + 255, + 60, + 59, + 130, + 255, + 57, + 57, + 120, + 255, + 57, + 56, + 115, + 255, + 58, + 56, + 118, + 255, + 58, + 56, + 118, + 255, + 59, + 57, + 119, + 255, + 59, + 57, + 119, + 255, + 65, + 62, + 130, + 255, + 60, + 58, + 123, + 255, + 60, + 58, + 120, + 255, + 59, + 58, + 118, + 255, + 61, + 60, + 120, + 255, + 61, + 60, + 120, + 255, + 62, + 61, + 121, + 255, + 64, + 63, + 123, + 255, + 70, + 68, + 131, + 255, + 82, + 80, + 143, + 255, + 98, + 96, + 159, + 255, + 101, + 99, + 162, + 255, + 102, + 100, + 163, + 255, + 104, + 102, + 165, + 255, + 104, + 102, + 165, + 255, + 104, + 102, + 165, + 255, + 104, + 102, + 166, + 255, + 104, + 102, + 166, + 255, + 104, + 102, + 166, + 255, + 104, + 102, + 166, + 255, + 103, + 101, + 164, + 255, + 102, + 100, + 163, + 255, + 100, + 98, + 161, + 255, + 97, + 95, + 158, + 255, + 90, + 89, + 149, + 255, + 72, + 71, + 131, + 255, + 68, + 67, + 127, + 255, + 67, + 66, + 126, + 255, + 70, + 69, + 129, + 255, + 82, + 81, + 141, + 255, + 94, + 93, + 153, + 255, + 98, + 97, + 157, + 255, + 100, + 99, + 157, + 255, + 101, + 100, + 158, + 255, + 101, + 100, + 158, + 255, + 101, + 100, + 158, + 255, + 101, + 100, + 156, + 255, + 101, + 100, + 156, + 255, + 101, + 100, + 156, + 255, + 101, + 100, + 156, + 255, + 100, + 100, + 152, + 255, + 99, + 99, + 151, + 255, + 99, + 99, + 151, + 255, + 4, + 4, + 12, + 255, + 3, + 2, + 10, + 255, + 0, + 2, + 6, + 255, + 0, + 3, + 5, + 255, + 0, + 7, + 7, + 255, + 0, + 3, + 5, + 255, + 0, + 3, + 0, + 255, + 3, + 2, + 16, + 255, + 0, + 4, + 16, + 255, + 1, + 2, + 31, + 255, + 1, + 3, + 1, + 255, + 4, + 0, + 16, + 255, + 0, + 0, + 18, + 255, + 32, + 30, + 100, + 255, + 0, + 3, + 14, + 255, + 2, + 0, + 13, + 255, + 0, + 1, + 15, + 255, + 31, + 30, + 99, + 255, + 0, + 0, + 30, + 255, + 2, + 0, + 0, + 255, + 4, + 2, + 6, + 255, + 0, + 0, + 21, + 255, + 1, + 2, + 20, + 255, + 2, + 0, + 0, + 255, + 2, + 0, + 7, + 255, + 1, + 1, + 0, + 255, + 2, + 1, + 7, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 2, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 4, + 6, + 255, + 2, + 1, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 5, + 12, + 255, + 0, + 2, + 32, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 1, + 255, + 1, + 2, + 6, + 255, + 16, + 14, + 36, + 255, + 18, + 13, + 54, + 255, + 2, + 1, + 16, + 255, + 0, + 1, + 0, + 255, + 2, + 4, + 4, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 2, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 6, + 255, + 2, + 1, + 9, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 7, + 255, + 2, + 1, + 8, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 14, + 12, + 33, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 15, + 255, + 11, + 12, + 33, + 255, + 0, + 0, + 24, + 255, + 1, + 0, + 18, + 255, + 0, + 1, + 16, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 29, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 30, + 255, + 1, + 2, + 30, + 255, + 1, + 3, + 28, + 255, + 2, + 4, + 29, + 255, + 0, + 4, + 33, + 255, + 17, + 21, + 48, + 255, + 2, + 6, + 31, + 255, + 1, + 5, + 30, + 255, + 3, + 7, + 35, + 255, + 5, + 9, + 37, + 255, + 6, + 10, + 38, + 255, + 8, + 12, + 40, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 14, + 15, + 43, + 255, + 18, + 22, + 50, + 255, + 38, + 42, + 67, + 255, + 75, + 80, + 102, + 255, + 70, + 75, + 94, + 255, + 72, + 78, + 93, + 255, + 79, + 85, + 100, + 255, + 80, + 86, + 101, + 255, + 83, + 89, + 104, + 255, + 84, + 88, + 101, + 255, + 84, + 87, + 102, + 255, + 85, + 88, + 105, + 255, + 82, + 85, + 102, + 255, + 78, + 83, + 102, + 255, + 77, + 83, + 100, + 255, + 82, + 88, + 103, + 255, + 84, + 90, + 104, + 255, + 85, + 91, + 107, + 255, + 40, + 45, + 65, + 255, + 27, + 32, + 55, + 255, + 23, + 27, + 53, + 255, + 25, + 27, + 50, + 255, + 25, + 27, + 50, + 255, + 27, + 29, + 52, + 255, + 27, + 29, + 52, + 255, + 25, + 27, + 51, + 255, + 20, + 21, + 48, + 255, + 16, + 17, + 46, + 255, + 20, + 21, + 52, + 255, + 27, + 34, + 70, + 255, + 57, + 64, + 99, + 255, + 56, + 65, + 98, + 255, + 56, + 65, + 97, + 255, + 69, + 78, + 104, + 255, + 75, + 83, + 109, + 255, + 75, + 81, + 105, + 255, + 86, + 91, + 113, + 255, + 84, + 91, + 112, + 255, + 73, + 79, + 102, + 255, + 70, + 76, + 102, + 255, + 70, + 75, + 104, + 255, + 70, + 77, + 104, + 255, + 71, + 78, + 105, + 255, + 73, + 80, + 107, + 255, + 79, + 86, + 113, + 255, + 83, + 91, + 115, + 255, + 54, + 60, + 96, + 255, + 31, + 35, + 79, + 255, + 25, + 30, + 72, + 255, + 27, + 31, + 78, + 255, + 25, + 29, + 77, + 255, + 23, + 26, + 77, + 255, + 26, + 29, + 81, + 255, + 29, + 32, + 82, + 255, + 25, + 31, + 80, + 255, + 25, + 29, + 73, + 255, + 27, + 26, + 63, + 255, + 31, + 31, + 69, + 255, + 40, + 42, + 82, + 255, + 79, + 83, + 122, + 255, + 72, + 78, + 114, + 255, + 73, + 77, + 114, + 255, + 75, + 79, + 116, + 255, + 71, + 75, + 112, + 255, + 83, + 87, + 124, + 255, + 78, + 84, + 118, + 255, + 78, + 84, + 118, + 255, + 80, + 86, + 120, + 255, + 82, + 88, + 122, + 255, + 83, + 89, + 123, + 255, + 85, + 90, + 127, + 255, + 89, + 93, + 127, + 255, + 99, + 103, + 131, + 255, + 116, + 118, + 134, + 255, + 127, + 126, + 141, + 255, + 169, + 166, + 167, + 255, + 192, + 187, + 177, + 255, + 197, + 187, + 143, + 255, + 201, + 185, + 117, + 255, + 208, + 186, + 122, + 255, + 206, + 191, + 127, + 255, + 211, + 190, + 126, + 255, + 213, + 192, + 128, + 255, + 216, + 195, + 131, + 255, + 219, + 198, + 134, + 255, + 218, + 200, + 133, + 255, + 221, + 202, + 135, + 255, + 224, + 203, + 137, + 255, + 226, + 204, + 138, + 255, + 223, + 207, + 137, + 255, + 230, + 206, + 152, + 255, + 233, + 207, + 166, + 255, + 200, + 182, + 152, + 255, + 177, + 163, + 168, + 255, + 219, + 213, + 161, + 255, + 226, + 215, + 150, + 255, + 235, + 213, + 145, + 255, + 233, + 214, + 148, + 255, + 234, + 215, + 151, + 255, + 235, + 215, + 154, + 255, + 236, + 216, + 158, + 255, + 235, + 217, + 159, + 255, + 235, + 217, + 160, + 255, + 234, + 216, + 160, + 255, + 238, + 219, + 166, + 255, + 237, + 223, + 204, + 255, + 233, + 220, + 177, + 255, + 230, + 219, + 154, + 255, + 231, + 215, + 163, + 255, + 188, + 173, + 154, + 255, + 236, + 218, + 185, + 255, + 235, + 217, + 170, + 255, + 234, + 219, + 160, + 255, + 235, + 217, + 167, + 255, + 235, + 217, + 167, + 255, + 235, + 217, + 167, + 255, + 235, + 217, + 167, + 255, + 233, + 219, + 181, + 255, + 184, + 165, + 183, + 255, + 162, + 145, + 148, + 255, + 236, + 223, + 168, + 255, + 234, + 218, + 168, + 255, + 234, + 218, + 168, + 255, + 233, + 217, + 167, + 255, + 233, + 217, + 167, + 255, + 232, + 216, + 168, + 255, + 231, + 214, + 168, + 255, + 231, + 214, + 170, + 255, + 230, + 212, + 171, + 255, + 214, + 186, + 175, + 255, + 214, + 188, + 172, + 255, + 230, + 210, + 175, + 255, + 228, + 210, + 162, + 255, + 229, + 211, + 164, + 255, + 229, + 211, + 164, + 255, + 228, + 210, + 163, + 255, + 227, + 209, + 162, + 255, + 225, + 208, + 164, + 255, + 221, + 208, + 157, + 255, + 216, + 202, + 163, + 255, + 217, + 202, + 180, + 255, + 204, + 189, + 186, + 255, + 214, + 199, + 186, + 255, + 213, + 204, + 180, + 255, + 214, + 204, + 203, + 255, + 150, + 141, + 152, + 255, + 197, + 183, + 193, + 255, + 195, + 184, + 173, + 255, + 166, + 159, + 149, + 255, + 137, + 133, + 160, + 255, + 108, + 106, + 146, + 255, + 91, + 93, + 139, + 255, + 87, + 92, + 134, + 255, + 83, + 87, + 134, + 255, + 80, + 84, + 131, + 255, + 82, + 86, + 133, + 255, + 86, + 90, + 137, + 255, + 119, + 119, + 154, + 255, + 119, + 120, + 150, + 255, + 124, + 125, + 156, + 255, + 123, + 123, + 158, + 255, + 123, + 123, + 157, + 255, + 122, + 123, + 154, + 255, + 120, + 121, + 151, + 255, + 123, + 124, + 154, + 255, + 116, + 117, + 148, + 255, + 123, + 126, + 160, + 255, + 95, + 99, + 143, + 255, + 86, + 92, + 144, + 255, + 82, + 92, + 146, + 255, + 80, + 89, + 144, + 255, + 73, + 82, + 139, + 255, + 75, + 84, + 142, + 255, + 78, + 84, + 145, + 255, + 62, + 66, + 132, + 255, + 60, + 61, + 134, + 255, + 59, + 58, + 134, + 255, + 57, + 57, + 129, + 255, + 56, + 56, + 128, + 255, + 55, + 55, + 127, + 255, + 54, + 54, + 126, + 255, + 55, + 54, + 130, + 255, + 54, + 53, + 129, + 255, + 52, + 51, + 127, + 255, + 52, + 51, + 127, + 255, + 52, + 51, + 127, + 255, + 52, + 50, + 123, + 255, + 50, + 49, + 114, + 255, + 50, + 49, + 106, + 255, + 51, + 48, + 105, + 255, + 49, + 48, + 106, + 255, + 51, + 50, + 117, + 255, + 52, + 51, + 126, + 255, + 52, + 52, + 126, + 255, + 52, + 51, + 127, + 255, + 53, + 52, + 130, + 255, + 54, + 53, + 131, + 255, + 55, + 53, + 136, + 255, + 55, + 53, + 136, + 255, + 56, + 54, + 137, + 255, + 57, + 55, + 138, + 255, + 57, + 55, + 140, + 255, + 57, + 55, + 138, + 255, + 58, + 57, + 136, + 255, + 58, + 57, + 134, + 255, + 58, + 58, + 131, + 255, + 57, + 56, + 124, + 255, + 54, + 54, + 114, + 255, + 55, + 54, + 110, + 255, + 55, + 54, + 111, + 255, + 55, + 54, + 111, + 255, + 56, + 55, + 112, + 255, + 57, + 56, + 113, + 255, + 57, + 56, + 115, + 255, + 57, + 56, + 115, + 255, + 58, + 57, + 115, + 255, + 58, + 57, + 114, + 255, + 58, + 57, + 116, + 255, + 59, + 58, + 117, + 255, + 61, + 60, + 119, + 255, + 64, + 63, + 122, + 255, + 69, + 68, + 128, + 255, + 94, + 93, + 153, + 255, + 98, + 97, + 157, + 255, + 101, + 100, + 160, + 255, + 102, + 101, + 161, + 255, + 103, + 102, + 162, + 255, + 104, + 103, + 163, + 255, + 104, + 103, + 163, + 255, + 104, + 103, + 163, + 255, + 103, + 102, + 162, + 255, + 104, + 103, + 163, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 162, + 255, + 101, + 100, + 160, + 255, + 98, + 97, + 157, + 255, + 94, + 93, + 153, + 255, + 74, + 73, + 130, + 255, + 67, + 66, + 123, + 255, + 63, + 62, + 119, + 255, + 64, + 63, + 120, + 255, + 68, + 67, + 125, + 255, + 76, + 75, + 133, + 255, + 93, + 92, + 150, + 255, + 98, + 97, + 155, + 255, + 100, + 99, + 155, + 255, + 101, + 100, + 156, + 255, + 101, + 100, + 156, + 255, + 101, + 100, + 156, + 255, + 100, + 100, + 153, + 255, + 100, + 100, + 153, + 255, + 100, + 100, + 153, + 255, + 99, + 99, + 152, + 255, + 99, + 99, + 151, + 255, + 98, + 98, + 150, + 255, + 98, + 98, + 150, + 255, + 9, + 8, + 30, + 255, + 2, + 4, + 11, + 255, + 1, + 2, + 3, + 255, + 4, + 1, + 10, + 255, + 2, + 4, + 15, + 255, + 0, + 3, + 12, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 4, + 3, + 3, + 255, + 6, + 5, + 4, + 255, + 1, + 0, + 10, + 255, + 1, + 1, + 0, + 255, + 4, + 0, + 7, + 255, + 0, + 0, + 10, + 255, + 0, + 1, + 8, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 19, + 255, + 4, + 9, + 56, + 255, + 0, + 5, + 8, + 255, + 2, + 0, + 5, + 255, + 3, + 4, + 14, + 255, + 26, + 30, + 90, + 255, + 8, + 11, + 61, + 255, + 2, + 2, + 3, + 255, + 0, + 3, + 0, + 255, + 0, + 4, + 17, + 255, + 7, + 4, + 39, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 3, + 0, + 8, + 255, + 3, + 0, + 10, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 4, + 255, + 3, + 0, + 5, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 1, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 2, + 4, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 9, + 255, + 4, + 4, + 13, + 255, + 0, + 3, + 0, + 255, + 0, + 1, + 0, + 255, + 2, + 2, + 14, + 255, + 16, + 18, + 65, + 255, + 0, + 3, + 13, + 255, + 0, + 1, + 0, + 255, + 2, + 0, + 7, + 255, + 19, + 14, + 44, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 2, + 0, + 6, + 255, + 2, + 0, + 14, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 2, + 255, + 1, + 1, + 4, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 10, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 1, + 9, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 23, + 255, + 1, + 0, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 27, + 255, + 8, + 7, + 49, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 17, + 255, + 0, + 1, + 20, + 255, + 2, + 2, + 26, + 255, + 0, + 2, + 18, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 21, + 255, + 0, + 2, + 16, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 17, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 3, + 22, + 255, + 0, + 1, + 23, + 255, + 0, + 2, + 27, + 255, + 1, + 2, + 29, + 255, + 0, + 4, + 33, + 255, + 2, + 6, + 33, + 255, + 2, + 6, + 31, + 255, + 1, + 5, + 30, + 255, + 5, + 9, + 38, + 255, + 10, + 14, + 43, + 255, + 7, + 11, + 40, + 255, + 9, + 13, + 42, + 255, + 10, + 11, + 39, + 255, + 13, + 14, + 42, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 14, + 15, + 43, + 255, + 18, + 22, + 50, + 255, + 48, + 52, + 77, + 255, + 70, + 75, + 97, + 255, + 81, + 86, + 105, + 255, + 83, + 87, + 100, + 255, + 83, + 87, + 100, + 255, + 84, + 88, + 101, + 255, + 84, + 88, + 101, + 255, + 85, + 87, + 99, + 255, + 85, + 87, + 100, + 255, + 85, + 86, + 104, + 255, + 78, + 79, + 97, + 255, + 76, + 82, + 99, + 255, + 83, + 89, + 105, + 255, + 83, + 89, + 103, + 255, + 81, + 87, + 100, + 255, + 73, + 79, + 96, + 255, + 43, + 48, + 68, + 255, + 29, + 33, + 58, + 255, + 27, + 31, + 58, + 255, + 31, + 33, + 56, + 255, + 33, + 35, + 58, + 255, + 34, + 36, + 59, + 255, + 36, + 38, + 61, + 255, + 37, + 39, + 61, + 255, + 36, + 38, + 63, + 255, + 34, + 35, + 66, + 255, + 42, + 42, + 76, + 255, + 55, + 65, + 101, + 255, + 54, + 63, + 98, + 255, + 55, + 64, + 96, + 255, + 61, + 70, + 100, + 255, + 76, + 84, + 107, + 255, + 74, + 80, + 104, + 255, + 83, + 88, + 111, + 255, + 75, + 80, + 102, + 255, + 67, + 74, + 100, + 255, + 67, + 74, + 103, + 255, + 64, + 70, + 104, + 255, + 66, + 71, + 109, + 255, + 69, + 76, + 105, + 255, + 74, + 81, + 110, + 255, + 73, + 80, + 109, + 255, + 69, + 76, + 105, + 255, + 90, + 98, + 122, + 255, + 40, + 46, + 82, + 255, + 25, + 29, + 73, + 255, + 24, + 29, + 71, + 255, + 25, + 29, + 76, + 255, + 24, + 28, + 76, + 255, + 21, + 24, + 75, + 255, + 25, + 28, + 80, + 255, + 29, + 33, + 81, + 255, + 25, + 31, + 79, + 255, + 25, + 30, + 71, + 255, + 26, + 26, + 61, + 255, + 28, + 27, + 66, + 255, + 33, + 34, + 79, + 255, + 52, + 55, + 97, + 255, + 71, + 77, + 112, + 255, + 72, + 76, + 113, + 255, + 74, + 78, + 115, + 255, + 78, + 82, + 119, + 255, + 55, + 59, + 96, + 255, + 77, + 83, + 115, + 255, + 80, + 86, + 118, + 255, + 83, + 89, + 121, + 255, + 85, + 91, + 123, + 255, + 87, + 94, + 122, + 255, + 90, + 96, + 127, + 255, + 99, + 104, + 134, + 255, + 105, + 109, + 135, + 255, + 118, + 119, + 138, + 255, + 188, + 190, + 186, + 255, + 198, + 195, + 172, + 255, + 198, + 189, + 176, + 255, + 197, + 191, + 165, + 255, + 201, + 189, + 133, + 255, + 206, + 186, + 122, + 255, + 207, + 191, + 122, + 255, + 211, + 190, + 123, + 255, + 213, + 192, + 125, + 255, + 216, + 195, + 128, + 255, + 219, + 198, + 131, + 255, + 219, + 200, + 131, + 255, + 221, + 202, + 133, + 255, + 225, + 203, + 135, + 255, + 227, + 204, + 136, + 255, + 226, + 203, + 142, + 255, + 214, + 183, + 147, + 255, + 207, + 179, + 164, + 255, + 190, + 178, + 182, + 255, + 216, + 214, + 164, + 255, + 231, + 206, + 148, + 255, + 239, + 211, + 138, + 255, + 229, + 214, + 158, + 255, + 233, + 213, + 153, + 255, + 234, + 214, + 154, + 255, + 235, + 215, + 155, + 255, + 236, + 216, + 156, + 255, + 235, + 216, + 157, + 255, + 235, + 216, + 158, + 255, + 236, + 217, + 160, + 255, + 236, + 217, + 161, + 255, + 228, + 220, + 191, + 255, + 226, + 218, + 171, + 255, + 226, + 215, + 160, + 255, + 193, + 172, + 154, + 255, + 223, + 216, + 162, + 255, + 231, + 215, + 158, + 255, + 237, + 218, + 161, + 255, + 234, + 218, + 167, + 255, + 235, + 218, + 164, + 255, + 235, + 218, + 164, + 255, + 235, + 218, + 164, + 255, + 235, + 218, + 164, + 255, + 234, + 217, + 180, + 255, + 179, + 160, + 172, + 255, + 181, + 162, + 174, + 255, + 236, + 221, + 181, + 255, + 234, + 218, + 166, + 255, + 234, + 218, + 166, + 255, + 233, + 217, + 165, + 255, + 233, + 217, + 165, + 255, + 232, + 216, + 166, + 255, + 231, + 215, + 166, + 255, + 230, + 214, + 166, + 255, + 231, + 215, + 167, + 255, + 223, + 198, + 168, + 255, + 214, + 184, + 185, + 255, + 214, + 189, + 176, + 255, + 230, + 212, + 165, + 255, + 229, + 211, + 162, + 255, + 229, + 211, + 162, + 255, + 228, + 210, + 161, + 255, + 227, + 209, + 160, + 255, + 225, + 207, + 168, + 255, + 225, + 209, + 176, + 255, + 222, + 208, + 173, + 255, + 214, + 202, + 161, + 255, + 187, + 169, + 150, + 255, + 208, + 185, + 161, + 255, + 220, + 204, + 153, + 255, + 211, + 202, + 151, + 255, + 219, + 205, + 178, + 255, + 166, + 160, + 180, + 255, + 158, + 147, + 153, + 255, + 212, + 187, + 165, + 255, + 152, + 148, + 157, + 255, + 113, + 109, + 142, + 255, + 94, + 95, + 140, + 255, + 83, + 89, + 131, + 255, + 81, + 85, + 132, + 255, + 81, + 85, + 132, + 255, + 81, + 85, + 132, + 255, + 85, + 89, + 136, + 255, + 121, + 121, + 156, + 255, + 119, + 120, + 150, + 255, + 122, + 123, + 154, + 255, + 122, + 122, + 159, + 255, + 127, + 127, + 161, + 255, + 122, + 123, + 154, + 255, + 123, + 124, + 154, + 255, + 123, + 124, + 154, + 255, + 118, + 117, + 149, + 255, + 114, + 116, + 147, + 255, + 107, + 110, + 152, + 255, + 88, + 92, + 146, + 255, + 78, + 87, + 142, + 255, + 76, + 85, + 142, + 255, + 75, + 84, + 142, + 255, + 62, + 71, + 130, + 255, + 67, + 73, + 135, + 255, + 59, + 62, + 130, + 255, + 56, + 57, + 130, + 255, + 55, + 54, + 132, + 255, + 54, + 54, + 126, + 255, + 53, + 53, + 125, + 255, + 54, + 54, + 126, + 255, + 53, + 53, + 125, + 255, + 52, + 51, + 127, + 255, + 51, + 50, + 126, + 255, + 51, + 50, + 126, + 255, + 51, + 50, + 126, + 255, + 51, + 50, + 126, + 255, + 51, + 49, + 125, + 255, + 49, + 48, + 115, + 255, + 48, + 47, + 103, + 255, + 49, + 46, + 103, + 255, + 47, + 46, + 104, + 255, + 48, + 47, + 114, + 255, + 50, + 49, + 124, + 255, + 50, + 50, + 122, + 255, + 50, + 50, + 124, + 255, + 51, + 50, + 126, + 255, + 52, + 51, + 128, + 255, + 53, + 51, + 134, + 255, + 53, + 51, + 134, + 255, + 54, + 52, + 135, + 255, + 55, + 53, + 136, + 255, + 55, + 52, + 139, + 255, + 55, + 53, + 136, + 255, + 56, + 55, + 133, + 255, + 56, + 55, + 130, + 255, + 54, + 54, + 124, + 255, + 53, + 53, + 118, + 255, + 52, + 53, + 110, + 255, + 53, + 53, + 106, + 255, + 53, + 52, + 107, + 255, + 53, + 52, + 107, + 255, + 53, + 52, + 107, + 255, + 54, + 53, + 108, + 255, + 55, + 55, + 108, + 255, + 54, + 54, + 108, + 255, + 55, + 54, + 109, + 255, + 55, + 54, + 111, + 255, + 56, + 55, + 113, + 255, + 57, + 56, + 114, + 255, + 60, + 59, + 117, + 255, + 65, + 64, + 122, + 255, + 76, + 75, + 135, + 255, + 97, + 96, + 156, + 255, + 98, + 97, + 157, + 255, + 101, + 100, + 160, + 255, + 102, + 101, + 161, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 162, + 255, + 103, + 102, + 160, + 255, + 102, + 101, + 159, + 255, + 102, + 101, + 159, + 255, + 101, + 100, + 158, + 255, + 100, + 99, + 159, + 255, + 98, + 97, + 157, + 255, + 93, + 92, + 152, + 255, + 83, + 82, + 142, + 255, + 67, + 67, + 120, + 255, + 63, + 63, + 116, + 255, + 60, + 60, + 113, + 255, + 60, + 60, + 113, + 255, + 65, + 64, + 121, + 255, + 74, + 73, + 130, + 255, + 92, + 91, + 148, + 255, + 97, + 96, + 153, + 255, + 99, + 99, + 151, + 255, + 99, + 99, + 151, + 255, + 100, + 100, + 152, + 255, + 100, + 100, + 152, + 255, + 99, + 99, + 151, + 255, + 99, + 99, + 151, + 255, + 99, + 99, + 151, + 255, + 98, + 98, + 150, + 255, + 98, + 98, + 150, + 255, + 97, + 97, + 149, + 255, + 97, + 97, + 149, + 255, + 13, + 15, + 61, + 255, + 5, + 4, + 19, + 255, + 4, + 4, + 10, + 255, + 3, + 8, + 37, + 255, + 6, + 11, + 48, + 255, + 0, + 1, + 6, + 255, + 1, + 1, + 0, + 255, + 5, + 4, + 17, + 255, + 3, + 7, + 20, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 2, + 255, + 0, + 0, + 4, + 255, + 2, + 0, + 0, + 255, + 3, + 0, + 0, + 255, + 0, + 1, + 2, + 255, + 0, + 1, + 5, + 255, + 2, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 2, + 2, + 1, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 5, + 255, + 3, + 3, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 6, + 0, + 255, + 2, + 2, + 1, + 255, + 0, + 1, + 15, + 255, + 25, + 27, + 87, + 255, + 2, + 1, + 18, + 255, + 1, + 0, + 0, + 255, + 2, + 1, + 17, + 255, + 35, + 34, + 85, + 255, + 0, + 4, + 11, + 255, + 2, + 0, + 2, + 255, + 2, + 0, + 5, + 255, + 0, + 0, + 16, + 255, + 2, + 3, + 7, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 2, + 1, + 6, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 4, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 7, + 0, + 9, + 255, + 2, + 1, + 6, + 255, + 0, + 0, + 4, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 10, + 6, + 32, + 255, + 0, + 0, + 27, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 17, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 7, + 255, + 2, + 3, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 7, + 255, + 0, + 1, + 1, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 29, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 17, + 255, + 2, + 2, + 27, + 255, + 16, + 14, + 54, + 255, + 0, + 0, + 24, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 24, + 255, + 9, + 7, + 45, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 26, + 255, + 2, + 2, + 27, + 255, + 0, + 6, + 30, + 255, + 0, + 6, + 30, + 255, + 0, + 6, + 30, + 255, + 1, + 7, + 31, + 255, + 8, + 10, + 35, + 255, + 9, + 11, + 36, + 255, + 10, + 12, + 37, + 255, + 11, + 13, + 38, + 255, + 10, + 12, + 37, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 14, + 15, + 43, + 255, + 21, + 22, + 52, + 255, + 56, + 58, + 82, + 255, + 79, + 82, + 102, + 255, + 82, + 85, + 100, + 255, + 83, + 86, + 101, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 82, + 88, + 101, + 255, + 82, + 88, + 102, + 255, + 78, + 84, + 100, + 255, + 75, + 80, + 99, + 255, + 79, + 85, + 101, + 255, + 82, + 88, + 104, + 255, + 82, + 88, + 104, + 255, + 83, + 89, + 105, + 255, + 77, + 80, + 95, + 255, + 50, + 53, + 70, + 255, + 49, + 52, + 72, + 255, + 48, + 50, + 71, + 255, + 42, + 48, + 72, + 255, + 47, + 52, + 74, + 255, + 53, + 55, + 77, + 255, + 61, + 62, + 83, + 255, + 70, + 73, + 88, + 255, + 85, + 91, + 107, + 255, + 76, + 82, + 107, + 255, + 54, + 60, + 94, + 255, + 54, + 62, + 98, + 255, + 55, + 62, + 99, + 255, + 59, + 64, + 97, + 255, + 75, + 81, + 107, + 255, + 79, + 83, + 109, + 255, + 80, + 85, + 106, + 255, + 79, + 83, + 108, + 255, + 69, + 72, + 103, + 255, + 66, + 73, + 102, + 255, + 64, + 70, + 102, + 255, + 66, + 72, + 106, + 255, + 67, + 73, + 109, + 255, + 72, + 78, + 111, + 255, + 75, + 83, + 105, + 255, + 83, + 91, + 114, + 255, + 64, + 70, + 103, + 255, + 54, + 58, + 95, + 255, + 27, + 30, + 71, + 255, + 23, + 26, + 69, + 255, + 25, + 28, + 73, + 255, + 25, + 28, + 72, + 255, + 25, + 28, + 73, + 255, + 25, + 27, + 75, + 255, + 23, + 25, + 74, + 255, + 24, + 27, + 77, + 255, + 23, + 31, + 77, + 255, + 26, + 32, + 74, + 255, + 25, + 24, + 65, + 255, + 27, + 27, + 65, + 255, + 29, + 32, + 66, + 255, + 34, + 38, + 74, + 255, + 67, + 73, + 114, + 255, + 69, + 78, + 109, + 255, + 72, + 79, + 108, + 255, + 71, + 75, + 103, + 255, + 75, + 77, + 105, + 255, + 86, + 86, + 68, + 255, + 123, + 120, + 140, + 255, + 73, + 76, + 94, + 255, + 89, + 96, + 106, + 255, + 84, + 87, + 109, + 255, + 93, + 95, + 109, + 255, + 154, + 154, + 154, + 255, + 185, + 186, + 162, + 255, + 187, + 181, + 167, + 255, + 188, + 183, + 169, + 255, + 192, + 189, + 174, + 255, + 189, + 188, + 174, + 255, + 199, + 188, + 159, + 255, + 197, + 186, + 139, + 255, + 206, + 190, + 123, + 255, + 211, + 191, + 124, + 255, + 214, + 192, + 124, + 255, + 215, + 193, + 125, + 255, + 217, + 196, + 125, + 255, + 220, + 199, + 128, + 255, + 223, + 200, + 131, + 255, + 224, + 202, + 128, + 255, + 225, + 201, + 135, + 255, + 223, + 196, + 144, + 255, + 201, + 171, + 143, + 255, + 199, + 178, + 160, + 255, + 153, + 134, + 140, + 255, + 219, + 212, + 166, + 255, + 231, + 210, + 143, + 255, + 231, + 210, + 144, + 255, + 233, + 212, + 147, + 255, + 234, + 213, + 150, + 255, + 234, + 213, + 147, + 255, + 235, + 214, + 148, + 255, + 236, + 215, + 149, + 255, + 236, + 215, + 149, + 255, + 236, + 215, + 152, + 255, + 236, + 214, + 154, + 255, + 238, + 216, + 156, + 255, + 239, + 216, + 155, + 255, + 233, + 210, + 152, + 255, + 231, + 214, + 160, + 255, + 214, + 198, + 165, + 255, + 238, + 223, + 175, + 255, + 236, + 217, + 158, + 255, + 236, + 217, + 165, + 255, + 235, + 218, + 165, + 255, + 234, + 220, + 159, + 255, + 235, + 218, + 162, + 255, + 235, + 218, + 162, + 255, + 235, + 218, + 162, + 255, + 236, + 219, + 163, + 255, + 236, + 220, + 177, + 255, + 170, + 153, + 170, + 255, + 176, + 152, + 166, + 255, + 171, + 159, + 153, + 255, + 228, + 215, + 161, + 255, + 233, + 215, + 157, + 255, + 235, + 214, + 167, + 255, + 231, + 216, + 165, + 255, + 233, + 215, + 165, + 255, + 233, + 216, + 163, + 255, + 232, + 215, + 161, + 255, + 231, + 214, + 159, + 255, + 231, + 213, + 165, + 255, + 211, + 184, + 177, + 255, + 215, + 185, + 183, + 255, + 214, + 188, + 164, + 255, + 226, + 212, + 166, + 255, + 224, + 209, + 168, + 255, + 228, + 212, + 176, + 255, + 228, + 212, + 177, + 255, + 229, + 207, + 167, + 255, + 225, + 204, + 160, + 255, + 227, + 206, + 158, + 255, + 225, + 205, + 153, + 255, + 211, + 198, + 156, + 255, + 180, + 164, + 149, + 255, + 212, + 196, + 164, + 255, + 219, + 200, + 143, + 255, + 215, + 195, + 153, + 255, + 167, + 161, + 145, + 255, + 143, + 137, + 163, + 255, + 143, + 135, + 145, + 255, + 199, + 181, + 158, + 255, + 120, + 116, + 122, + 255, + 97, + 101, + 138, + 255, + 90, + 93, + 143, + 255, + 81, + 85, + 132, + 255, + 79, + 83, + 130, + 255, + 80, + 84, + 131, + 255, + 83, + 87, + 134, + 255, + 120, + 121, + 150, + 255, + 119, + 120, + 151, + 255, + 122, + 122, + 156, + 255, + 124, + 124, + 160, + 255, + 125, + 126, + 157, + 255, + 124, + 125, + 156, + 255, + 121, + 122, + 153, + 255, + 120, + 121, + 152, + 255, + 120, + 118, + 154, + 255, + 114, + 117, + 145, + 255, + 105, + 111, + 144, + 255, + 82, + 89, + 136, + 255, + 80, + 85, + 139, + 255, + 71, + 82, + 139, + 255, + 70, + 79, + 136, + 255, + 58, + 62, + 118, + 255, + 55, + 58, + 125, + 255, + 54, + 56, + 129, + 255, + 53, + 55, + 128, + 255, + 52, + 55, + 123, + 255, + 54, + 52, + 125, + 255, + 53, + 51, + 124, + 255, + 53, + 51, + 124, + 255, + 53, + 51, + 124, + 255, + 51, + 51, + 123, + 255, + 50, + 50, + 123, + 255, + 50, + 50, + 124, + 255, + 49, + 48, + 124, + 255, + 49, + 48, + 125, + 255, + 50, + 48, + 121, + 255, + 49, + 48, + 115, + 255, + 46, + 44, + 107, + 255, + 48, + 45, + 101, + 255, + 46, + 45, + 103, + 255, + 47, + 46, + 113, + 255, + 48, + 47, + 123, + 255, + 50, + 48, + 123, + 255, + 51, + 49, + 124, + 255, + 51, + 49, + 124, + 255, + 52, + 50, + 125, + 255, + 51, + 50, + 126, + 255, + 52, + 51, + 128, + 255, + 52, + 51, + 129, + 255, + 53, + 52, + 132, + 255, + 53, + 51, + 134, + 255, + 54, + 53, + 132, + 255, + 54, + 53, + 128, + 255, + 53, + 53, + 125, + 255, + 54, + 53, + 124, + 255, + 51, + 51, + 111, + 255, + 51, + 51, + 105, + 255, + 53, + 50, + 105, + 255, + 49, + 51, + 102, + 255, + 49, + 51, + 102, + 255, + 50, + 52, + 103, + 255, + 50, + 52, + 103, + 255, + 51, + 52, + 106, + 255, + 51, + 52, + 106, + 255, + 51, + 52, + 106, + 255, + 52, + 53, + 107, + 255, + 56, + 53, + 107, + 255, + 59, + 56, + 110, + 255, + 61, + 58, + 112, + 255, + 68, + 65, + 119, + 255, + 93, + 93, + 147, + 255, + 98, + 98, + 152, + 255, + 99, + 99, + 153, + 255, + 101, + 101, + 155, + 255, + 103, + 102, + 158, + 255, + 103, + 102, + 158, + 255, + 103, + 102, + 158, + 255, + 103, + 102, + 158, + 255, + 102, + 102, + 156, + 255, + 102, + 102, + 156, + 255, + 101, + 101, + 155, + 255, + 100, + 100, + 154, + 255, + 99, + 99, + 153, + 255, + 96, + 96, + 150, + 255, + 92, + 92, + 146, + 255, + 68, + 68, + 122, + 255, + 64, + 61, + 115, + 255, + 59, + 56, + 110, + 255, + 58, + 55, + 109, + 255, + 60, + 57, + 111, + 255, + 62, + 59, + 112, + 255, + 74, + 71, + 124, + 255, + 92, + 89, + 142, + 255, + 97, + 94, + 147, + 255, + 97, + 97, + 149, + 255, + 99, + 99, + 149, + 255, + 100, + 100, + 150, + 255, + 100, + 101, + 149, + 255, + 99, + 99, + 149, + 255, + 99, + 99, + 151, + 255, + 96, + 97, + 152, + 255, + 96, + 97, + 153, + 255, + 99, + 96, + 151, + 255, + 96, + 99, + 153, + 255, + 95, + 97, + 153, + 255, + 3, + 7, + 24, + 255, + 4, + 5, + 9, + 255, + 6, + 4, + 24, + 255, + 11, + 11, + 56, + 255, + 29, + 33, + 86, + 255, + 0, + 4, + 12, + 255, + 0, + 2, + 0, + 255, + 9, + 12, + 38, + 255, + 48, + 54, + 113, + 255, + 0, + 3, + 20, + 255, + 1, + 1, + 3, + 255, + 2, + 0, + 14, + 255, + 0, + 4, + 26, + 255, + 0, + 5, + 13, + 255, + 0, + 3, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 5, + 255, + 1, + 1, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 4, + 255, + 4, + 0, + 0, + 255, + 1, + 4, + 0, + 255, + 0, + 2, + 13, + 255, + 3, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 16, + 255, + 3, + 1, + 37, + 255, + 0, + 2, + 13, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 14, + 255, + 38, + 37, + 79, + 255, + 0, + 0, + 39, + 255, + 1, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 21, + 255, + 0, + 6, + 28, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 2, + 0, + 255, + 1, + 2, + 5, + 255, + 0, + 1, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 4, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 7, + 255, + 2, + 0, + 13, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 7, + 255, + 2, + 1, + 16, + 255, + 7, + 5, + 27, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 18, + 255, + 3, + 2, + 18, + 255, + 25, + 22, + 52, + 255, + 2, + 0, + 23, + 255, + 1, + 2, + 5, + 255, + 1, + 0, + 16, + 255, + 2, + 0, + 20, + 255, + 2, + 0, + 21, + 255, + 2, + 0, + 20, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 18, + 255, + 2, + 2, + 25, + 255, + 0, + 0, + 29, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 21, + 255, + 4, + 5, + 26, + 255, + 6, + 6, + 31, + 255, + 0, + 0, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 26, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 21, + 255, + 0, + 4, + 29, + 255, + 0, + 4, + 29, + 255, + 1, + 5, + 30, + 255, + 5, + 9, + 34, + 255, + 10, + 12, + 37, + 255, + 8, + 10, + 35, + 255, + 10, + 12, + 37, + 255, + 11, + 13, + 38, + 255, + 10, + 12, + 37, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 14, + 15, + 43, + 255, + 23, + 24, + 52, + 255, + 74, + 76, + 99, + 255, + 82, + 85, + 103, + 255, + 83, + 87, + 100, + 255, + 83, + 86, + 101, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 81, + 87, + 101, + 255, + 76, + 82, + 98, + 255, + 77, + 82, + 101, + 255, + 82, + 87, + 107, + 255, + 81, + 86, + 106, + 255, + 83, + 88, + 108, + 255, + 79, + 84, + 104, + 255, + 74, + 79, + 99, + 255, + 68, + 70, + 92, + 255, + 58, + 60, + 83, + 255, + 60, + 62, + 85, + 255, + 61, + 63, + 87, + 255, + 57, + 62, + 90, + 255, + 65, + 70, + 93, + 255, + 74, + 77, + 94, + 255, + 86, + 88, + 101, + 255, + 88, + 92, + 102, + 255, + 87, + 94, + 104, + 255, + 83, + 90, + 107, + 255, + 64, + 71, + 97, + 255, + 57, + 66, + 99, + 255, + 57, + 64, + 98, + 255, + 62, + 67, + 98, + 255, + 77, + 83, + 106, + 255, + 78, + 83, + 104, + 255, + 83, + 88, + 107, + 255, + 81, + 86, + 109, + 255, + 69, + 72, + 103, + 255, + 65, + 71, + 103, + 255, + 66, + 72, + 104, + 255, + 67, + 73, + 107, + 255, + 69, + 75, + 109, + 255, + 75, + 79, + 115, + 255, + 79, + 85, + 108, + 255, + 85, + 92, + 111, + 255, + 75, + 81, + 108, + 255, + 29, + 33, + 70, + 255, + 20, + 23, + 64, + 255, + 21, + 24, + 67, + 255, + 22, + 25, + 70, + 255, + 24, + 27, + 71, + 255, + 23, + 26, + 71, + 255, + 28, + 30, + 78, + 255, + 26, + 28, + 77, + 255, + 24, + 27, + 72, + 255, + 21, + 25, + 69, + 255, + 30, + 31, + 76, + 255, + 27, + 24, + 76, + 255, + 27, + 27, + 64, + 255, + 26, + 29, + 60, + 255, + 33, + 37, + 66, + 255, + 72, + 75, + 108, + 255, + 70, + 72, + 119, + 255, + 71, + 74, + 115, + 255, + 76, + 79, + 114, + 255, + 80, + 84, + 114, + 255, + 84, + 75, + 81, + 255, + 154, + 155, + 71, + 255, + 166, + 160, + 76, + 255, + 155, + 139, + 97, + 255, + 154, + 137, + 85, + 255, + 164, + 147, + 101, + 255, + 194, + 185, + 153, + 255, + 186, + 176, + 168, + 255, + 187, + 182, + 170, + 255, + 191, + 185, + 171, + 255, + 194, + 185, + 166, + 255, + 198, + 187, + 166, + 255, + 203, + 187, + 145, + 255, + 204, + 189, + 141, + 255, + 208, + 194, + 142, + 255, + 207, + 192, + 145, + 255, + 210, + 194, + 136, + 255, + 210, + 194, + 134, + 255, + 212, + 197, + 132, + 255, + 215, + 200, + 133, + 255, + 221, + 201, + 128, + 255, + 223, + 202, + 130, + 255, + 218, + 189, + 139, + 255, + 208, + 171, + 144, + 255, + 215, + 188, + 162, + 255, + 173, + 158, + 171, + 255, + 223, + 217, + 182, + 255, + 227, + 208, + 132, + 255, + 231, + 211, + 140, + 255, + 231, + 211, + 142, + 255, + 233, + 212, + 145, + 255, + 234, + 213, + 147, + 255, + 234, + 213, + 146, + 255, + 235, + 214, + 147, + 255, + 236, + 215, + 148, + 255, + 236, + 215, + 148, + 255, + 236, + 216, + 147, + 255, + 236, + 216, + 148, + 255, + 235, + 216, + 150, + 255, + 234, + 215, + 156, + 255, + 228, + 213, + 146, + 255, + 204, + 187, + 150, + 255, + 219, + 200, + 169, + 255, + 241, + 220, + 158, + 255, + 239, + 217, + 150, + 255, + 238, + 218, + 155, + 255, + 237, + 218, + 159, + 255, + 235, + 219, + 160, + 255, + 235, + 217, + 159, + 255, + 235, + 217, + 159, + 255, + 235, + 217, + 159, + 255, + 236, + 218, + 160, + 255, + 230, + 219, + 174, + 255, + 169, + 147, + 168, + 255, + 180, + 147, + 169, + 255, + 177, + 154, + 169, + 255, + 236, + 219, + 182, + 255, + 230, + 213, + 152, + 255, + 238, + 218, + 159, + 255, + 239, + 218, + 156, + 255, + 233, + 217, + 158, + 255, + 233, + 216, + 163, + 255, + 232, + 214, + 164, + 255, + 231, + 213, + 163, + 255, + 228, + 214, + 168, + 255, + 204, + 187, + 169, + 255, + 206, + 183, + 184, + 255, + 229, + 203, + 206, + 255, + 233, + 214, + 180, + 255, + 224, + 207, + 161, + 255, + 224, + 208, + 157, + 255, + 226, + 210, + 161, + 255, + 229, + 209, + 157, + 255, + 227, + 207, + 153, + 255, + 227, + 208, + 151, + 255, + 225, + 206, + 147, + 255, + 223, + 209, + 147, + 255, + 196, + 179, + 159, + 255, + 199, + 179, + 164, + 255, + 224, + 205, + 155, + 255, + 226, + 202, + 148, + 255, + 207, + 195, + 166, + 255, + 131, + 125, + 137, + 255, + 138, + 134, + 161, + 255, + 131, + 120, + 137, + 255, + 203, + 191, + 159, + 255, + 116, + 102, + 134, + 255, + 91, + 97, + 123, + 255, + 81, + 84, + 127, + 255, + 77, + 80, + 126, + 255, + 78, + 81, + 126, + 255, + 90, + 93, + 135, + 255, + 116, + 117, + 146, + 255, + 118, + 119, + 149, + 255, + 122, + 123, + 153, + 255, + 124, + 125, + 156, + 255, + 123, + 124, + 155, + 255, + 122, + 123, + 154, + 255, + 121, + 122, + 153, + 255, + 117, + 118, + 149, + 255, + 119, + 120, + 150, + 255, + 114, + 117, + 142, + 255, + 113, + 119, + 146, + 255, + 103, + 110, + 146, + 255, + 81, + 86, + 138, + 255, + 70, + 77, + 139, + 255, + 66, + 73, + 135, + 255, + 56, + 59, + 117, + 255, + 54, + 57, + 118, + 255, + 52, + 53, + 123, + 255, + 51, + 52, + 124, + 255, + 50, + 52, + 120, + 255, + 52, + 50, + 123, + 255, + 51, + 49, + 122, + 255, + 52, + 50, + 123, + 255, + 49, + 47, + 120, + 255, + 48, + 48, + 120, + 255, + 47, + 47, + 120, + 255, + 48, + 48, + 122, + 255, + 47, + 46, + 122, + 255, + 47, + 46, + 122, + 255, + 48, + 46, + 119, + 255, + 46, + 45, + 113, + 255, + 46, + 44, + 110, + 255, + 47, + 43, + 102, + 255, + 45, + 44, + 102, + 255, + 47, + 46, + 112, + 255, + 46, + 45, + 119, + 255, + 47, + 45, + 118, + 255, + 48, + 46, + 119, + 255, + 49, + 47, + 120, + 255, + 50, + 48, + 121, + 255, + 48, + 48, + 122, + 255, + 49, + 48, + 124, + 255, + 50, + 49, + 127, + 255, + 51, + 50, + 128, + 255, + 51, + 49, + 130, + 255, + 52, + 51, + 128, + 255, + 51, + 51, + 124, + 255, + 50, + 50, + 121, + 255, + 50, + 49, + 117, + 255, + 47, + 48, + 105, + 255, + 49, + 49, + 100, + 255, + 51, + 48, + 100, + 255, + 48, + 48, + 98, + 255, + 48, + 48, + 98, + 255, + 49, + 49, + 99, + 255, + 49, + 49, + 99, + 255, + 49, + 49, + 100, + 255, + 49, + 49, + 100, + 255, + 50, + 50, + 102, + 255, + 51, + 51, + 103, + 255, + 55, + 52, + 105, + 255, + 58, + 55, + 108, + 255, + 63, + 60, + 113, + 255, + 81, + 78, + 131, + 255, + 92, + 92, + 146, + 255, + 97, + 97, + 151, + 255, + 99, + 99, + 153, + 255, + 101, + 101, + 155, + 255, + 101, + 101, + 154, + 255, + 101, + 101, + 154, + 255, + 101, + 101, + 154, + 255, + 101, + 101, + 154, + 255, + 101, + 101, + 155, + 255, + 101, + 101, + 155, + 255, + 99, + 99, + 153, + 255, + 98, + 98, + 152, + 255, + 95, + 95, + 149, + 255, + 93, + 93, + 147, + 255, + 80, + 80, + 134, + 255, + 63, + 63, + 117, + 255, + 58, + 55, + 108, + 255, + 56, + 53, + 106, + 255, + 56, + 53, + 106, + 255, + 57, + 54, + 107, + 255, + 60, + 58, + 108, + 255, + 68, + 66, + 116, + 255, + 91, + 89, + 139, + 255, + 96, + 94, + 144, + 255, + 96, + 96, + 146, + 255, + 98, + 98, + 150, + 255, + 98, + 98, + 150, + 255, + 98, + 98, + 151, + 255, + 100, + 98, + 149, + 255, + 98, + 98, + 152, + 255, + 96, + 97, + 155, + 255, + 94, + 97, + 157, + 255, + 92, + 97, + 160, + 255, + 88, + 96, + 159, + 255, + 85, + 91, + 157, + 255, + 1, + 2, + 12, + 255, + 1, + 3, + 2, + 255, + 2, + 4, + 0, + 255, + 3, + 5, + 8, + 255, + 1, + 8, + 12, + 255, + 1, + 4, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 29, + 255, + 6, + 13, + 58, + 255, + 4, + 6, + 20, + 255, + 1, + 1, + 4, + 255, + 3, + 2, + 17, + 255, + 28, + 28, + 105, + 255, + 8, + 11, + 55, + 255, + 0, + 0, + 9, + 255, + 1, + 1, + 3, + 255, + 4, + 6, + 37, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 2, + 255, + 2, + 2, + 11, + 255, + 3, + 0, + 18, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 6, + 255, + 2, + 0, + 9, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 6, + 255, + 1, + 3, + 16, + 255, + 0, + 5, + 3, + 255, + 1, + 0, + 7, + 255, + 0, + 1, + 7, + 255, + 0, + 1, + 32, + 255, + 4, + 7, + 40, + 255, + 1, + 1, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 22, + 255, + 27, + 26, + 75, + 255, + 0, + 2, + 8, + 255, + 0, + 0, + 2, + 255, + 0, + 2, + 7, + 255, + 0, + 4, + 18, + 255, + 3, + 2, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 3, + 0, + 255, + 1, + 2, + 8, + 255, + 4, + 3, + 19, + 255, + 1, + 0, + 26, + 255, + 1, + 0, + 23, + 255, + 0, + 0, + 11, + 255, + 0, + 1, + 20, + 255, + 24, + 24, + 52, + 255, + 0, + 0, + 27, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 1, + 1, + 29, + 255, + 0, + 0, + 25, + 255, + 1, + 2, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 23, + 255, + 3, + 4, + 25, + 255, + 2, + 3, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 6, + 6, + 31, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 6, + 8, + 33, + 255, + 2, + 4, + 29, + 255, + 3, + 5, + 30, + 255, + 9, + 11, + 36, + 255, + 12, + 14, + 39, + 255, + 7, + 9, + 34, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 39, + 255, + 11, + 12, + 40, + 255, + 17, + 18, + 46, + 255, + 31, + 33, + 58, + 255, + 81, + 83, + 105, + 255, + 84, + 87, + 104, + 255, + 84, + 88, + 99, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 74, + 80, + 96, + 255, + 81, + 86, + 105, + 255, + 79, + 84, + 104, + 255, + 70, + 75, + 96, + 255, + 66, + 70, + 95, + 255, + 67, + 71, + 96, + 255, + 66, + 70, + 95, + 255, + 65, + 69, + 94, + 255, + 67, + 69, + 92, + 255, + 67, + 69, + 91, + 255, + 69, + 71, + 93, + 255, + 70, + 73, + 93, + 255, + 69, + 75, + 100, + 255, + 79, + 84, + 104, + 255, + 87, + 90, + 106, + 255, + 89, + 91, + 103, + 255, + 88, + 92, + 104, + 255, + 86, + 93, + 102, + 255, + 85, + 93, + 107, + 255, + 72, + 80, + 101, + 255, + 58, + 67, + 96, + 255, + 58, + 66, + 96, + 255, + 73, + 79, + 106, + 255, + 75, + 82, + 101, + 255, + 82, + 88, + 105, + 255, + 83, + 89, + 105, + 255, + 82, + 87, + 110, + 255, + 70, + 73, + 105, + 255, + 67, + 73, + 107, + 255, + 68, + 74, + 108, + 255, + 67, + 73, + 105, + 255, + 68, + 75, + 105, + 255, + 74, + 79, + 109, + 255, + 83, + 90, + 109, + 255, + 87, + 94, + 114, + 255, + 43, + 48, + 78, + 255, + 21, + 25, + 62, + 255, + 19, + 22, + 63, + 255, + 21, + 24, + 67, + 255, + 23, + 26, + 71, + 255, + 25, + 28, + 72, + 255, + 21, + 24, + 69, + 255, + 20, + 22, + 70, + 255, + 27, + 29, + 78, + 255, + 19, + 22, + 64, + 255, + 19, + 20, + 56, + 255, + 21, + 19, + 57, + 255, + 32, + 32, + 77, + 255, + 29, + 30, + 77, + 255, + 27, + 27, + 64, + 255, + 33, + 32, + 64, + 255, + 51, + 50, + 83, + 255, + 70, + 80, + 108, + 255, + 77, + 84, + 111, + 255, + 81, + 85, + 110, + 255, + 93, + 95, + 119, + 255, + 93, + 103, + 110, + 255, + 100, + 94, + 88, + 255, + 164, + 138, + 116, + 255, + 187, + 162, + 51, + 255, + 188, + 168, + 64, + 255, + 190, + 168, + 87, + 255, + 183, + 168, + 85, + 255, + 189, + 170, + 118, + 255, + 186, + 174, + 123, + 255, + 189, + 176, + 123, + 255, + 194, + 179, + 122, + 255, + 195, + 180, + 121, + 255, + 204, + 184, + 113, + 255, + 206, + 186, + 115, + 255, + 208, + 191, + 121, + 255, + 208, + 190, + 125, + 255, + 208, + 190, + 135, + 255, + 211, + 193, + 138, + 255, + 219, + 201, + 147, + 255, + 225, + 207, + 152, + 255, + 223, + 202, + 148, + 255, + 213, + 188, + 154, + 255, + 210, + 185, + 147, + 255, + 227, + 206, + 140, + 255, + 155, + 138, + 131, + 255, + 220, + 214, + 165, + 255, + 219, + 211, + 136, + 255, + 234, + 208, + 140, + 255, + 231, + 212, + 137, + 255, + 232, + 212, + 139, + 255, + 232, + 212, + 140, + 255, + 234, + 214, + 143, + 255, + 234, + 214, + 145, + 255, + 234, + 214, + 145, + 255, + 234, + 214, + 145, + 255, + 236, + 216, + 147, + 255, + 236, + 216, + 147, + 255, + 235, + 216, + 146, + 255, + 232, + 215, + 150, + 255, + 210, + 193, + 146, + 255, + 226, + 216, + 170, + 255, + 234, + 226, + 182, + 255, + 227, + 217, + 164, + 255, + 233, + 216, + 154, + 255, + 232, + 216, + 164, + 255, + 236, + 218, + 161, + 255, + 237, + 218, + 158, + 255, + 237, + 216, + 158, + 255, + 237, + 217, + 158, + 255, + 237, + 217, + 158, + 255, + 237, + 217, + 158, + 255, + 237, + 217, + 158, + 255, + 231, + 217, + 174, + 255, + 214, + 179, + 201, + 255, + 222, + 170, + 198, + 255, + 214, + 170, + 197, + 255, + 183, + 159, + 149, + 255, + 234, + 220, + 166, + 255, + 232, + 217, + 159, + 255, + 235, + 217, + 161, + 255, + 234, + 218, + 165, + 255, + 232, + 215, + 172, + 255, + 231, + 214, + 171, + 255, + 237, + 221, + 173, + 255, + 233, + 215, + 184, + 255, + 160, + 145, + 135, + 255, + 201, + 183, + 181, + 255, + 206, + 180, + 173, + 255, + 202, + 178, + 166, + 255, + 231, + 212, + 168, + 255, + 228, + 212, + 150, + 255, + 227, + 211, + 150, + 255, + 229, + 210, + 151, + 255, + 227, + 208, + 149, + 255, + 227, + 208, + 149, + 255, + 226, + 208, + 146, + 255, + 224, + 205, + 140, + 255, + 220, + 203, + 159, + 255, + 183, + 161, + 152, + 255, + 208, + 188, + 154, + 255, + 220, + 199, + 145, + 255, + 204, + 185, + 145, + 255, + 153, + 142, + 129, + 255, + 131, + 129, + 160, + 255, + 130, + 128, + 155, + 255, + 138, + 121, + 137, + 255, + 214, + 205, + 181, + 255, + 105, + 102, + 127, + 255, + 82, + 86, + 123, + 255, + 77, + 80, + 124, + 255, + 77, + 80, + 123, + 255, + 92, + 96, + 132, + 255, + 114, + 115, + 145, + 255, + 117, + 118, + 147, + 255, + 123, + 124, + 152, + 255, + 126, + 128, + 153, + 255, + 122, + 123, + 154, + 255, + 120, + 121, + 152, + 255, + 118, + 119, + 150, + 255, + 116, + 117, + 148, + 255, + 111, + 115, + 144, + 255, + 113, + 117, + 145, + 255, + 108, + 112, + 140, + 255, + 106, + 111, + 142, + 255, + 83, + 88, + 130, + 255, + 72, + 78, + 137, + 255, + 61, + 65, + 127, + 255, + 53, + 54, + 108, + 255, + 51, + 52, + 108, + 255, + 51, + 50, + 116, + 255, + 51, + 50, + 120, + 255, + 50, + 49, + 117, + 255, + 49, + 47, + 120, + 255, + 48, + 46, + 119, + 255, + 49, + 47, + 120, + 255, + 49, + 47, + 120, + 255, + 48, + 48, + 120, + 255, + 48, + 48, + 121, + 255, + 47, + 47, + 121, + 255, + 47, + 46, + 122, + 255, + 46, + 45, + 121, + 255, + 47, + 45, + 120, + 255, + 46, + 44, + 116, + 255, + 46, + 43, + 114, + 255, + 46, + 42, + 103, + 255, + 43, + 42, + 100, + 255, + 45, + 45, + 108, + 255, + 45, + 45, + 116, + 255, + 47, + 45, + 116, + 255, + 48, + 46, + 117, + 255, + 47, + 45, + 116, + 255, + 47, + 45, + 116, + 255, + 46, + 46, + 118, + 255, + 47, + 47, + 120, + 255, + 49, + 48, + 124, + 255, + 49, + 48, + 125, + 255, + 50, + 49, + 127, + 255, + 50, + 49, + 124, + 255, + 49, + 49, + 121, + 255, + 48, + 48, + 118, + 255, + 48, + 48, + 111, + 255, + 45, + 46, + 100, + 255, + 46, + 47, + 94, + 255, + 48, + 46, + 93, + 255, + 48, + 46, + 95, + 255, + 48, + 46, + 95, + 255, + 48, + 46, + 95, + 255, + 49, + 47, + 96, + 255, + 49, + 47, + 95, + 255, + 49, + 47, + 95, + 255, + 50, + 48, + 96, + 255, + 52, + 50, + 98, + 255, + 53, + 51, + 101, + 255, + 58, + 56, + 106, + 255, + 63, + 61, + 111, + 255, + 96, + 94, + 144, + 255, + 95, + 95, + 147, + 255, + 98, + 98, + 150, + 255, + 100, + 100, + 152, + 255, + 100, + 100, + 152, + 255, + 100, + 100, + 150, + 255, + 100, + 100, + 150, + 255, + 100, + 100, + 150, + 255, + 100, + 100, + 150, + 255, + 100, + 100, + 152, + 255, + 100, + 100, + 152, + 255, + 98, + 98, + 150, + 255, + 96, + 96, + 148, + 255, + 91, + 91, + 143, + 255, + 89, + 89, + 141, + 255, + 63, + 63, + 115, + 255, + 58, + 58, + 110, + 255, + 56, + 54, + 104, + 255, + 54, + 52, + 102, + 255, + 54, + 52, + 102, + 255, + 55, + 53, + 103, + 255, + 58, + 56, + 105, + 255, + 67, + 65, + 114, + 255, + 89, + 87, + 136, + 255, + 95, + 93, + 142, + 255, + 95, + 95, + 145, + 255, + 97, + 97, + 149, + 255, + 97, + 96, + 151, + 255, + 95, + 94, + 151, + 255, + 95, + 96, + 154, + 255, + 93, + 97, + 159, + 255, + 89, + 97, + 164, + 255, + 88, + 98, + 169, + 255, + 88, + 106, + 181, + 255, + 83, + 98, + 175, + 255, + 78, + 90, + 170, + 255, + 1, + 1, + 4, + 255, + 0, + 1, + 5, + 255, + 1, + 1, + 8, + 255, + 3, + 2, + 11, + 255, + 3, + 1, + 6, + 255, + 5, + 0, + 8, + 255, + 4, + 0, + 6, + 255, + 3, + 5, + 1, + 255, + 1, + 5, + 1, + 255, + 2, + 1, + 0, + 255, + 1, + 0, + 4, + 255, + 1, + 2, + 14, + 255, + 1, + 3, + 27, + 255, + 1, + 5, + 8, + 255, + 0, + 1, + 0, + 255, + 3, + 1, + 13, + 255, + 15, + 16, + 73, + 255, + 2, + 1, + 42, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 0, + 255, + 4, + 7, + 33, + 255, + 24, + 21, + 74, + 255, + 0, + 2, + 8, + 255, + 0, + 0, + 4, + 255, + 0, + 3, + 0, + 255, + 3, + 2, + 15, + 255, + 2, + 3, + 7, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 4, + 255, + 2, + 2, + 0, + 255, + 1, + 0, + 6, + 255, + 3, + 1, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 2, + 3, + 0, + 255, + 2, + 0, + 4, + 255, + 2, + 0, + 1, + 255, + 1, + 0, + 4, + 255, + 0, + 3, + 0, + 255, + 0, + 6, + 11, + 255, + 0, + 1, + 26, + 255, + 0, + 1, + 12, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 11, + 255, + 35, + 38, + 91, + 255, + 2, + 0, + 15, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 3, + 1, + 14, + 255, + 4, + 2, + 13, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 4, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 9, + 255, + 2, + 3, + 9, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 22, + 255, + 0, + 2, + 14, + 255, + 3, + 5, + 29, + 255, + 1, + 3, + 27, + 255, + 0, + 3, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 31, + 255, + 2, + 2, + 36, + 255, + 0, + 2, + 27, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 28, + 255, + 22, + 21, + 53, + 255, + 4, + 4, + 32, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 21, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 24, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 21, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 21, + 255, + 0, + 0, + 20, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 27, + 255, + 4, + 4, + 30, + 255, + 7, + 7, + 33, + 255, + 10, + 10, + 36, + 255, + 12, + 14, + 39, + 255, + 7, + 9, + 34, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 41, + 255, + 13, + 14, + 42, + 255, + 11, + 12, + 40, + 255, + 19, + 20, + 48, + 255, + 32, + 34, + 59, + 255, + 78, + 81, + 100, + 255, + 84, + 87, + 103, + 255, + 84, + 88, + 99, + 255, + 84, + 87, + 102, + 255, + 84, + 87, + 102, + 255, + 86, + 89, + 104, + 255, + 77, + 80, + 95, + 255, + 69, + 74, + 93, + 255, + 64, + 69, + 89, + 255, + 63, + 68, + 89, + 255, + 61, + 66, + 88, + 255, + 61, + 65, + 91, + 255, + 61, + 65, + 91, + 255, + 62, + 66, + 92, + 255, + 63, + 67, + 93, + 255, + 75, + 78, + 97, + 255, + 85, + 88, + 106, + 255, + 85, + 88, + 104, + 255, + 86, + 90, + 103, + 255, + 81, + 88, + 105, + 255, + 77, + 83, + 99, + 255, + 86, + 89, + 106, + 255, + 89, + 90, + 108, + 255, + 88, + 91, + 108, + 255, + 86, + 92, + 106, + 255, + 82, + 89, + 106, + 255, + 78, + 86, + 109, + 255, + 66, + 76, + 102, + 255, + 65, + 73, + 101, + 255, + 79, + 85, + 110, + 255, + 83, + 90, + 107, + 255, + 83, + 89, + 103, + 255, + 84, + 90, + 106, + 255, + 81, + 86, + 109, + 255, + 71, + 74, + 106, + 255, + 67, + 73, + 109, + 255, + 69, + 75, + 109, + 255, + 68, + 75, + 105, + 255, + 71, + 78, + 107, + 255, + 85, + 90, + 111, + 255, + 89, + 95, + 111, + 255, + 61, + 65, + 90, + 255, + 29, + 31, + 69, + 255, + 22, + 26, + 63, + 255, + 21, + 24, + 65, + 255, + 19, + 22, + 65, + 255, + 22, + 25, + 70, + 255, + 24, + 27, + 71, + 255, + 23, + 26, + 71, + 255, + 24, + 26, + 74, + 255, + 25, + 27, + 76, + 255, + 18, + 23, + 63, + 255, + 20, + 18, + 47, + 255, + 21, + 20, + 45, + 255, + 23, + 25, + 57, + 255, + 24, + 27, + 59, + 255, + 34, + 37, + 56, + 255, + 44, + 45, + 57, + 255, + 61, + 61, + 71, + 255, + 82, + 79, + 77, + 255, + 97, + 91, + 64, + 255, + 140, + 130, + 72, + 255, + 167, + 154, + 77, + 255, + 172, + 156, + 71, + 255, + 172, + 160, + 60, + 255, + 178, + 166, + 81, + 255, + 159, + 151, + 60, + 255, + 146, + 132, + 59, + 255, + 152, + 130, + 88, + 255, + 191, + 169, + 78, + 255, + 194, + 169, + 75, + 255, + 198, + 172, + 98, + 255, + 198, + 174, + 100, + 255, + 197, + 178, + 103, + 255, + 198, + 180, + 107, + 255, + 206, + 182, + 111, + 255, + 208, + 184, + 113, + 255, + 212, + 185, + 111, + 255, + 217, + 189, + 112, + 255, + 215, + 193, + 110, + 255, + 216, + 194, + 113, + 255, + 219, + 195, + 123, + 255, + 224, + 200, + 131, + 255, + 201, + 176, + 143, + 255, + 205, + 187, + 130, + 255, + 219, + 207, + 156, + 255, + 205, + 192, + 174, + 255, + 226, + 227, + 201, + 255, + 228, + 211, + 156, + 255, + 233, + 207, + 149, + 255, + 228, + 209, + 133, + 255, + 231, + 212, + 135, + 255, + 232, + 213, + 137, + 255, + 231, + 212, + 137, + 255, + 232, + 212, + 139, + 255, + 234, + 214, + 143, + 255, + 234, + 214, + 143, + 255, + 234, + 214, + 143, + 255, + 234, + 214, + 143, + 255, + 236, + 214, + 149, + 255, + 233, + 216, + 147, + 255, + 233, + 217, + 157, + 255, + 232, + 216, + 179, + 255, + 209, + 199, + 183, + 255, + 234, + 227, + 219, + 255, + 230, + 226, + 200, + 255, + 234, + 219, + 221, + 255, + 231, + 227, + 201, + 255, + 232, + 222, + 177, + 255, + 234, + 218, + 161, + 255, + 238, + 214, + 152, + 255, + 236, + 216, + 155, + 255, + 236, + 216, + 155, + 255, + 236, + 216, + 155, + 255, + 236, + 216, + 155, + 255, + 235, + 214, + 176, + 255, + 213, + 166, + 189, + 255, + 233, + 166, + 192, + 255, + 223, + 164, + 191, + 255, + 188, + 158, + 168, + 255, + 230, + 219, + 176, + 255, + 228, + 223, + 173, + 255, + 234, + 226, + 182, + 255, + 235, + 220, + 180, + 255, + 228, + 212, + 180, + 255, + 220, + 204, + 168, + 255, + 226, + 212, + 165, + 255, + 235, + 218, + 157, + 255, + 167, + 149, + 144, + 255, + 173, + 148, + 164, + 255, + 209, + 177, + 182, + 255, + 181, + 154, + 160, + 255, + 225, + 206, + 165, + 255, + 228, + 213, + 147, + 255, + 227, + 212, + 148, + 255, + 229, + 210, + 151, + 255, + 229, + 210, + 151, + 255, + 227, + 208, + 150, + 255, + 226, + 207, + 149, + 255, + 228, + 205, + 148, + 255, + 221, + 207, + 138, + 255, + 174, + 153, + 139, + 255, + 196, + 173, + 156, + 255, + 220, + 202, + 156, + 255, + 218, + 194, + 150, + 255, + 214, + 200, + 165, + 255, + 131, + 124, + 151, + 255, + 121, + 124, + 151, + 255, + 104, + 102, + 134, + 255, + 156, + 150, + 151, + 255, + 174, + 167, + 147, + 255, + 91, + 94, + 128, + 255, + 79, + 80, + 125, + 255, + 79, + 80, + 123, + 255, + 110, + 113, + 145, + 255, + 112, + 113, + 143, + 255, + 117, + 118, + 146, + 255, + 124, + 126, + 151, + 255, + 122, + 124, + 147, + 255, + 118, + 119, + 150, + 255, + 116, + 117, + 148, + 255, + 118, + 119, + 150, + 255, + 115, + 116, + 147, + 255, + 110, + 115, + 147, + 255, + 110, + 114, + 148, + 255, + 111, + 114, + 147, + 255, + 107, + 110, + 141, + 255, + 103, + 107, + 141, + 255, + 69, + 74, + 129, + 255, + 55, + 58, + 116, + 255, + 52, + 53, + 100, + 255, + 48, + 50, + 101, + 255, + 49, + 49, + 111, + 255, + 49, + 48, + 116, + 255, + 48, + 47, + 115, + 255, + 49, + 47, + 120, + 255, + 48, + 46, + 119, + 255, + 48, + 46, + 119, + 255, + 48, + 46, + 119, + 255, + 47, + 47, + 119, + 255, + 47, + 47, + 120, + 255, + 44, + 44, + 118, + 255, + 44, + 43, + 119, + 255, + 44, + 43, + 119, + 255, + 45, + 43, + 118, + 255, + 45, + 43, + 117, + 255, + 45, + 41, + 116, + 255, + 45, + 41, + 104, + 255, + 42, + 41, + 101, + 255, + 43, + 43, + 106, + 255, + 43, + 43, + 113, + 255, + 44, + 43, + 113, + 255, + 45, + 44, + 114, + 255, + 45, + 44, + 114, + 255, + 45, + 44, + 114, + 255, + 44, + 44, + 114, + 255, + 45, + 45, + 117, + 255, + 47, + 47, + 121, + 255, + 47, + 46, + 122, + 255, + 47, + 46, + 123, + 255, + 47, + 46, + 121, + 255, + 47, + 47, + 117, + 255, + 46, + 47, + 114, + 255, + 45, + 45, + 106, + 255, + 43, + 45, + 96, + 255, + 43, + 44, + 89, + 255, + 45, + 44, + 88, + 255, + 47, + 44, + 91, + 255, + 47, + 44, + 91, + 255, + 48, + 45, + 92, + 255, + 48, + 45, + 92, + 255, + 48, + 45, + 90, + 255, + 48, + 45, + 90, + 255, + 49, + 46, + 91, + 255, + 51, + 48, + 93, + 255, + 52, + 50, + 99, + 255, + 59, + 57, + 106, + 255, + 80, + 78, + 127, + 255, + 93, + 91, + 140, + 255, + 95, + 95, + 145, + 255, + 98, + 98, + 148, + 255, + 99, + 99, + 149, + 255, + 99, + 99, + 149, + 255, + 99, + 100, + 146, + 255, + 99, + 100, + 146, + 255, + 99, + 100, + 146, + 255, + 99, + 100, + 146, + 255, + 98, + 98, + 148, + 255, + 98, + 98, + 148, + 255, + 97, + 97, + 147, + 255, + 95, + 95, + 145, + 255, + 93, + 93, + 143, + 255, + 75, + 75, + 125, + 255, + 62, + 62, + 112, + 255, + 54, + 54, + 104, + 255, + 53, + 51, + 100, + 255, + 51, + 49, + 98, + 255, + 51, + 49, + 98, + 255, + 53, + 51, + 100, + 255, + 56, + 54, + 101, + 255, + 64, + 62, + 109, + 255, + 90, + 88, + 135, + 255, + 94, + 92, + 139, + 255, + 94, + 94, + 144, + 255, + 95, + 95, + 148, + 255, + 95, + 94, + 152, + 255, + 96, + 94, + 155, + 255, + 83, + 91, + 158, + 255, + 79, + 91, + 163, + 255, + 80, + 97, + 175, + 255, + 82, + 103, + 186, + 255, + 73, + 102, + 187, + 255, + 81, + 99, + 189, + 255, + 75, + 90, + 182, + 255, + 0, + 2, + 1, + 255, + 0, + 1, + 2, + 255, + 4, + 4, + 19, + 255, + 2, + 5, + 31, + 255, + 1, + 4, + 13, + 255, + 2, + 0, + 3, + 255, + 4, + 2, + 3, + 255, + 0, + 2, + 6, + 255, + 4, + 5, + 6, + 255, + 2, + 0, + 4, + 255, + 2, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 4, + 255, + 2, + 1, + 1, + 255, + 3, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 1, + 9, + 255, + 2, + 1, + 6, + 255, + 1, + 0, + 3, + 255, + 3, + 0, + 1, + 255, + 0, + 4, + 24, + 255, + 0, + 0, + 37, + 255, + 1, + 3, + 1, + 255, + 1, + 0, + 7, + 255, + 4, + 1, + 2, + 255, + 37, + 34, + 95, + 255, + 0, + 4, + 34, + 255, + 4, + 3, + 3, + 255, + 2, + 0, + 4, + 255, + 1, + 7, + 32, + 255, + 0, + 2, + 23, + 255, + 2, + 0, + 0, + 255, + 1, + 0, + 3, + 255, + 1, + 3, + 7, + 255, + 0, + 0, + 13, + 255, + 1, + 0, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 1, + 1, + 0, + 255, + 2, + 0, + 5, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 6, + 255, + 2, + 1, + 6, + 255, + 0, + 0, + 0, + 255, + 3, + 2, + 10, + 255, + 4, + 0, + 23, + 255, + 2, + 0, + 21, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 8, + 255, + 15, + 11, + 34, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 4, + 2, + 12, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 5, + 255, + 1, + 0, + 14, + 255, + 1, + 1, + 9, + 255, + 2, + 0, + 21, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 26, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 23, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 24, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 22, + 255, + 19, + 19, + 45, + 255, + 0, + 0, + 28, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 24, + 255, + 1, + 1, + 24, + 255, + 1, + 1, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 2, + 23, + 255, + 1, + 3, + 24, + 255, + 8, + 10, + 31, + 255, + 11, + 13, + 34, + 255, + 10, + 12, + 37, + 255, + 8, + 10, + 35, + 255, + 9, + 11, + 36, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 22, + 24, + 49, + 255, + 33, + 38, + 66, + 255, + 75, + 81, + 98, + 255, + 85, + 89, + 101, + 255, + 87, + 89, + 102, + 255, + 83, + 89, + 103, + 255, + 74, + 80, + 96, + 255, + 70, + 75, + 94, + 255, + 64, + 69, + 89, + 255, + 63, + 68, + 90, + 255, + 61, + 65, + 90, + 255, + 61, + 65, + 91, + 255, + 61, + 65, + 94, + 255, + 59, + 64, + 93, + 255, + 62, + 67, + 96, + 255, + 66, + 71, + 100, + 255, + 65, + 70, + 99, + 255, + 72, + 74, + 97, + 255, + 82, + 84, + 106, + 255, + 82, + 85, + 104, + 255, + 84, + 87, + 105, + 255, + 84, + 87, + 104, + 255, + 85, + 88, + 105, + 255, + 84, + 87, + 104, + 255, + 89, + 92, + 109, + 255, + 91, + 90, + 104, + 255, + 88, + 91, + 108, + 255, + 78, + 85, + 104, + 255, + 76, + 85, + 108, + 255, + 73, + 83, + 100, + 255, + 82, + 89, + 107, + 255, + 83, + 88, + 107, + 255, + 85, + 88, + 107, + 255, + 83, + 89, + 105, + 255, + 83, + 89, + 103, + 255, + 81, + 86, + 106, + 255, + 72, + 76, + 104, + 255, + 68, + 74, + 106, + 255, + 67, + 73, + 105, + 255, + 67, + 74, + 104, + 255, + 74, + 81, + 110, + 255, + 87, + 89, + 111, + 255, + 67, + 69, + 94, + 255, + 40, + 41, + 70, + 255, + 26, + 26, + 60, + 255, + 23, + 27, + 65, + 255, + 19, + 22, + 63, + 255, + 20, + 23, + 66, + 255, + 22, + 25, + 68, + 255, + 19, + 22, + 67, + 255, + 20, + 23, + 68, + 255, + 24, + 27, + 72, + 255, + 23, + 26, + 71, + 255, + 21, + 21, + 64, + 255, + 20, + 19, + 50, + 255, + 25, + 22, + 53, + 255, + 28, + 29, + 41, + 255, + 38, + 33, + 48, + 255, + 58, + 55, + 55, + 255, + 112, + 105, + 59, + 255, + 162, + 148, + 57, + 255, + 169, + 146, + 27, + 255, + 171, + 148, + 18, + 255, + 175, + 150, + 23, + 255, + 178, + 150, + 34, + 255, + 179, + 157, + 22, + 255, + 180, + 158, + 31, + 255, + 179, + 159, + 25, + 255, + 182, + 165, + 14, + 255, + 188, + 163, + 56, + 255, + 187, + 165, + 74, + 255, + 188, + 167, + 86, + 255, + 195, + 170, + 78, + 255, + 195, + 174, + 85, + 255, + 197, + 175, + 89, + 255, + 200, + 178, + 96, + 255, + 203, + 180, + 101, + 255, + 204, + 183, + 102, + 255, + 206, + 185, + 104, + 255, + 209, + 188, + 109, + 255, + 212, + 190, + 114, + 255, + 215, + 191, + 117, + 255, + 218, + 195, + 118, + 255, + 220, + 195, + 130, + 255, + 205, + 177, + 128, + 255, + 220, + 193, + 140, + 255, + 221, + 198, + 121, + 255, + 206, + 187, + 147, + 255, + 183, + 173, + 154, + 255, + 221, + 204, + 142, + 255, + 222, + 205, + 140, + 255, + 225, + 208, + 144, + 255, + 234, + 216, + 161, + 255, + 236, + 219, + 165, + 255, + 236, + 219, + 164, + 255, + 232, + 216, + 158, + 255, + 230, + 214, + 154, + 255, + 229, + 215, + 160, + 255, + 228, + 211, + 158, + 255, + 228, + 210, + 157, + 255, + 230, + 209, + 157, + 255, + 233, + 217, + 158, + 255, + 228, + 215, + 155, + 255, + 205, + 192, + 147, + 255, + 164, + 152, + 137, + 255, + 229, + 227, + 211, + 255, + 230, + 228, + 204, + 255, + 229, + 227, + 202, + 255, + 230, + 226, + 206, + 255, + 228, + 225, + 207, + 255, + 229, + 225, + 204, + 255, + 227, + 221, + 180, + 255, + 232, + 213, + 165, + 255, + 231, + 214, + 160, + 255, + 231, + 215, + 172, + 255, + 232, + 218, + 175, + 255, + 232, + 220, + 176, + 255, + 217, + 201, + 174, + 255, + 211, + 172, + 192, + 255, + 225, + 168, + 195, + 255, + 222, + 167, + 182, + 255, + 207, + 162, + 182, + 255, + 215, + 198, + 181, + 255, + 228, + 219, + 167, + 255, + 238, + 215, + 156, + 255, + 233, + 214, + 164, + 255, + 233, + 218, + 145, + 255, + 170, + 156, + 132, + 255, + 233, + 213, + 152, + 255, + 235, + 213, + 144, + 255, + 193, + 169, + 148, + 255, + 207, + 180, + 203, + 255, + 167, + 141, + 153, + 255, + 205, + 173, + 177, + 255, + 168, + 148, + 137, + 255, + 222, + 209, + 150, + 255, + 232, + 211, + 149, + 255, + 230, + 210, + 147, + 255, + 229, + 209, + 146, + 255, + 229, + 209, + 146, + 255, + 228, + 208, + 145, + 255, + 228, + 206, + 148, + 255, + 228, + 205, + 136, + 255, + 222, + 199, + 164, + 255, + 192, + 170, + 165, + 255, + 209, + 178, + 160, + 255, + 212, + 199, + 136, + 255, + 214, + 179, + 148, + 255, + 114, + 115, + 117, + 255, + 112, + 108, + 140, + 255, + 86, + 92, + 126, + 255, + 106, + 104, + 126, + 255, + 194, + 179, + 158, + 255, + 100, + 95, + 116, + 255, + 69, + 83, + 119, + 255, + 82, + 79, + 122, + 255, + 108, + 114, + 149, + 255, + 109, + 112, + 143, + 255, + 110, + 113, + 144, + 255, + 112, + 115, + 146, + 255, + 116, + 119, + 150, + 255, + 124, + 126, + 149, + 255, + 123, + 125, + 148, + 255, + 121, + 123, + 146, + 255, + 118, + 120, + 143, + 255, + 110, + 114, + 140, + 255, + 108, + 111, + 144, + 255, + 109, + 112, + 146, + 255, + 103, + 107, + 136, + 255, + 98, + 103, + 132, + 255, + 80, + 86, + 130, + 255, + 52, + 56, + 108, + 255, + 49, + 50, + 98, + 255, + 48, + 46, + 92, + 255, + 47, + 46, + 104, + 255, + 48, + 47, + 113, + 255, + 46, + 47, + 112, + 255, + 47, + 46, + 116, + 255, + 46, + 45, + 115, + 255, + 46, + 45, + 115, + 255, + 45, + 44, + 114, + 255, + 45, + 45, + 119, + 255, + 43, + 43, + 117, + 255, + 43, + 43, + 117, + 255, + 43, + 43, + 117, + 255, + 44, + 42, + 115, + 255, + 44, + 42, + 115, + 255, + 43, + 41, + 114, + 255, + 42, + 40, + 113, + 255, + 41, + 40, + 106, + 255, + 42, + 41, + 107, + 255, + 42, + 41, + 107, + 255, + 42, + 41, + 107, + 255, + 43, + 42, + 112, + 255, + 43, + 42, + 112, + 255, + 44, + 43, + 113, + 255, + 45, + 44, + 114, + 255, + 44, + 43, + 112, + 255, + 45, + 44, + 114, + 255, + 45, + 43, + 116, + 255, + 46, + 44, + 118, + 255, + 46, + 44, + 118, + 255, + 46, + 44, + 115, + 255, + 46, + 45, + 112, + 255, + 45, + 45, + 109, + 255, + 45, + 42, + 96, + 255, + 45, + 43, + 89, + 255, + 43, + 42, + 84, + 255, + 43, + 42, + 86, + 255, + 43, + 42, + 84, + 255, + 44, + 43, + 85, + 255, + 44, + 43, + 85, + 255, + 44, + 43, + 85, + 255, + 44, + 43, + 87, + 255, + 45, + 44, + 88, + 255, + 46, + 45, + 89, + 255, + 49, + 48, + 92, + 255, + 53, + 51, + 100, + 255, + 61, + 59, + 106, + 255, + 91, + 89, + 134, + 255, + 95, + 94, + 138, + 255, + 98, + 96, + 143, + 255, + 99, + 97, + 144, + 255, + 100, + 98, + 145, + 255, + 102, + 100, + 147, + 255, + 100, + 98, + 145, + 255, + 100, + 98, + 145, + 255, + 100, + 98, + 145, + 255, + 100, + 98, + 145, + 255, + 97, + 100, + 144, + 255, + 97, + 98, + 144, + 255, + 97, + 98, + 146, + 255, + 96, + 95, + 145, + 255, + 89, + 90, + 135, + 255, + 62, + 63, + 108, + 255, + 58, + 59, + 103, + 255, + 54, + 55, + 99, + 255, + 51, + 53, + 102, + 255, + 49, + 51, + 100, + 255, + 49, + 51, + 100, + 255, + 51, + 53, + 102, + 255, + 54, + 55, + 101, + 255, + 59, + 59, + 109, + 255, + 89, + 89, + 141, + 255, + 89, + 89, + 142, + 255, + 88, + 96, + 145, + 255, + 99, + 93, + 155, + 255, + 101, + 85, + 164, + 255, + 77, + 87, + 169, + 255, + 78, + 81, + 169, + 255, + 74, + 94, + 182, + 255, + 73, + 110, + 200, + 255, + 50, + 124, + 206, + 255, + 4, + 142, + 202, + 255, + 61, + 132, + 215, + 255, + 79, + 91, + 195, + 255, + 0, + 1, + 1, + 255, + 0, + 1, + 0, + 255, + 7, + 11, + 46, + 255, + 60, + 65, + 132, + 255, + 5, + 4, + 26, + 255, + 2, + 3, + 5, + 255, + 4, + 7, + 14, + 255, + 15, + 22, + 66, + 255, + 1, + 0, + 22, + 255, + 4, + 3, + 1, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 19, + 255, + 0, + 3, + 12, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 0, + 2, + 0, + 255, + 2, + 0, + 0, + 255, + 1, + 0, + 9, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 2, + 1, + 0, + 255, + 0, + 2, + 22, + 255, + 0, + 3, + 5, + 255, + 0, + 0, + 2, + 255, + 3, + 2, + 7, + 255, + 14, + 13, + 53, + 255, + 0, + 0, + 31, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 2, + 255, + 3, + 6, + 32, + 255, + 12, + 12, + 49, + 255, + 2, + 3, + 8, + 255, + 0, + 1, + 0, + 255, + 1, + 2, + 7, + 255, + 3, + 1, + 21, + 255, + 1, + 2, + 7, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 1, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 6, + 255, + 3, + 1, + 16, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 28, + 25, + 42, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 17, + 255, + 1, + 2, + 7, + 255, + 2, + 1, + 15, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 24, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 21, + 255, + 3, + 3, + 27, + 255, + 5, + 5, + 30, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 25, + 255, + 1, + 3, + 19, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 26, + 255, + 10, + 9, + 39, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 2, + 25, + 255, + 1, + 3, + 26, + 255, + 8, + 10, + 33, + 255, + 11, + 13, + 36, + 255, + 8, + 10, + 35, + 255, + 7, + 9, + 34, + 255, + 9, + 11, + 36, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 10, + 12, + 37, + 255, + 13, + 15, + 40, + 255, + 26, + 28, + 53, + 255, + 39, + 45, + 71, + 255, + 83, + 89, + 106, + 255, + 85, + 89, + 101, + 255, + 84, + 86, + 101, + 255, + 80, + 86, + 102, + 255, + 67, + 72, + 91, + 255, + 64, + 69, + 88, + 255, + 61, + 66, + 86, + 255, + 61, + 65, + 90, + 255, + 62, + 66, + 91, + 255, + 62, + 66, + 91, + 255, + 62, + 66, + 92, + 255, + 61, + 66, + 95, + 255, + 63, + 68, + 97, + 255, + 69, + 74, + 103, + 255, + 71, + 76, + 105, + 255, + 75, + 77, + 99, + 255, + 82, + 85, + 104, + 255, + 83, + 86, + 104, + 255, + 86, + 89, + 106, + 255, + 86, + 89, + 105, + 255, + 87, + 90, + 106, + 255, + 88, + 91, + 107, + 255, + 86, + 89, + 105, + 255, + 89, + 91, + 105, + 255, + 84, + 87, + 104, + 255, + 80, + 86, + 104, + 255, + 80, + 87, + 106, + 255, + 91, + 97, + 112, + 255, + 88, + 94, + 109, + 255, + 85, + 91, + 107, + 255, + 87, + 90, + 107, + 255, + 85, + 91, + 107, + 255, + 85, + 91, + 105, + 255, + 83, + 88, + 108, + 255, + 72, + 76, + 104, + 255, + 70, + 75, + 106, + 255, + 70, + 75, + 106, + 255, + 67, + 72, + 104, + 255, + 70, + 75, + 107, + 255, + 44, + 44, + 80, + 255, + 38, + 38, + 73, + 255, + 28, + 29, + 61, + 255, + 27, + 28, + 58, + 255, + 22, + 26, + 63, + 255, + 18, + 22, + 61, + 255, + 18, + 21, + 63, + 255, + 19, + 22, + 65, + 255, + 22, + 25, + 70, + 255, + 22, + 25, + 70, + 255, + 21, + 24, + 69, + 255, + 23, + 26, + 71, + 255, + 27, + 29, + 68, + 255, + 21, + 23, + 45, + 255, + 29, + 25, + 50, + 255, + 49, + 40, + 58, + 255, + 76, + 68, + 40, + 255, + 165, + 147, + 47, + 255, + 165, + 142, + 1, + 255, + 167, + 147, + 8, + 255, + 172, + 150, + 29, + 255, + 168, + 146, + 15, + 255, + 173, + 150, + 10, + 255, + 177, + 155, + 11, + 255, + 175, + 154, + 14, + 255, + 178, + 160, + 1, + 255, + 179, + 157, + 11, + 255, + 183, + 157, + 39, + 255, + 186, + 165, + 25, + 255, + 187, + 166, + 42, + 255, + 191, + 168, + 72, + 255, + 195, + 169, + 83, + 255, + 197, + 174, + 82, + 255, + 199, + 175, + 85, + 255, + 202, + 178, + 92, + 255, + 205, + 180, + 97, + 255, + 205, + 183, + 99, + 255, + 207, + 185, + 101, + 255, + 210, + 187, + 107, + 255, + 213, + 190, + 110, + 255, + 214, + 193, + 102, + 255, + 216, + 192, + 119, + 255, + 206, + 180, + 121, + 255, + 222, + 197, + 131, + 255, + 225, + 198, + 119, + 255, + 220, + 201, + 117, + 255, + 163, + 144, + 131, + 255, + 205, + 199, + 141, + 255, + 228, + 206, + 123, + 255, + 229, + 207, + 123, + 255, + 229, + 207, + 125, + 255, + 233, + 210, + 133, + 255, + 231, + 215, + 141, + 255, + 229, + 212, + 141, + 255, + 229, + 212, + 143, + 255, + 231, + 213, + 148, + 255, + 227, + 212, + 144, + 255, + 229, + 212, + 148, + 255, + 231, + 213, + 152, + 255, + 231, + 212, + 154, + 255, + 225, + 216, + 165, + 255, + 237, + 226, + 197, + 255, + 216, + 210, + 166, + 255, + 236, + 230, + 199, + 255, + 230, + 225, + 209, + 255, + 227, + 225, + 203, + 255, + 229, + 227, + 204, + 255, + 228, + 228, + 205, + 255, + 228, + 226, + 203, + 255, + 229, + 224, + 211, + 255, + 230, + 222, + 192, + 255, + 225, + 213, + 164, + 255, + 175, + 163, + 122, + 255, + 225, + 212, + 162, + 255, + 232, + 215, + 160, + 255, + 234, + 214, + 163, + 255, + 182, + 159, + 137, + 255, + 211, + 173, + 189, + 255, + 227, + 184, + 204, + 255, + 223, + 166, + 190, + 255, + 220, + 171, + 192, + 255, + 176, + 153, + 146, + 255, + 225, + 216, + 167, + 255, + 232, + 218, + 144, + 255, + 233, + 214, + 157, + 255, + 233, + 214, + 143, + 255, + 198, + 184, + 153, + 255, + 229, + 210, + 159, + 255, + 236, + 216, + 145, + 255, + 229, + 205, + 178, + 255, + 212, + 173, + 194, + 255, + 220, + 173, + 191, + 255, + 205, + 176, + 186, + 255, + 196, + 178, + 175, + 255, + 216, + 201, + 160, + 255, + 226, + 206, + 146, + 255, + 231, + 210, + 146, + 255, + 230, + 209, + 145, + 255, + 230, + 209, + 145, + 255, + 229, + 208, + 144, + 255, + 228, + 207, + 143, + 255, + 230, + 207, + 139, + 255, + 223, + 202, + 153, + 255, + 182, + 161, + 152, + 255, + 200, + 167, + 149, + 255, + 221, + 196, + 149, + 255, + 203, + 164, + 158, + 255, + 160, + 150, + 134, + 255, + 139, + 135, + 161, + 255, + 90, + 97, + 132, + 255, + 85, + 89, + 133, + 255, + 101, + 98, + 117, + 255, + 202, + 197, + 159, + 255, + 90, + 88, + 126, + 255, + 81, + 78, + 130, + 255, + 112, + 118, + 141, + 255, + 107, + 110, + 141, + 255, + 107, + 110, + 141, + 255, + 114, + 117, + 148, + 255, + 116, + 119, + 150, + 255, + 122, + 124, + 147, + 255, + 122, + 124, + 147, + 255, + 119, + 121, + 144, + 255, + 119, + 121, + 144, + 255, + 111, + 115, + 141, + 255, + 107, + 110, + 143, + 255, + 105, + 108, + 142, + 255, + 100, + 104, + 133, + 255, + 97, + 102, + 130, + 255, + 82, + 88, + 129, + 255, + 49, + 54, + 101, + 255, + 47, + 49, + 91, + 255, + 46, + 44, + 90, + 255, + 44, + 44, + 98, + 255, + 46, + 46, + 109, + 255, + 44, + 45, + 111, + 255, + 45, + 44, + 114, + 255, + 44, + 43, + 113, + 255, + 45, + 44, + 114, + 255, + 44, + 43, + 113, + 255, + 43, + 41, + 114, + 255, + 43, + 41, + 114, + 255, + 42, + 40, + 113, + 255, + 42, + 40, + 113, + 255, + 42, + 40, + 111, + 255, + 42, + 40, + 111, + 255, + 39, + 37, + 108, + 255, + 41, + 39, + 110, + 255, + 40, + 39, + 105, + 255, + 40, + 39, + 105, + 255, + 40, + 39, + 105, + 255, + 40, + 39, + 105, + 255, + 41, + 40, + 109, + 255, + 41, + 40, + 109, + 255, + 41, + 40, + 109, + 255, + 42, + 41, + 110, + 255, + 42, + 41, + 108, + 255, + 43, + 42, + 109, + 255, + 43, + 42, + 111, + 255, + 44, + 42, + 113, + 255, + 44, + 42, + 113, + 255, + 44, + 43, + 110, + 255, + 44, + 44, + 108, + 255, + 43, + 43, + 105, + 255, + 42, + 39, + 91, + 255, + 41, + 40, + 83, + 255, + 41, + 40, + 81, + 255, + 41, + 40, + 83, + 255, + 41, + 40, + 82, + 255, + 42, + 41, + 83, + 255, + 41, + 40, + 82, + 255, + 41, + 40, + 82, + 255, + 42, + 41, + 85, + 255, + 43, + 42, + 86, + 255, + 45, + 44, + 88, + 255, + 48, + 47, + 91, + 255, + 55, + 53, + 102, + 255, + 84, + 82, + 129, + 255, + 95, + 93, + 138, + 255, + 95, + 94, + 138, + 255, + 98, + 96, + 142, + 255, + 99, + 97, + 143, + 255, + 100, + 98, + 144, + 255, + 99, + 97, + 143, + 255, + 99, + 97, + 143, + 255, + 99, + 97, + 143, + 255, + 99, + 97, + 143, + 255, + 99, + 97, + 143, + 255, + 97, + 98, + 143, + 255, + 95, + 98, + 143, + 255, + 94, + 96, + 144, + 255, + 92, + 94, + 143, + 255, + 75, + 75, + 126, + 255, + 65, + 65, + 116, + 255, + 61, + 61, + 113, + 255, + 58, + 58, + 110, + 255, + 52, + 53, + 99, + 255, + 50, + 51, + 97, + 255, + 50, + 51, + 97, + 255, + 54, + 55, + 101, + 255, + 54, + 55, + 110, + 255, + 59, + 61, + 113, + 255, + 85, + 87, + 137, + 255, + 86, + 88, + 137, + 255, + 99, + 90, + 154, + 255, + 77, + 96, + 164, + 255, + 80, + 91, + 174, + 255, + 78, + 85, + 173, + 255, + 77, + 82, + 173, + 255, + 80, + 85, + 179, + 255, + 71, + 94, + 187, + 255, + 56, + 130, + 209, + 255, + 60, + 182, + 241, + 255, + 36, + 148, + 212, + 255, + 59, + 122, + 206, + 255, + 0, + 0, + 6, + 255, + 2, + 1, + 0, + 255, + 3, + 8, + 14, + 255, + 0, + 5, + 26, + 255, + 2, + 5, + 3, + 255, + 1, + 3, + 0, + 255, + 0, + 2, + 16, + 255, + 29, + 32, + 94, + 255, + 2, + 1, + 33, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 13, + 255, + 21, + 19, + 64, + 255, + 24, + 22, + 77, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 1, + 255, + 4, + 6, + 14, + 255, + 0, + 0, + 25, + 255, + 3, + 0, + 8, + 255, + 0, + 0, + 0, + 255, + 0, + 2, + 2, + 255, + 2, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 1, + 4, + 0, + 255, + 1, + 3, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 0, + 255, + 0, + 3, + 21, + 255, + 0, + 0, + 27, + 255, + 0, + 1, + 2, + 255, + 0, + 0, + 5, + 255, + 3, + 1, + 21, + 255, + 53, + 49, + 84, + 255, + 5, + 4, + 21, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 2, + 255, + 0, + 2, + 25, + 255, + 0, + 6, + 4, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 5, + 255, + 3, + 2, + 10, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 12, + 255, + 0, + 0, + 12, + 255, + 0, + 2, + 1, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 19, + 255, + 11, + 10, + 42, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 17, + 255, + 4, + 4, + 30, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 21, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 30, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 4, + 5, + 26, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 0, + 2, + 27, + 255, + 6, + 8, + 33, + 255, + 4, + 6, + 31, + 255, + 11, + 13, + 38, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 35, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 40, + 255, + 12, + 14, + 39, + 255, + 14, + 16, + 41, + 255, + 29, + 31, + 56, + 255, + 58, + 64, + 87, + 255, + 76, + 82, + 97, + 255, + 83, + 86, + 101, + 255, + 86, + 87, + 106, + 255, + 70, + 75, + 94, + 255, + 64, + 69, + 89, + 255, + 62, + 67, + 88, + 255, + 62, + 67, + 89, + 255, + 62, + 66, + 92, + 255, + 62, + 66, + 91, + 255, + 63, + 67, + 92, + 255, + 64, + 69, + 92, + 255, + 64, + 69, + 98, + 255, + 64, + 69, + 98, + 255, + 68, + 73, + 102, + 255, + 69, + 74, + 103, + 255, + 76, + 79, + 98, + 255, + 84, + 87, + 105, + 255, + 85, + 88, + 104, + 255, + 85, + 88, + 103, + 255, + 87, + 91, + 104, + 255, + 88, + 92, + 105, + 255, + 88, + 92, + 105, + 255, + 88, + 92, + 105, + 255, + 87, + 90, + 105, + 255, + 80, + 83, + 98, + 255, + 81, + 87, + 102, + 255, + 83, + 89, + 104, + 255, + 99, + 102, + 111, + 255, + 97, + 101, + 112, + 255, + 89, + 92, + 107, + 255, + 85, + 91, + 107, + 255, + 84, + 90, + 106, + 255, + 83, + 89, + 103, + 255, + 82, + 87, + 107, + 255, + 74, + 78, + 106, + 255, + 75, + 80, + 108, + 255, + 68, + 73, + 103, + 255, + 70, + 74, + 108, + 255, + 29, + 33, + 69, + 255, + 29, + 29, + 67, + 255, + 30, + 30, + 66, + 255, + 29, + 30, + 62, + 255, + 29, + 30, + 60, + 255, + 24, + 28, + 63, + 255, + 19, + 23, + 60, + 255, + 23, + 27, + 66, + 255, + 19, + 22, + 63, + 255, + 20, + 23, + 68, + 255, + 22, + 25, + 70, + 255, + 22, + 25, + 70, + 255, + 19, + 22, + 67, + 255, + 24, + 26, + 74, + 255, + 25, + 27, + 67, + 255, + 39, + 35, + 44, + 255, + 104, + 95, + 43, + 255, + 155, + 136, + 33, + 255, + 158, + 133, + 50, + 255, + 148, + 123, + 77, + 255, + 136, + 117, + 103, + 255, + 145, + 125, + 100, + 255, + 148, + 126, + 104, + 255, + 151, + 128, + 101, + 255, + 155, + 132, + 96, + 255, + 166, + 140, + 82, + 255, + 181, + 156, + 74, + 255, + 179, + 156, + 36, + 255, + 182, + 162, + 13, + 255, + 187, + 160, + 47, + 255, + 191, + 163, + 45, + 255, + 193, + 167, + 53, + 255, + 195, + 172, + 68, + 255, + 197, + 173, + 76, + 255, + 199, + 175, + 79, + 255, + 202, + 177, + 86, + 255, + 205, + 179, + 91, + 255, + 206, + 182, + 94, + 255, + 210, + 186, + 99, + 255, + 212, + 187, + 103, + 255, + 214, + 189, + 106, + 255, + 217, + 193, + 122, + 255, + 210, + 185, + 121, + 255, + 220, + 197, + 118, + 255, + 221, + 202, + 100, + 255, + 220, + 196, + 110, + 255, + 201, + 184, + 123, + 255, + 223, + 207, + 175, + 255, + 219, + 203, + 124, + 255, + 230, + 205, + 124, + 255, + 231, + 205, + 128, + 255, + 233, + 207, + 132, + 255, + 234, + 208, + 131, + 255, + 229, + 211, + 129, + 255, + 230, + 212, + 131, + 255, + 231, + 212, + 134, + 255, + 231, + 212, + 135, + 255, + 231, + 212, + 135, + 255, + 231, + 213, + 142, + 255, + 234, + 216, + 151, + 255, + 213, + 194, + 136, + 255, + 238, + 216, + 167, + 255, + 238, + 219, + 159, + 255, + 163, + 140, + 104, + 255, + 230, + 212, + 147, + 255, + 233, + 221, + 192, + 255, + 233, + 224, + 202, + 255, + 231, + 224, + 206, + 255, + 229, + 224, + 206, + 255, + 230, + 222, + 210, + 255, + 236, + 224, + 201, + 255, + 228, + 216, + 166, + 255, + 231, + 222, + 157, + 255, + 228, + 216, + 166, + 255, + 196, + 180, + 136, + 255, + 228, + 208, + 158, + 255, + 234, + 213, + 149, + 255, + 171, + 145, + 137, + 255, + 226, + 197, + 208, + 255, + 236, + 221, + 225, + 255, + 217, + 168, + 190, + 255, + 212, + 166, + 184, + 255, + 231, + 204, + 211, + 255, + 221, + 206, + 174, + 255, + 230, + 218, + 143, + 255, + 232, + 215, + 146, + 255, + 236, + 213, + 145, + 255, + 223, + 210, + 168, + 255, + 232, + 217, + 178, + 255, + 235, + 219, + 144, + 255, + 229, + 209, + 175, + 255, + 212, + 169, + 187, + 255, + 224, + 165, + 185, + 255, + 188, + 150, + 164, + 255, + 204, + 180, + 187, + 255, + 161, + 142, + 129, + 255, + 231, + 213, + 166, + 255, + 231, + 211, + 142, + 255, + 230, + 210, + 141, + 255, + 229, + 209, + 140, + 255, + 228, + 208, + 139, + 255, + 228, + 208, + 139, + 255, + 229, + 206, + 138, + 255, + 227, + 209, + 142, + 255, + 160, + 140, + 126, + 255, + 198, + 168, + 171, + 255, + 194, + 160, + 134, + 255, + 195, + 159, + 159, + 255, + 217, + 198, + 157, + 255, + 113, + 108, + 128, + 255, + 103, + 107, + 136, + 255, + 73, + 78, + 127, + 255, + 82, + 84, + 125, + 255, + 120, + 116, + 90, + 255, + 94, + 87, + 98, + 255, + 79, + 83, + 127, + 255, + 105, + 107, + 131, + 255, + 106, + 109, + 140, + 255, + 106, + 109, + 140, + 255, + 110, + 113, + 144, + 255, + 112, + 115, + 146, + 255, + 122, + 124, + 147, + 255, + 122, + 124, + 147, + 255, + 119, + 121, + 144, + 255, + 117, + 119, + 142, + 255, + 109, + 113, + 139, + 255, + 107, + 110, + 143, + 255, + 102, + 105, + 139, + 255, + 100, + 104, + 133, + 255, + 93, + 98, + 130, + 255, + 82, + 88, + 133, + 255, + 48, + 53, + 101, + 255, + 44, + 46, + 88, + 255, + 44, + 42, + 89, + 255, + 41, + 41, + 91, + 255, + 44, + 44, + 103, + 255, + 43, + 43, + 112, + 255, + 44, + 43, + 113, + 255, + 43, + 42, + 112, + 255, + 43, + 42, + 112, + 255, + 41, + 40, + 110, + 255, + 41, + 39, + 110, + 255, + 41, + 39, + 110, + 255, + 40, + 38, + 109, + 255, + 40, + 38, + 109, + 255, + 39, + 38, + 107, + 255, + 39, + 38, + 107, + 255, + 39, + 38, + 107, + 255, + 39, + 38, + 107, + 255, + 39, + 38, + 104, + 255, + 39, + 38, + 104, + 255, + 39, + 38, + 104, + 255, + 40, + 39, + 105, + 255, + 39, + 38, + 105, + 255, + 39, + 38, + 105, + 255, + 39, + 38, + 105, + 255, + 40, + 39, + 106, + 255, + 41, + 41, + 103, + 255, + 41, + 41, + 105, + 255, + 41, + 40, + 106, + 255, + 42, + 41, + 109, + 255, + 42, + 41, + 109, + 255, + 42, + 42, + 106, + 255, + 41, + 41, + 103, + 255, + 42, + 43, + 101, + 255, + 40, + 38, + 87, + 255, + 39, + 38, + 79, + 255, + 39, + 38, + 78, + 255, + 39, + 38, + 79, + 255, + 39, + 38, + 78, + 255, + 39, + 38, + 78, + 255, + 39, + 38, + 78, + 255, + 39, + 38, + 78, + 255, + 40, + 39, + 81, + 255, + 42, + 41, + 83, + 255, + 44, + 43, + 85, + 255, + 48, + 47, + 89, + 255, + 57, + 55, + 104, + 255, + 87, + 85, + 132, + 255, + 95, + 93, + 138, + 255, + 96, + 95, + 139, + 255, + 98, + 97, + 141, + 255, + 99, + 98, + 142, + 255, + 99, + 98, + 142, + 255, + 99, + 98, + 142, + 255, + 99, + 98, + 142, + 255, + 98, + 97, + 141, + 255, + 98, + 97, + 141, + 255, + 98, + 97, + 141, + 255, + 96, + 97, + 142, + 255, + 94, + 97, + 142, + 255, + 92, + 97, + 144, + 255, + 89, + 96, + 143, + 255, + 89, + 95, + 138, + 255, + 85, + 91, + 135, + 255, + 82, + 87, + 135, + 255, + 83, + 88, + 138, + 255, + 74, + 78, + 133, + 255, + 55, + 59, + 114, + 255, + 51, + 55, + 110, + 255, + 51, + 55, + 110, + 255, + 55, + 59, + 123, + 255, + 65, + 69, + 132, + 255, + 77, + 82, + 141, + 255, + 86, + 91, + 148, + 255, + 70, + 97, + 165, + 255, + 67, + 111, + 194, + 255, + 77, + 92, + 193, + 255, + 84, + 80, + 181, + 255, + 73, + 80, + 176, + 255, + 79, + 77, + 176, + 255, + 76, + 83, + 178, + 255, + 53, + 104, + 184, + 255, + 56, + 119, + 206, + 255, + 47, + 144, + 223, + 255, + 37, + 123, + 210, + 255, + 1, + 0, + 0, + 255, + 4, + 0, + 4, + 255, + 2, + 0, + 8, + 255, + 0, + 1, + 5, + 255, + 0, + 1, + 9, + 255, + 1, + 0, + 5, + 255, + 2, + 0, + 4, + 255, + 3, + 5, + 10, + 255, + 0, + 4, + 4, + 255, + 2, + 3, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 30, + 255, + 0, + 4, + 33, + 255, + 0, + 2, + 4, + 255, + 0, + 0, + 4, + 255, + 5, + 6, + 36, + 255, + 30, + 36, + 104, + 255, + 3, + 1, + 12, + 255, + 4, + 0, + 0, + 255, + 2, + 1, + 15, + 255, + 8, + 13, + 44, + 255, + 0, + 2, + 8, + 255, + 0, + 0, + 8, + 255, + 2, + 0, + 5, + 255, + 2, + 1, + 8, + 255, + 3, + 1, + 4, + 255, + 1, + 0, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 11, + 255, + 1, + 0, + 8, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 3, + 4, + 8, + 255, + 2, + 0, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 15, + 255, + 0, + 2, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 5, + 255, + 8, + 8, + 52, + 255, + 0, + 5, + 15, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 7, + 255, + 5, + 2, + 20, + 255, + 6, + 2, + 26, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 4, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 2, + 8, + 255, + 2, + 4, + 19, + 255, + 0, + 3, + 6, + 255, + 0, + 2, + 10, + 255, + 0, + 0, + 23, + 255, + 40, + 39, + 73, + 255, + 0, + 0, + 28, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 24, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 0, + 2, + 27, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 8, + 10, + 35, + 255, + 8, + 10, + 35, + 255, + 10, + 12, + 37, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 40, + 255, + 13, + 15, + 40, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 40, + 255, + 15, + 17, + 42, + 255, + 33, + 35, + 60, + 255, + 61, + 68, + 89, + 255, + 73, + 79, + 94, + 255, + 80, + 83, + 99, + 255, + 70, + 71, + 92, + 255, + 65, + 70, + 90, + 255, + 62, + 67, + 87, + 255, + 62, + 67, + 89, + 255, + 62, + 66, + 91, + 255, + 64, + 68, + 97, + 255, + 64, + 68, + 94, + 255, + 66, + 71, + 94, + 255, + 82, + 87, + 108, + 255, + 65, + 70, + 99, + 255, + 65, + 70, + 99, + 255, + 68, + 73, + 102, + 255, + 71, + 76, + 105, + 255, + 79, + 82, + 100, + 255, + 84, + 87, + 104, + 255, + 85, + 88, + 103, + 255, + 85, + 89, + 102, + 255, + 87, + 91, + 103, + 255, + 88, + 92, + 104, + 255, + 88, + 92, + 104, + 255, + 88, + 92, + 104, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 87, + 91, + 104, + 255, + 98, + 102, + 114, + 255, + 101, + 102, + 107, + 255, + 99, + 102, + 110, + 255, + 94, + 98, + 110, + 255, + 87, + 93, + 109, + 255, + 84, + 90, + 106, + 255, + 83, + 89, + 103, + 255, + 83, + 88, + 108, + 255, + 79, + 83, + 111, + 255, + 74, + 78, + 105, + 255, + 44, + 47, + 78, + 255, + 33, + 36, + 70, + 255, + 24, + 26, + 65, + 255, + 23, + 24, + 54, + 255, + 28, + 29, + 59, + 255, + 27, + 28, + 59, + 255, + 29, + 30, + 61, + 255, + 18, + 22, + 57, + 255, + 21, + 25, + 61, + 255, + 17, + 21, + 59, + 255, + 21, + 25, + 63, + 255, + 20, + 23, + 68, + 255, + 22, + 25, + 70, + 255, + 22, + 25, + 70, + 255, + 24, + 27, + 72, + 255, + 22, + 24, + 71, + 255, + 27, + 33, + 58, + 255, + 80, + 77, + 66, + 255, + 127, + 114, + 50, + 255, + 72, + 58, + 58, + 255, + 73, + 65, + 70, + 255, + 97, + 81, + 83, + 255, + 147, + 118, + 114, + 255, + 147, + 119, + 114, + 255, + 149, + 121, + 111, + 255, + 161, + 134, + 98, + 255, + 165, + 141, + 76, + 255, + 155, + 141, + 59, + 255, + 162, + 142, + 78, + 255, + 166, + 139, + 84, + 255, + 179, + 150, + 93, + 255, + 188, + 162, + 36, + 255, + 188, + 160, + 24, + 255, + 195, + 168, + 39, + 255, + 193, + 170, + 62, + 255, + 197, + 174, + 72, + 255, + 199, + 175, + 76, + 255, + 202, + 177, + 83, + 255, + 205, + 180, + 88, + 255, + 206, + 181, + 91, + 255, + 209, + 184, + 95, + 255, + 213, + 187, + 101, + 255, + 215, + 189, + 104, + 255, + 209, + 186, + 106, + 255, + 216, + 194, + 112, + 255, + 220, + 198, + 115, + 255, + 221, + 199, + 116, + 255, + 216, + 197, + 120, + 255, + 178, + 164, + 137, + 255, + 211, + 201, + 124, + 255, + 233, + 203, + 125, + 255, + 227, + 207, + 117, + 255, + 228, + 207, + 125, + 255, + 228, + 207, + 126, + 255, + 230, + 210, + 123, + 255, + 231, + 209, + 132, + 255, + 232, + 211, + 130, + 255, + 232, + 211, + 129, + 255, + 232, + 212, + 127, + 255, + 232, + 212, + 127, + 255, + 231, + 212, + 136, + 255, + 230, + 211, + 144, + 255, + 219, + 201, + 144, + 255, + 236, + 224, + 140, + 255, + 181, + 161, + 116, + 255, + 236, + 219, + 156, + 255, + 227, + 214, + 125, + 255, + 231, + 217, + 145, + 255, + 229, + 216, + 162, + 255, + 230, + 219, + 175, + 255, + 231, + 223, + 185, + 255, + 231, + 219, + 180, + 255, + 231, + 215, + 156, + 255, + 231, + 214, + 145, + 255, + 176, + 159, + 124, + 255, + 232, + 218, + 147, + 255, + 166, + 145, + 113, + 255, + 235, + 212, + 178, + 255, + 230, + 213, + 141, + 255, + 199, + 175, + 179, + 255, + 238, + 218, + 227, + 255, + 220, + 228, + 219, + 255, + 230, + 191, + 205, + 255, + 211, + 173, + 186, + 255, + 201, + 172, + 191, + 255, + 161, + 139, + 124, + 255, + 231, + 211, + 148, + 255, + 232, + 216, + 141, + 255, + 237, + 212, + 145, + 255, + 231, + 219, + 171, + 255, + 190, + 176, + 146, + 255, + 234, + 217, + 143, + 255, + 227, + 212, + 172, + 255, + 192, + 155, + 166, + 255, + 217, + 160, + 178, + 255, + 214, + 160, + 176, + 255, + 179, + 145, + 160, + 255, + 201, + 177, + 186, + 255, + 169, + 152, + 118, + 255, + 233, + 210, + 140, + 255, + 232, + 209, + 139, + 255, + 231, + 208, + 138, + 255, + 230, + 207, + 137, + 255, + 228, + 208, + 136, + 255, + 229, + 206, + 138, + 255, + 224, + 208, + 129, + 255, + 159, + 139, + 122, + 255, + 151, + 124, + 153, + 255, + 196, + 161, + 148, + 255, + 192, + 164, + 152, + 255, + 221, + 202, + 142, + 255, + 110, + 107, + 125, + 255, + 129, + 130, + 150, + 255, + 75, + 75, + 118, + 255, + 77, + 75, + 114, + 255, + 89, + 86, + 121, + 255, + 171, + 169, + 149, + 255, + 85, + 96, + 125, + 255, + 112, + 108, + 143, + 255, + 104, + 107, + 138, + 255, + 105, + 108, + 139, + 255, + 105, + 108, + 139, + 255, + 114, + 117, + 148, + 255, + 115, + 117, + 140, + 255, + 118, + 120, + 143, + 255, + 117, + 119, + 142, + 255, + 115, + 117, + 140, + 255, + 113, + 117, + 143, + 255, + 102, + 105, + 138, + 255, + 100, + 103, + 137, + 255, + 101, + 105, + 134, + 255, + 82, + 85, + 127, + 255, + 73, + 78, + 130, + 255, + 45, + 49, + 102, + 255, + 42, + 43, + 89, + 255, + 42, + 40, + 87, + 255, + 39, + 40, + 86, + 255, + 40, + 41, + 97, + 255, + 43, + 43, + 112, + 255, + 41, + 40, + 110, + 255, + 40, + 39, + 109, + 255, + 41, + 40, + 110, + 255, + 39, + 38, + 108, + 255, + 40, + 37, + 108, + 255, + 40, + 37, + 108, + 255, + 39, + 36, + 107, + 255, + 39, + 36, + 107, + 255, + 38, + 37, + 105, + 255, + 38, + 37, + 105, + 255, + 38, + 37, + 105, + 255, + 38, + 37, + 105, + 255, + 38, + 37, + 103, + 255, + 38, + 37, + 103, + 255, + 37, + 36, + 102, + 255, + 38, + 37, + 103, + 255, + 37, + 36, + 102, + 255, + 37, + 36, + 102, + 255, + 38, + 37, + 103, + 255, + 39, + 38, + 104, + 255, + 40, + 40, + 100, + 255, + 40, + 40, + 101, + 255, + 39, + 39, + 102, + 255, + 40, + 40, + 104, + 255, + 40, + 39, + 104, + 255, + 40, + 40, + 102, + 255, + 41, + 42, + 100, + 255, + 39, + 40, + 96, + 255, + 38, + 36, + 85, + 255, + 37, + 36, + 77, + 255, + 37, + 37, + 75, + 255, + 37, + 36, + 76, + 255, + 37, + 37, + 75, + 255, + 37, + 37, + 75, + 255, + 37, + 37, + 75, + 255, + 37, + 37, + 75, + 255, + 37, + 36, + 76, + 255, + 39, + 38, + 78, + 255, + 43, + 42, + 82, + 255, + 49, + 48, + 88, + 255, + 72, + 70, + 119, + 255, + 78, + 76, + 123, + 255, + 93, + 91, + 136, + 255, + 96, + 95, + 139, + 255, + 97, + 96, + 138, + 255, + 98, + 97, + 139, + 255, + 98, + 97, + 139, + 255, + 98, + 97, + 139, + 255, + 98, + 97, + 139, + 255, + 97, + 96, + 138, + 255, + 97, + 96, + 138, + 255, + 97, + 96, + 138, + 255, + 96, + 96, + 141, + 255, + 92, + 96, + 141, + 255, + 91, + 99, + 145, + 255, + 89, + 100, + 146, + 255, + 84, + 99, + 158, + 255, + 77, + 91, + 153, + 255, + 70, + 83, + 151, + 255, + 61, + 74, + 144, + 255, + 52, + 63, + 133, + 255, + 59, + 70, + 140, + 255, + 46, + 57, + 127, + 255, + 45, + 56, + 126, + 255, + 51, + 56, + 129, + 255, + 52, + 57, + 130, + 255, + 65, + 70, + 146, + 255, + 77, + 81, + 158, + 255, + 72, + 94, + 175, + 255, + 55, + 141, + 228, + 255, + 56, + 117, + 216, + 255, + 67, + 77, + 180, + 255, + 90, + 96, + 196, + 255, + 64, + 74, + 170, + 255, + 71, + 71, + 167, + 255, + 66, + 78, + 168, + 255, + 75, + 79, + 175, + 255, + 64, + 92, + 185, + 255, + 60, + 114, + 204, + 255, + 0, + 0, + 3, + 255, + 1, + 1, + 11, + 255, + 5, + 5, + 13, + 255, + 12, + 11, + 24, + 255, + 0, + 1, + 5, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 6, + 255, + 3, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 1, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 3, + 255, + 7, + 0, + 10, + 255, + 4, + 2, + 12, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 4, + 255, + 3, + 2, + 10, + 255, + 21, + 25, + 70, + 255, + 0, + 3, + 17, + 255, + 0, + 0, + 2, + 255, + 4, + 0, + 8, + 255, + 5, + 11, + 36, + 255, + 13, + 13, + 57, + 255, + 1, + 2, + 3, + 255, + 1, + 0, + 2, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 21, + 255, + 1, + 1, + 4, + 255, + 0, + 0, + 0, + 255, + 2, + 3, + 4, + 255, + 0, + 0, + 7, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 1, + 255, + 0, + 2, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 15, + 255, + 2, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 15, + 255, + 34, + 36, + 69, + 255, + 1, + 1, + 3, + 255, + 0, + 1, + 0, + 255, + 3, + 3, + 5, + 255, + 1, + 0, + 14, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 3, + 2, + 9, + 255, + 3, + 3, + 4, + 255, + 2, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 8, + 255, + 2, + 0, + 13, + 255, + 3, + 0, + 17, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 22, + 255, + 1, + 0, + 32, + 255, + 0, + 0, + 28, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 29, + 255, + 3, + 3, + 30, + 255, + 2, + 4, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 27, + 255, + 0, + 3, + 28, + 255, + 2, + 4, + 29, + 255, + 6, + 8, + 33, + 255, + 4, + 6, + 31, + 255, + 7, + 9, + 34, + 255, + 9, + 11, + 36, + 255, + 11, + 13, + 38, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 12, + 12, + 38, + 255, + 12, + 12, + 38, + 255, + 12, + 12, + 38, + 255, + 13, + 13, + 39, + 255, + 13, + 15, + 40, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 12, + 16, + 41, + 255, + 18, + 22, + 47, + 255, + 34, + 38, + 63, + 255, + 82, + 88, + 103, + 255, + 67, + 71, + 96, + 255, + 68, + 72, + 98, + 255, + 63, + 68, + 89, + 255, + 63, + 68, + 89, + 255, + 63, + 68, + 90, + 255, + 63, + 67, + 92, + 255, + 64, + 68, + 94, + 255, + 64, + 70, + 96, + 255, + 65, + 71, + 97, + 255, + 64, + 70, + 96, + 255, + 66, + 72, + 98, + 255, + 67, + 72, + 101, + 255, + 68, + 73, + 105, + 255, + 69, + 75, + 102, + 255, + 80, + 87, + 105, + 255, + 83, + 91, + 102, + 255, + 83, + 89, + 101, + 255, + 86, + 90, + 102, + 255, + 86, + 88, + 102, + 255, + 85, + 89, + 101, + 255, + 86, + 89, + 104, + 255, + 83, + 86, + 103, + 255, + 80, + 83, + 100, + 255, + 84, + 86, + 100, + 255, + 90, + 92, + 105, + 255, + 92, + 94, + 106, + 255, + 99, + 102, + 111, + 255, + 99, + 103, + 105, + 255, + 99, + 102, + 109, + 255, + 99, + 101, + 112, + 255, + 91, + 93, + 106, + 255, + 85, + 90, + 109, + 255, + 83, + 88, + 108, + 255, + 75, + 80, + 100, + 255, + 49, + 54, + 74, + 255, + 33, + 34, + 64, + 255, + 28, + 29, + 59, + 255, + 25, + 26, + 56, + 255, + 25, + 26, + 56, + 255, + 25, + 26, + 56, + 255, + 28, + 29, + 60, + 255, + 29, + 29, + 63, + 255, + 24, + 24, + 58, + 255, + 12, + 17, + 50, + 255, + 14, + 17, + 58, + 255, + 19, + 22, + 65, + 255, + 20, + 23, + 65, + 255, + 21, + 22, + 66, + 255, + 21, + 24, + 68, + 255, + 20, + 24, + 70, + 255, + 21, + 25, + 72, + 255, + 21, + 29, + 69, + 255, + 30, + 35, + 66, + 255, + 31, + 32, + 59, + 255, + 32, + 30, + 60, + 255, + 38, + 36, + 74, + 255, + 38, + 36, + 74, + 255, + 41, + 39, + 77, + 255, + 46, + 44, + 82, + 255, + 58, + 52, + 77, + 255, + 80, + 68, + 81, + 255, + 149, + 128, + 125, + 255, + 145, + 119, + 106, + 255, + 154, + 128, + 105, + 255, + 170, + 147, + 81, + 255, + 179, + 160, + 49, + 255, + 184, + 164, + 32, + 255, + 190, + 161, + 74, + 255, + 182, + 155, + 56, + 255, + 191, + 167, + 35, + 255, + 195, + 170, + 46, + 255, + 198, + 172, + 59, + 255, + 200, + 175, + 64, + 255, + 201, + 178, + 75, + 255, + 203, + 181, + 82, + 255, + 206, + 183, + 87, + 255, + 208, + 185, + 90, + 255, + 211, + 187, + 97, + 255, + 213, + 189, + 101, + 255, + 214, + 193, + 103, + 255, + 216, + 193, + 114, + 255, + 216, + 197, + 96, + 255, + 220, + 197, + 116, + 255, + 187, + 162, + 131, + 255, + 138, + 123, + 109, + 255, + 221, + 200, + 126, + 255, + 229, + 208, + 112, + 255, + 226, + 206, + 117, + 255, + 227, + 206, + 124, + 255, + 228, + 207, + 126, + 255, + 230, + 210, + 123, + 255, + 232, + 210, + 128, + 255, + 232, + 210, + 123, + 255, + 233, + 209, + 121, + 255, + 234, + 208, + 128, + 255, + 221, + 204, + 133, + 255, + 178, + 157, + 101, + 255, + 232, + 210, + 143, + 255, + 232, + 210, + 134, + 255, + 226, + 207, + 150, + 255, + 212, + 195, + 141, + 255, + 229, + 217, + 126, + 255, + 235, + 212, + 133, + 255, + 232, + 214, + 138, + 255, + 233, + 215, + 141, + 255, + 233, + 215, + 142, + 255, + 233, + 215, + 143, + 255, + 233, + 214, + 138, + 255, + 235, + 210, + 153, + 255, + 230, + 211, + 137, + 255, + 220, + 205, + 157, + 255, + 236, + 222, + 162, + 255, + 196, + 176, + 157, + 255, + 233, + 216, + 165, + 255, + 228, + 202, + 161, + 255, + 208, + 181, + 190, + 255, + 238, + 225, + 235, + 255, + 187, + 177, + 186, + 255, + 243, + 227, + 231, + 255, + 237, + 208, + 227, + 255, + 212, + 172, + 174, + 255, + 185, + 158, + 175, + 255, + 232, + 217, + 143, + 255, + 233, + 216, + 136, + 255, + 232, + 214, + 150, + 255, + 231, + 215, + 152, + 255, + 183, + 162, + 131, + 255, + 233, + 215, + 139, + 255, + 223, + 214, + 172, + 255, + 204, + 173, + 188, + 255, + 156, + 123, + 144, + 255, + 196, + 157, + 180, + 255, + 200, + 162, + 186, + 255, + 158, + 129, + 142, + 255, + 180, + 160, + 162, + 255, + 226, + 207, + 140, + 255, + 227, + 210, + 131, + 255, + 231, + 209, + 141, + 255, + 230, + 209, + 133, + 255, + 227, + 206, + 124, + 255, + 222, + 206, + 138, + 255, + 233, + 212, + 138, + 255, + 176, + 160, + 127, + 255, + 184, + 162, + 165, + 255, + 184, + 159, + 164, + 255, + 204, + 164, + 157, + 255, + 224, + 198, + 138, + 255, + 111, + 105, + 114, + 255, + 81, + 86, + 116, + 255, + 91, + 88, + 124, + 255, + 68, + 74, + 114, + 255, + 78, + 82, + 112, + 255, + 152, + 156, + 150, + 255, + 105, + 106, + 125, + 255, + 104, + 109, + 139, + 255, + 103, + 107, + 136, + 255, + 102, + 106, + 135, + 255, + 103, + 107, + 136, + 255, + 112, + 116, + 145, + 255, + 107, + 111, + 136, + 255, + 116, + 120, + 145, + 255, + 114, + 118, + 143, + 255, + 112, + 116, + 141, + 255, + 115, + 116, + 145, + 255, + 101, + 104, + 135, + 255, + 98, + 102, + 136, + 255, + 88, + 92, + 127, + 255, + 77, + 87, + 129, + 255, + 53, + 60, + 107, + 255, + 46, + 48, + 96, + 255, + 42, + 43, + 87, + 255, + 40, + 39, + 83, + 255, + 41, + 40, + 84, + 255, + 41, + 38, + 92, + 255, + 44, + 40, + 102, + 255, + 41, + 38, + 109, + 255, + 39, + 36, + 107, + 255, + 39, + 36, + 105, + 255, + 38, + 35, + 104, + 255, + 37, + 36, + 103, + 255, + 36, + 35, + 102, + 255, + 36, + 35, + 102, + 255, + 36, + 35, + 102, + 255, + 36, + 35, + 102, + 255, + 36, + 35, + 101, + 255, + 35, + 35, + 99, + 255, + 35, + 35, + 97, + 255, + 36, + 36, + 98, + 255, + 36, + 36, + 98, + 255, + 37, + 35, + 98, + 255, + 39, + 34, + 98, + 255, + 37, + 35, + 97, + 255, + 37, + 35, + 99, + 255, + 38, + 36, + 100, + 255, + 39, + 37, + 101, + 255, + 37, + 39, + 98, + 255, + 37, + 38, + 100, + 255, + 37, + 38, + 102, + 255, + 38, + 39, + 104, + 255, + 38, + 36, + 98, + 255, + 38, + 36, + 99, + 255, + 38, + 37, + 93, + 255, + 35, + 36, + 83, + 255, + 36, + 35, + 75, + 255, + 35, + 35, + 73, + 255, + 35, + 35, + 71, + 255, + 35, + 35, + 71, + 255, + 36, + 34, + 71, + 255, + 36, + 34, + 71, + 255, + 36, + 34, + 71, + 255, + 37, + 35, + 72, + 255, + 38, + 37, + 71, + 255, + 39, + 39, + 76, + 255, + 41, + 43, + 84, + 255, + 52, + 55, + 98, + 255, + 70, + 72, + 120, + 255, + 75, + 78, + 123, + 255, + 87, + 88, + 132, + 255, + 94, + 93, + 137, + 255, + 96, + 95, + 135, + 255, + 97, + 96, + 136, + 255, + 97, + 96, + 136, + 255, + 97, + 96, + 136, + 255, + 97, + 95, + 134, + 255, + 94, + 97, + 132, + 255, + 90, + 95, + 133, + 255, + 89, + 93, + 138, + 255, + 86, + 97, + 142, + 255, + 90, + 94, + 150, + 255, + 77, + 89, + 158, + 255, + 83, + 112, + 186, + 255, + 48, + 101, + 169, + 255, + 47, + 134, + 194, + 255, + 65, + 100, + 189, + 255, + 67, + 84, + 165, + 255, + 56, + 71, + 155, + 255, + 48, + 62, + 142, + 255, + 54, + 66, + 141, + 255, + 45, + 53, + 126, + 255, + 49, + 49, + 119, + 255, + 53, + 53, + 125, + 255, + 60, + 58, + 141, + 255, + 69, + 66, + 158, + 255, + 72, + 77, + 169, + 255, + 72, + 88, + 192, + 255, + 78, + 93, + 202, + 255, + 77, + 83, + 188, + 255, + 72, + 74, + 172, + 255, + 65, + 68, + 163, + 255, + 62, + 66, + 157, + 255, + 61, + 65, + 154, + 255, + 58, + 68, + 153, + 255, + 57, + 70, + 155, + 255, + 57, + 73, + 161, + 255, + 0, + 1, + 0, + 255, + 3, + 6, + 7, + 255, + 53, + 51, + 117, + 255, + 15, + 21, + 56, + 255, + 1, + 1, + 10, + 255, + 0, + 2, + 10, + 255, + 0, + 4, + 25, + 255, + 0, + 6, + 23, + 255, + 1, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 8, + 255, + 1, + 4, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 7, + 255, + 0, + 2, + 1, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 3, + 0, + 255, + 0, + 3, + 22, + 255, + 0, + 0, + 28, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 3, + 1, + 37, + 255, + 25, + 22, + 58, + 255, + 1, + 0, + 7, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 10, + 255, + 9, + 5, + 38, + 255, + 1, + 1, + 11, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 2, + 255, + 2, + 2, + 9, + 255, + 0, + 1, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 3, + 3, + 5, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 2, + 13, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 4, + 255, + 2, + 0, + 14, + 255, + 7, + 3, + 29, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 5, + 3, + 15, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 18, + 255, + 2, + 0, + 22, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 2, + 17, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 15, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 26, + 255, + 2, + 2, + 27, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 13, + 13, + 37, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 27, + 255, + 2, + 6, + 31, + 255, + 3, + 5, + 30, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 12, + 14, + 39, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 38, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 40, + 255, + 13, + 15, + 40, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 12, + 16, + 41, + 255, + 18, + 22, + 47, + 255, + 40, + 44, + 69, + 255, + 71, + 76, + 94, + 255, + 66, + 71, + 92, + 255, + 67, + 72, + 93, + 255, + 66, + 71, + 92, + 255, + 68, + 72, + 97, + 255, + 64, + 68, + 94, + 255, + 67, + 71, + 98, + 255, + 68, + 72, + 101, + 255, + 67, + 72, + 102, + 255, + 68, + 73, + 103, + 255, + 68, + 73, + 103, + 255, + 67, + 72, + 102, + 255, + 68, + 73, + 102, + 255, + 69, + 75, + 102, + 255, + 71, + 77, + 100, + 255, + 80, + 87, + 105, + 255, + 83, + 91, + 104, + 255, + 85, + 91, + 103, + 255, + 86, + 90, + 102, + 255, + 88, + 90, + 102, + 255, + 86, + 90, + 101, + 255, + 85, + 89, + 101, + 255, + 87, + 90, + 105, + 255, + 89, + 92, + 108, + 255, + 89, + 91, + 104, + 255, + 90, + 92, + 104, + 255, + 96, + 99, + 108, + 255, + 99, + 102, + 110, + 255, + 99, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 111, + 255, + 96, + 98, + 110, + 255, + 87, + 93, + 108, + 255, + 83, + 89, + 105, + 255, + 52, + 57, + 77, + 255, + 35, + 40, + 62, + 255, + 30, + 31, + 59, + 255, + 24, + 25, + 53, + 255, + 24, + 25, + 53, + 255, + 26, + 27, + 55, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 56, + 255, + 22, + 23, + 54, + 255, + 23, + 24, + 56, + 255, + 22, + 27, + 58, + 255, + 16, + 20, + 59, + 255, + 19, + 22, + 65, + 255, + 20, + 24, + 63, + 255, + 21, + 23, + 65, + 255, + 21, + 24, + 67, + 255, + 20, + 24, + 68, + 255, + 21, + 25, + 70, + 255, + 20, + 26, + 68, + 255, + 24, + 28, + 67, + 255, + 31, + 33, + 74, + 255, + 33, + 32, + 76, + 255, + 26, + 26, + 72, + 255, + 27, + 27, + 73, + 255, + 28, + 28, + 74, + 255, + 30, + 30, + 76, + 255, + 36, + 34, + 79, + 255, + 57, + 56, + 90, + 255, + 100, + 98, + 118, + 255, + 86, + 84, + 95, + 255, + 148, + 127, + 117, + 255, + 154, + 126, + 124, + 255, + 161, + 128, + 110, + 255, + 177, + 142, + 102, + 255, + 186, + 162, + 40, + 255, + 183, + 159, + 25, + 255, + 199, + 170, + 49, + 255, + 195, + 168, + 17, + 255, + 196, + 172, + 47, + 255, + 199, + 173, + 61, + 255, + 202, + 176, + 73, + 255, + 204, + 180, + 72, + 255, + 207, + 184, + 82, + 255, + 209, + 185, + 86, + 255, + 212, + 187, + 94, + 255, + 214, + 189, + 98, + 255, + 215, + 192, + 99, + 255, + 217, + 195, + 95, + 255, + 219, + 195, + 105, + 255, + 207, + 177, + 125, + 255, + 183, + 158, + 146, + 255, + 220, + 206, + 170, + 255, + 226, + 202, + 112, + 255, + 226, + 205, + 115, + 255, + 227, + 206, + 116, + 255, + 228, + 206, + 120, + 255, + 228, + 206, + 120, + 255, + 229, + 207, + 121, + 255, + 233, + 207, + 121, + 255, + 231, + 208, + 123, + 255, + 228, + 207, + 125, + 255, + 224, + 205, + 130, + 255, + 213, + 194, + 119, + 255, + 223, + 203, + 133, + 255, + 233, + 214, + 132, + 255, + 231, + 210, + 128, + 255, + 188, + 164, + 127, + 255, + 226, + 209, + 131, + 255, + 231, + 213, + 141, + 255, + 234, + 213, + 133, + 255, + 231, + 212, + 133, + 255, + 232, + 213, + 136, + 255, + 232, + 213, + 138, + 255, + 232, + 213, + 139, + 255, + 233, + 212, + 148, + 255, + 233, + 216, + 128, + 255, + 201, + 180, + 136, + 255, + 226, + 216, + 138, + 255, + 151, + 146, + 124, + 255, + 208, + 179, + 163, + 255, + 235, + 213, + 136, + 255, + 155, + 140, + 135, + 255, + 217, + 195, + 214, + 255, + 148, + 138, + 149, + 255, + 223, + 218, + 225, + 255, + 225, + 218, + 219, + 255, + 234, + 222, + 226, + 255, + 219, + 176, + 186, + 255, + 204, + 161, + 178, + 255, + 230, + 219, + 162, + 255, + 233, + 215, + 133, + 255, + 232, + 213, + 145, + 255, + 230, + 213, + 151, + 255, + 182, + 159, + 135, + 255, + 235, + 218, + 140, + 255, + 226, + 211, + 165, + 255, + 210, + 165, + 177, + 255, + 215, + 163, + 181, + 255, + 210, + 167, + 193, + 255, + 159, + 118, + 145, + 255, + 160, + 131, + 153, + 255, + 171, + 151, + 169, + 255, + 220, + 202, + 164, + 255, + 232, + 217, + 131, + 255, + 232, + 209, + 130, + 255, + 232, + 203, + 137, + 255, + 223, + 206, + 135, + 255, + 221, + 207, + 147, + 255, + 231, + 207, + 135, + 255, + 202, + 183, + 143, + 255, + 200, + 178, + 182, + 255, + 127, + 109, + 116, + 255, + 200, + 165, + 157, + 255, + 226, + 202, + 131, + 255, + 110, + 106, + 102, + 255, + 82, + 88, + 114, + 255, + 77, + 74, + 110, + 255, + 62, + 68, + 108, + 255, + 67, + 69, + 112, + 255, + 77, + 80, + 103, + 255, + 111, + 114, + 142, + 255, + 105, + 110, + 141, + 255, + 102, + 106, + 135, + 255, + 101, + 105, + 134, + 255, + 102, + 106, + 135, + 255, + 106, + 110, + 139, + 255, + 106, + 110, + 137, + 255, + 111, + 115, + 142, + 255, + 109, + 113, + 140, + 255, + 102, + 106, + 133, + 255, + 100, + 104, + 131, + 255, + 98, + 102, + 133, + 255, + 101, + 107, + 142, + 255, + 80, + 85, + 124, + 255, + 75, + 84, + 126, + 255, + 43, + 48, + 96, + 255, + 44, + 45, + 93, + 255, + 42, + 42, + 86, + 255, + 40, + 39, + 83, + 255, + 38, + 37, + 80, + 255, + 38, + 36, + 84, + 255, + 39, + 36, + 91, + 255, + 39, + 37, + 103, + 255, + 37, + 34, + 102, + 255, + 37, + 34, + 102, + 255, + 36, + 33, + 102, + 255, + 36, + 35, + 101, + 255, + 35, + 34, + 100, + 255, + 34, + 33, + 99, + 255, + 34, + 33, + 99, + 255, + 33, + 32, + 99, + 255, + 33, + 32, + 98, + 255, + 34, + 34, + 98, + 255, + 34, + 34, + 96, + 255, + 33, + 33, + 95, + 255, + 33, + 33, + 95, + 255, + 36, + 34, + 97, + 255, + 38, + 33, + 97, + 255, + 35, + 34, + 92, + 255, + 35, + 34, + 92, + 255, + 35, + 34, + 92, + 255, + 36, + 35, + 93, + 255, + 35, + 36, + 93, + 255, + 35, + 35, + 95, + 255, + 36, + 36, + 97, + 255, + 37, + 37, + 99, + 255, + 37, + 36, + 96, + 255, + 37, + 35, + 96, + 255, + 36, + 36, + 89, + 255, + 33, + 34, + 80, + 255, + 33, + 33, + 71, + 255, + 32, + 32, + 68, + 255, + 32, + 32, + 67, + 255, + 32, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 34, + 33, + 67, + 255, + 35, + 34, + 68, + 255, + 36, + 35, + 69, + 255, + 39, + 39, + 76, + 255, + 41, + 43, + 84, + 255, + 67, + 70, + 113, + 255, + 70, + 72, + 120, + 255, + 72, + 75, + 120, + 255, + 78, + 79, + 123, + 255, + 94, + 93, + 137, + 255, + 95, + 95, + 133, + 255, + 96, + 96, + 134, + 255, + 96, + 96, + 134, + 255, + 96, + 96, + 134, + 255, + 94, + 94, + 132, + 255, + 93, + 94, + 132, + 255, + 91, + 95, + 140, + 255, + 72, + 79, + 132, + 255, + 76, + 69, + 137, + 255, + 66, + 89, + 157, + 255, + 62, + 115, + 182, + 255, + 50, + 136, + 196, + 255, + 76, + 140, + 210, + 255, + 45, + 117, + 185, + 255, + 44, + 124, + 203, + 255, + 72, + 94, + 184, + 255, + 61, + 76, + 162, + 255, + 51, + 60, + 142, + 255, + 48, + 53, + 128, + 255, + 45, + 48, + 119, + 255, + 43, + 44, + 109, + 255, + 45, + 46, + 112, + 255, + 51, + 50, + 126, + 255, + 58, + 56, + 140, + 255, + 66, + 66, + 154, + 255, + 65, + 72, + 170, + 255, + 64, + 70, + 172, + 255, + 69, + 69, + 168, + 255, + 64, + 64, + 159, + 255, + 57, + 58, + 149, + 255, + 52, + 53, + 140, + 255, + 50, + 52, + 137, + 255, + 47, + 55, + 139, + 255, + 48, + 56, + 139, + 255, + 48, + 56, + 137, + 255, + 0, + 2, + 0, + 255, + 2, + 5, + 6, + 255, + 4, + 4, + 55, + 255, + 0, + 2, + 31, + 255, + 1, + 1, + 1, + 255, + 0, + 1, + 15, + 255, + 7, + 9, + 51, + 255, + 14, + 18, + 74, + 255, + 1, + 0, + 12, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 21, + 255, + 6, + 6, + 52, + 255, + 1, + 1, + 20, + 255, + 0, + 0, + 7, + 255, + 0, + 3, + 2, + 255, + 0, + 4, + 6, + 255, + 2, + 1, + 8, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 5, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 3, + 2, + 255, + 0, + 1, + 10, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 11, + 255, + 14, + 11, + 40, + 255, + 1, + 1, + 9, + 255, + 0, + 1, + 0, + 255, + 6, + 6, + 16, + 255, + 25, + 22, + 50, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 7, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 11, + 255, + 4, + 5, + 15, + 255, + 0, + 1, + 3, + 255, + 1, + 1, + 3, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 2, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 1, + 255, + 2, + 1, + 9, + 255, + 2, + 0, + 11, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 13, + 11, + 25, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 6, + 255, + 2, + 2, + 20, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 26, + 255, + 6, + 6, + 31, + 255, + 0, + 0, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 2, + 3, + 24, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 3, + 28, + 255, + 3, + 7, + 32, + 255, + 3, + 5, + 30, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 10, + 12, + 37, + 255, + 9, + 11, + 36, + 255, + 13, + 15, + 40, + 255, + 9, + 13, + 38, + 255, + 10, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 40, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 14, + 18, + 43, + 255, + 21, + 25, + 50, + 255, + 65, + 69, + 94, + 255, + 71, + 76, + 97, + 255, + 83, + 89, + 106, + 255, + 80, + 86, + 101, + 255, + 69, + 74, + 92, + 255, + 71, + 76, + 97, + 255, + 70, + 75, + 98, + 255, + 70, + 74, + 98, + 255, + 72, + 76, + 102, + 255, + 69, + 75, + 101, + 255, + 69, + 75, + 101, + 255, + 68, + 74, + 100, + 255, + 68, + 74, + 100, + 255, + 68, + 73, + 102, + 255, + 69, + 75, + 98, + 255, + 74, + 81, + 101, + 255, + 76, + 83, + 102, + 255, + 76, + 84, + 99, + 255, + 84, + 90, + 103, + 255, + 90, + 94, + 105, + 255, + 88, + 91, + 100, + 255, + 88, + 92, + 101, + 255, + 88, + 92, + 103, + 255, + 87, + 91, + 103, + 255, + 88, + 91, + 106, + 255, + 90, + 92, + 104, + 255, + 95, + 98, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 107, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 110, + 255, + 99, + 102, + 111, + 255, + 89, + 96, + 106, + 255, + 82, + 88, + 102, + 255, + 73, + 78, + 98, + 255, + 39, + 44, + 66, + 255, + 28, + 30, + 55, + 255, + 26, + 28, + 53, + 255, + 24, + 26, + 51, + 255, + 25, + 27, + 52, + 255, + 26, + 28, + 53, + 255, + 26, + 27, + 54, + 255, + 27, + 28, + 57, + 255, + 28, + 29, + 59, + 255, + 24, + 29, + 59, + 255, + 18, + 22, + 60, + 255, + 20, + 23, + 64, + 255, + 19, + 23, + 60, + 255, + 21, + 23, + 63, + 255, + 20, + 23, + 64, + 255, + 20, + 25, + 67, + 255, + 20, + 25, + 67, + 255, + 20, + 25, + 68, + 255, + 21, + 25, + 72, + 255, + 21, + 25, + 73, + 255, + 22, + 26, + 72, + 255, + 22, + 25, + 76, + 255, + 22, + 25, + 76, + 255, + 23, + 26, + 77, + 255, + 27, + 30, + 81, + 255, + 26, + 29, + 78, + 255, + 74, + 78, + 122, + 255, + 77, + 84, + 120, + 255, + 77, + 85, + 115, + 255, + 85, + 74, + 105, + 255, + 135, + 121, + 116, + 255, + 154, + 131, + 112, + 255, + 162, + 129, + 119, + 255, + 169, + 133, + 119, + 255, + 181, + 152, + 77, + 255, + 192, + 168, + 21, + 255, + 195, + 167, + 31, + 255, + 196, + 176, + 26, + 255, + 196, + 175, + 32, + 255, + 203, + 177, + 59, + 255, + 208, + 177, + 76, + 255, + 207, + 183, + 77, + 255, + 209, + 185, + 80, + 255, + 212, + 187, + 87, + 255, + 214, + 188, + 92, + 255, + 217, + 193, + 95, + 255, + 216, + 194, + 85, + 255, + 218, + 188, + 127, + 255, + 195, + 159, + 135, + 255, + 144, + 122, + 114, + 255, + 208, + 192, + 135, + 255, + 230, + 201, + 108, + 255, + 226, + 207, + 116, + 255, + 229, + 205, + 114, + 255, + 230, + 207, + 114, + 255, + 230, + 207, + 114, + 255, + 231, + 207, + 120, + 255, + 223, + 202, + 105, + 255, + 228, + 207, + 125, + 255, + 202, + 180, + 110, + 255, + 232, + 210, + 150, + 255, + 232, + 209, + 129, + 255, + 233, + 211, + 129, + 255, + 229, + 210, + 119, + 255, + 233, + 212, + 139, + 255, + 185, + 163, + 116, + 255, + 231, + 212, + 127, + 255, + 234, + 210, + 139, + 255, + 232, + 212, + 134, + 255, + 232, + 214, + 132, + 255, + 232, + 214, + 132, + 255, + 232, + 213, + 134, + 255, + 232, + 213, + 136, + 255, + 235, + 215, + 138, + 255, + 220, + 203, + 142, + 255, + 207, + 189, + 150, + 255, + 208, + 190, + 150, + 255, + 197, + 180, + 189, + 255, + 199, + 170, + 136, + 255, + 240, + 218, + 142, + 255, + 162, + 151, + 160, + 255, + 186, + 167, + 181, + 255, + 227, + 216, + 222, + 255, + 225, + 218, + 219, + 255, + 228, + 225, + 226, + 255, + 224, + 221, + 211, + 255, + 221, + 190, + 204, + 255, + 216, + 171, + 182, + 255, + 198, + 179, + 146, + 255, + 233, + 214, + 129, + 255, + 233, + 213, + 142, + 255, + 236, + 216, + 156, + 255, + 187, + 161, + 145, + 255, + 233, + 215, + 141, + 255, + 226, + 207, + 164, + 255, + 216, + 164, + 174, + 255, + 215, + 154, + 168, + 255, + 220, + 157, + 175, + 255, + 222, + 160, + 175, + 255, + 216, + 162, + 178, + 255, + 211, + 163, + 179, + 255, + 155, + 131, + 120, + 255, + 225, + 208, + 132, + 255, + 232, + 210, + 126, + 255, + 232, + 205, + 133, + 255, + 226, + 211, + 138, + 255, + 213, + 200, + 148, + 255, + 184, + 161, + 99, + 255, + 204, + 186, + 154, + 255, + 197, + 175, + 180, + 255, + 131, + 122, + 134, + 255, + 190, + 163, + 153, + 255, + 227, + 201, + 121, + 255, + 115, + 111, + 108, + 255, + 73, + 78, + 107, + 255, + 126, + 122, + 161, + 255, + 51, + 58, + 94, + 255, + 60, + 61, + 107, + 255, + 80, + 85, + 123, + 255, + 100, + 108, + 131, + 255, + 102, + 105, + 140, + 255, + 100, + 104, + 133, + 255, + 99, + 103, + 132, + 255, + 100, + 104, + 133, + 255, + 102, + 106, + 135, + 255, + 99, + 102, + 133, + 255, + 109, + 112, + 143, + 255, + 103, + 106, + 137, + 255, + 100, + 103, + 134, + 255, + 98, + 104, + 129, + 255, + 96, + 102, + 134, + 255, + 84, + 91, + 129, + 255, + 75, + 82, + 125, + 255, + 72, + 79, + 122, + 255, + 44, + 46, + 95, + 255, + 41, + 40, + 89, + 255, + 42, + 39, + 84, + 255, + 39, + 37, + 84, + 255, + 36, + 35, + 76, + 255, + 36, + 35, + 76, + 255, + 36, + 34, + 79, + 255, + 36, + 35, + 94, + 255, + 37, + 35, + 98, + 255, + 36, + 34, + 99, + 255, + 35, + 32, + 100, + 255, + 34, + 32, + 97, + 255, + 33, + 31, + 96, + 255, + 34, + 32, + 97, + 255, + 34, + 32, + 97, + 255, + 33, + 32, + 99, + 255, + 33, + 32, + 98, + 255, + 33, + 33, + 97, + 255, + 33, + 33, + 95, + 255, + 34, + 34, + 96, + 255, + 34, + 34, + 96, + 255, + 34, + 32, + 95, + 255, + 36, + 31, + 95, + 255, + 34, + 33, + 91, + 255, + 34, + 33, + 89, + 255, + 34, + 34, + 87, + 255, + 34, + 34, + 85, + 255, + 33, + 33, + 86, + 255, + 34, + 33, + 89, + 255, + 35, + 34, + 92, + 255, + 36, + 35, + 94, + 255, + 36, + 35, + 93, + 255, + 36, + 35, + 94, + 255, + 35, + 35, + 87, + 255, + 31, + 32, + 76, + 255, + 31, + 31, + 67, + 255, + 31, + 31, + 66, + 255, + 31, + 31, + 65, + 255, + 31, + 32, + 63, + 255, + 33, + 32, + 64, + 255, + 33, + 32, + 64, + 255, + 32, + 31, + 63, + 255, + 34, + 33, + 65, + 255, + 36, + 35, + 69, + 255, + 40, + 40, + 77, + 255, + 54, + 56, + 97, + 255, + 65, + 68, + 111, + 255, + 68, + 70, + 118, + 255, + 70, + 73, + 118, + 255, + 75, + 76, + 120, + 255, + 86, + 85, + 129, + 255, + 95, + 95, + 131, + 255, + 94, + 94, + 130, + 255, + 94, + 94, + 130, + 255, + 94, + 94, + 130, + 255, + 91, + 93, + 131, + 255, + 90, + 93, + 136, + 255, + 56, + 70, + 125, + 255, + 47, + 74, + 137, + 255, + 58, + 105, + 175, + 255, + 62, + 109, + 188, + 255, + 41, + 113, + 186, + 255, + 35, + 165, + 214, + 255, + 31, + 142, + 198, + 255, + 64, + 152, + 214, + 255, + 64, + 118, + 208, + 255, + 68, + 118, + 206, + 255, + 62, + 86, + 175, + 255, + 55, + 64, + 149, + 255, + 51, + 52, + 126, + 255, + 42, + 44, + 109, + 255, + 41, + 41, + 100, + 255, + 41, + 41, + 100, + 255, + 44, + 44, + 108, + 255, + 50, + 48, + 120, + 255, + 56, + 53, + 134, + 255, + 59, + 58, + 143, + 255, + 99, + 100, + 188, + 255, + 62, + 61, + 148, + 255, + 55, + 55, + 135, + 255, + 48, + 48, + 126, + 255, + 45, + 46, + 120, + 255, + 45, + 46, + 117, + 255, + 44, + 47, + 122, + 255, + 50, + 53, + 133, + 255, + 43, + 49, + 127, + 255, + 0, + 1, + 1, + 255, + 1, + 1, + 8, + 255, + 2, + 4, + 0, + 255, + 5, + 3, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 3, + 255, + 1, + 3, + 18, + 255, + 0, + 3, + 14, + 255, + 2, + 0, + 3, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 28, + 255, + 18, + 18, + 81, + 255, + 1, + 2, + 15, + 255, + 0, + 1, + 0, + 255, + 2, + 2, + 21, + 255, + 29, + 30, + 95, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 2, + 255, + 3, + 3, + 3, + 255, + 1, + 1, + 8, + 255, + 0, + 1, + 0, + 255, + 2, + 2, + 0, + 255, + 3, + 0, + 3, + 255, + 2, + 0, + 9, + 255, + 2, + 1, + 1, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 7, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 2, + 0, + 255, + 3, + 2, + 20, + 255, + 0, + 0, + 12, + 255, + 0, + 3, + 0, + 255, + 0, + 1, + 0, + 255, + 5, + 4, + 38, + 255, + 13, + 12, + 42, + 255, + 0, + 4, + 0, + 255, + 0, + 0, + 1, + 255, + 2, + 1, + 10, + 255, + 4, + 2, + 13, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 1, + 255, + 2, + 0, + 1, + 255, + 2, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 3, + 255, + 1, + 2, + 0, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 11, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 5, + 255, + 2, + 0, + 16, + 255, + 3, + 2, + 33, + 255, + 1, + 1, + 27, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 15, + 255, + 9, + 7, + 43, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 3, + 5, + 30, + 255, + 4, + 8, + 33, + 255, + 4, + 6, + 31, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 4, + 6, + 31, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 14, + 16, + 41, + 255, + 10, + 12, + 37, + 255, + 11, + 17, + 41, + 255, + 9, + 15, + 39, + 255, + 9, + 15, + 39, + 255, + 9, + 15, + 39, + 255, + 13, + 15, + 40, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 10, + 14, + 39, + 255, + 14, + 18, + 43, + 255, + 23, + 27, + 52, + 255, + 79, + 83, + 108, + 255, + 71, + 75, + 100, + 255, + 80, + 86, + 100, + 255, + 83, + 89, + 102, + 255, + 81, + 87, + 104, + 255, + 76, + 82, + 97, + 255, + 81, + 87, + 103, + 255, + 76, + 81, + 100, + 255, + 74, + 79, + 100, + 255, + 74, + 81, + 101, + 255, + 72, + 79, + 99, + 255, + 72, + 79, + 99, + 255, + 72, + 79, + 99, + 255, + 73, + 78, + 107, + 255, + 74, + 81, + 100, + 255, + 80, + 87, + 104, + 255, + 79, + 86, + 107, + 255, + 71, + 78, + 95, + 255, + 79, + 85, + 100, + 255, + 85, + 89, + 98, + 255, + 87, + 90, + 97, + 255, + 89, + 93, + 102, + 255, + 89, + 93, + 103, + 255, + 88, + 92, + 103, + 255, + 89, + 93, + 105, + 255, + 92, + 95, + 104, + 255, + 97, + 100, + 108, + 255, + 97, + 100, + 106, + 255, + 98, + 101, + 106, + 255, + 99, + 102, + 111, + 255, + 99, + 102, + 111, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 95, + 102, + 110, + 255, + 84, + 90, + 103, + 255, + 85, + 90, + 110, + 255, + 38, + 42, + 67, + 255, + 30, + 32, + 57, + 255, + 25, + 27, + 52, + 255, + 24, + 26, + 51, + 255, + 25, + 27, + 52, + 255, + 26, + 28, + 53, + 255, + 26, + 28, + 53, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 57, + 255, + 23, + 28, + 56, + 255, + 19, + 23, + 59, + 255, + 20, + 24, + 62, + 255, + 19, + 23, + 60, + 255, + 21, + 23, + 62, + 255, + 20, + 24, + 63, + 255, + 20, + 25, + 66, + 255, + 20, + 25, + 67, + 255, + 19, + 23, + 67, + 255, + 20, + 24, + 73, + 255, + 18, + 25, + 70, + 255, + 19, + 27, + 64, + 255, + 20, + 25, + 73, + 255, + 20, + 25, + 73, + 255, + 22, + 27, + 75, + 255, + 23, + 28, + 76, + 255, + 26, + 31, + 71, + 255, + 72, + 76, + 114, + 255, + 66, + 70, + 106, + 255, + 68, + 71, + 106, + 255, + 73, + 79, + 103, + 255, + 89, + 82, + 113, + 255, + 102, + 84, + 89, + 255, + 150, + 129, + 99, + 255, + 161, + 133, + 113, + 255, + 164, + 130, + 120, + 255, + 190, + 168, + 46, + 255, + 196, + 163, + 75, + 255, + 162, + 135, + 37, + 255, + 196, + 172, + 46, + 255, + 203, + 178, + 44, + 255, + 209, + 177, + 69, + 255, + 205, + 181, + 71, + 255, + 208, + 184, + 76, + 255, + 211, + 186, + 83, + 255, + 213, + 188, + 87, + 255, + 215, + 192, + 87, + 255, + 216, + 193, + 89, + 255, + 196, + 161, + 131, + 255, + 195, + 157, + 144, + 255, + 203, + 186, + 168, + 255, + 215, + 199, + 132, + 255, + 233, + 197, + 111, + 255, + 222, + 205, + 108, + 255, + 228, + 203, + 111, + 255, + 229, + 205, + 108, + 255, + 230, + 206, + 109, + 255, + 231, + 205, + 119, + 255, + 210, + 191, + 131, + 255, + 229, + 208, + 142, + 255, + 230, + 208, + 130, + 255, + 226, + 205, + 106, + 255, + 233, + 208, + 123, + 255, + 233, + 210, + 123, + 255, + 230, + 210, + 120, + 255, + 215, + 193, + 134, + 255, + 228, + 210, + 137, + 255, + 235, + 210, + 136, + 255, + 235, + 211, + 125, + 255, + 231, + 211, + 135, + 255, + 232, + 211, + 128, + 255, + 232, + 211, + 129, + 255, + 232, + 211, + 130, + 255, + 232, + 211, + 132, + 255, + 235, + 214, + 142, + 255, + 186, + 168, + 136, + 255, + 214, + 208, + 120, + 255, + 187, + 162, + 161, + 255, + 169, + 130, + 149, + 255, + 224, + 201, + 140, + 255, + 232, + 214, + 160, + 255, + 203, + 189, + 186, + 255, + 225, + 206, + 210, + 255, + 221, + 205, + 204, + 255, + 228, + 217, + 214, + 255, + 223, + 218, + 221, + 255, + 224, + 221, + 204, + 255, + 228, + 217, + 229, + 255, + 213, + 180, + 182, + 255, + 161, + 132, + 117, + 255, + 233, + 213, + 126, + 255, + 233, + 212, + 138, + 255, + 231, + 210, + 152, + 255, + 194, + 166, + 155, + 255, + 230, + 209, + 144, + 255, + 188, + 169, + 130, + 255, + 208, + 159, + 170, + 255, + 217, + 161, + 174, + 255, + 217, + 157, + 182, + 255, + 219, + 156, + 175, + 255, + 214, + 153, + 170, + 255, + 218, + 159, + 179, + 255, + 188, + 156, + 158, + 255, + 235, + 213, + 155, + 255, + 229, + 209, + 129, + 255, + 229, + 211, + 122, + 255, + 230, + 212, + 130, + 255, + 195, + 180, + 130, + 255, + 193, + 173, + 121, + 255, + 192, + 179, + 161, + 255, + 190, + 167, + 175, + 255, + 131, + 127, + 142, + 255, + 196, + 173, + 163, + 255, + 226, + 200, + 112, + 255, + 107, + 102, + 107, + 255, + 70, + 74, + 112, + 255, + 77, + 73, + 115, + 255, + 58, + 65, + 98, + 255, + 57, + 60, + 97, + 255, + 72, + 82, + 117, + 255, + 100, + 112, + 124, + 255, + 97, + 98, + 134, + 255, + 99, + 103, + 132, + 255, + 98, + 102, + 131, + 255, + 98, + 102, + 131, + 255, + 98, + 102, + 131, + 255, + 101, + 104, + 137, + 255, + 104, + 107, + 140, + 255, + 103, + 106, + 139, + 255, + 100, + 103, + 136, + 255, + 97, + 103, + 128, + 255, + 92, + 98, + 131, + 255, + 76, + 84, + 124, + 255, + 71, + 79, + 124, + 255, + 74, + 79, + 123, + 255, + 49, + 51, + 100, + 255, + 39, + 38, + 87, + 255, + 40, + 37, + 82, + 255, + 37, + 35, + 83, + 255, + 34, + 33, + 73, + 255, + 33, + 33, + 69, + 255, + 33, + 33, + 71, + 255, + 32, + 31, + 86, + 255, + 33, + 32, + 90, + 255, + 35, + 33, + 97, + 255, + 34, + 31, + 98, + 255, + 35, + 30, + 94, + 255, + 34, + 29, + 93, + 255, + 35, + 30, + 94, + 255, + 35, + 30, + 94, + 255, + 32, + 31, + 98, + 255, + 32, + 31, + 97, + 255, + 32, + 32, + 96, + 255, + 32, + 32, + 94, + 255, + 33, + 33, + 95, + 255, + 33, + 33, + 95, + 255, + 33, + 31, + 94, + 255, + 35, + 30, + 94, + 255, + 34, + 32, + 95, + 255, + 34, + 33, + 92, + 255, + 33, + 32, + 88, + 255, + 31, + 31, + 83, + 255, + 33, + 30, + 83, + 255, + 34, + 31, + 85, + 255, + 35, + 32, + 88, + 255, + 37, + 34, + 91, + 255, + 34, + 33, + 91, + 255, + 34, + 33, + 90, + 255, + 33, + 33, + 84, + 255, + 28, + 30, + 72, + 255, + 29, + 29, + 63, + 255, + 29, + 29, + 63, + 255, + 29, + 30, + 61, + 255, + 29, + 30, + 60, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 31, + 30, + 62, + 255, + 33, + 32, + 64, + 255, + 37, + 36, + 70, + 255, + 41, + 41, + 78, + 255, + 68, + 70, + 111, + 255, + 68, + 71, + 114, + 255, + 68, + 70, + 118, + 255, + 70, + 73, + 118, + 255, + 74, + 75, + 119, + 255, + 77, + 76, + 120, + 255, + 90, + 90, + 124, + 255, + 93, + 93, + 127, + 255, + 93, + 93, + 127, + 255, + 93, + 93, + 127, + 255, + 88, + 89, + 126, + 255, + 73, + 80, + 126, + 255, + 40, + 71, + 128, + 255, + 45, + 101, + 166, + 255, + 47, + 113, + 187, + 255, + 39, + 124, + 199, + 255, + 26, + 140, + 201, + 255, + 21, + 176, + 212, + 255, + 82, + 154, + 219, + 255, + 66, + 163, + 216, + 255, + 63, + 135, + 216, + 255, + 56, + 109, + 197, + 255, + 74, + 108, + 198, + 255, + 57, + 71, + 154, + 255, + 48, + 52, + 123, + 255, + 40, + 46, + 106, + 255, + 38, + 38, + 92, + 255, + 36, + 36, + 88, + 255, + 40, + 39, + 96, + 255, + 44, + 42, + 105, + 255, + 47, + 45, + 119, + 255, + 47, + 47, + 120, + 255, + 40, + 41, + 115, + 255, + 50, + 54, + 129, + 255, + 45, + 44, + 109, + 255, + 41, + 41, + 102, + 255, + 39, + 40, + 97, + 255, + 38, + 39, + 94, + 255, + 41, + 40, + 99, + 255, + 41, + 44, + 122, + 255, + 45, + 54, + 140, + 255, + 2, + 0, + 4, + 255, + 0, + 1, + 2, + 255, + 0, + 3, + 8, + 255, + 1, + 0, + 7, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 2, + 1, + 255, + 0, + 1, + 16, + 255, + 3, + 2, + 0, + 255, + 0, + 0, + 10, + 255, + 0, + 4, + 4, + 255, + 0, + 0, + 34, + 255, + 0, + 3, + 17, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 13, + 255, + 22, + 21, + 69, + 255, + 2, + 0, + 31, + 255, + 1, + 2, + 6, + 255, + 1, + 3, + 2, + 255, + 3, + 2, + 17, + 255, + 4, + 10, + 36, + 255, + 0, + 5, + 11, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 5, + 255, + 2, + 2, + 11, + 255, + 0, + 0, + 6, + 255, + 0, + 1, + 1, + 255, + 0, + 2, + 0, + 255, + 0, + 3, + 0, + 255, + 0, + 2, + 2, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 1, + 255, + 2, + 0, + 2, + 255, + 2, + 1, + 0, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 2, + 2, + 3, + 255, + 2, + 2, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 10, + 255, + 6, + 2, + 26, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 8, + 255, + 30, + 26, + 48, + 255, + 3, + 2, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 5, + 4, + 10, + 255, + 3, + 2, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 2, + 10, + 255, + 0, + 2, + 14, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 25, + 255, + 6, + 6, + 30, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 24, + 255, + 3, + 3, + 28, + 255, + 0, + 0, + 25, + 255, + 0, + 0, + 25, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 26, + 255, + 0, + 2, + 27, + 255, + 2, + 4, + 29, + 255, + 3, + 5, + 30, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 35, + 255, + 4, + 6, + 31, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 11, + 15, + 40, + 255, + 14, + 19, + 42, + 255, + 24, + 29, + 51, + 255, + 82, + 87, + 107, + 255, + 76, + 83, + 99, + 255, + 81, + 87, + 101, + 255, + 84, + 88, + 100, + 255, + 85, + 87, + 100, + 255, + 85, + 88, + 103, + 255, + 81, + 84, + 99, + 255, + 82, + 85, + 100, + 255, + 79, + 82, + 97, + 255, + 76, + 83, + 99, + 255, + 77, + 84, + 100, + 255, + 79, + 86, + 102, + 255, + 80, + 87, + 103, + 255, + 82, + 90, + 103, + 255, + 84, + 92, + 107, + 255, + 79, + 86, + 103, + 255, + 42, + 49, + 67, + 255, + 41, + 44, + 63, + 255, + 41, + 44, + 60, + 255, + 50, + 54, + 65, + 255, + 81, + 85, + 94, + 255, + 87, + 91, + 102, + 255, + 88, + 92, + 103, + 255, + 88, + 92, + 103, + 255, + 90, + 94, + 106, + 255, + 95, + 98, + 105, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 101, + 110, + 255, + 92, + 94, + 107, + 255, + 87, + 90, + 107, + 255, + 54, + 60, + 77, + 255, + 33, + 35, + 56, + 255, + 26, + 28, + 51, + 255, + 26, + 28, + 53, + 255, + 24, + 26, + 51, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 25, + 29, + 58, + 255, + 21, + 24, + 57, + 255, + 20, + 22, + 59, + 255, + 20, + 22, + 61, + 255, + 15, + 20, + 60, + 255, + 15, + 20, + 60, + 255, + 20, + 25, + 65, + 255, + 19, + 24, + 64, + 255, + 19, + 22, + 65, + 255, + 20, + 23, + 67, + 255, + 21, + 23, + 70, + 255, + 22, + 24, + 72, + 255, + 23, + 23, + 74, + 255, + 22, + 23, + 69, + 255, + 20, + 22, + 64, + 255, + 21, + 23, + 62, + 255, + 25, + 24, + 55, + 255, + 68, + 68, + 100, + 255, + 58, + 61, + 93, + 255, + 66, + 72, + 105, + 255, + 65, + 74, + 98, + 255, + 72, + 79, + 96, + 255, + 95, + 91, + 98, + 255, + 108, + 92, + 93, + 255, + 156, + 128, + 118, + 255, + 162, + 133, + 127, + 255, + 138, + 111, + 77, + 255, + 177, + 159, + 58, + 255, + 192, + 170, + 24, + 255, + 194, + 175, + 4, + 255, + 203, + 178, + 27, + 255, + 208, + 178, + 47, + 255, + 207, + 182, + 57, + 255, + 210, + 182, + 77, + 255, + 214, + 191, + 62, + 255, + 206, + 187, + 40, + 255, + 220, + 191, + 98, + 255, + 200, + 171, + 113, + 255, + 195, + 154, + 131, + 255, + 184, + 158, + 144, + 255, + 207, + 193, + 166, + 255, + 222, + 199, + 86, + 255, + 226, + 200, + 113, + 255, + 227, + 202, + 111, + 255, + 226, + 204, + 109, + 255, + 233, + 209, + 123, + 255, + 204, + 183, + 111, + 255, + 203, + 189, + 137, + 255, + 228, + 208, + 136, + 255, + 236, + 212, + 124, + 255, + 232, + 207, + 114, + 255, + 232, + 210, + 121, + 255, + 232, + 209, + 122, + 255, + 234, + 211, + 118, + 255, + 229, + 209, + 112, + 255, + 182, + 160, + 128, + 255, + 232, + 211, + 130, + 255, + 226, + 206, + 119, + 255, + 232, + 212, + 125, + 255, + 232, + 211, + 131, + 255, + 231, + 211, + 130, + 255, + 235, + 209, + 130, + 255, + 232, + 208, + 129, + 255, + 223, + 208, + 125, + 255, + 164, + 148, + 89, + 255, + 235, + 223, + 166, + 255, + 150, + 132, + 113, + 255, + 218, + 187, + 201, + 255, + 149, + 123, + 133, + 255, + 238, + 222, + 155, + 255, + 161, + 133, + 119, + 255, + 228, + 195, + 198, + 255, + 228, + 201, + 204, + 255, + 229, + 212, + 212, + 255, + 229, + 216, + 215, + 255, + 229, + 214, + 213, + 255, + 230, + 218, + 214, + 255, + 230, + 218, + 219, + 255, + 230, + 213, + 219, + 255, + 162, + 142, + 123, + 255, + 234, + 210, + 139, + 255, + 235, + 210, + 127, + 255, + 223, + 204, + 152, + 255, + 203, + 175, + 164, + 255, + 232, + 210, + 134, + 255, + 159, + 129, + 121, + 255, + 211, + 168, + 168, + 255, + 239, + 199, + 216, + 255, + 202, + 157, + 171, + 255, + 217, + 161, + 171, + 255, + 215, + 152, + 165, + 255, + 216, + 152, + 169, + 255, + 206, + 158, + 175, + 255, + 173, + 161, + 121, + 255, + 226, + 211, + 120, + 255, + 232, + 209, + 133, + 255, + 227, + 212, + 121, + 255, + 180, + 161, + 104, + 255, + 184, + 168, + 127, + 255, + 177, + 161, + 139, + 255, + 170, + 152, + 159, + 255, + 121, + 118, + 137, + 255, + 170, + 152, + 122, + 255, + 223, + 199, + 109, + 255, + 87, + 89, + 105, + 255, + 71, + 70, + 111, + 255, + 65, + 67, + 105, + 255, + 61, + 63, + 107, + 255, + 58, + 59, + 106, + 255, + 64, + 66, + 103, + 255, + 104, + 108, + 137, + 255, + 99, + 103, + 132, + 255, + 98, + 102, + 131, + 255, + 97, + 101, + 130, + 255, + 97, + 101, + 130, + 255, + 96, + 100, + 129, + 255, + 98, + 99, + 130, + 255, + 100, + 101, + 132, + 255, + 102, + 103, + 134, + 255, + 102, + 103, + 134, + 255, + 95, + 104, + 134, + 255, + 78, + 86, + 125, + 255, + 75, + 82, + 127, + 255, + 70, + 77, + 121, + 255, + 72, + 74, + 122, + 255, + 46, + 44, + 91, + 255, + 40, + 37, + 82, + 255, + 35, + 35, + 79, + 255, + 33, + 35, + 74, + 255, + 31, + 33, + 71, + 255, + 30, + 32, + 70, + 255, + 29, + 32, + 67, + 255, + 34, + 30, + 79, + 255, + 35, + 30, + 94, + 255, + 32, + 29, + 97, + 255, + 31, + 31, + 92, + 255, + 32, + 30, + 93, + 255, + 32, + 30, + 93, + 255, + 32, + 30, + 93, + 255, + 32, + 30, + 93, + 255, + 33, + 32, + 92, + 255, + 31, + 30, + 90, + 255, + 32, + 31, + 91, + 255, + 32, + 31, + 91, + 255, + 32, + 30, + 93, + 255, + 32, + 30, + 92, + 255, + 31, + 30, + 89, + 255, + 31, + 30, + 88, + 255, + 32, + 31, + 87, + 255, + 31, + 31, + 85, + 255, + 31, + 31, + 83, + 255, + 30, + 30, + 81, + 255, + 30, + 30, + 80, + 255, + 30, + 30, + 80, + 255, + 30, + 30, + 82, + 255, + 31, + 31, + 85, + 255, + 32, + 33, + 89, + 255, + 33, + 32, + 87, + 255, + 33, + 32, + 76, + 255, + 29, + 28, + 61, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 58, + 255, + 29, + 28, + 58, + 255, + 29, + 29, + 57, + 255, + 28, + 28, + 54, + 255, + 29, + 29, + 56, + 255, + 29, + 28, + 58, + 255, + 34, + 33, + 64, + 255, + 37, + 40, + 73, + 255, + 58, + 60, + 99, + 255, + 66, + 67, + 111, + 255, + 67, + 68, + 114, + 255, + 68, + 71, + 114, + 255, + 69, + 72, + 115, + 255, + 70, + 73, + 116, + 255, + 72, + 75, + 118, + 255, + 78, + 80, + 119, + 255, + 91, + 93, + 124, + 255, + 93, + 92, + 124, + 255, + 93, + 91, + 128, + 255, + 84, + 93, + 133, + 255, + 42, + 64, + 109, + 255, + 53, + 93, + 147, + 255, + 50, + 104, + 165, + 255, + 48, + 113, + 179, + 255, + 46, + 116, + 187, + 255, + 41, + 128, + 201, + 255, + 34, + 138, + 211, + 255, + 32, + 163, + 220, + 255, + 57, + 123, + 211, + 255, + 22, + 150, + 221, + 255, + 62, + 124, + 215, + 255, + 60, + 92, + 178, + 255, + 68, + 83, + 166, + 255, + 44, + 47, + 122, + 255, + 42, + 41, + 109, + 255, + 35, + 37, + 86, + 255, + 32, + 33, + 77, + 255, + 35, + 33, + 79, + 255, + 39, + 35, + 85, + 255, + 38, + 38, + 91, + 255, + 41, + 41, + 94, + 255, + 40, + 40, + 93, + 255, + 40, + 40, + 93, + 255, + 38, + 38, + 87, + 255, + 35, + 35, + 84, + 255, + 33, + 33, + 82, + 255, + 33, + 33, + 82, + 255, + 34, + 34, + 87, + 255, + 36, + 36, + 107, + 255, + 46, + 49, + 136, + 255, + 0, + 1, + 2, + 255, + 0, + 0, + 34, + 255, + 6, + 8, + 45, + 255, + 0, + 4, + 9, + 255, + 0, + 0, + 6, + 255, + 1, + 4, + 3, + 255, + 2, + 4, + 9, + 255, + 2, + 0, + 13, + 255, + 3, + 0, + 3, + 255, + 2, + 0, + 1, + 255, + 1, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 0, + 255, + 7, + 3, + 11, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 3, + 10, + 255, + 3, + 1, + 12, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 4, + 2, + 14, + 255, + 9, + 8, + 51, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 3, + 255, + 2, + 2, + 2, + 255, + 35, + 37, + 72, + 255, + 1, + 4, + 11, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 4, + 255, + 0, + 2, + 10, + 255, + 0, + 1, + 12, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 9, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 2, + 0, + 13, + 255, + 2, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 4, + 255, + 9, + 7, + 22, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 9, + 7, + 18, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 8, + 255, + 3, + 1, + 14, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 6, + 255, + 0, + 1, + 14, + 255, + 0, + 1, + 18, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 21, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 24, + 255, + 2, + 3, + 24, + 255, + 6, + 7, + 28, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 26, + 255, + 3, + 5, + 30, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 4, + 6, + 31, + 255, + 7, + 9, + 34, + 255, + 13, + 15, + 40, + 255, + 9, + 11, + 36, + 255, + 13, + 15, + 40, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 37, + 255, + 11, + 15, + 40, + 255, + 18, + 23, + 46, + 255, + 30, + 35, + 57, + 255, + 77, + 82, + 102, + 255, + 77, + 84, + 101, + 255, + 78, + 84, + 100, + 255, + 84, + 87, + 102, + 255, + 85, + 87, + 100, + 255, + 85, + 89, + 102, + 255, + 85, + 89, + 102, + 255, + 85, + 89, + 102, + 255, + 86, + 90, + 103, + 255, + 82, + 88, + 101, + 255, + 81, + 87, + 100, + 255, + 80, + 86, + 99, + 255, + 82, + 88, + 101, + 255, + 82, + 88, + 101, + 255, + 80, + 86, + 100, + 255, + 71, + 77, + 93, + 255, + 35, + 41, + 57, + 255, + 29, + 32, + 49, + 255, + 29, + 32, + 48, + 255, + 36, + 40, + 53, + 255, + 60, + 64, + 75, + 255, + 87, + 91, + 103, + 255, + 88, + 92, + 103, + 255, + 89, + 93, + 104, + 255, + 93, + 97, + 106, + 255, + 96, + 99, + 106, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 101, + 108, + 255, + 98, + 100, + 111, + 255, + 86, + 89, + 104, + 255, + 85, + 91, + 107, + 255, + 40, + 42, + 63, + 255, + 28, + 30, + 53, + 255, + 26, + 28, + 53, + 255, + 24, + 26, + 51, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 24, + 28, + 57, + 255, + 23, + 26, + 59, + 255, + 19, + 21, + 58, + 255, + 19, + 21, + 60, + 255, + 20, + 24, + 64, + 255, + 21, + 25, + 65, + 255, + 21, + 25, + 65, + 255, + 19, + 23, + 63, + 255, + 17, + 20, + 62, + 255, + 18, + 21, + 64, + 255, + 19, + 22, + 66, + 255, + 18, + 21, + 66, + 255, + 17, + 19, + 67, + 255, + 20, + 23, + 68, + 255, + 20, + 23, + 66, + 255, + 23, + 26, + 67, + 255, + 44, + 39, + 71, + 255, + 71, + 68, + 89, + 255, + 83, + 79, + 84, + 255, + 76, + 69, + 62, + 255, + 79, + 78, + 76, + 255, + 87, + 82, + 85, + 255, + 94, + 85, + 74, + 255, + 94, + 82, + 52, + 255, + 149, + 124, + 62, + 255, + 181, + 163, + 36, + 255, + 185, + 164, + 4, + 255, + 199, + 171, + 29, + 255, + 195, + 171, + 15, + 255, + 194, + 173, + 0, + 255, + 200, + 176, + 18, + 255, + 206, + 179, + 31, + 255, + 213, + 178, + 54, + 255, + 214, + 182, + 53, + 255, + 211, + 185, + 48, + 255, + 215, + 187, + 80, + 255, + 199, + 159, + 123, + 255, + 192, + 157, + 136, + 255, + 194, + 156, + 137, + 255, + 159, + 140, + 124, + 255, + 193, + 178, + 119, + 255, + 224, + 198, + 92, + 255, + 223, + 201, + 100, + 255, + 198, + 169, + 83, + 255, + 219, + 197, + 122, + 255, + 229, + 201, + 133, + 255, + 222, + 200, + 100, + 255, + 172, + 149, + 98, + 255, + 221, + 200, + 113, + 255, + 235, + 210, + 117, + 255, + 233, + 207, + 112, + 255, + 229, + 207, + 116, + 255, + 232, + 208, + 120, + 255, + 234, + 210, + 114, + 255, + 224, + 201, + 115, + 255, + 158, + 135, + 100, + 255, + 229, + 208, + 117, + 255, + 231, + 210, + 121, + 255, + 233, + 211, + 126, + 255, + 233, + 210, + 132, + 255, + 234, + 210, + 121, + 255, + 232, + 211, + 123, + 255, + 220, + 202, + 127, + 255, + 163, + 149, + 101, + 255, + 218, + 208, + 153, + 255, + 144, + 136, + 123, + 255, + 133, + 125, + 139, + 255, + 212, + 206, + 209, + 255, + 177, + 160, + 135, + 255, + 210, + 185, + 165, + 255, + 213, + 177, + 187, + 255, + 234, + 190, + 197, + 255, + 230, + 196, + 202, + 255, + 229, + 201, + 205, + 255, + 226, + 203, + 205, + 255, + 230, + 210, + 211, + 255, + 228, + 216, + 214, + 255, + 230, + 220, + 219, + 255, + 227, + 215, + 218, + 255, + 179, + 163, + 147, + 255, + 233, + 211, + 135, + 255, + 233, + 211, + 126, + 255, + 213, + 194, + 153, + 255, + 206, + 175, + 164, + 255, + 236, + 206, + 145, + 255, + 188, + 157, + 160, + 255, + 235, + 200, + 211, + 255, + 212, + 187, + 193, + 255, + 177, + 140, + 150, + 255, + 193, + 145, + 154, + 255, + 210, + 151, + 163, + 255, + 217, + 153, + 167, + 255, + 214, + 162, + 175, + 255, + 143, + 122, + 111, + 255, + 227, + 209, + 127, + 255, + 231, + 207, + 119, + 255, + 225, + 207, + 124, + 255, + 178, + 160, + 107, + 255, + 163, + 142, + 121, + 255, + 191, + 172, + 133, + 255, + 117, + 102, + 115, + 255, + 103, + 104, + 119, + 255, + 121, + 109, + 94, + 255, + 211, + 194, + 147, + 255, + 76, + 78, + 103, + 255, + 60, + 60, + 103, + 255, + 76, + 79, + 116, + 255, + 55, + 57, + 105, + 255, + 57, + 58, + 104, + 255, + 81, + 84, + 119, + 255, + 98, + 102, + 130, + 255, + 98, + 102, + 130, + 255, + 97, + 101, + 130, + 255, + 96, + 100, + 129, + 255, + 95, + 99, + 128, + 255, + 94, + 98, + 127, + 255, + 94, + 97, + 128, + 255, + 93, + 96, + 127, + 255, + 96, + 99, + 130, + 255, + 94, + 97, + 128, + 255, + 82, + 91, + 124, + 255, + 75, + 82, + 124, + 255, + 72, + 79, + 125, + 255, + 69, + 76, + 120, + 255, + 58, + 61, + 106, + 255, + 41, + 39, + 85, + 255, + 37, + 34, + 78, + 255, + 33, + 33, + 75, + 255, + 32, + 31, + 71, + 255, + 31, + 31, + 69, + 255, + 31, + 31, + 69, + 255, + 30, + 30, + 66, + 255, + 30, + 27, + 70, + 255, + 33, + 30, + 86, + 255, + 31, + 29, + 93, + 255, + 30, + 30, + 91, + 255, + 31, + 30, + 90, + 255, + 31, + 30, + 90, + 255, + 31, + 30, + 90, + 255, + 31, + 30, + 90, + 255, + 30, + 29, + 89, + 255, + 31, + 30, + 90, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 89, + 255, + 31, + 29, + 91, + 255, + 31, + 30, + 90, + 255, + 30, + 29, + 87, + 255, + 30, + 29, + 86, + 255, + 29, + 29, + 83, + 255, + 28, + 28, + 80, + 255, + 28, + 28, + 79, + 255, + 29, + 29, + 79, + 255, + 29, + 30, + 78, + 255, + 29, + 29, + 79, + 255, + 29, + 29, + 80, + 255, + 30, + 30, + 82, + 255, + 29, + 30, + 85, + 255, + 30, + 30, + 83, + 255, + 30, + 29, + 72, + 255, + 27, + 26, + 59, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 56, + 255, + 27, + 27, + 55, + 255, + 27, + 27, + 53, + 255, + 27, + 27, + 53, + 255, + 28, + 28, + 55, + 255, + 29, + 28, + 58, + 255, + 34, + 33, + 64, + 255, + 37, + 40, + 75, + 255, + 64, + 66, + 105, + 255, + 66, + 68, + 109, + 255, + 67, + 68, + 112, + 255, + 67, + 70, + 113, + 255, + 68, + 71, + 114, + 255, + 67, + 70, + 113, + 255, + 70, + 73, + 116, + 255, + 71, + 75, + 112, + 255, + 84, + 87, + 120, + 255, + 89, + 90, + 122, + 255, + 90, + 89, + 124, + 255, + 69, + 71, + 110, + 255, + 46, + 64, + 111, + 255, + 41, + 75, + 130, + 255, + 31, + 74, + 135, + 255, + 61, + 99, + 173, + 255, + 54, + 92, + 172, + 255, + 62, + 107, + 191, + 255, + 58, + 108, + 195, + 255, + 51, + 124, + 204, + 255, + 52, + 131, + 216, + 255, + 52, + 118, + 210, + 255, + 65, + 171, + 247, + 255, + 57, + 94, + 183, + 255, + 46, + 65, + 147, + 255, + 70, + 74, + 144, + 255, + 39, + 38, + 98, + 255, + 32, + 35, + 80, + 255, + 30, + 32, + 71, + 255, + 30, + 29, + 68, + 255, + 31, + 28, + 70, + 255, + 31, + 30, + 73, + 255, + 32, + 31, + 74, + 255, + 33, + 32, + 75, + 255, + 33, + 32, + 75, + 255, + 32, + 31, + 71, + 255, + 32, + 31, + 71, + 255, + 30, + 29, + 69, + 255, + 30, + 29, + 69, + 255, + 32, + 32, + 74, + 255, + 31, + 32, + 87, + 255, + 40, + 42, + 110, + 255, + 1, + 3, + 15, + 255, + 0, + 0, + 42, + 255, + 15, + 15, + 59, + 255, + 2, + 4, + 19, + 255, + 1, + 0, + 4, + 255, + 1, + 2, + 42, + 255, + 42, + 39, + 101, + 255, + 4, + 3, + 1, + 255, + 1, + 0, + 4, + 255, + 2, + 1, + 10, + 255, + 0, + 0, + 29, + 255, + 1, + 3, + 7, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 2, + 255, + 1, + 1, + 0, + 255, + 0, + 1, + 3, + 255, + 0, + 1, + 1, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 2, + 0, + 2, + 255, + 2, + 0, + 5, + 255, + 1, + 1, + 1, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 24, + 255, + 1, + 3, + 9, + 255, + 0, + 0, + 0, + 255, + 3, + 0, + 6, + 255, + 31, + 29, + 69, + 255, + 0, + 0, + 26, + 255, + 1, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 21, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 4, + 2, + 12, + 255, + 1, + 0, + 7, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 6, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 6, + 5, + 12, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 16, + 14, + 24, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 10, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 25, + 255, + 5, + 3, + 27, + 255, + 0, + 0, + 19, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 2, + 2, + 26, + 255, + 2, + 2, + 27, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 4, + 6, + 31, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 3, + 5, + 30, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 10, + 12, + 37, + 255, + 8, + 10, + 33, + 255, + 9, + 11, + 34, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 16, + 41, + 255, + 21, + 26, + 49, + 255, + 30, + 35, + 57, + 255, + 63, + 68, + 88, + 255, + 77, + 84, + 103, + 255, + 79, + 84, + 102, + 255, + 79, + 82, + 99, + 255, + 85, + 87, + 102, + 255, + 84, + 88, + 99, + 255, + 85, + 89, + 100, + 255, + 85, + 89, + 100, + 255, + 86, + 90, + 101, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 86, + 90, + 101, + 255, + 86, + 90, + 101, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 103, + 255, + 52, + 55, + 70, + 255, + 32, + 35, + 51, + 255, + 26, + 29, + 45, + 255, + 26, + 29, + 44, + 255, + 30, + 33, + 48, + 255, + 46, + 49, + 64, + 255, + 89, + 92, + 107, + 255, + 88, + 92, + 104, + 255, + 89, + 93, + 102, + 255, + 96, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 100, + 102, + 108, + 255, + 99, + 102, + 110, + 255, + 94, + 98, + 110, + 255, + 82, + 88, + 102, + 255, + 47, + 49, + 70, + 255, + 32, + 34, + 57, + 255, + 26, + 28, + 53, + 255, + 24, + 26, + 51, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 26, + 27, + 55, + 255, + 26, + 27, + 55, + 255, + 24, + 28, + 57, + 255, + 24, + 27, + 60, + 255, + 19, + 21, + 58, + 255, + 20, + 22, + 61, + 255, + 19, + 22, + 63, + 255, + 18, + 21, + 62, + 255, + 20, + 23, + 64, + 255, + 18, + 21, + 62, + 255, + 18, + 22, + 61, + 255, + 21, + 24, + 65, + 255, + 19, + 22, + 65, + 255, + 19, + 22, + 65, + 255, + 20, + 24, + 69, + 255, + 19, + 23, + 68, + 255, + 20, + 24, + 68, + 255, + 25, + 29, + 73, + 255, + 31, + 44, + 89, + 255, + 76, + 84, + 113, + 255, + 68, + 58, + 58, + 255, + 150, + 124, + 100, + 255, + 166, + 142, + 63, + 255, + 176, + 150, + 31, + 255, + 183, + 156, + 7, + 255, + 186, + 158, + 4, + 255, + 182, + 163, + 9, + 255, + 185, + 165, + 0, + 255, + 194, + 164, + 9, + 255, + 198, + 166, + 4, + 255, + 197, + 170, + 3, + 255, + 198, + 173, + 3, + 255, + 205, + 176, + 45, + 255, + 207, + 176, + 58, + 255, + 206, + 179, + 7, + 255, + 209, + 180, + 50, + 255, + 199, + 171, + 98, + 255, + 189, + 160, + 126, + 255, + 192, + 165, + 140, + 255, + 173, + 148, + 136, + 255, + 188, + 156, + 151, + 255, + 129, + 112, + 121, + 255, + 202, + 181, + 107, + 255, + 232, + 205, + 91, + 255, + 226, + 204, + 91, + 255, + 231, + 200, + 109, + 255, + 225, + 204, + 96, + 255, + 231, + 205, + 100, + 255, + 229, + 206, + 94, + 255, + 162, + 135, + 91, + 255, + 228, + 206, + 104, + 255, + 230, + 203, + 103, + 255, + 233, + 207, + 111, + 255, + 228, + 209, + 115, + 255, + 232, + 206, + 120, + 255, + 232, + 207, + 103, + 255, + 231, + 205, + 125, + 255, + 187, + 166, + 110, + 255, + 232, + 209, + 114, + 255, + 233, + 209, + 121, + 255, + 232, + 208, + 122, + 255, + 232, + 208, + 122, + 255, + 230, + 208, + 124, + 255, + 230, + 212, + 148, + 255, + 157, + 140, + 96, + 255, + 172, + 155, + 128, + 255, + 194, + 166, + 174, + 255, + 202, + 185, + 187, + 255, + 220, + 210, + 202, + 255, + 202, + 189, + 205, + 255, + 215, + 202, + 160, + 255, + 187, + 159, + 176, + 255, + 228, + 197, + 193, + 255, + 230, + 192, + 189, + 255, + 228, + 193, + 199, + 255, + 230, + 196, + 202, + 255, + 229, + 200, + 204, + 255, + 228, + 208, + 209, + 255, + 227, + 216, + 215, + 255, + 227, + 221, + 216, + 255, + 228, + 221, + 222, + 255, + 178, + 167, + 156, + 255, + 232, + 210, + 128, + 255, + 229, + 212, + 124, + 255, + 167, + 146, + 119, + 255, + 205, + 169, + 157, + 255, + 226, + 200, + 168, + 255, + 159, + 140, + 142, + 255, + 230, + 208, + 227, + 255, + 221, + 212, + 222, + 255, + 178, + 162, + 182, + 255, + 128, + 106, + 129, + 255, + 132, + 102, + 126, + 255, + 169, + 134, + 156, + 255, + 203, + 159, + 173, + 255, + 160, + 141, + 145, + 255, + 234, + 214, + 133, + 255, + 234, + 205, + 120, + 255, + 224, + 206, + 116, + 255, + 185, + 171, + 102, + 255, + 142, + 118, + 107, + 255, + 229, + 206, + 144, + 255, + 117, + 107, + 124, + 255, + 79, + 84, + 106, + 255, + 115, + 111, + 102, + 255, + 75, + 68, + 70, + 255, + 63, + 65, + 104, + 255, + 55, + 56, + 103, + 255, + 54, + 59, + 98, + 255, + 51, + 55, + 103, + 255, + 55, + 56, + 101, + 255, + 98, + 101, + 134, + 255, + 97, + 101, + 127, + 255, + 95, + 99, + 125, + 255, + 94, + 98, + 127, + 255, + 94, + 98, + 127, + 255, + 94, + 98, + 127, + 255, + 93, + 97, + 126, + 255, + 91, + 96, + 126, + 255, + 90, + 95, + 125, + 255, + 89, + 94, + 124, + 255, + 91, + 96, + 126, + 255, + 74, + 82, + 120, + 255, + 72, + 79, + 123, + 255, + 68, + 75, + 121, + 255, + 69, + 76, + 119, + 255, + 44, + 47, + 90, + 255, + 39, + 37, + 81, + 255, + 36, + 33, + 75, + 255, + 31, + 32, + 72, + 255, + 32, + 30, + 70, + 255, + 31, + 29, + 68, + 255, + 30, + 28, + 67, + 255, + 29, + 27, + 64, + 255, + 29, + 27, + 66, + 255, + 30, + 28, + 76, + 255, + 30, + 29, + 87, + 255, + 27, + 27, + 89, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 87, + 255, + 30, + 29, + 87, + 255, + 30, + 29, + 87, + 255, + 30, + 29, + 87, + 255, + 30, + 29, + 89, + 255, + 30, + 29, + 87, + 255, + 29, + 28, + 84, + 255, + 28, + 27, + 82, + 255, + 28, + 28, + 80, + 255, + 27, + 27, + 78, + 255, + 27, + 28, + 76, + 255, + 27, + 28, + 75, + 255, + 27, + 28, + 74, + 255, + 27, + 28, + 75, + 255, + 27, + 27, + 77, + 255, + 29, + 29, + 79, + 255, + 28, + 29, + 83, + 255, + 29, + 29, + 80, + 255, + 27, + 26, + 67, + 255, + 27, + 26, + 57, + 255, + 25, + 24, + 54, + 255, + 25, + 25, + 53, + 255, + 25, + 25, + 51, + 255, + 25, + 25, + 51, + 255, + 24, + 24, + 50, + 255, + 26, + 26, + 53, + 255, + 29, + 28, + 58, + 255, + 35, + 34, + 65, + 255, + 60, + 62, + 100, + 255, + 65, + 67, + 106, + 255, + 65, + 67, + 107, + 255, + 66, + 68, + 109, + 255, + 66, + 69, + 110, + 255, + 66, + 69, + 110, + 255, + 67, + 70, + 111, + 255, + 68, + 71, + 112, + 255, + 68, + 74, + 108, + 255, + 73, + 77, + 112, + 255, + 86, + 89, + 123, + 255, + 88, + 90, + 121, + 255, + 58, + 63, + 103, + 255, + 45, + 66, + 120, + 255, + 36, + 70, + 133, + 255, + 51, + 89, + 153, + 255, + 57, + 95, + 168, + 255, + 45, + 81, + 158, + 255, + 53, + 82, + 167, + 255, + 66, + 90, + 179, + 255, + 72, + 86, + 184, + 255, + 72, + 91, + 193, + 255, + 52, + 97, + 190, + 255, + 41, + 112, + 193, + 255, + 49, + 79, + 169, + 255, + 71, + 86, + 168, + 255, + 42, + 47, + 114, + 255, + 36, + 38, + 95, + 255, + 31, + 34, + 78, + 255, + 28, + 30, + 67, + 255, + 28, + 28, + 62, + 255, + 28, + 26, + 62, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 30, + 29, + 61, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 27, + 28, + 58, + 255, + 28, + 29, + 68, + 255, + 28, + 28, + 73, + 255, + 2, + 1, + 0, + 255, + 1, + 4, + 4, + 255, + 0, + 2, + 4, + 255, + 1, + 0, + 2, + 255, + 2, + 0, + 5, + 255, + 0, + 7, + 10, + 255, + 0, + 0, + 36, + 255, + 5, + 1, + 8, + 255, + 0, + 1, + 2, + 255, + 0, + 3, + 21, + 255, + 47, + 44, + 106, + 255, + 0, + 0, + 26, + 255, + 3, + 1, + 6, + 255, + 0, + 3, + 0, + 255, + 1, + 3, + 34, + 255, + 0, + 1, + 18, + 255, + 3, + 0, + 8, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 3, + 255, + 4, + 0, + 11, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 3, + 255, + 2, + 0, + 3, + 255, + 2, + 0, + 1, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 3, + 255, + 1, + 1, + 2, + 255, + 0, + 0, + 1, + 255, + 2, + 3, + 0, + 255, + 2, + 3, + 8, + 255, + 0, + 0, + 4, + 255, + 0, + 2, + 0, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 14, + 255, + 1, + 0, + 31, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 14, + 255, + 32, + 28, + 50, + 255, + 1, + 0, + 10, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 3, + 4, + 0, + 255, + 1, + 0, + 7, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 5, + 3, + 16, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 12, + 255, + 0, + 0, + 21, + 255, + 10, + 10, + 37, + 255, + 1, + 0, + 24, + 255, + 0, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 14, + 255, + 1, + 2, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 2, + 2, + 26, + 255, + 4, + 4, + 29, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 30, + 255, + 11, + 13, + 34, + 255, + 11, + 13, + 34, + 255, + 14, + 16, + 37, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 13, + 17, + 42, + 255, + 24, + 29, + 52, + 255, + 45, + 50, + 72, + 255, + 79, + 84, + 104, + 255, + 73, + 80, + 99, + 255, + 76, + 81, + 100, + 255, + 78, + 81, + 99, + 255, + 81, + 82, + 100, + 255, + 84, + 88, + 99, + 255, + 85, + 89, + 100, + 255, + 85, + 89, + 100, + 255, + 86, + 90, + 101, + 255, + 88, + 91, + 100, + 255, + 88, + 91, + 100, + 255, + 88, + 91, + 100, + 255, + 88, + 91, + 100, + 255, + 88, + 90, + 101, + 255, + 88, + 90, + 102, + 255, + 53, + 55, + 69, + 255, + 29, + 31, + 46, + 255, + 23, + 27, + 40, + 255, + 23, + 26, + 41, + 255, + 28, + 31, + 46, + 255, + 38, + 41, + 57, + 255, + 72, + 75, + 92, + 255, + 86, + 90, + 103, + 255, + 91, + 96, + 103, + 255, + 96, + 101, + 105, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 100, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 97, + 101, + 111, + 255, + 84, + 90, + 103, + 255, + 76, + 78, + 99, + 255, + 38, + 40, + 63, + 255, + 27, + 29, + 54, + 255, + 25, + 27, + 52, + 255, + 24, + 25, + 53, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 55, + 255, + 26, + 27, + 55, + 255, + 24, + 28, + 57, + 255, + 24, + 27, + 60, + 255, + 15, + 17, + 54, + 255, + 17, + 19, + 58, + 255, + 19, + 21, + 62, + 255, + 20, + 22, + 63, + 255, + 20, + 22, + 63, + 255, + 18, + 20, + 61, + 255, + 16, + 20, + 58, + 255, + 17, + 21, + 60, + 255, + 18, + 21, + 63, + 255, + 19, + 22, + 65, + 255, + 24, + 29, + 71, + 255, + 22, + 26, + 70, + 255, + 21, + 25, + 70, + 255, + 26, + 30, + 75, + 255, + 72, + 71, + 103, + 255, + 76, + 84, + 122, + 255, + 77, + 85, + 115, + 255, + 75, + 73, + 94, + 255, + 132, + 114, + 120, + 255, + 152, + 126, + 86, + 255, + 172, + 144, + 46, + 255, + 185, + 161, + 26, + 255, + 188, + 162, + 4, + 255, + 189, + 165, + 0, + 255, + 191, + 165, + 0, + 255, + 193, + 168, + 0, + 255, + 199, + 170, + 1, + 255, + 200, + 173, + 0, + 255, + 200, + 174, + 16, + 255, + 202, + 179, + 14, + 255, + 206, + 173, + 89, + 255, + 193, + 162, + 107, + 255, + 181, + 159, + 128, + 255, + 197, + 178, + 170, + 255, + 214, + 202, + 198, + 255, + 140, + 130, + 123, + 255, + 182, + 159, + 140, + 255, + 149, + 138, + 128, + 255, + 218, + 191, + 123, + 255, + 228, + 201, + 72, + 255, + 222, + 201, + 83, + 255, + 232, + 200, + 101, + 255, + 231, + 199, + 108, + 255, + 231, + 204, + 83, + 255, + 230, + 202, + 110, + 255, + 195, + 175, + 116, + 255, + 232, + 209, + 95, + 255, + 234, + 207, + 103, + 255, + 232, + 205, + 107, + 255, + 226, + 207, + 113, + 255, + 232, + 204, + 119, + 255, + 233, + 207, + 96, + 255, + 230, + 202, + 119, + 255, + 219, + 199, + 120, + 255, + 231, + 206, + 114, + 255, + 232, + 206, + 120, + 255, + 234, + 208, + 121, + 255, + 231, + 207, + 111, + 255, + 192, + 170, + 127, + 255, + 152, + 131, + 130, + 255, + 168, + 144, + 159, + 255, + 214, + 185, + 186, + 255, + 234, + 220, + 220, + 255, + 227, + 218, + 230, + 255, + 217, + 215, + 209, + 255, + 140, + 133, + 132, + 255, + 146, + 124, + 138, + 255, + 227, + 210, + 182, + 255, + 224, + 199, + 213, + 255, + 224, + 197, + 195, + 255, + 227, + 196, + 201, + 255, + 228, + 196, + 201, + 255, + 229, + 200, + 204, + 255, + 225, + 209, + 209, + 255, + 227, + 217, + 216, + 255, + 225, + 222, + 215, + 255, + 224, + 220, + 220, + 255, + 184, + 177, + 168, + 255, + 230, + 211, + 124, + 255, + 228, + 213, + 123, + 255, + 161, + 138, + 121, + 255, + 203, + 164, + 152, + 255, + 132, + 115, + 111, + 255, + 230, + 224, + 218, + 255, + 112, + 100, + 122, + 255, + 101, + 98, + 123, + 255, + 89, + 90, + 127, + 255, + 78, + 83, + 124, + 255, + 98, + 100, + 138, + 255, + 111, + 108, + 143, + 255, + 228, + 199, + 217, + 255, + 172, + 163, + 165, + 255, + 224, + 206, + 117, + 255, + 237, + 202, + 130, + 255, + 226, + 210, + 107, + 255, + 216, + 208, + 116, + 255, + 147, + 122, + 108, + 255, + 228, + 202, + 125, + 255, + 107, + 102, + 118, + 255, + 75, + 81, + 111, + 255, + 164, + 168, + 153, + 255, + 60, + 59, + 91, + 255, + 54, + 55, + 102, + 255, + 49, + 51, + 101, + 255, + 47, + 52, + 91, + 255, + 47, + 53, + 103, + 255, + 62, + 63, + 106, + 255, + 96, + 99, + 131, + 255, + 95, + 99, + 124, + 255, + 97, + 101, + 126, + 255, + 97, + 101, + 130, + 255, + 96, + 100, + 129, + 255, + 95, + 99, + 128, + 255, + 91, + 95, + 124, + 255, + 87, + 94, + 123, + 255, + 86, + 93, + 122, + 255, + 85, + 92, + 121, + 255, + 76, + 83, + 112, + 255, + 71, + 79, + 119, + 255, + 69, + 76, + 122, + 255, + 69, + 76, + 122, + 255, + 69, + 76, + 118, + 255, + 40, + 43, + 86, + 255, + 35, + 34, + 76, + 255, + 34, + 32, + 73, + 255, + 29, + 30, + 68, + 255, + 32, + 28, + 69, + 255, + 31, + 28, + 67, + 255, + 30, + 27, + 66, + 255, + 29, + 26, + 63, + 255, + 27, + 26, + 59, + 255, + 27, + 26, + 67, + 255, + 27, + 27, + 80, + 255, + 27, + 27, + 88, + 255, + 29, + 28, + 86, + 255, + 29, + 28, + 86, + 255, + 29, + 28, + 86, + 255, + 29, + 28, + 86, + 255, + 29, + 28, + 85, + 255, + 29, + 28, + 85, + 255, + 27, + 26, + 83, + 255, + 27, + 26, + 83, + 255, + 27, + 26, + 84, + 255, + 27, + 26, + 83, + 255, + 28, + 27, + 82, + 255, + 27, + 27, + 81, + 255, + 27, + 27, + 78, + 255, + 26, + 26, + 76, + 255, + 26, + 27, + 74, + 255, + 26, + 27, + 73, + 255, + 26, + 27, + 71, + 255, + 26, + 27, + 73, + 255, + 26, + 27, + 75, + 255, + 28, + 28, + 78, + 255, + 27, + 29, + 80, + 255, + 28, + 28, + 78, + 255, + 25, + 24, + 64, + 255, + 24, + 23, + 53, + 255, + 23, + 23, + 51, + 255, + 23, + 23, + 49, + 255, + 23, + 23, + 48, + 255, + 23, + 23, + 47, + 255, + 24, + 24, + 50, + 255, + 26, + 26, + 53, + 255, + 31, + 30, + 60, + 255, + 47, + 46, + 77, + 255, + 62, + 64, + 104, + 255, + 62, + 64, + 104, + 255, + 65, + 67, + 106, + 255, + 66, + 68, + 107, + 255, + 65, + 69, + 107, + 255, + 65, + 69, + 107, + 255, + 65, + 69, + 107, + 255, + 66, + 70, + 108, + 255, + 64, + 72, + 104, + 255, + 67, + 72, + 110, + 255, + 77, + 81, + 116, + 255, + 84, + 88, + 116, + 255, + 44, + 61, + 106, + 255, + 38, + 74, + 134, + 255, + 38, + 85, + 154, + 255, + 47, + 93, + 161, + 255, + 46, + 78, + 152, + 255, + 52, + 85, + 162, + 255, + 51, + 76, + 158, + 255, + 53, + 67, + 154, + 255, + 58, + 70, + 161, + 255, + 59, + 70, + 166, + 255, + 50, + 74, + 164, + 255, + 50, + 70, + 157, + 255, + 52, + 65, + 154, + 255, + 52, + 57, + 139, + 255, + 40, + 41, + 111, + 255, + 33, + 37, + 98, + 255, + 31, + 33, + 83, + 255, + 28, + 30, + 71, + 255, + 27, + 27, + 63, + 255, + 27, + 25, + 62, + 255, + 28, + 26, + 57, + 255, + 28, + 26, + 57, + 255, + 28, + 26, + 57, + 255, + 28, + 26, + 57, + 255, + 28, + 26, + 57, + 255, + 29, + 27, + 58, + 255, + 26, + 24, + 55, + 255, + 26, + 24, + 55, + 255, + 25, + 27, + 52, + 255, + 25, + 24, + 56, + 255, + 28, + 27, + 59, + 255, + 0, + 1, + 2, + 255, + 0, + 1, + 9, + 255, + 0, + 3, + 0, + 255, + 2, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 7, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 2, + 255, + 2, + 1, + 10, + 255, + 3, + 2, + 11, + 255, + 0, + 2, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 3, + 0, + 255, + 5, + 3, + 48, + 255, + 0, + 0, + 28, + 255, + 2, + 0, + 3, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 24, + 255, + 18, + 21, + 66, + 255, + 1, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 9, + 255, + 0, + 0, + 18, + 255, + 2, + 1, + 7, + 255, + 0, + 0, + 3, + 255, + 2, + 2, + 4, + 255, + 2, + 2, + 4, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 9, + 255, + 2, + 1, + 7, + 255, + 0, + 1, + 0, + 255, + 6, + 5, + 13, + 255, + 27, + 24, + 42, + 255, + 2, + 0, + 13, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 4, + 255, + 2, + 2, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 19, + 255, + 2, + 0, + 10, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 9, + 255, + 0, + 0, + 14, + 255, + 0, + 1, + 7, + 255, + 0, + 1, + 11, + 255, + 0, + 0, + 21, + 255, + 12, + 13, + 41, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 2, + 4, + 29, + 255, + 3, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 4, + 6, + 31, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 31, + 255, + 5, + 7, + 30, + 255, + 4, + 6, + 29, + 255, + 8, + 10, + 33, + 255, + 9, + 10, + 32, + 255, + 16, + 19, + 36, + 255, + 11, + 17, + 34, + 255, + 8, + 15, + 36, + 255, + 11, + 16, + 38, + 255, + 9, + 14, + 36, + 255, + 10, + 15, + 37, + 255, + 11, + 16, + 38, + 255, + 12, + 17, + 39, + 255, + 29, + 34, + 54, + 255, + 53, + 58, + 77, + 255, + 74, + 80, + 96, + 255, + 76, + 81, + 101, + 255, + 74, + 79, + 99, + 255, + 74, + 79, + 99, + 255, + 78, + 83, + 103, + 255, + 80, + 83, + 98, + 255, + 83, + 86, + 101, + 255, + 86, + 89, + 104, + 255, + 85, + 88, + 103, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 86, + 90, + 101, + 255, + 88, + 92, + 104, + 255, + 39, + 42, + 57, + 255, + 27, + 30, + 45, + 255, + 24, + 25, + 45, + 255, + 23, + 24, + 42, + 255, + 26, + 28, + 44, + 255, + 34, + 36, + 51, + 255, + 52, + 54, + 70, + 255, + 88, + 90, + 104, + 255, + 96, + 99, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 97, + 100, + 109, + 255, + 97, + 99, + 110, + 255, + 86, + 88, + 109, + 255, + 43, + 45, + 67, + 255, + 29, + 31, + 54, + 255, + 25, + 27, + 50, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 51, + 255, + 25, + 26, + 53, + 255, + 26, + 27, + 55, + 255, + 26, + 27, + 55, + 255, + 21, + 24, + 56, + 255, + 15, + 19, + 57, + 255, + 15, + 20, + 60, + 255, + 17, + 21, + 59, + 255, + 17, + 21, + 59, + 255, + 18, + 22, + 60, + 255, + 18, + 22, + 60, + 255, + 18, + 23, + 61, + 255, + 18, + 23, + 61, + 255, + 17, + 22, + 60, + 255, + 20, + 25, + 63, + 255, + 18, + 24, + 60, + 255, + 21, + 27, + 68, + 255, + 25, + 30, + 67, + 255, + 33, + 35, + 75, + 255, + 79, + 86, + 121, + 255, + 77, + 89, + 119, + 255, + 76, + 87, + 115, + 255, + 81, + 88, + 116, + 255, + 85, + 83, + 111, + 255, + 85, + 78, + 96, + 255, + 82, + 69, + 59, + 255, + 145, + 128, + 91, + 255, + 152, + 129, + 85, + 255, + 129, + 106, + 21, + 255, + 165, + 133, + 30, + 255, + 199, + 169, + 11, + 255, + 197, + 168, + 13, + 255, + 189, + 163, + 35, + 255, + 159, + 139, + 77, + 255, + 180, + 163, + 135, + 255, + 195, + 175, + 156, + 255, + 184, + 172, + 158, + 255, + 138, + 130, + 109, + 255, + 153, + 136, + 106, + 255, + 198, + 179, + 100, + 255, + 212, + 186, + 118, + 255, + 185, + 148, + 119, + 255, + 186, + 178, + 165, + 255, + 215, + 189, + 102, + 255, + 217, + 197, + 66, + 255, + 226, + 207, + 71, + 255, + 230, + 202, + 103, + 255, + 231, + 196, + 105, + 255, + 233, + 198, + 79, + 255, + 217, + 186, + 130, + 255, + 215, + 193, + 98, + 255, + 230, + 203, + 96, + 255, + 232, + 207, + 97, + 255, + 231, + 206, + 103, + 255, + 230, + 206, + 110, + 255, + 231, + 205, + 110, + 255, + 231, + 207, + 100, + 255, + 229, + 199, + 139, + 255, + 223, + 205, + 122, + 255, + 233, + 206, + 111, + 255, + 231, + 207, + 108, + 255, + 226, + 205, + 105, + 255, + 228, + 204, + 142, + 255, + 206, + 179, + 177, + 255, + 230, + 201, + 206, + 255, + 234, + 210, + 216, + 255, + 226, + 221, + 215, + 255, + 225, + 217, + 211, + 255, + 226, + 223, + 224, + 255, + 247, + 245, + 249, + 255, + 138, + 132, + 136, + 255, + 199, + 183, + 187, + 255, + 168, + 149, + 151, + 255, + 193, + 173, + 174, + 255, + 229, + 206, + 208, + 255, + 227, + 204, + 206, + 255, + 229, + 210, + 211, + 255, + 226, + 210, + 211, + 255, + 223, + 216, + 216, + 255, + 229, + 220, + 223, + 255, + 230, + 219, + 215, + 255, + 222, + 222, + 213, + 255, + 174, + 164, + 156, + 255, + 233, + 211, + 126, + 255, + 235, + 212, + 143, + 255, + 198, + 168, + 157, + 255, + 211, + 183, + 172, + 255, + 225, + 208, + 209, + 255, + 98, + 90, + 113, + 255, + 79, + 81, + 120, + 255, + 70, + 74, + 118, + 255, + 58, + 77, + 118, + 255, + 66, + 95, + 134, + 255, + 159, + 172, + 207, + 255, + 173, + 185, + 211, + 255, + 94, + 87, + 111, + 255, + 176, + 167, + 163, + 255, + 227, + 203, + 125, + 255, + 228, + 206, + 116, + 255, + 228, + 208, + 137, + 255, + 232, + 216, + 172, + 255, + 189, + 166, + 169, + 255, + 204, + 180, + 143, + 255, + 177, + 162, + 124, + 255, + 85, + 86, + 113, + 255, + 62, + 71, + 104, + 255, + 59, + 58, + 89, + 255, + 47, + 55, + 84, + 255, + 51, + 48, + 98, + 255, + 51, + 54, + 86, + 255, + 49, + 59, + 97, + 255, + 62, + 68, + 86, + 255, + 104, + 104, + 122, + 255, + 106, + 108, + 125, + 255, + 99, + 104, + 124, + 255, + 111, + 114, + 123, + 255, + 105, + 106, + 117, + 255, + 107, + 110, + 126, + 255, + 89, + 94, + 117, + 255, + 92, + 98, + 121, + 255, + 84, + 90, + 121, + 255, + 82, + 90, + 120, + 255, + 68, + 74, + 117, + 255, + 65, + 72, + 116, + 255, + 65, + 72, + 116, + 255, + 69, + 76, + 119, + 255, + 67, + 74, + 116, + 255, + 35, + 39, + 76, + 255, + 31, + 34, + 68, + 255, + 32, + 31, + 72, + 255, + 33, + 29, + 81, + 255, + 31, + 32, + 80, + 255, + 31, + 29, + 74, + 255, + 29, + 26, + 68, + 255, + 28, + 24, + 63, + 255, + 28, + 25, + 62, + 255, + 27, + 26, + 60, + 255, + 28, + 27, + 71, + 255, + 26, + 25, + 85, + 255, + 27, + 27, + 81, + 255, + 27, + 26, + 82, + 255, + 28, + 27, + 85, + 255, + 28, + 27, + 87, + 255, + 28, + 27, + 86, + 255, + 27, + 26, + 84, + 255, + 27, + 26, + 82, + 255, + 27, + 27, + 81, + 255, + 27, + 26, + 83, + 255, + 27, + 26, + 83, + 255, + 27, + 26, + 83, + 255, + 28, + 27, + 84, + 255, + 27, + 26, + 82, + 255, + 25, + 25, + 76, + 255, + 25, + 26, + 73, + 255, + 24, + 25, + 69, + 255, + 25, + 27, + 67, + 255, + 25, + 27, + 69, + 255, + 26, + 27, + 73, + 255, + 28, + 29, + 76, + 255, + 27, + 27, + 80, + 255, + 29, + 27, + 77, + 255, + 25, + 23, + 60, + 255, + 23, + 22, + 45, + 255, + 22, + 22, + 48, + 255, + 22, + 22, + 48, + 255, + 22, + 22, + 48, + 255, + 23, + 23, + 49, + 255, + 25, + 23, + 46, + 255, + 26, + 27, + 48, + 255, + 29, + 30, + 58, + 255, + 63, + 63, + 101, + 255, + 61, + 65, + 103, + 255, + 62, + 66, + 104, + 255, + 64, + 68, + 106, + 255, + 65, + 69, + 107, + 255, + 66, + 70, + 108, + 255, + 66, + 70, + 108, + 255, + 65, + 69, + 107, + 255, + 65, + 69, + 107, + 255, + 65, + 69, + 104, + 255, + 65, + 71, + 107, + 255, + 66, + 73, + 110, + 255, + 82, + 90, + 127, + 255, + 54, + 88, + 135, + 255, + 28, + 113, + 168, + 255, + 38, + 103, + 168, + 255, + 60, + 97, + 177, + 255, + 66, + 77, + 158, + 255, + 42, + 72, + 151, + 255, + 58, + 68, + 153, + 255, + 46, + 74, + 148, + 255, + 53, + 55, + 142, + 255, + 54, + 56, + 143, + 255, + 54, + 56, + 140, + 255, + 60, + 63, + 144, + 255, + 49, + 50, + 140, + 255, + 44, + 45, + 127, + 255, + 42, + 41, + 117, + 255, + 36, + 36, + 108, + 255, + 34, + 33, + 91, + 255, + 31, + 30, + 77, + 255, + 29, + 27, + 68, + 255, + 27, + 24, + 68, + 255, + 26, + 24, + 61, + 255, + 24, + 23, + 53, + 255, + 25, + 25, + 51, + 255, + 25, + 25, + 53, + 255, + 16, + 17, + 49, + 255, + 24, + 25, + 53, + 255, + 23, + 25, + 49, + 255, + 23, + 26, + 45, + 255, + 24, + 24, + 50, + 255, + 24, + 24, + 50, + 255, + 24, + 24, + 50, + 255, + 0, + 3, + 16, + 255, + 0, + 6, + 25, + 255, + 0, + 1, + 24, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 10, + 255, + 0, + 2, + 1, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 2, + 0, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 9, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 3, + 6, + 14, + 255, + 0, + 2, + 21, + 255, + 1, + 1, + 4, + 255, + 0, + 1, + 0, + 255, + 3, + 2, + 25, + 255, + 39, + 33, + 93, + 255, + 4, + 2, + 16, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 2, + 0, + 22, + 255, + 2, + 0, + 18, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 9, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 7, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 8, + 255, + 17, + 15, + 25, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 10, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 14, + 255, + 1, + 1, + 9, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 11, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 7, + 8, + 29, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 4, + 6, + 31, + 255, + 4, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 3, + 5, + 30, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 35, + 255, + 9, + 10, + 32, + 255, + 16, + 19, + 36, + 255, + 12, + 18, + 35, + 255, + 11, + 18, + 39, + 255, + 10, + 15, + 37, + 255, + 10, + 15, + 37, + 255, + 10, + 15, + 37, + 255, + 11, + 16, + 38, + 255, + 14, + 19, + 41, + 255, + 34, + 39, + 59, + 255, + 83, + 88, + 107, + 255, + 77, + 83, + 99, + 255, + 79, + 84, + 103, + 255, + 76, + 81, + 100, + 255, + 74, + 79, + 98, + 255, + 78, + 83, + 102, + 255, + 79, + 83, + 96, + 255, + 80, + 84, + 97, + 255, + 80, + 84, + 97, + 255, + 82, + 86, + 99, + 255, + 83, + 87, + 98, + 255, + 86, + 90, + 101, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 88, + 92, + 103, + 255, + 81, + 85, + 97, + 255, + 40, + 43, + 58, + 255, + 23, + 26, + 41, + 255, + 24, + 25, + 45, + 255, + 23, + 24, + 42, + 255, + 26, + 28, + 44, + 255, + 31, + 33, + 48, + 255, + 43, + 45, + 61, + 255, + 90, + 92, + 106, + 255, + 95, + 98, + 107, + 255, + 96, + 99, + 106, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 111, + 255, + 98, + 100, + 111, + 255, + 85, + 88, + 105, + 255, + 55, + 58, + 77, + 255, + 35, + 37, + 60, + 255, + 25, + 27, + 52, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 51, + 255, + 25, + 26, + 53, + 255, + 26, + 27, + 55, + 255, + 26, + 27, + 55, + 255, + 21, + 24, + 56, + 255, + 15, + 19, + 57, + 255, + 15, + 20, + 60, + 255, + 15, + 19, + 57, + 255, + 18, + 22, + 60, + 255, + 19, + 23, + 61, + 255, + 16, + 20, + 58, + 255, + 18, + 21, + 64, + 255, + 18, + 21, + 64, + 255, + 17, + 20, + 63, + 255, + 20, + 23, + 66, + 255, + 21, + 27, + 59, + 255, + 74, + 72, + 59, + 255, + 48, + 39, + 64, + 255, + 44, + 47, + 73, + 255, + 82, + 85, + 111, + 255, + 82, + 91, + 114, + 255, + 81, + 91, + 107, + 255, + 86, + 91, + 102, + 255, + 87, + 85, + 114, + 255, + 83, + 80, + 90, + 255, + 96, + 91, + 67, + 255, + 112, + 108, + 56, + 255, + 185, + 167, + 41, + 255, + 182, + 164, + 17, + 255, + 193, + 167, + 11, + 255, + 194, + 168, + 0, + 255, + 200, + 176, + 1, + 255, + 192, + 169, + 0, + 255, + 198, + 178, + 12, + 255, + 197, + 178, + 16, + 255, + 207, + 180, + 21, + 255, + 205, + 185, + 10, + 255, + 209, + 186, + 20, + 255, + 218, + 191, + 0, + 255, + 209, + 181, + 107, + 255, + 190, + 155, + 105, + 255, + 217, + 194, + 71, + 255, + 201, + 192, + 197, + 255, + 216, + 193, + 97, + 255, + 218, + 195, + 90, + 255, + 222, + 201, + 68, + 255, + 229, + 200, + 96, + 255, + 228, + 202, + 87, + 255, + 234, + 199, + 97, + 255, + 198, + 166, + 128, + 255, + 222, + 202, + 95, + 255, + 228, + 205, + 66, + 255, + 232, + 205, + 100, + 255, + 230, + 206, + 98, + 255, + 229, + 206, + 102, + 255, + 230, + 205, + 103, + 255, + 229, + 206, + 93, + 255, + 226, + 197, + 129, + 255, + 215, + 193, + 134, + 255, + 232, + 206, + 108, + 255, + 230, + 204, + 126, + 255, + 225, + 206, + 102, + 255, + 179, + 148, + 136, + 255, + 231, + 207, + 206, + 255, + 233, + 227, + 223, + 255, + 223, + 221, + 217, + 255, + 229, + 219, + 218, + 255, + 230, + 221, + 225, + 255, + 183, + 179, + 187, + 255, + 132, + 129, + 138, + 255, + 237, + 230, + 237, + 255, + 221, + 214, + 214, + 255, + 224, + 216, + 221, + 255, + 222, + 211, + 219, + 255, + 161, + 150, + 158, + 255, + 125, + 122, + 139, + 255, + 118, + 115, + 128, + 255, + 132, + 127, + 138, + 255, + 182, + 170, + 174, + 255, + 219, + 211, + 209, + 255, + 228, + 221, + 211, + 255, + 225, + 223, + 219, + 255, + 155, + 142, + 125, + 255, + 234, + 210, + 119, + 255, + 199, + 176, + 141, + 255, + 186, + 168, + 163, + 255, + 155, + 140, + 137, + 255, + 234, + 219, + 223, + 255, + 105, + 102, + 132, + 255, + 65, + 71, + 120, + 255, + 59, + 70, + 119, + 255, + 54, + 79, + 125, + 255, + 68, + 118, + 145, + 255, + 162, + 195, + 217, + 255, + 159, + 181, + 202, + 255, + 98, + 104, + 122, + 255, + 141, + 135, + 145, + 255, + 225, + 202, + 118, + 255, + 228, + 203, + 101, + 255, + 156, + 135, + 91, + 255, + 139, + 118, + 88, + 255, + 139, + 121, + 126, + 255, + 108, + 98, + 101, + 255, + 224, + 218, + 174, + 255, + 88, + 81, + 73, + 255, + 61, + 60, + 86, + 255, + 46, + 51, + 107, + 255, + 49, + 50, + 104, + 255, + 49, + 60, + 89, + 255, + 63, + 63, + 107, + 255, + 89, + 79, + 97, + 255, + 99, + 90, + 92, + 255, + 184, + 170, + 132, + 255, + 222, + 205, + 142, + 255, + 218, + 200, + 135, + 255, + 215, + 201, + 154, + 255, + 201, + 206, + 172, + 255, + 151, + 156, + 140, + 255, + 107, + 97, + 95, + 255, + 106, + 108, + 121, + 255, + 94, + 94, + 121, + 255, + 78, + 77, + 121, + 255, + 68, + 72, + 109, + 255, + 63, + 70, + 112, + 255, + 61, + 68, + 111, + 255, + 58, + 65, + 109, + 255, + 57, + 64, + 108, + 255, + 33, + 36, + 79, + 255, + 28, + 29, + 73, + 255, + 32, + 30, + 77, + 255, + 32, + 28, + 80, + 255, + 29, + 30, + 75, + 255, + 30, + 29, + 71, + 255, + 29, + 27, + 66, + 255, + 28, + 25, + 62, + 255, + 27, + 24, + 61, + 255, + 24, + 23, + 56, + 255, + 26, + 25, + 67, + 255, + 26, + 25, + 81, + 255, + 26, + 26, + 80, + 255, + 26, + 25, + 81, + 255, + 26, + 25, + 82, + 255, + 26, + 25, + 83, + 255, + 27, + 26, + 84, + 255, + 26, + 25, + 82, + 255, + 26, + 25, + 80, + 255, + 26, + 26, + 79, + 255, + 26, + 25, + 81, + 255, + 26, + 25, + 81, + 255, + 26, + 25, + 81, + 255, + 27, + 26, + 82, + 255, + 27, + 26, + 84, + 255, + 27, + 26, + 82, + 255, + 26, + 26, + 79, + 255, + 25, + 25, + 76, + 255, + 25, + 25, + 74, + 255, + 25, + 25, + 74, + 255, + 26, + 26, + 77, + 255, + 25, + 25, + 77, + 255, + 25, + 25, + 75, + 255, + 25, + 23, + 68, + 255, + 21, + 20, + 54, + 255, + 22, + 21, + 45, + 255, + 21, + 21, + 45, + 255, + 21, + 21, + 45, + 255, + 21, + 21, + 45, + 255, + 22, + 22, + 46, + 255, + 24, + 24, + 48, + 255, + 28, + 30, + 54, + 255, + 45, + 47, + 78, + 255, + 59, + 61, + 98, + 255, + 61, + 65, + 102, + 255, + 62, + 66, + 103, + 255, + 64, + 68, + 105, + 255, + 65, + 69, + 106, + 255, + 64, + 68, + 105, + 255, + 64, + 68, + 105, + 255, + 64, + 68, + 105, + 255, + 64, + 68, + 105, + 255, + 63, + 67, + 102, + 255, + 62, + 68, + 104, + 255, + 64, + 71, + 108, + 255, + 70, + 78, + 115, + 255, + 50, + 93, + 144, + 255, + 40, + 108, + 174, + 255, + 51, + 97, + 147, + 255, + 29, + 111, + 168, + 255, + 29, + 110, + 166, + 255, + 53, + 76, + 156, + 255, + 52, + 70, + 151, + 255, + 42, + 52, + 131, + 255, + 42, + 45, + 125, + 255, + 41, + 44, + 124, + 255, + 43, + 45, + 126, + 255, + 51, + 53, + 137, + 255, + 48, + 48, + 129, + 255, + 49, + 48, + 131, + 255, + 47, + 45, + 127, + 255, + 44, + 39, + 120, + 255, + 37, + 35, + 106, + 255, + 33, + 32, + 90, + 255, + 31, + 30, + 74, + 255, + 28, + 26, + 65, + 255, + 25, + 23, + 59, + 255, + 23, + 23, + 51, + 255, + 23, + 23, + 49, + 255, + 23, + 23, + 50, + 255, + 60, + 61, + 90, + 255, + 26, + 28, + 53, + 255, + 23, + 25, + 48, + 255, + 23, + 25, + 46, + 255, + 24, + 24, + 48, + 255, + 24, + 24, + 48, + 255, + 23, + 23, + 47, + 255, + 0, + 2, + 28, + 255, + 45, + 43, + 107, + 255, + 0, + 3, + 12, + 255, + 0, + 0, + 8, + 255, + 5, + 2, + 17, + 255, + 11, + 12, + 51, + 255, + 0, + 2, + 28, + 255, + 1, + 0, + 4, + 255, + 1, + 0, + 2, + 255, + 0, + 4, + 15, + 255, + 0, + 2, + 14, + 255, + 2, + 0, + 5, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 4, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 0, + 255, + 0, + 3, + 0, + 255, + 0, + 1, + 13, + 255, + 2, + 1, + 9, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 19, + 255, + 2, + 0, + 15, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 0, + 255, + 4, + 2, + 12, + 255, + 11, + 5, + 43, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 0, + 255, + 1, + 2, + 0, + 255, + 5, + 3, + 18, + 255, + 2, + 2, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 7, + 255, + 2, + 1, + 10, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 4, + 255, + 30, + 29, + 35, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 4, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 17, + 255, + 2, + 0, + 21, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 1, + 23, + 255, + 3, + 3, + 27, + 255, + 6, + 8, + 33, + 255, + 6, + 10, + 35, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 6, + 7, + 34, + 255, + 6, + 7, + 34, + 255, + 7, + 8, + 35, + 255, + 7, + 8, + 35, + 255, + 10, + 11, + 33, + 255, + 14, + 17, + 34, + 255, + 12, + 18, + 35, + 255, + 11, + 18, + 39, + 255, + 13, + 18, + 40, + 255, + 8, + 13, + 35, + 255, + 9, + 14, + 36, + 255, + 10, + 15, + 37, + 255, + 17, + 22, + 44, + 255, + 35, + 40, + 60, + 255, + 74, + 79, + 98, + 255, + 77, + 83, + 99, + 255, + 77, + 83, + 99, + 255, + 77, + 83, + 99, + 255, + 77, + 83, + 99, + 255, + 81, + 87, + 103, + 255, + 88, + 92, + 103, + 255, + 90, + 94, + 105, + 255, + 87, + 91, + 102, + 255, + 85, + 89, + 100, + 255, + 85, + 89, + 100, + 255, + 86, + 90, + 101, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 74, + 78, + 90, + 255, + 36, + 39, + 54, + 255, + 24, + 27, + 42, + 255, + 23, + 24, + 44, + 255, + 23, + 24, + 42, + 255, + 25, + 27, + 43, + 255, + 28, + 30, + 45, + 255, + 41, + 43, + 59, + 255, + 74, + 76, + 90, + 255, + 96, + 99, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 98, + 101, + 110, + 255, + 99, + 101, + 112, + 255, + 98, + 102, + 114, + 255, + 85, + 88, + 105, + 255, + 40, + 42, + 65, + 255, + 27, + 29, + 54, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 51, + 255, + 24, + 25, + 52, + 255, + 25, + 26, + 54, + 255, + 25, + 26, + 54, + 255, + 18, + 21, + 53, + 255, + 15, + 19, + 57, + 255, + 14, + 19, + 59, + 255, + 16, + 20, + 58, + 255, + 16, + 20, + 58, + 255, + 18, + 22, + 60, + 255, + 16, + 20, + 58, + 255, + 17, + 21, + 60, + 255, + 17, + 21, + 60, + 255, + 16, + 20, + 59, + 255, + 18, + 22, + 61, + 255, + 27, + 27, + 73, + 255, + 42, + 39, + 17, + 255, + 154, + 151, + 54, + 255, + 91, + 74, + 37, + 255, + 78, + 71, + 60, + 255, + 88, + 86, + 79, + 255, + 77, + 76, + 65, + 255, + 76, + 69, + 50, + 255, + 107, + 102, + 39, + 255, + 173, + 159, + 68, + 255, + 185, + 159, + 28, + 255, + 192, + 158, + 0, + 255, + 184, + 162, + 0, + 255, + 189, + 164, + 1, + 255, + 192, + 165, + 0, + 255, + 196, + 168, + 0, + 255, + 196, + 171, + 7, + 255, + 198, + 170, + 7, + 255, + 203, + 173, + 8, + 255, + 206, + 174, + 9, + 255, + 206, + 180, + 6, + 255, + 207, + 181, + 13, + 255, + 211, + 184, + 36, + 255, + 207, + 164, + 113, + 255, + 200, + 159, + 121, + 255, + 219, + 190, + 63, + 255, + 222, + 199, + 77, + 255, + 210, + 207, + 183, + 255, + 216, + 196, + 99, + 255, + 170, + 145, + 59, + 255, + 223, + 200, + 59, + 255, + 229, + 201, + 76, + 255, + 213, + 190, + 94, + 255, + 228, + 196, + 104, + 255, + 196, + 167, + 128, + 255, + 228, + 213, + 80, + 255, + 230, + 204, + 74, + 255, + 231, + 204, + 91, + 255, + 231, + 205, + 94, + 255, + 230, + 204, + 100, + 255, + 229, + 205, + 100, + 255, + 231, + 208, + 91, + 255, + 230, + 203, + 122, + 255, + 166, + 140, + 105, + 255, + 229, + 207, + 94, + 255, + 224, + 200, + 117, + 255, + 230, + 212, + 111, + 255, + 205, + 173, + 177, + 255, + 233, + 219, + 219, + 255, + 225, + 222, + 217, + 255, + 219, + 219, + 213, + 255, + 224, + 218, + 221, + 255, + 211, + 209, + 212, + 255, + 181, + 184, + 192, + 255, + 227, + 229, + 242, + 255, + 94, + 93, + 107, + 255, + 93, + 91, + 121, + 255, + 88, + 86, + 125, + 255, + 90, + 88, + 128, + 255, + 90, + 91, + 123, + 255, + 106, + 105, + 130, + 255, + 100, + 99, + 126, + 255, + 117, + 109, + 133, + 255, + 219, + 194, + 208, + 255, + 228, + 218, + 219, + 255, + 224, + 219, + 207, + 255, + 232, + 231, + 230, + 255, + 156, + 139, + 102, + 255, + 217, + 199, + 110, + 255, + 140, + 127, + 108, + 255, + 181, + 175, + 167, + 255, + 221, + 215, + 206, + 255, + 224, + 214, + 215, + 255, + 92, + 95, + 129, + 255, + 56, + 71, + 122, + 255, + 111, + 131, + 182, + 255, + 72, + 94, + 141, + 255, + 87, + 118, + 139, + 255, + 229, + 241, + 255, + 255, + 223, + 232, + 247, + 255, + 111, + 106, + 121, + 255, + 183, + 172, + 180, + 255, + 230, + 210, + 115, + 255, + 226, + 204, + 119, + 255, + 203, + 186, + 150, + 255, + 190, + 160, + 137, + 255, + 161, + 137, + 154, + 255, + 74, + 72, + 103, + 255, + 68, + 64, + 91, + 255, + 69, + 63, + 85, + 255, + 57, + 52, + 99, + 255, + 61, + 66, + 88, + 255, + 71, + 69, + 100, + 255, + 88, + 84, + 101, + 255, + 112, + 99, + 64, + 255, + 224, + 210, + 80, + 255, + 219, + 199, + 61, + 255, + 227, + 201, + 50, + 255, + 225, + 196, + 41, + 255, + 226, + 198, + 47, + 255, + 223, + 186, + 80, + 255, + 221, + 201, + 169, + 255, + 209, + 203, + 195, + 255, + 206, + 206, + 171, + 255, + 209, + 205, + 188, + 255, + 93, + 90, + 71, + 255, + 86, + 86, + 111, + 255, + 60, + 72, + 103, + 255, + 63, + 71, + 110, + 255, + 59, + 66, + 108, + 255, + 55, + 62, + 107, + 255, + 64, + 71, + 117, + 255, + 33, + 35, + 84, + 255, + 30, + 30, + 81, + 255, + 31, + 29, + 78, + 255, + 29, + 26, + 72, + 255, + 25, + 27, + 65, + 255, + 26, + 26, + 63, + 255, + 25, + 23, + 60, + 255, + 26, + 23, + 60, + 255, + 26, + 23, + 59, + 255, + 25, + 24, + 55, + 255, + 23, + 23, + 59, + 255, + 26, + 27, + 75, + 255, + 25, + 25, + 79, + 255, + 25, + 25, + 79, + 255, + 25, + 25, + 78, + 255, + 26, + 26, + 78, + 255, + 26, + 25, + 81, + 255, + 24, + 23, + 78, + 255, + 24, + 24, + 76, + 255, + 24, + 24, + 76, + 255, + 25, + 25, + 78, + 255, + 25, + 25, + 78, + 255, + 25, + 25, + 78, + 255, + 25, + 25, + 78, + 255, + 25, + 24, + 82, + 255, + 25, + 24, + 80, + 255, + 25, + 24, + 79, + 255, + 25, + 25, + 79, + 255, + 25, + 25, + 79, + 255, + 25, + 25, + 77, + 255, + 26, + 26, + 78, + 255, + 25, + 25, + 77, + 255, + 22, + 23, + 69, + 255, + 23, + 23, + 61, + 255, + 21, + 20, + 51, + 255, + 21, + 19, + 46, + 255, + 19, + 20, + 41, + 255, + 19, + 20, + 41, + 255, + 21, + 22, + 43, + 255, + 21, + 22, + 43, + 255, + 24, + 26, + 49, + 255, + 30, + 33, + 61, + 255, + 60, + 63, + 96, + 255, + 59, + 63, + 98, + 255, + 61, + 65, + 100, + 255, + 62, + 66, + 101, + 255, + 63, + 67, + 102, + 255, + 64, + 68, + 103, + 255, + 63, + 67, + 102, + 255, + 63, + 67, + 102, + 255, + 63, + 67, + 102, + 255, + 63, + 67, + 102, + 255, + 63, + 67, + 102, + 255, + 62, + 68, + 104, + 255, + 62, + 69, + 106, + 255, + 64, + 72, + 109, + 255, + 82, + 90, + 134, + 255, + 71, + 102, + 167, + 255, + 184, + 205, + 216, + 255, + 25, + 169, + 180, + 255, + 19, + 177, + 205, + 255, + 48, + 94, + 164, + 255, + 47, + 64, + 143, + 255, + 45, + 46, + 126, + 255, + 38, + 39, + 112, + 255, + 36, + 38, + 108, + 255, + 39, + 39, + 117, + 255, + 46, + 45, + 132, + 255, + 50, + 51, + 133, + 255, + 51, + 55, + 145, + 255, + 54, + 55, + 146, + 255, + 57, + 50, + 138, + 255, + 46, + 44, + 126, + 255, + 37, + 35, + 107, + 255, + 31, + 31, + 84, + 255, + 28, + 29, + 69, + 255, + 24, + 23, + 56, + 255, + 22, + 22, + 48, + 255, + 22, + 22, + 46, + 255, + 22, + 22, + 48, + 255, + 21, + 23, + 48, + 255, + 21, + 23, + 46, + 255, + 22, + 24, + 47, + 255, + 22, + 24, + 45, + 255, + 24, + 25, + 46, + 255, + 24, + 25, + 46, + 255, + 23, + 24, + 45, + 255, + 4, + 2, + 13, + 255, + 0, + 1, + 11, + 255, + 0, + 0, + 11, + 255, + 3, + 0, + 0, + 255, + 3, + 0, + 11, + 255, + 9, + 12, + 55, + 255, + 1, + 6, + 36, + 255, + 3, + 0, + 0, + 255, + 0, + 2, + 8, + 255, + 11, + 19, + 58, + 255, + 2, + 8, + 41, + 255, + 3, + 3, + 6, + 255, + 2, + 0, + 0, + 255, + 3, + 0, + 6, + 255, + 4, + 4, + 3, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 2, + 0, + 3, + 255, + 1, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 6, + 255, + 0, + 1, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 1, + 1, + 0, + 255, + 1, + 0, + 7, + 255, + 1, + 0, + 7, + 255, + 1, + 1, + 1, + 255, + 2, + 1, + 7, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 9, + 255, + 41, + 35, + 69, + 255, + 9, + 7, + 18, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 8, + 6, + 20, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 8, + 8, + 10, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 7, + 255, + 1, + 0, + 10, + 255, + 0, + 1, + 3, + 255, + 1, + 1, + 9, + 255, + 0, + 0, + 8, + 255, + 3, + 4, + 9, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 1, + 1, + 3, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 15, + 255, + 2, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 3, + 2, + 24, + 255, + 7, + 7, + 31, + 255, + 9, + 11, + 36, + 255, + 4, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 6, + 7, + 35, + 255, + 6, + 7, + 35, + 255, + 9, + 10, + 38, + 255, + 9, + 10, + 38, + 255, + 10, + 11, + 33, + 255, + 11, + 14, + 31, + 255, + 11, + 17, + 34, + 255, + 12, + 19, + 40, + 255, + 12, + 17, + 39, + 255, + 11, + 16, + 38, + 255, + 10, + 15, + 37, + 255, + 12, + 17, + 39, + 255, + 19, + 24, + 46, + 255, + 46, + 51, + 71, + 255, + 76, + 81, + 100, + 255, + 78, + 84, + 100, + 255, + 79, + 85, + 100, + 255, + 79, + 85, + 100, + 255, + 80, + 86, + 101, + 255, + 80, + 86, + 101, + 255, + 84, + 88, + 99, + 255, + 88, + 92, + 103, + 255, + 88, + 92, + 103, + 255, + 87, + 91, + 102, + 255, + 86, + 90, + 101, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 87, + 91, + 102, + 255, + 53, + 57, + 69, + 255, + 33, + 36, + 51, + 255, + 23, + 26, + 41, + 255, + 23, + 24, + 44, + 255, + 23, + 24, + 42, + 255, + 25, + 27, + 43, + 255, + 28, + 30, + 45, + 255, + 38, + 40, + 56, + 255, + 56, + 58, + 72, + 255, + 100, + 103, + 112, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 96, + 99, + 106, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 107, + 255, + 99, + 102, + 109, + 255, + 98, + 101, + 110, + 255, + 99, + 101, + 112, + 255, + 99, + 103, + 113, + 255, + 94, + 97, + 112, + 255, + 47, + 49, + 71, + 255, + 29, + 30, + 57, + 255, + 24, + 26, + 49, + 255, + 24, + 26, + 51, + 255, + 24, + 25, + 52, + 255, + 25, + 26, + 54, + 255, + 25, + 26, + 54, + 255, + 15, + 18, + 50, + 255, + 16, + 20, + 58, + 255, + 13, + 18, + 58, + 255, + 16, + 20, + 58, + 255, + 16, + 20, + 58, + 255, + 15, + 19, + 57, + 255, + 14, + 18, + 56, + 255, + 17, + 20, + 54, + 255, + 13, + 16, + 50, + 255, + 12, + 15, + 49, + 255, + 14, + 17, + 51, + 255, + 18, + 20, + 41, + 255, + 34, + 33, + 64, + 255, + 114, + 104, + 27, + 255, + 174, + 142, + 0, + 255, + 176, + 150, + 4, + 255, + 167, + 143, + 11, + 255, + 175, + 149, + 19, + 255, + 171, + 142, + 5, + 255, + 177, + 145, + 7, + 255, + 182, + 153, + 5, + 255, + 179, + 153, + 0, + 255, + 186, + 163, + 0, + 255, + 189, + 159, + 0, + 255, + 190, + 160, + 4, + 255, + 193, + 165, + 0, + 255, + 196, + 166, + 5, + 255, + 197, + 170, + 5, + 255, + 196, + 169, + 1, + 255, + 203, + 175, + 0, + 255, + 206, + 177, + 0, + 255, + 211, + 178, + 4, + 255, + 211, + 178, + 20, + 255, + 201, + 166, + 73, + 255, + 206, + 179, + 79, + 255, + 216, + 187, + 31, + 255, + 214, + 186, + 25, + 255, + 215, + 193, + 54, + 255, + 201, + 197, + 194, + 255, + 206, + 182, + 116, + 255, + 153, + 123, + 69, + 255, + 224, + 199, + 70, + 255, + 231, + 200, + 82, + 255, + 140, + 110, + 84, + 255, + 212, + 180, + 114, + 255, + 194, + 165, + 138, + 255, + 222, + 207, + 83, + 255, + 234, + 202, + 104, + 255, + 229, + 202, + 77, + 255, + 232, + 204, + 94, + 255, + 231, + 203, + 101, + 255, + 231, + 206, + 107, + 255, + 230, + 208, + 89, + 255, + 231, + 206, + 114, + 255, + 181, + 154, + 127, + 255, + 230, + 213, + 82, + 255, + 219, + 199, + 95, + 255, + 223, + 205, + 113, + 255, + 207, + 179, + 166, + 255, + 225, + 218, + 217, + 255, + 232, + 217, + 214, + 255, + 232, + 219, + 218, + 255, + 192, + 193, + 196, + 255, + 100, + 103, + 122, + 255, + 76, + 83, + 116, + 255, + 72, + 78, + 119, + 255, + 65, + 67, + 115, + 255, + 61, + 64, + 104, + 255, + 66, + 70, + 118, + 255, + 68, + 75, + 120, + 255, + 166, + 178, + 206, + 255, + 167, + 181, + 198, + 255, + 167, + 183, + 207, + 255, + 186, + 195, + 218, + 255, + 139, + 128, + 143, + 255, + 235, + 222, + 232, + 255, + 226, + 222, + 210, + 255, + 226, + 225, + 224, + 255, + 232, + 214, + 159, + 255, + 200, + 184, + 132, + 255, + 226, + 218, + 221, + 255, + 229, + 225, + 235, + 255, + 222, + 214, + 218, + 255, + 225, + 220, + 215, + 255, + 101, + 109, + 140, + 255, + 70, + 92, + 141, + 255, + 52, + 80, + 126, + 255, + 66, + 108, + 146, + 255, + 217, + 236, + 249, + 255, + 242, + 240, + 245, + 255, + 233, + 244, + 248, + 255, + 207, + 182, + 196, + 255, + 156, + 137, + 132, + 255, + 223, + 207, + 103, + 255, + 186, + 168, + 112, + 255, + 132, + 114, + 114, + 255, + 197, + 159, + 140, + 255, + 192, + 165, + 147, + 255, + 81, + 76, + 106, + 255, + 46, + 50, + 101, + 255, + 49, + 62, + 88, + 255, + 56, + 59, + 94, + 255, + 80, + 71, + 106, + 255, + 89, + 86, + 84, + 255, + 233, + 214, + 136, + 255, + 222, + 193, + 65, + 255, + 233, + 193, + 125, + 255, + 212, + 176, + 111, + 255, + 209, + 171, + 125, + 255, + 174, + 142, + 100, + 255, + 163, + 143, + 89, + 255, + 205, + 188, + 101, + 255, + 224, + 200, + 113, + 255, + 221, + 197, + 106, + 255, + 214, + 197, + 101, + 255, + 209, + 191, + 83, + 255, + 203, + 188, + 79, + 255, + 95, + 86, + 70, + 255, + 74, + 78, + 104, + 255, + 64, + 72, + 109, + 255, + 62, + 70, + 111, + 255, + 66, + 73, + 118, + 255, + 40, + 46, + 96, + 255, + 32, + 34, + 83, + 255, + 29, + 29, + 81, + 255, + 28, + 26, + 72, + 255, + 26, + 24, + 61, + 255, + 22, + 25, + 58, + 255, + 23, + 23, + 57, + 255, + 24, + 23, + 57, + 255, + 25, + 22, + 59, + 255, + 24, + 21, + 57, + 255, + 23, + 23, + 51, + 255, + 22, + 23, + 54, + 255, + 22, + 23, + 66, + 255, + 24, + 23, + 79, + 255, + 24, + 24, + 77, + 255, + 24, + 24, + 75, + 255, + 23, + 24, + 72, + 255, + 23, + 23, + 77, + 255, + 22, + 22, + 75, + 255, + 22, + 22, + 73, + 255, + 22, + 22, + 72, + 255, + 24, + 24, + 76, + 255, + 24, + 24, + 76, + 255, + 24, + 24, + 76, + 255, + 24, + 24, + 76, + 255, + 23, + 23, + 73, + 255, + 23, + 23, + 73, + 255, + 23, + 23, + 75, + 255, + 23, + 23, + 75, + 255, + 24, + 24, + 76, + 255, + 24, + 24, + 74, + 255, + 25, + 26, + 74, + 255, + 24, + 25, + 70, + 255, + 20, + 22, + 64, + 255, + 21, + 22, + 53, + 255, + 19, + 19, + 45, + 255, + 19, + 17, + 45, + 255, + 18, + 19, + 39, + 255, + 18, + 19, + 39, + 255, + 20, + 21, + 41, + 255, + 23, + 24, + 44, + 255, + 24, + 28, + 49, + 255, + 50, + 53, + 86, + 255, + 56, + 60, + 97, + 255, + 59, + 65, + 99, + 255, + 61, + 66, + 98, + 255, + 62, + 67, + 99, + 255, + 62, + 67, + 99, + 255, + 63, + 68, + 100, + 255, + 62, + 67, + 99, + 255, + 62, + 67, + 99, + 255, + 62, + 67, + 99, + 255, + 62, + 67, + 99, + 255, + 61, + 65, + 100, + 255, + 60, + 66, + 102, + 255, + 60, + 67, + 104, + 255, + 62, + 70, + 107, + 255, + 63, + 83, + 119, + 255, + 56, + 98, + 165, + 255, + 206, + 218, + 216, + 255, + 23, + 182, + 194, + 255, + 0, + 187, + 201, + 255, + 20, + 116, + 168, + 255, + 53, + 58, + 140, + 255, + 30, + 47, + 120, + 255, + 35, + 36, + 101, + 255, + 34, + 35, + 98, + 255, + 38, + 38, + 111, + 255, + 48, + 45, + 136, + 255, + 55, + 60, + 154, + 255, + 56, + 68, + 168, + 255, + 60, + 68, + 167, + 255, + 61, + 59, + 150, + 255, + 53, + 52, + 136, + 255, + 42, + 41, + 120, + 255, + 38, + 38, + 101, + 255, + 28, + 28, + 78, + 255, + 23, + 22, + 55, + 255, + 20, + 20, + 45, + 255, + 20, + 21, + 42, + 255, + 20, + 20, + 44, + 255, + 19, + 21, + 42, + 255, + 21, + 23, + 44, + 255, + 22, + 24, + 45, + 255, + 24, + 26, + 49, + 255, + 26, + 27, + 47, + 255, + 26, + 27, + 47, + 255, + 25, + 26, + 46, + 255, + 1, + 0, + 2, + 255, + 0, + 0, + 8, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 1, + 255, + 2, + 1, + 5, + 255, + 2, + 0, + 10, + 255, + 0, + 0, + 0, + 255, + 2, + 3, + 8, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 15, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 4, + 11, + 255, + 30, + 29, + 80, + 255, + 2, + 2, + 5, + 255, + 0, + 2, + 0, + 255, + 0, + 3, + 6, + 255, + 12, + 10, + 50, + 255, + 0, + 2, + 9, + 255, + 0, + 0, + 1, + 255, + 0, + 2, + 1, + 255, + 0, + 1, + 14, + 255, + 0, + 1, + 8, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 16, + 255, + 2, + 0, + 11, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 6, + 255, + 2, + 0, + 11, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 3, + 23, + 255, + 0, + 2, + 23, + 255, + 0, + 2, + 24, + 255, + 0, + 2, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 3, + 22, + 255, + 0, + 2, + 23, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 26, + 255, + 2, + 4, + 29, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 9, + 11, + 34, + 255, + 10, + 12, + 34, + 255, + 13, + 15, + 36, + 255, + 15, + 18, + 37, + 255, + 12, + 19, + 38, + 255, + 12, + 19, + 38, + 255, + 9, + 16, + 35, + 255, + 12, + 19, + 38, + 255, + 22, + 27, + 47, + 255, + 56, + 61, + 80, + 255, + 78, + 84, + 100, + 255, + 79, + 85, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 82, + 85, + 100, + 255, + 86, + 90, + 103, + 255, + 88, + 92, + 104, + 255, + 88, + 92, + 102, + 255, + 88, + 92, + 101, + 255, + 87, + 91, + 100, + 255, + 87, + 91, + 100, + 255, + 86, + 90, + 99, + 255, + 87, + 93, + 105, + 255, + 46, + 50, + 62, + 255, + 31, + 33, + 46, + 255, + 25, + 25, + 39, + 255, + 23, + 24, + 42, + 255, + 24, + 26, + 42, + 255, + 25, + 27, + 41, + 255, + 29, + 31, + 44, + 255, + 36, + 38, + 50, + 255, + 51, + 54, + 63, + 255, + 91, + 94, + 103, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 98, + 103, + 109, + 255, + 96, + 100, + 110, + 255, + 75, + 78, + 95, + 255, + 38, + 40, + 62, + 255, + 24, + 26, + 47, + 255, + 23, + 25, + 48, + 255, + 23, + 25, + 50, + 255, + 24, + 26, + 51, + 255, + 27, + 26, + 56, + 255, + 17, + 17, + 54, + 255, + 16, + 18, + 57, + 255, + 16, + 19, + 54, + 255, + 15, + 20, + 58, + 255, + 15, + 20, + 58, + 255, + 15, + 20, + 58, + 255, + 13, + 18, + 56, + 255, + 12, + 17, + 49, + 255, + 10, + 13, + 37, + 255, + 11, + 10, + 31, + 255, + 13, + 9, + 33, + 255, + 8, + 12, + 29, + 255, + 20, + 21, + 33, + 255, + 47, + 39, + 34, + 255, + 142, + 135, + 37, + 255, + 170, + 146, + 5, + 255, + 170, + 145, + 0, + 255, + 174, + 145, + 5, + 255, + 177, + 149, + 0, + 255, + 176, + 152, + 1, + 255, + 182, + 153, + 8, + 255, + 183, + 154, + 6, + 255, + 184, + 160, + 1, + 255, + 185, + 161, + 2, + 255, + 190, + 160, + 1, + 255, + 195, + 161, + 0, + 255, + 194, + 165, + 2, + 255, + 199, + 168, + 1, + 255, + 201, + 170, + 3, + 255, + 203, + 172, + 6, + 255, + 205, + 174, + 8, + 255, + 198, + 169, + 29, + 255, + 202, + 171, + 46, + 255, + 216, + 188, + 46, + 255, + 208, + 186, + 7, + 255, + 211, + 187, + 1, + 255, + 217, + 188, + 7, + 255, + 215, + 194, + 16, + 255, + 171, + 167, + 156, + 255, + 189, + 168, + 109, + 255, + 160, + 132, + 77, + 255, + 225, + 190, + 70, + 255, + 220, + 199, + 107, + 255, + 137, + 120, + 55, + 255, + 202, + 162, + 102, + 255, + 155, + 139, + 132, + 255, + 231, + 202, + 107, + 255, + 230, + 207, + 68, + 255, + 230, + 202, + 91, + 255, + 230, + 204, + 83, + 255, + 232, + 205, + 92, + 255, + 229, + 206, + 92, + 255, + 232, + 204, + 98, + 255, + 234, + 205, + 103, + 255, + 204, + 169, + 139, + 255, + 181, + 160, + 102, + 255, + 236, + 218, + 93, + 255, + 222, + 203, + 92, + 255, + 208, + 184, + 182, + 255, + 234, + 227, + 223, + 255, + 188, + 188, + 194, + 255, + 148, + 152, + 165, + 255, + 75, + 76, + 106, + 255, + 64, + 66, + 106, + 255, + 56, + 58, + 104, + 255, + 54, + 56, + 106, + 255, + 53, + 56, + 111, + 255, + 51, + 59, + 113, + 255, + 81, + 92, + 155, + 255, + 76, + 89, + 143, + 255, + 165, + 180, + 201, + 255, + 164, + 183, + 196, + 255, + 163, + 184, + 203, + 255, + 172, + 184, + 203, + 255, + 230, + 221, + 232, + 255, + 157, + 153, + 150, + 255, + 216, + 211, + 208, + 255, + 146, + 138, + 119, + 255, + 222, + 211, + 136, + 255, + 209, + 202, + 194, + 255, + 226, + 219, + 213, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 216, + 255, + 228, + 221, + 211, + 255, + 114, + 126, + 139, + 255, + 56, + 111, + 149, + 255, + 56, + 104, + 145, + 255, + 52, + 121, + 146, + 255, + 90, + 131, + 150, + 255, + 225, + 235, + 245, + 255, + 184, + 182, + 186, + 255, + 209, + 176, + 183, + 255, + 121, + 99, + 83, + 255, + 224, + 208, + 116, + 255, + 148, + 131, + 116, + 255, + 183, + 155, + 148, + 255, + 179, + 141, + 130, + 255, + 184, + 159, + 147, + 255, + 81, + 74, + 88, + 255, + 64, + 66, + 95, + 255, + 65, + 59, + 97, + 255, + 93, + 82, + 95, + 255, + 165, + 153, + 131, + 255, + 210, + 179, + 115, + 255, + 198, + 162, + 113, + 255, + 199, + 158, + 128, + 255, + 204, + 160, + 142, + 255, + 198, + 160, + 131, + 255, + 197, + 159, + 132, + 255, + 195, + 156, + 132, + 255, + 191, + 153, + 130, + 255, + 189, + 156, + 139, + 255, + 174, + 143, + 139, + 255, + 154, + 129, + 72, + 255, + 216, + 196, + 66, + 255, + 215, + 188, + 14, + 255, + 220, + 189, + 4, + 255, + 217, + 192, + 63, + 255, + 85, + 85, + 91, + 255, + 70, + 77, + 112, + 255, + 67, + 78, + 119, + 255, + 66, + 76, + 120, + 255, + 35, + 40, + 87, + 255, + 29, + 31, + 81, + 255, + 26, + 27, + 73, + 255, + 26, + 25, + 66, + 255, + 25, + 23, + 62, + 255, + 24, + 23, + 57, + 255, + 22, + 21, + 54, + 255, + 23, + 22, + 53, + 255, + 22, + 21, + 52, + 255, + 21, + 20, + 52, + 255, + 22, + 21, + 53, + 255, + 22, + 21, + 53, + 255, + 22, + 21, + 53, + 255, + 24, + 22, + 71, + 255, + 25, + 22, + 77, + 255, + 25, + 22, + 77, + 255, + 24, + 21, + 73, + 255, + 22, + 22, + 74, + 255, + 22, + 22, + 72, + 255, + 22, + 23, + 70, + 255, + 22, + 23, + 69, + 255, + 23, + 23, + 73, + 255, + 23, + 23, + 74, + 255, + 22, + 22, + 74, + 255, + 22, + 22, + 74, + 255, + 23, + 25, + 76, + 255, + 23, + 25, + 76, + 255, + 23, + 25, + 77, + 255, + 22, + 24, + 76, + 255, + 25, + 23, + 73, + 255, + 24, + 22, + 70, + 255, + 21, + 20, + 62, + 255, + 20, + 19, + 59, + 255, + 22, + 22, + 57, + 255, + 18, + 20, + 45, + 255, + 16, + 18, + 39, + 255, + 16, + 18, + 39, + 255, + 16, + 18, + 39, + 255, + 17, + 19, + 40, + 255, + 18, + 21, + 40, + 255, + 23, + 26, + 45, + 255, + 33, + 37, + 65, + 255, + 56, + 59, + 92, + 255, + 59, + 61, + 98, + 255, + 61, + 63, + 103, + 255, + 61, + 65, + 102, + 255, + 61, + 65, + 102, + 255, + 61, + 65, + 102, + 255, + 61, + 65, + 102, + 255, + 62, + 66, + 101, + 255, + 62, + 66, + 101, + 255, + 61, + 65, + 100, + 255, + 61, + 65, + 100, + 255, + 60, + 65, + 95, + 255, + 59, + 64, + 96, + 255, + 59, + 63, + 99, + 255, + 61, + 65, + 102, + 255, + 42, + 54, + 96, + 255, + 71, + 107, + 164, + 255, + 42, + 124, + 172, + 255, + 0, + 184, + 185, + 255, + 0, + 187, + 202, + 255, + 23, + 152, + 194, + 255, + 36, + 60, + 134, + 255, + 28, + 42, + 107, + 255, + 32, + 33, + 90, + 255, + 31, + 33, + 90, + 255, + 35, + 38, + 107, + 255, + 48, + 48, + 135, + 255, + 61, + 59, + 152, + 255, + 54, + 130, + 227, + 255, + 57, + 95, + 206, + 255, + 59, + 61, + 162, + 255, + 55, + 58, + 145, + 255, + 39, + 40, + 121, + 255, + 33, + 33, + 95, + 255, + 25, + 26, + 73, + 255, + 22, + 21, + 51, + 255, + 20, + 20, + 46, + 255, + 19, + 20, + 42, + 255, + 19, + 20, + 40, + 255, + 21, + 22, + 43, + 255, + 23, + 24, + 44, + 255, + 28, + 29, + 46, + 255, + 28, + 30, + 45, + 255, + 37, + 38, + 56, + 255, + 31, + 31, + 56, + 255, + 30, + 30, + 56, + 255, + 1, + 1, + 12, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 8, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 10, + 255, + 8, + 6, + 35, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 4, + 255, + 14, + 13, + 40, + 255, + 0, + 0, + 22, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 3, + 255, + 1, + 1, + 4, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 1, + 2, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 6, + 5, + 14, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 7, + 255, + 20, + 18, + 30, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 5, + 4, + 12, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 6, + 255, + 0, + 2, + 7, + 255, + 0, + 1, + 11, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 21, + 255, + 2, + 2, + 27, + 255, + 2, + 2, + 25, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 3, + 24, + 255, + 1, + 3, + 25, + 255, + 1, + 3, + 27, + 255, + 2, + 4, + 29, + 255, + 4, + 6, + 31, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 34, + 255, + 13, + 15, + 37, + 255, + 13, + 15, + 36, + 255, + 13, + 18, + 38, + 255, + 13, + 18, + 38, + 255, + 12, + 17, + 37, + 255, + 15, + 20, + 40, + 255, + 21, + 26, + 46, + 255, + 80, + 85, + 104, + 255, + 80, + 86, + 102, + 255, + 78, + 84, + 99, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 83, + 100, + 255, + 83, + 86, + 101, + 255, + 83, + 87, + 99, + 255, + 88, + 92, + 103, + 255, + 88, + 92, + 102, + 255, + 87, + 91, + 101, + 255, + 87, + 91, + 101, + 255, + 86, + 90, + 100, + 255, + 86, + 92, + 106, + 255, + 44, + 47, + 62, + 255, + 29, + 31, + 46, + 255, + 25, + 25, + 41, + 255, + 23, + 24, + 42, + 255, + 24, + 26, + 42, + 255, + 26, + 28, + 42, + 255, + 33, + 35, + 48, + 255, + 36, + 38, + 50, + 255, + 46, + 49, + 58, + 255, + 65, + 68, + 77, + 255, + 95, + 98, + 105, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 96, + 99, + 106, + 255, + 97, + 100, + 107, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 98, + 103, + 109, + 255, + 96, + 100, + 110, + 255, + 96, + 99, + 114, + 255, + 44, + 47, + 64, + 255, + 29, + 31, + 52, + 255, + 25, + 27, + 50, + 255, + 23, + 25, + 50, + 255, + 24, + 26, + 51, + 255, + 22, + 23, + 52, + 255, + 15, + 16, + 53, + 255, + 16, + 18, + 57, + 255, + 15, + 19, + 54, + 255, + 15, + 20, + 58, + 255, + 15, + 20, + 58, + 255, + 14, + 19, + 57, + 255, + 15, + 20, + 58, + 255, + 17, + 20, + 61, + 255, + 10, + 13, + 44, + 255, + 9, + 10, + 30, + 255, + 10, + 9, + 25, + 255, + 8, + 10, + 23, + 255, + 12, + 15, + 25, + 255, + 24, + 22, + 51, + 255, + 66, + 64, + 73, + 255, + 112, + 102, + 41, + 255, + 161, + 151, + 10, + 255, + 170, + 150, + 0, + 255, + 179, + 146, + 6, + 255, + 178, + 152, + 0, + 255, + 183, + 154, + 0, + 255, + 182, + 157, + 0, + 255, + 181, + 163, + 0, + 255, + 189, + 159, + 2, + 255, + 190, + 160, + 4, + 255, + 193, + 163, + 0, + 255, + 193, + 167, + 0, + 255, + 199, + 168, + 1, + 255, + 201, + 170, + 4, + 255, + 200, + 168, + 7, + 255, + 202, + 169, + 11, + 255, + 207, + 178, + 4, + 255, + 208, + 179, + 4, + 255, + 209, + 181, + 0, + 255, + 211, + 184, + 0, + 255, + 212, + 188, + 1, + 255, + 215, + 189, + 0, + 255, + 214, + 188, + 13, + 255, + 136, + 125, + 96, + 255, + 176, + 156, + 130, + 255, + 163, + 139, + 67, + 255, + 225, + 195, + 44, + 255, + 149, + 128, + 65, + 255, + 142, + 120, + 78, + 255, + 204, + 166, + 109, + 255, + 143, + 120, + 112, + 255, + 209, + 186, + 109, + 255, + 231, + 207, + 72, + 255, + 230, + 204, + 80, + 255, + 229, + 203, + 79, + 255, + 230, + 204, + 85, + 255, + 229, + 201, + 109, + 255, + 232, + 207, + 68, + 255, + 227, + 198, + 87, + 255, + 203, + 167, + 133, + 255, + 194, + 161, + 150, + 255, + 218, + 195, + 118, + 255, + 220, + 207, + 94, + 255, + 209, + 192, + 191, + 255, + 215, + 211, + 210, + 255, + 168, + 170, + 186, + 255, + 79, + 84, + 114, + 255, + 38, + 39, + 84, + 255, + 50, + 51, + 106, + 255, + 50, + 53, + 107, + 255, + 50, + 54, + 107, + 255, + 50, + 55, + 109, + 255, + 52, + 54, + 113, + 255, + 77, + 89, + 153, + 255, + 81, + 98, + 152, + 255, + 181, + 197, + 222, + 255, + 186, + 204, + 218, + 255, + 197, + 216, + 231, + 255, + 203, + 217, + 228, + 255, + 217, + 218, + 219, + 255, + 223, + 224, + 207, + 255, + 180, + 174, + 177, + 255, + 205, + 204, + 150, + 255, + 157, + 145, + 116, + 255, + 222, + 215, + 209, + 255, + 224, + 217, + 211, + 255, + 227, + 219, + 216, + 255, + 227, + 219, + 216, + 255, + 225, + 215, + 213, + 255, + 185, + 196, + 205, + 255, + 73, + 135, + 156, + 255, + 57, + 119, + 139, + 255, + 49, + 142, + 148, + 255, + 96, + 146, + 148, + 255, + 222, + 227, + 223, + 255, + 221, + 210, + 199, + 255, + 214, + 195, + 215, + 255, + 201, + 195, + 129, + 255, + 143, + 111, + 91, + 255, + 190, + 161, + 145, + 255, + 203, + 159, + 139, + 255, + 195, + 162, + 156, + 255, + 119, + 96, + 86, + 255, + 190, + 167, + 168, + 255, + 90, + 75, + 98, + 255, + 140, + 120, + 103, + 255, + 203, + 172, + 133, + 255, + 211, + 168, + 132, + 255, + 195, + 155, + 128, + 255, + 202, + 161, + 135, + 255, + 201, + 158, + 135, + 255, + 204, + 159, + 138, + 255, + 193, + 156, + 139, + 255, + 194, + 155, + 140, + 255, + 194, + 153, + 134, + 255, + 195, + 151, + 132, + 255, + 195, + 154, + 133, + 255, + 198, + 153, + 141, + 255, + 195, + 158, + 140, + 255, + 143, + 118, + 86, + 255, + 211, + 190, + 36, + 255, + 218, + 188, + 33, + 255, + 206, + 180, + 7, + 255, + 121, + 102, + 96, + 255, + 78, + 84, + 117, + 255, + 68, + 77, + 119, + 255, + 68, + 74, + 123, + 255, + 31, + 33, + 81, + 255, + 28, + 28, + 78, + 255, + 25, + 25, + 69, + 255, + 24, + 23, + 62, + 255, + 23, + 21, + 58, + 255, + 23, + 22, + 56, + 255, + 21, + 20, + 52, + 255, + 22, + 21, + 51, + 255, + 21, + 21, + 49, + 255, + 21, + 20, + 52, + 255, + 22, + 21, + 53, + 255, + 21, + 20, + 52, + 255, + 21, + 20, + 52, + 255, + 22, + 20, + 66, + 255, + 24, + 21, + 73, + 255, + 24, + 21, + 74, + 255, + 23, + 21, + 71, + 255, + 22, + 22, + 73, + 255, + 22, + 22, + 72, + 255, + 22, + 23, + 71, + 255, + 22, + 23, + 70, + 255, + 22, + 22, + 72, + 255, + 22, + 22, + 74, + 255, + 24, + 23, + 80, + 255, + 24, + 23, + 81, + 255, + 24, + 24, + 78, + 255, + 22, + 22, + 72, + 255, + 22, + 23, + 70, + 255, + 21, + 22, + 67, + 255, + 22, + 21, + 64, + 255, + 21, + 20, + 60, + 255, + 22, + 22, + 59, + 255, + 21, + 21, + 56, + 255, + 20, + 20, + 54, + 255, + 16, + 18, + 42, + 255, + 15, + 18, + 37, + 255, + 15, + 17, + 38, + 255, + 15, + 18, + 37, + 255, + 16, + 19, + 38, + 255, + 18, + 20, + 41, + 255, + 25, + 27, + 48, + 255, + 59, + 62, + 93, + 255, + 62, + 65, + 98, + 255, + 59, + 61, + 98, + 255, + 61, + 63, + 102, + 255, + 60, + 64, + 99, + 255, + 60, + 64, + 99, + 255, + 60, + 64, + 99, + 255, + 60, + 64, + 99, + 255, + 61, + 66, + 98, + 255, + 61, + 66, + 98, + 255, + 60, + 65, + 97, + 255, + 60, + 65, + 97, + 255, + 59, + 64, + 95, + 255, + 58, + 63, + 95, + 255, + 58, + 62, + 96, + 255, + 57, + 61, + 95, + 255, + 37, + 37, + 80, + 255, + 43, + 72, + 128, + 255, + 26, + 103, + 157, + 255, + 8, + 177, + 198, + 255, + 20, + 168, + 197, + 255, + 30, + 130, + 180, + 255, + 33, + 51, + 123, + 255, + 30, + 38, + 101, + 255, + 28, + 29, + 85, + 255, + 28, + 30, + 85, + 255, + 33, + 35, + 103, + 255, + 45, + 45, + 131, + 255, + 59, + 56, + 151, + 255, + 51, + 134, + 222, + 255, + 41, + 90, + 191, + 255, + 68, + 61, + 164, + 255, + 51, + 53, + 140, + 255, + 43, + 43, + 124, + 255, + 31, + 31, + 93, + 255, + 24, + 24, + 71, + 255, + 21, + 21, + 49, + 255, + 19, + 19, + 45, + 255, + 18, + 19, + 40, + 255, + 18, + 19, + 38, + 255, + 18, + 19, + 41, + 255, + 23, + 24, + 42, + 255, + 66, + 68, + 80, + 255, + 82, + 85, + 93, + 255, + 82, + 87, + 91, + 255, + 79, + 82, + 97, + 255, + 35, + 38, + 56, + 255, + 40, + 39, + 91, + 255, + 9, + 8, + 48, + 255, + 1, + 2, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 4, + 19, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 2, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 4, + 255, + 2, + 3, + 8, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 3, + 255, + 4, + 1, + 22, + 255, + 38, + 33, + 73, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 4, + 2, + 13, + 255, + 12, + 8, + 32, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 6, + 255, + 1, + 2, + 0, + 255, + 1, + 2, + 0, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 5, + 4, + 10, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 5, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 13, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 18, + 255, + 1, + 2, + 23, + 255, + 3, + 4, + 25, + 255, + 2, + 3, + 24, + 255, + 2, + 3, + 24, + 255, + 0, + 2, + 25, + 255, + 0, + 2, + 26, + 255, + 0, + 1, + 28, + 255, + 4, + 5, + 33, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 6, + 10, + 37, + 255, + 7, + 11, + 38, + 255, + 6, + 7, + 35, + 255, + 8, + 10, + 35, + 255, + 7, + 9, + 33, + 255, + 13, + 15, + 38, + 255, + 15, + 17, + 38, + 255, + 16, + 18, + 39, + 255, + 16, + 18, + 39, + 255, + 18, + 20, + 41, + 255, + 26, + 31, + 51, + 255, + 85, + 90, + 109, + 255, + 80, + 86, + 102, + 255, + 78, + 84, + 99, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 78, + 84, + 98, + 255, + 80, + 83, + 101, + 255, + 80, + 83, + 100, + 255, + 84, + 87, + 102, + 255, + 83, + 87, + 100, + 255, + 88, + 92, + 104, + 255, + 88, + 92, + 104, + 255, + 87, + 91, + 103, + 255, + 84, + 88, + 100, + 255, + 85, + 91, + 107, + 255, + 37, + 40, + 57, + 255, + 26, + 27, + 45, + 255, + 24, + 24, + 42, + 255, + 23, + 24, + 42, + 255, + 25, + 27, + 43, + 255, + 29, + 31, + 45, + 255, + 34, + 36, + 49, + 255, + 35, + 37, + 49, + 255, + 42, + 45, + 54, + 255, + 56, + 59, + 68, + 255, + 101, + 104, + 111, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 98, + 103, + 109, + 255, + 97, + 101, + 110, + 255, + 96, + 100, + 111, + 255, + 65, + 69, + 82, + 255, + 34, + 36, + 57, + 255, + 26, + 28, + 51, + 255, + 23, + 25, + 50, + 255, + 22, + 24, + 49, + 255, + 15, + 19, + 47, + 255, + 16, + 19, + 55, + 255, + 13, + 18, + 56, + 255, + 14, + 20, + 54, + 255, + 14, + 19, + 57, + 255, + 14, + 19, + 57, + 255, + 16, + 21, + 59, + 255, + 14, + 19, + 57, + 255, + 15, + 20, + 65, + 255, + 15, + 19, + 56, + 255, + 9, + 11, + 35, + 255, + 7, + 9, + 23, + 255, + 9, + 8, + 27, + 255, + 12, + 13, + 23, + 255, + 20, + 25, + 40, + 255, + 50, + 59, + 83, + 255, + 66, + 66, + 78, + 255, + 73, + 65, + 59, + 255, + 138, + 124, + 69, + 255, + 164, + 152, + 25, + 255, + 181, + 155, + 9, + 255, + 175, + 144, + 0, + 255, + 183, + 152, + 0, + 255, + 182, + 152, + 11, + 255, + 182, + 160, + 8, + 255, + 183, + 160, + 21, + 255, + 201, + 173, + 37, + 255, + 190, + 159, + 9, + 255, + 198, + 168, + 0, + 255, + 200, + 170, + 0, + 255, + 202, + 172, + 0, + 255, + 205, + 175, + 1, + 255, + 207, + 177, + 1, + 255, + 209, + 180, + 0, + 255, + 211, + 182, + 1, + 255, + 214, + 184, + 7, + 255, + 212, + 189, + 0, + 255, + 215, + 189, + 0, + 255, + 219, + 189, + 22, + 255, + 167, + 152, + 72, + 255, + 173, + 161, + 137, + 255, + 148, + 126, + 62, + 255, + 226, + 199, + 29, + 255, + 136, + 115, + 71, + 255, + 131, + 105, + 83, + 255, + 193, + 158, + 101, + 255, + 149, + 117, + 110, + 255, + 173, + 156, + 113, + 255, + 225, + 198, + 67, + 255, + 230, + 204, + 64, + 255, + 229, + 201, + 73, + 255, + 231, + 203, + 78, + 255, + 231, + 201, + 107, + 255, + 225, + 202, + 38, + 255, + 236, + 204, + 93, + 255, + 209, + 175, + 112, + 255, + 195, + 160, + 130, + 255, + 182, + 150, + 154, + 255, + 124, + 105, + 89, + 255, + 93, + 86, + 78, + 255, + 175, + 171, + 185, + 255, + 73, + 76, + 110, + 255, + 57, + 61, + 109, + 255, + 48, + 51, + 105, + 255, + 48, + 51, + 104, + 255, + 49, + 53, + 105, + 255, + 51, + 57, + 108, + 255, + 49, + 57, + 105, + 255, + 54, + 57, + 125, + 255, + 62, + 78, + 138, + 255, + 77, + 97, + 140, + 255, + 236, + 246, + 255, + 255, + 227, + 238, + 248, + 255, + 226, + 236, + 244, + 255, + 232, + 241, + 246, + 255, + 223, + 229, + 229, + 255, + 181, + 181, + 189, + 255, + 165, + 163, + 148, + 255, + 173, + 167, + 153, + 255, + 226, + 215, + 228, + 255, + 225, + 217, + 214, + 255, + 227, + 219, + 216, + 255, + 227, + 220, + 214, + 255, + 226, + 219, + 213, + 255, + 228, + 220, + 210, + 255, + 223, + 222, + 211, + 255, + 152, + 189, + 182, + 255, + 155, + 189, + 180, + 255, + 136, + 161, + 146, + 255, + 166, + 167, + 164, + 255, + 221, + 210, + 216, + 255, + 215, + 210, + 216, + 255, + 125, + 118, + 111, + 255, + 119, + 106, + 83, + 255, + 205, + 163, + 149, + 255, + 203, + 159, + 148, + 255, + 205, + 159, + 136, + 255, + 198, + 158, + 147, + 255, + 193, + 159, + 140, + 255, + 198, + 160, + 149, + 255, + 139, + 119, + 109, + 255, + 134, + 107, + 97, + 255, + 178, + 144, + 135, + 255, + 196, + 156, + 149, + 255, + 203, + 166, + 156, + 255, + 199, + 160, + 148, + 255, + 203, + 163, + 148, + 255, + 199, + 158, + 131, + 255, + 210, + 159, + 134, + 255, + 178, + 135, + 117, + 255, + 141, + 107, + 100, + 255, + 118, + 90, + 89, + 255, + 160, + 134, + 127, + 255, + 194, + 159, + 139, + 255, + 188, + 146, + 120, + 255, + 199, + 156, + 132, + 255, + 155, + 123, + 98, + 255, + 203, + 181, + 46, + 255, + 215, + 189, + 0, + 255, + 180, + 145, + 123, + 255, + 80, + 85, + 113, + 255, + 66, + 74, + 119, + 255, + 64, + 70, + 121, + 255, + 32, + 33, + 80, + 255, + 28, + 26, + 72, + 255, + 24, + 23, + 64, + 255, + 23, + 21, + 58, + 255, + 24, + 20, + 53, + 255, + 22, + 21, + 53, + 255, + 21, + 20, + 50, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 47, + 255, + 20, + 19, + 51, + 255, + 20, + 19, + 51, + 255, + 21, + 20, + 52, + 255, + 20, + 19, + 51, + 255, + 20, + 19, + 58, + 255, + 23, + 21, + 68, + 255, + 22, + 20, + 70, + 255, + 23, + 21, + 70, + 255, + 22, + 23, + 70, + 255, + 22, + 23, + 71, + 255, + 21, + 21, + 71, + 255, + 21, + 21, + 72, + 255, + 21, + 21, + 71, + 255, + 21, + 21, + 73, + 255, + 22, + 22, + 76, + 255, + 21, + 20, + 76, + 255, + 22, + 20, + 69, + 255, + 21, + 19, + 65, + 255, + 21, + 20, + 60, + 255, + 20, + 20, + 58, + 255, + 20, + 20, + 55, + 255, + 20, + 20, + 54, + 255, + 20, + 20, + 54, + 255, + 20, + 21, + 53, + 255, + 18, + 19, + 50, + 255, + 14, + 16, + 38, + 255, + 14, + 17, + 34, + 255, + 14, + 17, + 36, + 255, + 15, + 18, + 35, + 255, + 16, + 19, + 38, + 255, + 19, + 21, + 43, + 255, + 35, + 37, + 61, + 255, + 57, + 60, + 93, + 255, + 58, + 61, + 94, + 255, + 59, + 62, + 97, + 255, + 60, + 63, + 98, + 255, + 60, + 65, + 97, + 255, + 60, + 65, + 97, + 255, + 60, + 65, + 97, + 255, + 60, + 65, + 97, + 255, + 60, + 65, + 95, + 255, + 60, + 65, + 95, + 255, + 60, + 65, + 95, + 255, + 60, + 65, + 95, + 255, + 58, + 63, + 95, + 255, + 57, + 62, + 93, + 255, + 54, + 59, + 89, + 255, + 40, + 45, + 75, + 255, + 25, + 30, + 61, + 255, + 34, + 42, + 90, + 255, + 37, + 62, + 125, + 255, + 25, + 80, + 146, + 255, + 44, + 67, + 136, + 255, + 35, + 50, + 117, + 255, + 35, + 35, + 97, + 255, + 27, + 30, + 82, + 255, + 25, + 26, + 73, + 255, + 26, + 27, + 74, + 255, + 31, + 33, + 92, + 255, + 40, + 39, + 116, + 255, + 48, + 53, + 138, + 255, + 55, + 70, + 164, + 255, + 54, + 58, + 157, + 255, + 52, + 57, + 147, + 255, + 48, + 49, + 131, + 255, + 38, + 36, + 111, + 255, + 28, + 27, + 84, + 255, + 23, + 22, + 63, + 255, + 19, + 19, + 45, + 255, + 17, + 17, + 41, + 255, + 15, + 16, + 36, + 255, + 17, + 18, + 36, + 255, + 19, + 20, + 41, + 255, + 56, + 57, + 76, + 255, + 52, + 54, + 68, + 255, + 40, + 42, + 54, + 255, + 39, + 45, + 61, + 255, + 52, + 56, + 83, + 255, + 52, + 55, + 88, + 255, + 0, + 1, + 24, + 255, + 0, + 1, + 19, + 255, + 1, + 2, + 0, + 255, + 2, + 0, + 6, + 255, + 8, + 11, + 51, + 255, + 9, + 7, + 53, + 255, + 0, + 0, + 7, + 255, + 1, + 0, + 9, + 255, + 0, + 0, + 13, + 255, + 12, + 9, + 38, + 255, + 1, + 0, + 16, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 0, + 255, + 5, + 0, + 13, + 255, + 4, + 1, + 3, + 255, + 0, + 1, + 1, + 255, + 1, + 0, + 7, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 4, + 255, + 0, + 4, + 0, + 255, + 1, + 0, + 1, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 2, + 4, + 3, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 3, + 1, + 15, + 255, + 1, + 0, + 28, + 255, + 1, + 0, + 7, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 11, + 255, + 16, + 11, + 40, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 2, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 2, + 2, + 3, + 255, + 0, + 0, + 7, + 255, + 3, + 2, + 9, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 4, + 255, + 5, + 4, + 9, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 13, + 255, + 3, + 2, + 20, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 2, + 25, + 255, + 0, + 2, + 27, + 255, + 2, + 3, + 31, + 255, + 5, + 6, + 35, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 6, + 7, + 35, + 255, + 8, + 9, + 37, + 255, + 9, + 11, + 36, + 255, + 8, + 10, + 33, + 255, + 13, + 14, + 35, + 255, + 20, + 21, + 42, + 255, + 18, + 19, + 40, + 255, + 20, + 21, + 42, + 255, + 33, + 38, + 58, + 255, + 78, + 83, + 102, + 255, + 78, + 84, + 100, + 255, + 80, + 86, + 101, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 79, + 85, + 99, + 255, + 81, + 84, + 103, + 255, + 81, + 84, + 101, + 255, + 82, + 85, + 102, + 255, + 83, + 86, + 101, + 255, + 82, + 86, + 98, + 255, + 84, + 88, + 100, + 255, + 85, + 89, + 101, + 255, + 81, + 85, + 97, + 255, + 59, + 65, + 81, + 255, + 30, + 33, + 50, + 255, + 24, + 25, + 43, + 255, + 24, + 24, + 42, + 255, + 24, + 25, + 43, + 255, + 27, + 29, + 45, + 255, + 34, + 36, + 50, + 255, + 34, + 36, + 49, + 255, + 35, + 37, + 49, + 255, + 39, + 42, + 51, + 255, + 48, + 51, + 60, + 255, + 80, + 83, + 90, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 107, + 255, + 98, + 101, + 108, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 98, + 103, + 109, + 255, + 97, + 101, + 110, + 255, + 97, + 101, + 110, + 255, + 93, + 97, + 106, + 255, + 41, + 43, + 64, + 255, + 26, + 28, + 51, + 255, + 23, + 25, + 50, + 255, + 22, + 24, + 49, + 255, + 10, + 14, + 42, + 255, + 14, + 18, + 54, + 255, + 12, + 17, + 55, + 255, + 10, + 19, + 52, + 255, + 14, + 19, + 57, + 255, + 14, + 19, + 57, + 255, + 15, + 20, + 58, + 255, + 12, + 17, + 55, + 255, + 10, + 18, + 58, + 255, + 14, + 18, + 58, + 255, + 12, + 14, + 45, + 255, + 7, + 8, + 27, + 255, + 7, + 8, + 20, + 255, + 13, + 8, + 30, + 255, + 20, + 19, + 42, + 255, + 45, + 50, + 89, + 255, + 51, + 57, + 89, + 255, + 61, + 66, + 78, + 255, + 70, + 68, + 81, + 255, + 84, + 81, + 81, + 255, + 95, + 83, + 34, + 255, + 122, + 106, + 20, + 255, + 140, + 119, + 11, + 255, + 144, + 123, + 15, + 255, + 124, + 109, + 9, + 255, + 130, + 113, + 16, + 255, + 186, + 162, + 35, + 255, + 196, + 166, + 0, + 255, + 198, + 166, + 6, + 255, + 200, + 168, + 6, + 255, + 202, + 171, + 1, + 255, + 205, + 175, + 1, + 255, + 204, + 178, + 0, + 255, + 205, + 178, + 2, + 255, + 208, + 181, + 2, + 255, + 211, + 186, + 0, + 255, + 213, + 189, + 0, + 255, + 214, + 188, + 4, + 255, + 216, + 182, + 24, + 255, + 203, + 188, + 60, + 255, + 215, + 211, + 165, + 255, + 141, + 118, + 77, + 255, + 226, + 199, + 30, + 255, + 161, + 142, + 99, + 255, + 142, + 114, + 101, + 255, + 199, + 165, + 108, + 255, + 174, + 136, + 132, + 255, + 128, + 113, + 99, + 255, + 234, + 205, + 76, + 255, + 231, + 205, + 56, + 255, + 229, + 200, + 71, + 255, + 230, + 201, + 73, + 255, + 231, + 203, + 93, + 255, + 227, + 203, + 34, + 255, + 233, + 198, + 96, + 255, + 231, + 203, + 105, + 255, + 201, + 159, + 144, + 255, + 193, + 168, + 144, + 255, + 157, + 140, + 149, + 255, + 96, + 91, + 112, + 255, + 72, + 69, + 97, + 255, + 57, + 61, + 108, + 255, + 49, + 54, + 110, + 255, + 47, + 52, + 108, + 255, + 50, + 50, + 120, + 255, + 51, + 54, + 124, + 255, + 47, + 51, + 123, + 255, + 54, + 59, + 132, + 255, + 57, + 65, + 137, + 255, + 68, + 89, + 143, + 255, + 212, + 233, + 255, + 255, + 233, + 235, + 240, + 255, + 231, + 234, + 236, + 255, + 232, + 234, + 238, + 255, + 228, + 230, + 234, + 255, + 135, + 138, + 146, + 255, + 211, + 213, + 219, + 255, + 225, + 220, + 221, + 255, + 234, + 228, + 220, + 255, + 226, + 223, + 214, + 255, + 227, + 219, + 217, + 255, + 227, + 219, + 216, + 255, + 227, + 220, + 213, + 255, + 226, + 219, + 211, + 255, + 224, + 217, + 218, + 255, + 232, + 213, + 210, + 255, + 224, + 223, + 222, + 255, + 232, + 218, + 216, + 255, + 220, + 209, + 205, + 255, + 227, + 202, + 204, + 255, + 223, + 203, + 206, + 255, + 125, + 124, + 122, + 255, + 215, + 201, + 207, + 255, + 132, + 108, + 115, + 255, + 207, + 160, + 140, + 255, + 206, + 158, + 135, + 255, + 198, + 159, + 143, + 255, + 205, + 155, + 136, + 255, + 207, + 158, + 126, + 255, + 202, + 158, + 142, + 255, + 204, + 162, + 140, + 255, + 198, + 160, + 133, + 255, + 196, + 160, + 135, + 255, + 195, + 163, + 142, + 255, + 178, + 147, + 136, + 255, + 177, + 143, + 135, + 255, + 192, + 156, + 149, + 255, + 185, + 149, + 144, + 255, + 194, + 156, + 133, + 255, + 197, + 159, + 137, + 255, + 198, + 159, + 138, + 255, + 198, + 159, + 139, + 255, + 203, + 164, + 156, + 255, + 99, + 79, + 89, + 255, + 105, + 87, + 94, + 255, + 177, + 147, + 139, + 255, + 185, + 152, + 133, + 255, + 123, + 98, + 43, + 255, + 211, + 191, + 32, + 255, + 185, + 155, + 139, + 255, + 82, + 85, + 110, + 255, + 65, + 70, + 117, + 255, + 60, + 64, + 119, + 255, + 33, + 32, + 80, + 255, + 25, + 24, + 67, + 255, + 23, + 21, + 60, + 255, + 24, + 20, + 54, + 255, + 24, + 19, + 49, + 255, + 21, + 20, + 51, + 255, + 20, + 20, + 48, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 19, + 18, + 50, + 255, + 21, + 20, + 52, + 255, + 18, + 17, + 49, + 255, + 19, + 18, + 50, + 255, + 17, + 17, + 51, + 255, + 21, + 20, + 63, + 255, + 21, + 19, + 69, + 255, + 22, + 20, + 69, + 255, + 20, + 21, + 67, + 255, + 20, + 21, + 68, + 255, + 21, + 21, + 72, + 255, + 21, + 21, + 73, + 255, + 21, + 21, + 73, + 255, + 21, + 22, + 70, + 255, + 19, + 20, + 64, + 255, + 18, + 20, + 60, + 255, + 21, + 19, + 59, + 255, + 20, + 18, + 58, + 255, + 21, + 19, + 59, + 255, + 20, + 18, + 57, + 255, + 19, + 19, + 55, + 255, + 19, + 19, + 55, + 255, + 19, + 19, + 55, + 255, + 19, + 19, + 55, + 255, + 17, + 18, + 48, + 255, + 13, + 15, + 36, + 255, + 13, + 16, + 32, + 255, + 13, + 16, + 33, + 255, + 14, + 17, + 32, + 255, + 18, + 21, + 39, + 255, + 19, + 21, + 44, + 255, + 59, + 61, + 86, + 255, + 56, + 59, + 94, + 255, + 59, + 62, + 97, + 255, + 59, + 62, + 95, + 255, + 60, + 63, + 96, + 255, + 59, + 64, + 94, + 255, + 59, + 64, + 94, + 255, + 58, + 63, + 93, + 255, + 58, + 63, + 93, + 255, + 58, + 63, + 93, + 255, + 58, + 63, + 93, + 255, + 58, + 63, + 93, + 255, + 58, + 63, + 93, + 255, + 57, + 62, + 94, + 255, + 56, + 61, + 92, + 255, + 58, + 63, + 91, + 255, + 15, + 21, + 46, + 255, + 19, + 25, + 43, + 255, + 22, + 23, + 53, + 255, + 32, + 41, + 90, + 255, + 50, + 51, + 122, + 255, + 28, + 39, + 104, + 255, + 26, + 33, + 88, + 255, + 18, + 30, + 71, + 255, + 20, + 24, + 61, + 255, + 20, + 20, + 55, + 255, + 20, + 23, + 57, + 255, + 25, + 27, + 75, + 255, + 33, + 32, + 98, + 255, + 40, + 40, + 117, + 255, + 45, + 46, + 126, + 255, + 46, + 47, + 127, + 255, + 52, + 43, + 125, + 255, + 38, + 39, + 110, + 255, + 31, + 31, + 94, + 255, + 23, + 22, + 68, + 255, + 20, + 19, + 50, + 255, + 16, + 16, + 41, + 255, + 21, + 22, + 44, + 255, + 15, + 16, + 34, + 255, + 17, + 19, + 34, + 255, + 20, + 21, + 41, + 255, + 17, + 18, + 40, + 255, + 28, + 28, + 53, + 255, + 33, + 33, + 60, + 255, + 37, + 43, + 68, + 255, + 47, + 52, + 82, + 255, + 52, + 57, + 88, + 255, + 0, + 3, + 7, + 255, + 2, + 0, + 6, + 255, + 3, + 0, + 2, + 255, + 1, + 0, + 0, + 255, + 0, + 2, + 8, + 255, + 1, + 2, + 6, + 255, + 0, + 1, + 4, + 255, + 1, + 0, + 4, + 255, + 0, + 2, + 19, + 255, + 3, + 1, + 41, + 255, + 0, + 3, + 3, + 255, + 0, + 0, + 5, + 255, + 0, + 2, + 0, + 255, + 25, + 22, + 65, + 255, + 0, + 4, + 8, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 5, + 255, + 2, + 1, + 15, + 255, + 2, + 2, + 14, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 9, + 255, + 1, + 3, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 6, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 3, + 255, + 4, + 3, + 7, + 255, + 4, + 2, + 23, + 255, + 0, + 0, + 4, + 255, + 2, + 1, + 0, + 255, + 4, + 0, + 4, + 255, + 8, + 6, + 20, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 11, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 23, + 255, + 1, + 3, + 26, + 255, + 3, + 5, + 30, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 6, + 10, + 35, + 255, + 4, + 8, + 33, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 10, + 32, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 6, + 10, + 35, + 255, + 9, + 11, + 36, + 255, + 17, + 18, + 36, + 255, + 24, + 23, + 41, + 255, + 26, + 22, + 49, + 255, + 36, + 41, + 60, + 255, + 74, + 80, + 96, + 255, + 76, + 82, + 96, + 255, + 79, + 85, + 98, + 255, + 79, + 85, + 99, + 255, + 79, + 85, + 99, + 255, + 80, + 86, + 100, + 255, + 80, + 86, + 100, + 255, + 79, + 85, + 101, + 255, + 76, + 82, + 98, + 255, + 78, + 84, + 100, + 255, + 78, + 84, + 100, + 255, + 80, + 87, + 105, + 255, + 80, + 87, + 105, + 255, + 78, + 85, + 103, + 255, + 80, + 87, + 105, + 255, + 47, + 50, + 69, + 255, + 28, + 31, + 50, + 255, + 22, + 25, + 44, + 255, + 22, + 25, + 44, + 255, + 26, + 28, + 40, + 255, + 30, + 32, + 44, + 255, + 34, + 36, + 48, + 255, + 34, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 39, + 40, + 52, + 255, + 42, + 44, + 56, + 255, + 59, + 63, + 74, + 255, + 98, + 101, + 108, + 255, + 96, + 99, + 106, + 255, + 97, + 100, + 107, + 255, + 96, + 99, + 106, + 255, + 97, + 101, + 110, + 255, + 97, + 101, + 110, + 255, + 97, + 101, + 110, + 255, + 95, + 99, + 108, + 255, + 98, + 99, + 111, + 255, + 98, + 99, + 111, + 255, + 97, + 98, + 110, + 255, + 100, + 101, + 113, + 255, + 99, + 102, + 111, + 255, + 98, + 100, + 111, + 255, + 97, + 99, + 111, + 255, + 97, + 99, + 113, + 255, + 52, + 52, + 71, + 255, + 34, + 34, + 57, + 255, + 22, + 23, + 50, + 255, + 15, + 19, + 48, + 255, + 13, + 13, + 49, + 255, + 16, + 19, + 51, + 255, + 14, + 19, + 52, + 255, + 12, + 18, + 58, + 255, + 14, + 20, + 56, + 255, + 14, + 20, + 55, + 255, + 13, + 19, + 54, + 255, + 12, + 18, + 52, + 255, + 14, + 18, + 53, + 255, + 14, + 14, + 57, + 255, + 20, + 20, + 56, + 255, + 9, + 9, + 33, + 255, + 10, + 7, + 23, + 255, + 11, + 12, + 27, + 255, + 18, + 22, + 44, + 255, + 48, + 53, + 84, + 255, + 54, + 56, + 87, + 255, + 56, + 59, + 84, + 255, + 63, + 62, + 79, + 255, + 78, + 77, + 48, + 255, + 154, + 139, + 57, + 255, + 169, + 142, + 30, + 255, + 180, + 154, + 14, + 255, + 179, + 161, + 8, + 255, + 150, + 131, + 0, + 255, + 189, + 168, + 25, + 255, + 187, + 160, + 0, + 255, + 194, + 165, + 0, + 255, + 196, + 163, + 7, + 255, + 198, + 166, + 3, + 255, + 201, + 169, + 3, + 255, + 204, + 172, + 10, + 255, + 202, + 173, + 0, + 255, + 209, + 181, + 2, + 255, + 209, + 183, + 1, + 255, + 209, + 183, + 2, + 255, + 214, + 185, + 3, + 255, + 214, + 187, + 3, + 255, + 214, + 186, + 15, + 255, + 217, + 190, + 32, + 255, + 145, + 132, + 100, + 255, + 134, + 113, + 74, + 255, + 221, + 192, + 47, + 255, + 183, + 153, + 127, + 255, + 190, + 158, + 137, + 255, + 201, + 177, + 103, + 255, + 196, + 164, + 151, + 255, + 158, + 126, + 122, + 255, + 218, + 186, + 109, + 255, + 227, + 199, + 11, + 255, + 229, + 206, + 70, + 255, + 231, + 197, + 55, + 255, + 209, + 181, + 102, + 255, + 231, + 206, + 59, + 255, + 231, + 201, + 72, + 255, + 222, + 202, + 45, + 255, + 206, + 168, + 121, + 255, + 196, + 162, + 144, + 255, + 122, + 95, + 103, + 255, + 119, + 110, + 134, + 255, + 80, + 83, + 106, + 255, + 100, + 101, + 140, + 255, + 67, + 71, + 115, + 255, + 62, + 73, + 145, + 255, + 55, + 74, + 149, + 255, + 54, + 59, + 133, + 255, + 58, + 60, + 134, + 255, + 55, + 64, + 140, + 255, + 57, + 71, + 143, + 255, + 57, + 104, + 166, + 255, + 70, + 143, + 206, + 255, + 228, + 239, + 250, + 255, + 227, + 233, + 239, + 255, + 231, + 233, + 237, + 255, + 229, + 229, + 229, + 255, + 218, + 214, + 212, + 255, + 225, + 217, + 214, + 255, + 227, + 219, + 216, + 255, + 227, + 219, + 216, + 255, + 227, + 219, + 216, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 225, + 217, + 214, + 255, + 224, + 216, + 213, + 255, + 225, + 215, + 213, + 255, + 226, + 215, + 213, + 255, + 226, + 215, + 213, + 255, + 228, + 211, + 209, + 255, + 227, + 206, + 203, + 255, + 226, + 199, + 197, + 255, + 227, + 197, + 195, + 255, + 229, + 199, + 192, + 255, + 154, + 125, + 130, + 255, + 198, + 163, + 144, + 255, + 205, + 158, + 130, + 255, + 202, + 160, + 138, + 255, + 198, + 159, + 135, + 255, + 197, + 158, + 134, + 255, + 196, + 157, + 133, + 255, + 201, + 157, + 138, + 255, + 202, + 159, + 135, + 255, + 205, + 160, + 137, + 255, + 204, + 157, + 140, + 255, + 183, + 144, + 119, + 255, + 180, + 145, + 129, + 255, + 85, + 65, + 83, + 255, + 97, + 95, + 126, + 255, + 99, + 94, + 116, + 255, + 105, + 101, + 120, + 255, + 109, + 105, + 121, + 255, + 111, + 107, + 122, + 255, + 92, + 71, + 76, + 255, + 192, + 162, + 146, + 255, + 140, + 114, + 112, + 255, + 103, + 92, + 116, + 255, + 116, + 92, + 84, + 255, + 183, + 148, + 136, + 255, + 177, + 149, + 117, + 255, + 173, + 138, + 135, + 255, + 77, + 78, + 112, + 255, + 59, + 69, + 112, + 255, + 44, + 53, + 96, + 255, + 25, + 25, + 62, + 255, + 24, + 23, + 57, + 255, + 22, + 21, + 54, + 255, + 22, + 21, + 52, + 255, + 20, + 19, + 50, + 255, + 20, + 20, + 48, + 255, + 18, + 18, + 46, + 255, + 19, + 19, + 47, + 255, + 18, + 18, + 46, + 255, + 19, + 18, + 48, + 255, + 19, + 17, + 53, + 255, + 21, + 19, + 55, + 255, + 16, + 16, + 44, + 255, + 17, + 15, + 47, + 255, + 19, + 17, + 55, + 255, + 21, + 19, + 65, + 255, + 18, + 18, + 70, + 255, + 21, + 19, + 66, + 255, + 22, + 20, + 68, + 255, + 21, + 19, + 69, + 255, + 21, + 19, + 69, + 255, + 21, + 19, + 67, + 255, + 22, + 20, + 69, + 255, + 20, + 18, + 63, + 255, + 19, + 19, + 56, + 255, + 16, + 19, + 53, + 255, + 16, + 19, + 53, + 255, + 16, + 19, + 53, + 255, + 16, + 19, + 53, + 255, + 18, + 18, + 53, + 255, + 18, + 18, + 53, + 255, + 18, + 18, + 53, + 255, + 18, + 18, + 53, + 255, + 18, + 15, + 44, + 255, + 15, + 13, + 35, + 255, + 15, + 14, + 30, + 255, + 16, + 15, + 33, + 255, + 14, + 17, + 32, + 255, + 21, + 24, + 43, + 255, + 49, + 53, + 79, + 255, + 52, + 57, + 87, + 255, + 56, + 62, + 90, + 255, + 57, + 63, + 91, + 255, + 58, + 64, + 92, + 255, + 58, + 64, + 92, + 255, + 58, + 63, + 92, + 255, + 58, + 63, + 92, + 255, + 58, + 63, + 92, + 255, + 58, + 63, + 92, + 255, + 57, + 63, + 91, + 255, + 57, + 63, + 91, + 255, + 57, + 63, + 91, + 255, + 56, + 62, + 90, + 255, + 57, + 61, + 97, + 255, + 54, + 58, + 87, + 255, + 19, + 21, + 43, + 255, + 16, + 18, + 34, + 255, + 14, + 15, + 33, + 255, + 14, + 16, + 39, + 255, + 18, + 19, + 48, + 255, + 21, + 24, + 57, + 255, + 23, + 22, + 64, + 255, + 20, + 20, + 56, + 255, + 18, + 19, + 48, + 255, + 15, + 17, + 41, + 255, + 15, + 15, + 40, + 255, + 17, + 17, + 43, + 255, + 20, + 18, + 54, + 255, + 25, + 22, + 68, + 255, + 26, + 26, + 77, + 255, + 31, + 29, + 90, + 255, + 32, + 30, + 96, + 255, + 31, + 29, + 92, + 255, + 28, + 25, + 78, + 255, + 24, + 23, + 66, + 255, + 20, + 21, + 53, + 255, + 15, + 17, + 41, + 255, + 17, + 16, + 34, + 255, + 15, + 14, + 32, + 255, + 15, + 14, + 32, + 255, + 16, + 15, + 33, + 255, + 19, + 18, + 36, + 255, + 24, + 24, + 41, + 255, + 53, + 55, + 68, + 255, + 89, + 93, + 104, + 255, + 49, + 55, + 81, + 255, + 49, + 54, + 82, + 255, + 52, + 57, + 87, + 255, + 1, + 5, + 7, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 11, + 255, + 0, + 2, + 1, + 255, + 0, + 3, + 3, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 2, + 0, + 255, + 1, + 0, + 23, + 255, + 0, + 2, + 2, + 255, + 0, + 2, + 3, + 255, + 0, + 1, + 7, + 255, + 18, + 15, + 45, + 255, + 2, + 0, + 25, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 2, + 1, + 18, + 255, + 2, + 0, + 25, + 255, + 1, + 3, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 1, + 1, + 11, + 255, + 1, + 1, + 9, + 255, + 0, + 0, + 7, + 255, + 0, + 1, + 3, + 255, + 0, + 0, + 12, + 255, + 1, + 2, + 5, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 11, + 255, + 0, + 1, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 9, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 5, + 255, + 21, + 18, + 37, + 255, + 8, + 7, + 15, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 6, + 255, + 1, + 3, + 18, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 2, + 23, + 255, + 1, + 3, + 26, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 4, + 6, + 31, + 255, + 4, + 6, + 31, + 255, + 4, + 6, + 31, + 255, + 3, + 5, + 30, + 255, + 3, + 5, + 30, + 255, + 4, + 6, + 31, + 255, + 4, + 6, + 31, + 255, + 4, + 8, + 33, + 255, + 7, + 11, + 36, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 7, + 12, + 34, + 255, + 7, + 11, + 36, + 255, + 5, + 9, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 6, + 10, + 35, + 255, + 7, + 11, + 36, + 255, + 8, + 11, + 35, + 255, + 9, + 11, + 33, + 255, + 13, + 13, + 36, + 255, + 26, + 24, + 49, + 255, + 32, + 37, + 57, + 255, + 71, + 76, + 94, + 255, + 79, + 85, + 101, + 255, + 79, + 85, + 99, + 255, + 79, + 85, + 101, + 255, + 79, + 85, + 101, + 255, + 80, + 86, + 102, + 255, + 80, + 86, + 102, + 255, + 76, + 82, + 98, + 255, + 80, + 86, + 102, + 255, + 76, + 82, + 98, + 255, + 76, + 82, + 98, + 255, + 80, + 86, + 102, + 255, + 80, + 86, + 102, + 255, + 79, + 85, + 101, + 255, + 66, + 72, + 88, + 255, + 45, + 48, + 65, + 255, + 27, + 30, + 47, + 255, + 24, + 27, + 44, + 255, + 23, + 26, + 43, + 255, + 26, + 28, + 40, + 255, + 35, + 37, + 49, + 255, + 34, + 36, + 48, + 255, + 34, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 37, + 49, + 255, + 41, + 43, + 55, + 255, + 53, + 57, + 68, + 255, + 95, + 98, + 107, + 255, + 97, + 100, + 109, + 255, + 94, + 97, + 106, + 255, + 93, + 96, + 105, + 255, + 93, + 97, + 107, + 255, + 93, + 97, + 107, + 255, + 91, + 95, + 105, + 255, + 93, + 97, + 107, + 255, + 94, + 97, + 105, + 255, + 100, + 103, + 111, + 255, + 94, + 97, + 105, + 255, + 99, + 102, + 110, + 255, + 99, + 102, + 108, + 255, + 98, + 101, + 108, + 255, + 97, + 100, + 109, + 255, + 97, + 100, + 109, + 255, + 86, + 86, + 103, + 255, + 31, + 32, + 53, + 255, + 21, + 22, + 50, + 255, + 12, + 15, + 47, + 255, + 18, + 19, + 49, + 255, + 7, + 11, + 38, + 255, + 10, + 14, + 44, + 255, + 15, + 17, + 55, + 255, + 12, + 20, + 56, + 255, + 12, + 20, + 56, + 255, + 11, + 19, + 56, + 255, + 10, + 18, + 55, + 255, + 12, + 20, + 53, + 255, + 11, + 16, + 55, + 255, + 9, + 13, + 48, + 255, + 7, + 13, + 38, + 255, + 10, + 8, + 29, + 255, + 11, + 12, + 30, + 255, + 30, + 34, + 55, + 255, + 52, + 56, + 84, + 255, + 53, + 57, + 93, + 255, + 62, + 69, + 79, + 255, + 78, + 69, + 38, + 255, + 173, + 151, + 22, + 255, + 183, + 151, + 4, + 255, + 185, + 149, + 0, + 255, + 185, + 150, + 0, + 255, + 182, + 153, + 6, + 255, + 177, + 157, + 2, + 255, + 197, + 171, + 50, + 255, + 153, + 127, + 13, + 255, + 186, + 164, + 18, + 255, + 195, + 166, + 2, + 255, + 198, + 169, + 5, + 255, + 199, + 170, + 5, + 255, + 202, + 173, + 7, + 255, + 197, + 177, + 25, + 255, + 204, + 180, + 33, + 255, + 202, + 173, + 9, + 255, + 212, + 184, + 0, + 255, + 213, + 186, + 0, + 255, + 215, + 185, + 9, + 255, + 221, + 186, + 16, + 255, + 226, + 190, + 15, + 255, + 210, + 190, + 67, + 255, + 197, + 174, + 147, + 255, + 209, + 189, + 40, + 255, + 203, + 163, + 103, + 255, + 192, + 158, + 119, + 255, + 165, + 139, + 78, + 255, + 191, + 159, + 144, + 255, + 196, + 166, + 140, + 255, + 165, + 139, + 113, + 255, + 233, + 206, + 29, + 255, + 236, + 202, + 50, + 255, + 232, + 207, + 37, + 255, + 219, + 183, + 90, + 255, + 227, + 189, + 95, + 255, + 225, + 201, + 17, + 255, + 231, + 201, + 62, + 255, + 226, + 204, + 60, + 255, + 197, + 159, + 147, + 255, + 172, + 145, + 117, + 255, + 220, + 207, + 198, + 255, + 223, + 219, + 219, + 255, + 98, + 97, + 113, + 255, + 162, + 171, + 192, + 255, + 61, + 83, + 133, + 255, + 57, + 105, + 179, + 255, + 43, + 86, + 163, + 255, + 50, + 85, + 159, + 255, + 64, + 84, + 148, + 255, + 71, + 92, + 157, + 255, + 91, + 165, + 226, + 255, + 75, + 161, + 218, + 255, + 193, + 192, + 206, + 255, + 225, + 224, + 222, + 255, + 221, + 219, + 215, + 255, + 223, + 218, + 214, + 255, + 222, + 216, + 209, + 255, + 226, + 218, + 215, + 255, + 225, + 217, + 214, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 216, + 214, + 255, + 225, + 214, + 212, + 255, + 225, + 214, + 212, + 255, + 228, + 208, + 207, + 255, + 227, + 203, + 201, + 255, + 228, + 198, + 197, + 255, + 228, + 195, + 194, + 255, + 228, + 193, + 181, + 255, + 198, + 167, + 172, + 255, + 187, + 154, + 139, + 255, + 199, + 157, + 137, + 255, + 192, + 153, + 140, + 255, + 200, + 160, + 144, + 255, + 200, + 157, + 134, + 255, + 197, + 154, + 130, + 255, + 201, + 154, + 134, + 255, + 201, + 158, + 136, + 255, + 196, + 157, + 140, + 255, + 193, + 158, + 145, + 255, + 109, + 86, + 89, + 255, + 81, + 70, + 103, + 255, + 54, + 54, + 78, + 255, + 89, + 88, + 119, + 255, + 85, + 85, + 118, + 255, + 99, + 99, + 132, + 255, + 101, + 101, + 132, + 255, + 105, + 106, + 136, + 255, + 104, + 102, + 131, + 255, + 98, + 83, + 91, + 255, + 177, + 158, + 133, + 255, + 87, + 64, + 84, + 255, + 101, + 90, + 106, + 255, + 193, + 159, + 158, + 255, + 103, + 74, + 51, + 255, + 92, + 77, + 90, + 255, + 68, + 73, + 114, + 255, + 59, + 67, + 114, + 255, + 36, + 40, + 83, + 255, + 28, + 22, + 60, + 255, + 23, + 22, + 56, + 255, + 21, + 20, + 52, + 255, + 20, + 19, + 49, + 255, + 18, + 18, + 46, + 255, + 19, + 19, + 47, + 255, + 17, + 17, + 45, + 255, + 18, + 18, + 46, + 255, + 17, + 17, + 45, + 255, + 18, + 17, + 47, + 255, + 18, + 17, + 50, + 255, + 16, + 15, + 47, + 255, + 18, + 17, + 47, + 255, + 18, + 16, + 48, + 255, + 16, + 14, + 51, + 255, + 22, + 21, + 64, + 255, + 19, + 20, + 67, + 255, + 22, + 20, + 69, + 255, + 21, + 19, + 69, + 255, + 20, + 17, + 70, + 255, + 20, + 17, + 70, + 255, + 21, + 19, + 68, + 255, + 22, + 20, + 70, + 255, + 19, + 17, + 63, + 255, + 18, + 18, + 56, + 255, + 18, + 18, + 56, + 255, + 18, + 18, + 56, + 255, + 17, + 17, + 55, + 255, + 17, + 17, + 55, + 255, + 17, + 17, + 55, + 255, + 17, + 17, + 55, + 255, + 17, + 17, + 55, + 255, + 17, + 17, + 55, + 255, + 17, + 14, + 41, + 255, + 14, + 12, + 32, + 255, + 14, + 13, + 29, + 255, + 15, + 13, + 33, + 255, + 15, + 16, + 36, + 255, + 18, + 20, + 43, + 255, + 54, + 58, + 86, + 255, + 58, + 62, + 92, + 255, + 55, + 60, + 90, + 255, + 56, + 61, + 91, + 255, + 56, + 61, + 91, + 255, + 56, + 61, + 91, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 55, + 62, + 91, + 255, + 55, + 62, + 91, + 255, + 56, + 61, + 91, + 255, + 56, + 61, + 91, + 255, + 55, + 60, + 90, + 255, + 54, + 59, + 89, + 255, + 55, + 58, + 90, + 255, + 54, + 57, + 83, + 255, + 15, + 18, + 37, + 255, + 9, + 11, + 26, + 255, + 14, + 13, + 27, + 255, + 12, + 14, + 30, + 255, + 11, + 13, + 34, + 255, + 12, + 15, + 40, + 255, + 19, + 18, + 49, + 255, + 16, + 16, + 43, + 255, + 13, + 13, + 37, + 255, + 12, + 13, + 33, + 255, + 12, + 13, + 33, + 255, + 14, + 15, + 36, + 255, + 17, + 16, + 46, + 255, + 20, + 18, + 57, + 255, + 22, + 21, + 65, + 255, + 25, + 23, + 72, + 255, + 27, + 24, + 76, + 255, + 25, + 23, + 73, + 255, + 23, + 21, + 61, + 255, + 20, + 19, + 53, + 255, + 16, + 16, + 42, + 255, + 13, + 14, + 33, + 255, + 14, + 13, + 31, + 255, + 14, + 13, + 31, + 255, + 14, + 13, + 31, + 255, + 15, + 14, + 32, + 255, + 17, + 16, + 34, + 255, + 22, + 22, + 39, + 255, + 84, + 86, + 100, + 255, + 65, + 69, + 82, + 255, + 51, + 55, + 84, + 255, + 51, + 54, + 85, + 255, + 51, + 54, + 87, + 255, + 3, + 3, + 48, + 255, + 2, + 1, + 25, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 3, + 255, + 1, + 3, + 11, + 255, + 0, + 1, + 1, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 2, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 2, + 255, + 1, + 1, + 1, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 9, + 255, + 0, + 1, + 6, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 18, + 255, + 4, + 1, + 29, + 255, + 3, + 4, + 7, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 15, + 255, + 40, + 37, + 72, + 255, + 4, + 3, + 30, + 255, + 0, + 0, + 17, + 255, + 0, + 1, + 14, + 255, + 0, + 0, + 24, + 255, + 3, + 3, + 22, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 2, + 1, + 23, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 17, + 255, + 2, + 2, + 19, + 255, + 2, + 2, + 19, + 255, + 1, + 0, + 15, + 255, + 2, + 1, + 15, + 255, + 1, + 2, + 14, + 255, + 0, + 1, + 14, + 255, + 0, + 2, + 10, + 255, + 0, + 3, + 4, + 255, + 0, + 2, + 2, + 255, + 0, + 1, + 5, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 3, + 2, + 9, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 4, + 3, + 8, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 1, + 15, + 255, + 1, + 2, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 21, + 255, + 0, + 1, + 21, + 255, + 0, + 1, + 22, + 255, + 4, + 6, + 29, + 255, + 7, + 9, + 34, + 255, + 3, + 5, + 30, + 255, + 4, + 6, + 31, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 8, + 10, + 35, + 255, + 5, + 7, + 32, + 255, + 3, + 5, + 30, + 255, + 5, + 9, + 34, + 255, + 4, + 8, + 33, + 255, + 3, + 7, + 32, + 255, + 6, + 10, + 35, + 255, + 7, + 12, + 34, + 255, + 4, + 8, + 33, + 255, + 5, + 9, + 35, + 255, + 7, + 11, + 38, + 255, + 7, + 11, + 36, + 255, + 8, + 12, + 37, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 12, + 34, + 255, + 7, + 10, + 36, + 255, + 10, + 11, + 38, + 255, + 21, + 21, + 45, + 255, + 38, + 43, + 64, + 255, + 76, + 81, + 101, + 255, + 77, + 82, + 101, + 255, + 78, + 84, + 100, + 255, + 81, + 87, + 103, + 255, + 81, + 87, + 103, + 255, + 82, + 88, + 104, + 255, + 82, + 88, + 104, + 255, + 77, + 82, + 101, + 255, + 84, + 89, + 108, + 255, + 81, + 86, + 105, + 255, + 82, + 87, + 106, + 255, + 87, + 90, + 106, + 255, + 88, + 91, + 107, + 255, + 87, + 90, + 106, + 255, + 87, + 90, + 106, + 255, + 39, + 42, + 58, + 255, + 25, + 28, + 44, + 255, + 24, + 27, + 43, + 255, + 25, + 28, + 44, + 255, + 31, + 33, + 45, + 255, + 33, + 35, + 47, + 255, + 33, + 35, + 47, + 255, + 33, + 35, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 37, + 49, + 255, + 38, + 40, + 52, + 255, + 45, + 49, + 60, + 255, + 69, + 71, + 83, + 255, + 95, + 97, + 109, + 255, + 99, + 101, + 113, + 255, + 97, + 99, + 111, + 255, + 80, + 84, + 96, + 255, + 95, + 99, + 111, + 255, + 95, + 99, + 111, + 255, + 95, + 99, + 111, + 255, + 93, + 97, + 107, + 255, + 96, + 100, + 110, + 255, + 94, + 98, + 108, + 255, + 95, + 99, + 109, + 255, + 98, + 101, + 109, + 255, + 96, + 99, + 108, + 255, + 95, + 97, + 109, + 255, + 95, + 97, + 110, + 255, + 98, + 99, + 112, + 255, + 30, + 31, + 52, + 255, + 18, + 19, + 49, + 255, + 13, + 16, + 50, + 255, + 12, + 15, + 46, + 255, + 6, + 8, + 32, + 255, + 5, + 6, + 29, + 255, + 9, + 9, + 35, + 255, + 9, + 16, + 44, + 255, + 12, + 18, + 49, + 255, + 11, + 17, + 51, + 255, + 12, + 17, + 54, + 255, + 11, + 17, + 59, + 255, + 13, + 17, + 62, + 255, + 16, + 18, + 61, + 255, + 17, + 19, + 61, + 255, + 15, + 15, + 50, + 255, + 14, + 15, + 45, + 255, + 55, + 56, + 87, + 255, + 48, + 48, + 83, + 255, + 52, + 54, + 67, + 255, + 71, + 61, + 41, + 255, + 170, + 153, + 21, + 255, + 179, + 147, + 1, + 255, + 175, + 148, + 6, + 255, + 177, + 151, + 1, + 255, + 179, + 156, + 0, + 255, + 180, + 159, + 0, + 255, + 182, + 158, + 0, + 255, + 183, + 160, + 0, + 255, + 186, + 163, + 14, + 255, + 188, + 162, + 35, + 255, + 167, + 145, + 18, + 255, + 160, + 136, + 20, + 255, + 146, + 122, + 7, + 255, + 146, + 124, + 0, + 255, + 165, + 143, + 8, + 255, + 184, + 157, + 23, + 255, + 208, + 176, + 22, + 255, + 213, + 180, + 4, + 255, + 213, + 186, + 0, + 255, + 215, + 187, + 0, + 255, + 218, + 187, + 2, + 255, + 221, + 188, + 5, + 255, + 218, + 190, + 49, + 255, + 149, + 127, + 78, + 255, + 211, + 200, + 32, + 255, + 215, + 181, + 109, + 255, + 196, + 157, + 106, + 255, + 142, + 108, + 96, + 255, + 183, + 159, + 113, + 255, + 183, + 151, + 128, + 255, + 169, + 136, + 130, + 255, + 215, + 189, + 109, + 255, + 232, + 201, + 50, + 255, + 227, + 200, + 33, + 255, + 234, + 196, + 78, + 255, + 211, + 165, + 125, + 255, + 223, + 188, + 85, + 255, + 228, + 203, + 24, + 255, + 172, + 140, + 57, + 255, + 208, + 182, + 70, + 255, + 198, + 164, + 139, + 255, + 206, + 180, + 183, + 255, + 222, + 213, + 206, + 255, + 230, + 223, + 224, + 255, + 218, + 218, + 217, + 255, + 190, + 201, + 220, + 255, + 68, + 114, + 155, + 255, + 43, + 138, + 219, + 255, + 50, + 144, + 225, + 255, + 170, + 193, + 227, + 255, + 230, + 232, + 255, + 255, + 141, + 137, + 171, + 255, + 163, + 157, + 184, + 255, + 217, + 210, + 208, + 255, + 223, + 212, + 208, + 255, + 225, + 214, + 210, + 255, + 225, + 214, + 210, + 255, + 225, + 214, + 209, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 227, + 217, + 215, + 255, + 226, + 215, + 213, + 255, + 224, + 213, + 211, + 255, + 227, + 210, + 208, + 255, + 225, + 204, + 201, + 255, + 227, + 201, + 198, + 255, + 227, + 198, + 195, + 255, + 229, + 195, + 184, + 255, + 220, + 189, + 195, + 255, + 195, + 161, + 150, + 255, + 199, + 156, + 140, + 255, + 185, + 152, + 144, + 255, + 147, + 114, + 106, + 255, + 135, + 101, + 91, + 255, + 143, + 109, + 98, + 255, + 131, + 99, + 93, + 255, + 123, + 96, + 89, + 255, + 107, + 86, + 76, + 255, + 125, + 107, + 95, + 255, + 112, + 93, + 106, + 255, + 68, + 67, + 92, + 255, + 52, + 62, + 78, + 255, + 101, + 105, + 125, + 255, + 88, + 96, + 120, + 255, + 78, + 85, + 112, + 255, + 86, + 92, + 124, + 255, + 80, + 86, + 120, + 255, + 81, + 95, + 125, + 255, + 74, + 77, + 117, + 255, + 87, + 72, + 104, + 255, + 187, + 168, + 129, + 255, + 78, + 78, + 114, + 255, + 81, + 63, + 78, + 255, + 144, + 116, + 112, + 255, + 67, + 71, + 99, + 255, + 56, + 61, + 107, + 255, + 56, + 60, + 104, + 255, + 23, + 24, + 63, + 255, + 26, + 20, + 55, + 255, + 20, + 19, + 51, + 255, + 19, + 18, + 48, + 255, + 19, + 19, + 46, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 46, + 255, + 17, + 17, + 45, + 255, + 17, + 17, + 45, + 255, + 16, + 16, + 44, + 255, + 18, + 17, + 48, + 255, + 17, + 17, + 44, + 255, + 16, + 16, + 44, + 255, + 15, + 14, + 45, + 255, + 16, + 14, + 44, + 255, + 15, + 14, + 47, + 255, + 18, + 17, + 56, + 255, + 18, + 20, + 61, + 255, + 20, + 18, + 64, + 255, + 19, + 17, + 64, + 255, + 19, + 17, + 66, + 255, + 19, + 17, + 66, + 255, + 21, + 19, + 66, + 255, + 22, + 20, + 68, + 255, + 18, + 17, + 60, + 255, + 17, + 17, + 53, + 255, + 18, + 16, + 52, + 255, + 18, + 16, + 52, + 255, + 18, + 16, + 52, + 255, + 18, + 16, + 52, + 255, + 17, + 17, + 52, + 255, + 17, + 17, + 52, + 255, + 16, + 16, + 51, + 255, + 16, + 16, + 51, + 255, + 16, + 14, + 36, + 255, + 13, + 12, + 28, + 255, + 14, + 13, + 29, + 255, + 15, + 13, + 33, + 255, + 17, + 15, + 37, + 255, + 47, + 47, + 71, + 255, + 58, + 60, + 86, + 255, + 57, + 60, + 88, + 255, + 56, + 60, + 88, + 255, + 56, + 60, + 88, + 255, + 58, + 62, + 90, + 255, + 58, + 62, + 90, + 255, + 56, + 63, + 90, + 255, + 56, + 63, + 90, + 255, + 56, + 63, + 90, + 255, + 56, + 63, + 90, + 255, + 58, + 62, + 90, + 255, + 58, + 62, + 90, + 255, + 58, + 62, + 90, + 255, + 57, + 61, + 89, + 255, + 53, + 55, + 79, + 255, + 22, + 25, + 44, + 255, + 15, + 17, + 32, + 255, + 13, + 12, + 26, + 255, + 12, + 10, + 21, + 255, + 11, + 11, + 22, + 255, + 10, + 12, + 26, + 255, + 10, + 13, + 28, + 255, + 17, + 16, + 33, + 255, + 17, + 16, + 33, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 28, + 255, + 13, + 14, + 32, + 255, + 13, + 14, + 32, + 255, + 13, + 13, + 36, + 255, + 14, + 13, + 44, + 255, + 16, + 15, + 49, + 255, + 17, + 16, + 48, + 255, + 19, + 18, + 49, + 255, + 18, + 17, + 48, + 255, + 18, + 15, + 41, + 255, + 15, + 13, + 35, + 255, + 14, + 13, + 31, + 255, + 14, + 13, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 14, + 13, + 29, + 255, + 16, + 15, + 33, + 255, + 21, + 21, + 39, + 255, + 26, + 27, + 45, + 255, + 45, + 48, + 66, + 255, + 48, + 49, + 76, + 255, + 51, + 52, + 80, + 255, + 51, + 52, + 82, + 255, + 1, + 5, + 32, + 255, + 0, + 2, + 9, + 255, + 0, + 2, + 0, + 255, + 0, + 2, + 14, + 255, + 34, + 35, + 93, + 255, + 0, + 2, + 15, + 255, + 1, + 0, + 0, + 255, + 8, + 0, + 16, + 255, + 2, + 1, + 17, + 255, + 2, + 2, + 3, + 255, + 1, + 0, + 7, + 255, + 2, + 0, + 4, + 255, + 1, + 0, + 7, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 6, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 6, + 255, + 1, + 2, + 5, + 255, + 0, + 0, + 18, + 255, + 1, + 0, + 15, + 255, + 0, + 2, + 12, + 255, + 0, + 2, + 16, + 255, + 4, + 3, + 35, + 255, + 2, + 3, + 21, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 22, + 255, + 17, + 14, + 58, + 255, + 0, + 0, + 37, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 28, + 255, + 5, + 3, + 39, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 3, + 0, + 26, + 255, + 2, + 1, + 26, + 255, + 1, + 4, + 23, + 255, + 0, + 5, + 20, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 20, + 255, + 1, + 1, + 26, + 255, + 3, + 0, + 18, + 255, + 2, + 0, + 12, + 255, + 1, + 0, + 11, + 255, + 2, + 0, + 15, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 4, + 4, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 2, + 3, + 24, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 26, + 255, + 1, + 2, + 21, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 2, + 23, + 255, + 3, + 5, + 28, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 8, + 33, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 35, + 255, + 6, + 8, + 33, + 255, + 6, + 8, + 33, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 4, + 6, + 31, + 255, + 3, + 7, + 32, + 255, + 3, + 7, + 32, + 255, + 4, + 8, + 33, + 255, + 5, + 9, + 34, + 255, + 4, + 9, + 31, + 255, + 5, + 9, + 34, + 255, + 6, + 10, + 36, + 255, + 6, + 10, + 37, + 255, + 7, + 11, + 36, + 255, + 6, + 10, + 35, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 6, + 13, + 33, + 255, + 9, + 13, + 42, + 255, + 7, + 9, + 39, + 255, + 15, + 17, + 39, + 255, + 23, + 28, + 50, + 255, + 34, + 39, + 60, + 255, + 38, + 43, + 63, + 255, + 39, + 44, + 62, + 255, + 36, + 41, + 60, + 255, + 36, + 41, + 60, + 255, + 37, + 42, + 61, + 255, + 34, + 39, + 58, + 255, + 31, + 36, + 56, + 255, + 32, + 37, + 57, + 255, + 33, + 38, + 58, + 255, + 39, + 44, + 64, + 255, + 44, + 46, + 61, + 255, + 46, + 48, + 63, + 255, + 48, + 50, + 65, + 255, + 40, + 42, + 57, + 255, + 30, + 33, + 48, + 255, + 26, + 29, + 44, + 255, + 24, + 27, + 42, + 255, + 27, + 30, + 45, + 255, + 32, + 34, + 46, + 255, + 33, + 35, + 47, + 255, + 33, + 35, + 47, + 255, + 33, + 35, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 37, + 49, + 255, + 37, + 39, + 51, + 255, + 38, + 42, + 53, + 255, + 44, + 46, + 58, + 255, + 50, + 52, + 64, + 255, + 52, + 54, + 66, + 255, + 52, + 54, + 66, + 255, + 55, + 59, + 71, + 255, + 55, + 59, + 71, + 255, + 56, + 60, + 72, + 255, + 56, + 60, + 72, + 255, + 55, + 61, + 77, + 255, + 54, + 60, + 76, + 255, + 51, + 57, + 73, + 255, + 51, + 57, + 73, + 255, + 58, + 60, + 75, + 255, + 59, + 61, + 77, + 255, + 57, + 58, + 77, + 255, + 54, + 55, + 74, + 255, + 44, + 45, + 58, + 255, + 36, + 37, + 57, + 255, + 17, + 18, + 48, + 255, + 14, + 16, + 53, + 255, + 15, + 18, + 53, + 255, + 5, + 7, + 30, + 255, + 4, + 5, + 18, + 255, + 5, + 4, + 18, + 255, + 3, + 5, + 27, + 255, + 6, + 7, + 33, + 255, + 8, + 9, + 39, + 255, + 11, + 11, + 45, + 255, + 10, + 14, + 43, + 255, + 9, + 11, + 39, + 255, + 10, + 10, + 39, + 255, + 9, + 8, + 40, + 255, + 8, + 10, + 35, + 255, + 9, + 12, + 30, + 255, + 13, + 15, + 30, + 255, + 18, + 19, + 37, + 255, + 47, + 48, + 32, + 255, + 173, + 149, + 49, + 255, + 178, + 148, + 0, + 255, + 169, + 149, + 9, + 255, + 175, + 149, + 2, + 255, + 177, + 151, + 4, + 255, + 179, + 150, + 4, + 255, + 185, + 153, + 7, + 255, + 183, + 157, + 0, + 255, + 185, + 158, + 1, + 255, + 191, + 162, + 0, + 255, + 190, + 160, + 0, + 255, + 196, + 167, + 12, + 255, + 186, + 154, + 16, + 255, + 192, + 160, + 25, + 255, + 196, + 166, + 15, + 255, + 202, + 175, + 17, + 255, + 203, + 175, + 5, + 255, + 210, + 180, + 0, + 255, + 211, + 179, + 0, + 255, + 213, + 184, + 1, + 255, + 213, + 185, + 6, + 255, + 219, + 186, + 61, + 255, + 206, + 167, + 92, + 255, + 190, + 149, + 102, + 255, + 184, + 157, + 114, + 255, + 197, + 179, + 62, + 255, + 199, + 187, + 79, + 255, + 194, + 152, + 96, + 255, + 184, + 149, + 147, + 255, + 154, + 130, + 92, + 255, + 166, + 130, + 124, + 255, + 195, + 151, + 139, + 255, + 126, + 110, + 85, + 255, + 208, + 180, + 97, + 255, + 229, + 199, + 8, + 255, + 228, + 195, + 49, + 255, + 208, + 171, + 107, + 255, + 202, + 164, + 118, + 255, + 222, + 189, + 85, + 255, + 223, + 204, + 38, + 255, + 161, + 126, + 53, + 255, + 226, + 200, + 99, + 255, + 194, + 165, + 145, + 255, + 224, + 215, + 216, + 255, + 221, + 208, + 208, + 255, + 226, + 214, + 202, + 255, + 227, + 217, + 215, + 255, + 215, + 199, + 200, + 255, + 200, + 205, + 219, + 255, + 136, + 147, + 167, + 255, + 193, + 189, + 212, + 255, + 226, + 207, + 209, + 255, + 217, + 210, + 200, + 255, + 221, + 205, + 189, + 255, + 224, + 202, + 207, + 255, + 226, + 209, + 209, + 255, + 227, + 211, + 211, + 255, + 225, + 209, + 210, + 255, + 229, + 213, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 218, + 215, + 255, + 227, + 217, + 215, + 255, + 226, + 215, + 213, + 255, + 224, + 213, + 211, + 255, + 223, + 212, + 208, + 255, + 225, + 210, + 205, + 255, + 224, + 203, + 199, + 255, + 224, + 200, + 196, + 255, + 228, + 198, + 190, + 255, + 224, + 194, + 202, + 255, + 200, + 164, + 152, + 255, + 203, + 152, + 134, + 255, + 209, + 156, + 129, + 255, + 204, + 155, + 131, + 255, + 196, + 157, + 135, + 255, + 196, + 160, + 142, + 255, + 130, + 101, + 96, + 255, + 189, + 154, + 143, + 255, + 194, + 153, + 125, + 255, + 204, + 160, + 115, + 255, + 225, + 190, + 91, + 255, + 220, + 203, + 50, + 255, + 101, + 93, + 56, + 255, + 70, + 82, + 86, + 255, + 61, + 66, + 98, + 255, + 51, + 55, + 93, + 255, + 43, + 46, + 92, + 255, + 37, + 39, + 90, + 255, + 39, + 33, + 78, + 255, + 29, + 40, + 78, + 255, + 41, + 48, + 59, + 255, + 64, + 46, + 77, + 255, + 64, + 62, + 88, + 255, + 35, + 41, + 67, + 255, + 172, + 148, + 159, + 255, + 31, + 32, + 60, + 255, + 28, + 29, + 66, + 255, + 25, + 24, + 59, + 255, + 19, + 19, + 53, + 255, + 19, + 22, + 55, + 255, + 19, + 18, + 49, + 255, + 18, + 18, + 46, + 255, + 16, + 16, + 42, + 255, + 18, + 18, + 43, + 255, + 17, + 17, + 45, + 255, + 15, + 15, + 43, + 255, + 16, + 16, + 44, + 255, + 15, + 15, + 43, + 255, + 15, + 14, + 45, + 255, + 15, + 15, + 39, + 255, + 14, + 14, + 39, + 255, + 13, + 12, + 44, + 255, + 16, + 14, + 43, + 255, + 15, + 14, + 46, + 255, + 17, + 17, + 51, + 255, + 14, + 17, + 52, + 255, + 16, + 16, + 52, + 255, + 15, + 15, + 52, + 255, + 15, + 14, + 53, + 255, + 15, + 14, + 55, + 255, + 18, + 18, + 55, + 255, + 17, + 17, + 55, + 255, + 14, + 14, + 48, + 255, + 13, + 14, + 41, + 255, + 15, + 13, + 40, + 255, + 15, + 13, + 40, + 255, + 15, + 13, + 40, + 255, + 15, + 13, + 40, + 255, + 13, + 15, + 40, + 255, + 13, + 15, + 40, + 255, + 14, + 16, + 41, + 255, + 13, + 15, + 40, + 255, + 13, + 12, + 29, + 255, + 13, + 12, + 27, + 255, + 12, + 11, + 27, + 255, + 14, + 12, + 34, + 255, + 15, + 12, + 30, + 255, + 13, + 12, + 29, + 255, + 17, + 18, + 36, + 255, + 18, + 21, + 38, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 19, + 20, + 40, + 255, + 19, + 20, + 40, + 255, + 18, + 19, + 39, + 255, + 18, + 19, + 39, + 255, + 15, + 18, + 37, + 255, + 15, + 18, + 37, + 255, + 16, + 19, + 38, + 255, + 15, + 18, + 37, + 255, + 12, + 14, + 30, + 255, + 11, + 13, + 27, + 255, + 11, + 11, + 23, + 255, + 11, + 9, + 20, + 255, + 10, + 8, + 21, + 255, + 10, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 8, + 10, + 23, + 255, + 11, + 11, + 23, + 255, + 11, + 10, + 26, + 255, + 13, + 11, + 31, + 255, + 16, + 14, + 36, + 255, + 16, + 16, + 40, + 255, + 11, + 12, + 32, + 255, + 14, + 14, + 39, + 255, + 15, + 14, + 45, + 255, + 16, + 13, + 47, + 255, + 14, + 13, + 36, + 255, + 13, + 13, + 31, + 255, + 12, + 11, + 32, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 13, + 12, + 26, + 255, + 14, + 13, + 29, + 255, + 16, + 16, + 35, + 255, + 15, + 16, + 37, + 255, + 20, + 22, + 45, + 255, + 26, + 27, + 45, + 255, + 23, + 24, + 44, + 255, + 25, + 26, + 48, + 255, + 3, + 1, + 11, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 5, + 255, + 2, + 0, + 11, + 255, + 1, + 0, + 15, + 255, + 2, + 1, + 9, + 255, + 0, + 0, + 4, + 255, + 2, + 1, + 9, + 255, + 32, + 34, + 74, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 2, + 255, + 0, + 0, + 18, + 255, + 3, + 3, + 28, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 4, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 11, + 255, + 1, + 2, + 5, + 255, + 1, + 0, + 17, + 255, + 0, + 1, + 16, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 12, + 255, + 0, + 0, + 19, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 18, + 255, + 2, + 1, + 19, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 26, + 255, + 0, + 0, + 29, + 255, + 0, + 2, + 21, + 255, + 0, + 1, + 16, + 255, + 2, + 4, + 29, + 255, + 37, + 36, + 78, + 255, + 1, + 1, + 24, + 255, + 1, + 2, + 22, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 30, + 255, + 3, + 1, + 23, + 255, + 3, + 1, + 22, + 255, + 3, + 2, + 20, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 14, + 255, + 0, + 1, + 4, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 4, + 255, + 0, + 2, + 2, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 2, + 255, + 0, + 0, + 2, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 6, + 255, + 3, + 1, + 16, + 255, + 1, + 1, + 26, + 255, + 1, + 2, + 22, + 255, + 0, + 2, + 15, + 255, + 0, + 1, + 9, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 0, + 1, + 4, + 255, + 0, + 2, + 9, + 255, + 0, + 2, + 15, + 255, + 2, + 5, + 22, + 255, + 4, + 7, + 24, + 255, + 9, + 12, + 31, + 255, + 9, + 11, + 32, + 255, + 8, + 8, + 34, + 255, + 7, + 9, + 34, + 255, + 6, + 10, + 35, + 255, + 4, + 10, + 34, + 255, + 5, + 10, + 32, + 255, + 5, + 9, + 34, + 255, + 4, + 8, + 34, + 255, + 4, + 8, + 35, + 255, + 4, + 8, + 35, + 255, + 6, + 10, + 37, + 255, + 4, + 8, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 7, + 11, + 36, + 255, + 11, + 15, + 40, + 255, + 12, + 16, + 41, + 255, + 17, + 22, + 45, + 255, + 18, + 23, + 45, + 255, + 19, + 24, + 44, + 255, + 21, + 23, + 46, + 255, + 21, + 23, + 46, + 255, + 19, + 21, + 44, + 255, + 16, + 18, + 41, + 255, + 14, + 16, + 41, + 255, + 18, + 20, + 45, + 255, + 19, + 21, + 46, + 255, + 23, + 25, + 50, + 255, + 24, + 29, + 48, + 255, + 29, + 32, + 49, + 255, + 31, + 33, + 49, + 255, + 30, + 30, + 46, + 255, + 27, + 29, + 44, + 255, + 25, + 27, + 41, + 255, + 26, + 28, + 40, + 255, + 32, + 34, + 46, + 255, + 35, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 36, + 36, + 46, + 255, + 35, + 36, + 47, + 255, + 34, + 36, + 49, + 255, + 35, + 39, + 51, + 255, + 38, + 40, + 53, + 255, + 40, + 42, + 57, + 255, + 40, + 41, + 59, + 255, + 40, + 41, + 59, + 255, + 40, + 42, + 57, + 255, + 40, + 42, + 57, + 255, + 39, + 41, + 56, + 255, + 38, + 40, + 55, + 255, + 35, + 40, + 59, + 255, + 36, + 41, + 60, + 255, + 36, + 41, + 60, + 255, + 34, + 39, + 58, + 255, + 40, + 42, + 57, + 255, + 40, + 41, + 59, + 255, + 39, + 40, + 58, + 255, + 37, + 38, + 58, + 255, + 37, + 39, + 55, + 255, + 20, + 22, + 44, + 255, + 22, + 26, + 54, + 255, + 12, + 17, + 49, + 255, + 14, + 14, + 49, + 255, + 6, + 7, + 28, + 255, + 2, + 3, + 14, + 255, + 3, + 3, + 11, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 5, + 5, + 15, + 255, + 5, + 5, + 15, + 255, + 6, + 5, + 20, + 255, + 7, + 6, + 21, + 255, + 7, + 6, + 21, + 255, + 7, + 6, + 21, + 255, + 8, + 6, + 19, + 255, + 10, + 8, + 22, + 255, + 16, + 14, + 25, + 255, + 28, + 27, + 33, + 255, + 88, + 81, + 8, + 255, + 160, + 136, + 1, + 255, + 164, + 144, + 0, + 255, + 172, + 149, + 0, + 255, + 165, + 144, + 9, + 255, + 171, + 151, + 31, + 255, + 169, + 145, + 32, + 255, + 176, + 147, + 27, + 255, + 180, + 154, + 26, + 255, + 186, + 157, + 9, + 255, + 191, + 159, + 2, + 255, + 192, + 164, + 0, + 255, + 193, + 166, + 1, + 255, + 193, + 165, + 4, + 255, + 197, + 167, + 26, + 255, + 188, + 156, + 30, + 255, + 182, + 150, + 55, + 255, + 185, + 151, + 63, + 255, + 189, + 152, + 63, + 255, + 193, + 158, + 56, + 255, + 202, + 159, + 75, + 255, + 210, + 172, + 74, + 255, + 207, + 167, + 108, + 255, + 197, + 156, + 120, + 255, + 196, + 154, + 94, + 255, + 217, + 174, + 44, + 255, + 125, + 104, + 32, + 255, + 127, + 109, + 15, + 255, + 196, + 156, + 119, + 255, + 142, + 113, + 47, + 255, + 163, + 141, + 83, + 255, + 117, + 95, + 88, + 255, + 207, + 161, + 135, + 255, + 112, + 99, + 99, + 255, + 103, + 88, + 75, + 255, + 222, + 201, + 78, + 255, + 232, + 197, + 27, + 255, + 225, + 193, + 66, + 255, + 203, + 165, + 107, + 255, + 203, + 160, + 118, + 255, + 211, + 170, + 123, + 255, + 221, + 203, + 104, + 255, + 153, + 131, + 66, + 255, + 200, + 174, + 46, + 255, + 148, + 134, + 79, + 255, + 215, + 204, + 210, + 255, + 221, + 216, + 204, + 255, + 228, + 212, + 204, + 255, + 225, + 206, + 201, + 255, + 226, + 200, + 202, + 255, + 226, + 200, + 202, + 255, + 221, + 201, + 192, + 255, + 224, + 199, + 195, + 255, + 228, + 198, + 198, + 255, + 226, + 199, + 199, + 255, + 224, + 204, + 203, + 255, + 225, + 205, + 204, + 255, + 226, + 209, + 207, + 255, + 223, + 211, + 207, + 255, + 223, + 214, + 209, + 255, + 225, + 216, + 211, + 255, + 225, + 216, + 211, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 225, + 216, + 211, + 255, + 225, + 216, + 211, + 255, + 223, + 215, + 212, + 255, + 223, + 215, + 212, + 255, + 223, + 215, + 212, + 255, + 221, + 213, + 210, + 255, + 222, + 211, + 207, + 255, + 224, + 209, + 206, + 255, + 225, + 205, + 204, + 255, + 223, + 200, + 200, + 255, + 222, + 198, + 194, + 255, + 224, + 203, + 207, + 255, + 142, + 122, + 122, + 255, + 153, + 129, + 120, + 255, + 179, + 148, + 137, + 255, + 167, + 135, + 127, + 255, + 135, + 100, + 95, + 255, + 174, + 139, + 135, + 255, + 200, + 160, + 135, + 255, + 201, + 153, + 125, + 255, + 201, + 154, + 128, + 255, + 199, + 154, + 134, + 255, + 203, + 160, + 111, + 255, + 229, + 183, + 74, + 255, + 220, + 204, + 16, + 255, + 116, + 105, + 66, + 255, + 59, + 66, + 105, + 255, + 50, + 60, + 79, + 255, + 42, + 42, + 102, + 255, + 33, + 35, + 66, + 255, + 30, + 29, + 69, + 255, + 30, + 30, + 66, + 255, + 30, + 31, + 60, + 255, + 34, + 36, + 59, + 255, + 36, + 35, + 66, + 255, + 38, + 36, + 60, + 255, + 132, + 127, + 150, + 255, + 34, + 27, + 53, + 255, + 24, + 26, + 51, + 255, + 21, + 23, + 48, + 255, + 19, + 21, + 46, + 255, + 19, + 21, + 46, + 255, + 19, + 19, + 44, + 255, + 16, + 18, + 42, + 255, + 16, + 17, + 44, + 255, + 16, + 17, + 44, + 255, + 16, + 16, + 44, + 255, + 14, + 15, + 37, + 255, + 12, + 12, + 36, + 255, + 18, + 17, + 47, + 255, + 14, + 14, + 42, + 255, + 14, + 13, + 43, + 255, + 14, + 13, + 45, + 255, + 14, + 13, + 45, + 255, + 14, + 15, + 45, + 255, + 14, + 15, + 45, + 255, + 14, + 15, + 45, + 255, + 13, + 14, + 44, + 255, + 13, + 13, + 37, + 255, + 13, + 14, + 34, + 255, + 13, + 13, + 36, + 255, + 13, + 13, + 40, + 255, + 15, + 13, + 34, + 255, + 15, + 13, + 34, + 255, + 15, + 13, + 34, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 15, + 13, + 34, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 32, + 255, + 14, + 13, + 29, + 255, + 14, + 13, + 29, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 26, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 14, + 13, + 29, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 29, + 255, + 16, + 15, + 29, + 255, + 14, + 13, + 27, + 255, + 14, + 13, + 27, + 255, + 16, + 15, + 29, + 255, + 16, + 15, + 29, + 255, + 14, + 13, + 27, + 255, + 14, + 13, + 27, + 255, + 13, + 13, + 23, + 255, + 12, + 12, + 22, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 11, + 8, + 26, + 255, + 13, + 11, + 22, + 255, + 11, + 11, + 22, + 255, + 10, + 11, + 29, + 255, + 16, + 18, + 40, + 255, + 13, + 12, + 45, + 255, + 13, + 11, + 40, + 255, + 11, + 10, + 27, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 12, + 24, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 10, + 10, + 22, + 255, + 12, + 12, + 24, + 255, + 12, + 14, + 27, + 255, + 14, + 15, + 34, + 255, + 18, + 19, + 39, + 255, + 14, + 16, + 32, + 255, + 18, + 19, + 39, + 255, + 19, + 20, + 40, + 255, + 21, + 22, + 42, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 7, + 255, + 0, + 2, + 10, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 22, + 255, + 1, + 0, + 7, + 255, + 2, + 0, + 14, + 255, + 0, + 2, + 24, + 255, + 30, + 29, + 71, + 255, + 0, + 2, + 25, + 255, + 0, + 0, + 16, + 255, + 1, + 2, + 23, + 255, + 3, + 0, + 44, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 11, + 255, + 2, + 0, + 21, + 255, + 2, + 0, + 22, + 255, + 2, + 0, + 23, + 255, + 1, + 0, + 20, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 18, + 255, + 2, + 3, + 22, + 255, + 4, + 5, + 23, + 255, + 0, + 0, + 23, + 255, + 0, + 2, + 19, + 255, + 0, + 1, + 22, + 255, + 4, + 5, + 34, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 21, + 255, + 0, + 0, + 26, + 255, + 21, + 19, + 55, + 255, + 3, + 1, + 25, + 255, + 1, + 0, + 22, + 255, + 0, + 0, + 19, + 255, + 3, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 2, + 2, + 11, + 255, + 0, + 0, + 11, + 255, + 2, + 0, + 24, + 255, + 3, + 1, + 24, + 255, + 3, + 1, + 23, + 255, + 2, + 0, + 20, + 255, + 2, + 1, + 20, + 255, + 3, + 2, + 17, + 255, + 3, + 2, + 18, + 255, + 3, + 2, + 17, + 255, + 1, + 0, + 13, + 255, + 1, + 1, + 12, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 7, + 255, + 1, + 0, + 6, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 3, + 0, + 18, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 3, + 255, + 1, + 4, + 14, + 255, + 7, + 10, + 27, + 255, + 12, + 15, + 32, + 255, + 11, + 14, + 33, + 255, + 12, + 14, + 35, + 255, + 11, + 11, + 37, + 255, + 8, + 10, + 35, + 255, + 5, + 9, + 34, + 255, + 8, + 14, + 38, + 255, + 10, + 15, + 37, + 255, + 6, + 10, + 35, + 255, + 5, + 9, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 6, + 10, + 37, + 255, + 8, + 12, + 37, + 255, + 7, + 11, + 36, + 255, + 8, + 12, + 37, + 255, + 8, + 12, + 37, + 255, + 8, + 12, + 37, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 8, + 12, + 37, + 255, + 11, + 15, + 40, + 255, + 13, + 18, + 41, + 255, + 13, + 18, + 40, + 255, + 14, + 19, + 39, + 255, + 16, + 18, + 41, + 255, + 16, + 18, + 41, + 255, + 15, + 17, + 40, + 255, + 11, + 13, + 36, + 255, + 8, + 10, + 35, + 255, + 14, + 16, + 41, + 255, + 16, + 18, + 43, + 255, + 17, + 19, + 44, + 255, + 19, + 24, + 43, + 255, + 24, + 27, + 44, + 255, + 25, + 27, + 43, + 255, + 26, + 26, + 42, + 255, + 25, + 27, + 42, + 255, + 26, + 28, + 42, + 255, + 30, + 32, + 44, + 255, + 34, + 36, + 48, + 255, + 35, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 46, + 255, + 35, + 36, + 47, + 255, + 34, + 36, + 49, + 255, + 32, + 36, + 48, + 255, + 35, + 37, + 50, + 255, + 34, + 36, + 51, + 255, + 34, + 35, + 53, + 255, + 34, + 35, + 53, + 255, + 35, + 37, + 52, + 255, + 35, + 37, + 52, + 255, + 36, + 38, + 53, + 255, + 36, + 38, + 53, + 255, + 33, + 36, + 53, + 255, + 32, + 35, + 52, + 255, + 35, + 38, + 55, + 255, + 33, + 36, + 53, + 255, + 37, + 39, + 54, + 255, + 37, + 38, + 56, + 255, + 35, + 36, + 54, + 255, + 36, + 37, + 57, + 255, + 29, + 29, + 54, + 255, + 16, + 17, + 44, + 255, + 26, + 30, + 58, + 255, + 16, + 21, + 51, + 255, + 14, + 14, + 47, + 255, + 6, + 7, + 26, + 255, + 2, + 3, + 12, + 255, + 3, + 4, + 10, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 4, + 5, + 11, + 255, + 5, + 5, + 13, + 255, + 5, + 5, + 14, + 255, + 5, + 5, + 15, + 255, + 6, + 7, + 12, + 255, + 9, + 8, + 24, + 255, + 16, + 15, + 32, + 255, + 36, + 36, + 47, + 255, + 155, + 144, + 36, + 255, + 176, + 140, + 10, + 255, + 161, + 144, + 3, + 255, + 119, + 109, + 33, + 255, + 92, + 83, + 41, + 255, + 140, + 124, + 116, + 255, + 144, + 119, + 114, + 255, + 153, + 125, + 97, + 255, + 170, + 144, + 38, + 255, + 181, + 156, + 12, + 255, + 181, + 154, + 0, + 255, + 181, + 156, + 0, + 255, + 191, + 157, + 5, + 255, + 195, + 161, + 3, + 255, + 200, + 167, + 3, + 255, + 202, + 167, + 6, + 255, + 202, + 175, + 0, + 255, + 203, + 175, + 5, + 255, + 208, + 177, + 6, + 255, + 207, + 176, + 0, + 255, + 208, + 181, + 24, + 255, + 203, + 172, + 39, + 255, + 199, + 156, + 96, + 255, + 209, + 173, + 54, + 255, + 216, + 183, + 16, + 255, + 219, + 183, + 16, + 255, + 217, + 203, + 38, + 255, + 172, + 149, + 112, + 255, + 181, + 159, + 130, + 255, + 218, + 192, + 44, + 255, + 227, + 203, + 33, + 255, + 139, + 117, + 113, + 255, + 192, + 159, + 149, + 255, + 123, + 106, + 103, + 255, + 166, + 151, + 156, + 255, + 134, + 105, + 90, + 255, + 223, + 202, + 75, + 255, + 223, + 198, + 18, + 255, + 232, + 194, + 77, + 255, + 207, + 160, + 130, + 255, + 200, + 161, + 112, + 255, + 205, + 158, + 123, + 255, + 196, + 155, + 116, + 255, + 121, + 94, + 78, + 255, + 204, + 188, + 104, + 255, + 149, + 141, + 75, + 255, + 180, + 160, + 187, + 255, + 217, + 200, + 189, + 255, + 221, + 207, + 203, + 255, + 223, + 202, + 201, + 255, + 219, + 196, + 194, + 255, + 223, + 204, + 195, + 255, + 224, + 198, + 193, + 255, + 226, + 195, + 193, + 255, + 226, + 196, + 195, + 255, + 223, + 201, + 199, + 255, + 223, + 203, + 202, + 255, + 224, + 207, + 205, + 255, + 221, + 209, + 205, + 255, + 222, + 213, + 208, + 255, + 222, + 213, + 208, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 223, + 215, + 212, + 255, + 223, + 215, + 212, + 255, + 222, + 214, + 211, + 255, + 222, + 214, + 211, + 255, + 223, + 212, + 208, + 255, + 223, + 211, + 207, + 255, + 225, + 208, + 206, + 255, + 224, + 206, + 204, + 255, + 220, + 201, + 196, + 255, + 219, + 196, + 196, + 255, + 194, + 164, + 156, + 255, + 193, + 153, + 134, + 255, + 198, + 158, + 140, + 255, + 195, + 153, + 132, + 255, + 201, + 156, + 132, + 255, + 199, + 153, + 126, + 255, + 202, + 158, + 137, + 255, + 198, + 152, + 128, + 255, + 202, + 153, + 131, + 255, + 200, + 154, + 132, + 255, + 195, + 154, + 115, + 255, + 204, + 160, + 106, + 255, + 224, + 183, + 84, + 255, + 236, + 195, + 67, + 255, + 89, + 77, + 48, + 255, + 42, + 53, + 73, + 255, + 33, + 44, + 91, + 255, + 37, + 31, + 76, + 255, + 25, + 25, + 61, + 255, + 25, + 25, + 59, + 255, + 27, + 28, + 60, + 255, + 34, + 34, + 67, + 255, + 24, + 22, + 58, + 255, + 34, + 32, + 62, + 255, + 30, + 28, + 57, + 255, + 32, + 28, + 61, + 255, + 24, + 18, + 54, + 255, + 24, + 18, + 54, + 255, + 23, + 17, + 53, + 255, + 23, + 17, + 53, + 255, + 19, + 18, + 50, + 255, + 18, + 16, + 48, + 255, + 19, + 15, + 47, + 255, + 19, + 15, + 47, + 255, + 16, + 16, + 44, + 255, + 14, + 15, + 37, + 255, + 14, + 14, + 38, + 255, + 14, + 13, + 43, + 255, + 14, + 14, + 42, + 255, + 14, + 13, + 43, + 255, + 14, + 13, + 45, + 255, + 14, + 13, + 45, + 255, + 14, + 15, + 45, + 255, + 14, + 15, + 45, + 255, + 14, + 15, + 45, + 255, + 13, + 14, + 44, + 255, + 12, + 13, + 34, + 255, + 12, + 14, + 29, + 255, + 11, + 13, + 29, + 255, + 11, + 12, + 33, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 26, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 11, + 10, + 26, + 255, + 11, + 10, + 26, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 10, + 20, + 255, + 9, + 9, + 19, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 10, + 8, + 20, + 255, + 11, + 10, + 23, + 255, + 12, + 13, + 33, + 255, + 12, + 12, + 39, + 255, + 13, + 14, + 44, + 255, + 13, + 12, + 44, + 255, + 10, + 9, + 32, + 255, + 9, + 9, + 18, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 22, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 16, + 16, + 28, + 255, + 12, + 12, + 24, + 255, + 10, + 12, + 25, + 255, + 12, + 13, + 32, + 255, + 33, + 34, + 54, + 255, + 24, + 26, + 42, + 255, + 14, + 15, + 33, + 255, + 15, + 16, + 34, + 255, + 15, + 16, + 34, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 2, + 1, + 10, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 3, + 0, + 255, + 0, + 0, + 8, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 30, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 11, + 255, + 1, + 1, + 26, + 255, + 48, + 45, + 89, + 255, + 3, + 3, + 28, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 25, + 255, + 4, + 3, + 34, + 255, + 1, + 2, + 24, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 27, + 255, + 4, + 4, + 31, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 19, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 22, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 22, + 255, + 0, + 0, + 24, + 255, + 1, + 0, + 31, + 255, + 2, + 0, + 20, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 15, + 255, + 3, + 2, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 6, + 255, + 1, + 1, + 11, + 255, + 1, + 0, + 26, + 255, + 9, + 7, + 30, + 255, + 1, + 0, + 21, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 16, + 255, + 1, + 1, + 18, + 255, + 0, + 0, + 19, + 255, + 1, + 0, + 23, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 15, + 255, + 1, + 1, + 13, + 255, + 2, + 2, + 14, + 255, + 5, + 2, + 19, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 4, + 255, + 4, + 2, + 13, + 255, + 1, + 1, + 4, + 255, + 1, + 1, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 7, + 255, + 7, + 9, + 23, + 255, + 12, + 15, + 32, + 255, + 13, + 16, + 33, + 255, + 12, + 15, + 34, + 255, + 11, + 13, + 34, + 255, + 13, + 13, + 39, + 255, + 5, + 7, + 32, + 255, + 5, + 9, + 34, + 255, + 5, + 11, + 35, + 255, + 7, + 12, + 34, + 255, + 6, + 10, + 35, + 255, + 5, + 9, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 7, + 11, + 38, + 255, + 7, + 11, + 38, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 8, + 12, + 37, + 255, + 10, + 14, + 39, + 255, + 12, + 17, + 40, + 255, + 13, + 18, + 40, + 255, + 14, + 19, + 39, + 255, + 14, + 16, + 39, + 255, + 16, + 18, + 41, + 255, + 14, + 16, + 39, + 255, + 16, + 18, + 41, + 255, + 12, + 14, + 39, + 255, + 15, + 17, + 42, + 255, + 16, + 18, + 43, + 255, + 15, + 17, + 42, + 255, + 18, + 23, + 42, + 255, + 23, + 26, + 43, + 255, + 25, + 27, + 43, + 255, + 25, + 25, + 41, + 255, + 25, + 27, + 42, + 255, + 28, + 30, + 44, + 255, + 32, + 34, + 46, + 255, + 33, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 46, + 255, + 35, + 36, + 47, + 255, + 34, + 36, + 49, + 255, + 33, + 37, + 49, + 255, + 34, + 36, + 49, + 255, + 34, + 36, + 51, + 255, + 34, + 35, + 53, + 255, + 33, + 34, + 52, + 255, + 34, + 36, + 51, + 255, + 34, + 36, + 51, + 255, + 34, + 36, + 51, + 255, + 35, + 37, + 52, + 255, + 35, + 37, + 53, + 255, + 34, + 36, + 52, + 255, + 33, + 35, + 51, + 255, + 34, + 36, + 52, + 255, + 36, + 38, + 53, + 255, + 36, + 37, + 55, + 255, + 34, + 35, + 53, + 255, + 33, + 34, + 54, + 255, + 12, + 13, + 34, + 255, + 10, + 12, + 35, + 255, + 24, + 28, + 54, + 255, + 22, + 27, + 56, + 255, + 14, + 15, + 45, + 255, + 4, + 5, + 23, + 255, + 3, + 5, + 12, + 255, + 3, + 4, + 8, + 255, + 3, + 3, + 11, + 255, + 3, + 3, + 11, + 255, + 3, + 3, + 11, + 255, + 3, + 3, + 11, + 255, + 4, + 5, + 9, + 255, + 6, + 7, + 12, + 255, + 5, + 5, + 14, + 255, + 5, + 5, + 16, + 255, + 6, + 7, + 20, + 255, + 12, + 11, + 37, + 255, + 18, + 17, + 43, + 255, + 36, + 37, + 52, + 255, + 159, + 148, + 13, + 255, + 159, + 137, + 45, + 255, + 47, + 39, + 16, + 255, + 37, + 33, + 39, + 255, + 34, + 30, + 65, + 255, + 35, + 30, + 73, + 255, + 51, + 41, + 69, + 255, + 72, + 58, + 61, + 255, + 155, + 121, + 112, + 255, + 162, + 129, + 68, + 255, + 195, + 160, + 45, + 255, + 188, + 156, + 18, + 255, + 190, + 166, + 5, + 255, + 184, + 160, + 0, + 255, + 197, + 168, + 0, + 255, + 201, + 170, + 1, + 255, + 201, + 170, + 0, + 255, + 203, + 172, + 3, + 255, + 207, + 173, + 3, + 255, + 207, + 174, + 1, + 255, + 197, + 168, + 4, + 255, + 212, + 180, + 37, + 255, + 212, + 183, + 17, + 255, + 216, + 189, + 14, + 255, + 220, + 188, + 5, + 255, + 219, + 188, + 12, + 255, + 223, + 197, + 7, + 255, + 211, + 201, + 62, + 255, + 120, + 100, + 47, + 255, + 230, + 199, + 38, + 255, + 228, + 196, + 13, + 255, + 205, + 179, + 110, + 255, + 166, + 130, + 117, + 255, + 127, + 107, + 96, + 255, + 228, + 222, + 216, + 255, + 193, + 145, + 139, + 255, + 139, + 98, + 99, + 255, + 217, + 185, + 103, + 255, + 225, + 199, + 58, + 255, + 214, + 176, + 86, + 255, + 207, + 160, + 142, + 255, + 207, + 156, + 126, + 255, + 202, + 152, + 137, + 255, + 194, + 165, + 130, + 255, + 152, + 129, + 139, + 255, + 162, + 149, + 133, + 255, + 118, + 112, + 96, + 255, + 123, + 118, + 117, + 255, + 134, + 119, + 121, + 255, + 204, + 182, + 179, + 255, + 224, + 198, + 193, + 255, + 222, + 197, + 191, + 255, + 225, + 196, + 190, + 255, + 228, + 196, + 192, + 255, + 227, + 196, + 193, + 255, + 224, + 200, + 197, + 255, + 222, + 202, + 201, + 255, + 225, + 208, + 206, + 255, + 223, + 211, + 207, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 219, + 211, + 208, + 255, + 218, + 210, + 207, + 255, + 222, + 214, + 211, + 255, + 223, + 215, + 212, + 255, + 224, + 215, + 210, + 255, + 222, + 213, + 208, + 255, + 221, + 210, + 206, + 255, + 220, + 209, + 205, + 255, + 223, + 211, + 205, + 255, + 214, + 193, + 189, + 255, + 194, + 157, + 142, + 255, + 202, + 151, + 124, + 255, + 203, + 158, + 135, + 255, + 202, + 158, + 132, + 255, + 200, + 157, + 129, + 255, + 201, + 159, + 129, + 255, + 201, + 156, + 127, + 255, + 199, + 155, + 125, + 255, + 202, + 156, + 123, + 255, + 202, + 152, + 117, + 255, + 207, + 152, + 123, + 255, + 199, + 152, + 135, + 255, + 198, + 158, + 104, + 255, + 229, + 202, + 17, + 255, + 222, + 196, + 69, + 255, + 73, + 75, + 82, + 255, + 34, + 47, + 80, + 255, + 30, + 23, + 75, + 255, + 22, + 21, + 61, + 255, + 21, + 22, + 54, + 255, + 21, + 21, + 54, + 255, + 24, + 23, + 63, + 255, + 26, + 25, + 67, + 255, + 30, + 30, + 67, + 255, + 30, + 31, + 69, + 255, + 24, + 24, + 69, + 255, + 20, + 20, + 54, + 255, + 20, + 20, + 54, + 255, + 18, + 18, + 52, + 255, + 20, + 20, + 54, + 255, + 19, + 23, + 51, + 255, + 15, + 18, + 44, + 255, + 18, + 17, + 42, + 255, + 21, + 20, + 43, + 255, + 16, + 16, + 44, + 255, + 15, + 16, + 38, + 255, + 13, + 13, + 37, + 255, + 14, + 13, + 43, + 255, + 14, + 14, + 42, + 255, + 14, + 13, + 43, + 255, + 14, + 13, + 45, + 255, + 13, + 12, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 13, + 36, + 255, + 11, + 13, + 29, + 255, + 11, + 13, + 27, + 255, + 10, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 13, + 12, + 26, + 255, + 13, + 12, + 26, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 21, + 255, + 9, + 9, + 20, + 255, + 9, + 9, + 20, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 19, + 255, + 11, + 12, + 32, + 255, + 12, + 13, + 42, + 255, + 15, + 15, + 49, + 255, + 11, + 11, + 45, + 255, + 12, + 12, + 40, + 255, + 8, + 8, + 24, + 255, + 7, + 8, + 13, + 255, + 9, + 9, + 20, + 255, + 9, + 9, + 20, + 255, + 9, + 9, + 20, + 255, + 9, + 9, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 11, + 11, + 23, + 255, + 9, + 11, + 24, + 255, + 14, + 15, + 34, + 255, + 10, + 11, + 31, + 255, + 18, + 20, + 36, + 255, + 14, + 15, + 33, + 255, + 15, + 16, + 34, + 255, + 17, + 18, + 36, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 7, + 255, + 7, + 2, + 34, + 255, + 4, + 2, + 16, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 1, + 255, + 3, + 3, + 5, + 255, + 3, + 0, + 10, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 2, + 2, + 1, + 255, + 1, + 0, + 15, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 23, + 255, + 1, + 0, + 18, + 255, + 2, + 0, + 19, + 255, + 2, + 0, + 14, + 255, + 1, + 0, + 30, + 255, + 0, + 0, + 23, + 255, + 0, + 0, + 26, + 255, + 2, + 3, + 22, + 255, + 0, + 0, + 30, + 255, + 0, + 3, + 23, + 255, + 0, + 0, + 31, + 255, + 0, + 0, + 33, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 23, + 255, + 3, + 1, + 38, + 255, + 15, + 13, + 50, + 255, + 0, + 0, + 26, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 22, + 255, + 3, + 4, + 26, + 255, + 0, + 0, + 24, + 255, + 0, + 1, + 16, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 23, + 255, + 0, + 2, + 25, + 255, + 1, + 0, + 31, + 255, + 1, + 1, + 24, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 24, + 255, + 2, + 2, + 14, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 7, + 255, + 1, + 1, + 12, + 255, + 1, + 0, + 14, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 15, + 255, + 3, + 2, + 16, + 255, + 1, + 1, + 12, + 255, + 0, + 0, + 10, + 255, + 6, + 8, + 24, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 26, + 255, + 2, + 1, + 16, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 5, + 1, + 24, + 255, + 2, + 2, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 3, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 1, + 2, + 14, + 255, + 8, + 9, + 29, + 255, + 10, + 13, + 30, + 255, + 11, + 14, + 31, + 255, + 11, + 14, + 33, + 255, + 8, + 10, + 31, + 255, + 8, + 8, + 34, + 255, + 9, + 11, + 36, + 255, + 6, + 10, + 35, + 255, + 4, + 10, + 34, + 255, + 5, + 10, + 32, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 35, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 36, + 255, + 7, + 11, + 38, + 255, + 7, + 11, + 38, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 7, + 11, + 36, + 255, + 8, + 12, + 37, + 255, + 9, + 13, + 38, + 255, + 8, + 12, + 37, + 255, + 11, + 16, + 39, + 255, + 13, + 18, + 40, + 255, + 14, + 19, + 39, + 255, + 15, + 17, + 40, + 255, + 12, + 14, + 37, + 255, + 12, + 14, + 37, + 255, + 13, + 15, + 38, + 255, + 13, + 15, + 40, + 255, + 15, + 17, + 42, + 255, + 18, + 20, + 45, + 255, + 11, + 13, + 38, + 255, + 7, + 12, + 31, + 255, + 18, + 21, + 38, + 255, + 24, + 26, + 42, + 255, + 26, + 26, + 42, + 255, + 25, + 27, + 42, + 255, + 31, + 33, + 47, + 255, + 33, + 35, + 47, + 255, + 33, + 35, + 47, + 255, + 35, + 35, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 46, + 255, + 35, + 36, + 47, + 255, + 34, + 36, + 49, + 255, + 33, + 37, + 49, + 255, + 34, + 36, + 49, + 255, + 34, + 36, + 51, + 255, + 34, + 35, + 53, + 255, + 33, + 34, + 52, + 255, + 34, + 36, + 51, + 255, + 34, + 36, + 51, + 255, + 34, + 36, + 51, + 255, + 35, + 37, + 52, + 255, + 37, + 37, + 53, + 255, + 37, + 37, + 53, + 255, + 36, + 36, + 52, + 255, + 36, + 36, + 52, + 255, + 35, + 37, + 52, + 255, + 35, + 36, + 54, + 255, + 36, + 37, + 55, + 255, + 13, + 14, + 34, + 255, + 4, + 7, + 15, + 255, + 5, + 8, + 23, + 255, + 13, + 18, + 41, + 255, + 21, + 26, + 54, + 255, + 18, + 19, + 48, + 255, + 4, + 6, + 22, + 255, + 3, + 5, + 11, + 255, + 3, + 4, + 8, + 255, + 3, + 4, + 9, + 255, + 3, + 4, + 9, + 255, + 3, + 4, + 9, + 255, + 3, + 4, + 9, + 255, + 2, + 3, + 8, + 255, + 4, + 4, + 13, + 255, + 5, + 4, + 18, + 255, + 8, + 7, + 24, + 255, + 10, + 10, + 37, + 255, + 13, + 11, + 51, + 255, + 16, + 15, + 49, + 255, + 32, + 34, + 49, + 255, + 151, + 140, + 39, + 255, + 41, + 32, + 51, + 255, + 20, + 33, + 52, + 255, + 20, + 15, + 61, + 255, + 22, + 20, + 59, + 255, + 19, + 22, + 58, + 255, + 20, + 21, + 61, + 255, + 33, + 27, + 75, + 255, + 54, + 53, + 58, + 255, + 70, + 59, + 49, + 255, + 156, + 127, + 111, + 255, + 158, + 126, + 92, + 255, + 162, + 137, + 61, + 255, + 187, + 163, + 68, + 255, + 170, + 147, + 16, + 255, + 192, + 167, + 22, + 255, + 199, + 171, + 3, + 255, + 202, + 173, + 3, + 255, + 204, + 173, + 2, + 255, + 209, + 177, + 6, + 255, + 212, + 178, + 6, + 255, + 210, + 181, + 0, + 255, + 211, + 178, + 55, + 255, + 218, + 192, + 46, + 255, + 216, + 186, + 10, + 255, + 213, + 194, + 0, + 255, + 230, + 190, + 8, + 255, + 191, + 169, + 52, + 255, + 211, + 190, + 53, + 255, + 228, + 202, + 13, + 255, + 235, + 199, + 43, + 255, + 221, + 190, + 35, + 255, + 196, + 147, + 104, + 255, + 158, + 136, + 130, + 255, + 221, + 218, + 229, + 255, + 215, + 138, + 137, + 255, + 196, + 139, + 137, + 255, + 133, + 102, + 90, + 255, + 156, + 130, + 104, + 255, + 218, + 177, + 95, + 255, + 213, + 169, + 116, + 255, + 217, + 178, + 127, + 255, + 196, + 158, + 104, + 255, + 200, + 151, + 136, + 255, + 197, + 168, + 145, + 255, + 207, + 179, + 185, + 255, + 220, + 199, + 196, + 255, + 221, + 208, + 211, + 255, + 216, + 197, + 202, + 255, + 228, + 200, + 197, + 255, + 227, + 195, + 189, + 255, + 227, + 195, + 191, + 255, + 226, + 196, + 189, + 255, + 228, + 195, + 190, + 255, + 228, + 196, + 193, + 255, + 224, + 200, + 196, + 255, + 222, + 202, + 201, + 255, + 225, + 208, + 206, + 255, + 223, + 211, + 207, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 211, + 203, + 200, + 255, + 228, + 220, + 217, + 255, + 222, + 214, + 211, + 255, + 223, + 215, + 212, + 255, + 224, + 217, + 211, + 255, + 222, + 215, + 209, + 255, + 221, + 215, + 209, + 255, + 220, + 214, + 208, + 255, + 223, + 214, + 208, + 255, + 154, + 136, + 133, + 255, + 193, + 159, + 147, + 255, + 200, + 153, + 129, + 255, + 190, + 152, + 131, + 255, + 185, + 154, + 141, + 255, + 112, + 89, + 87, + 255, + 106, + 88, + 92, + 255, + 88, + 75, + 100, + 255, + 79, + 70, + 96, + 255, + 79, + 69, + 89, + 255, + 83, + 65, + 79, + 255, + 120, + 100, + 106, + 255, + 193, + 155, + 135, + 255, + 201, + 149, + 125, + 255, + 211, + 168, + 90, + 255, + 220, + 200, + 0, + 255, + 82, + 67, + 43, + 255, + 38, + 36, + 64, + 255, + 24, + 24, + 70, + 255, + 23, + 21, + 70, + 255, + 20, + 20, + 54, + 255, + 21, + 22, + 50, + 255, + 24, + 24, + 59, + 255, + 27, + 25, + 72, + 255, + 32, + 34, + 77, + 255, + 20, + 24, + 71, + 255, + 26, + 30, + 84, + 255, + 21, + 34, + 92, + 255, + 22, + 35, + 93, + 255, + 21, + 34, + 92, + 255, + 17, + 30, + 88, + 255, + 23, + 34, + 88, + 255, + 17, + 25, + 75, + 255, + 24, + 28, + 76, + 255, + 17, + 18, + 64, + 255, + 20, + 20, + 48, + 255, + 15, + 16, + 38, + 255, + 13, + 13, + 37, + 255, + 14, + 13, + 43, + 255, + 14, + 14, + 42, + 255, + 14, + 13, + 43, + 255, + 14, + 13, + 45, + 255, + 13, + 12, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 44, + 255, + 16, + 15, + 46, + 255, + 11, + 12, + 34, + 255, + 11, + 12, + 31, + 255, + 10, + 11, + 32, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 14, + 13, + 29, + 255, + 14, + 13, + 29, + 255, + 14, + 13, + 29, + 255, + 14, + 13, + 29, + 255, + 15, + 14, + 28, + 255, + 15, + 14, + 28, + 255, + 14, + 13, + 27, + 255, + 14, + 13, + 27, + 255, + 12, + 12, + 24, + 255, + 12, + 12, + 24, + 255, + 12, + 12, + 24, + 255, + 12, + 12, + 24, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 11, + 11, + 23, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 20, + 255, + 10, + 10, + 20, + 255, + 10, + 10, + 20, + 255, + 10, + 10, + 20, + 255, + 10, + 10, + 20, + 255, + 10, + 10, + 20, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 11, + 11, + 21, + 255, + 11, + 11, + 21, + 255, + 11, + 11, + 21, + 255, + 11, + 11, + 21, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 12, + 13, + 32, + 255, + 11, + 12, + 42, + 255, + 14, + 16, + 49, + 255, + 8, + 12, + 41, + 255, + 12, + 13, + 42, + 255, + 8, + 9, + 30, + 255, + 6, + 6, + 21, + 255, + 8, + 8, + 20, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 9, + 11, + 24, + 255, + 10, + 11, + 30, + 255, + 10, + 11, + 31, + 255, + 22, + 24, + 40, + 255, + 12, + 14, + 29, + 255, + 10, + 12, + 27, + 255, + 10, + 12, + 27, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 2, + 2, + 13, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 13, + 255, + 0, + 3, + 6, + 255, + 0, + 1, + 6, + 255, + 13, + 14, + 34, + 255, + 6, + 3, + 33, + 255, + 0, + 3, + 9, + 255, + 0, + 1, + 2, + 255, + 1, + 2, + 14, + 255, + 3, + 0, + 26, + 255, + 4, + 1, + 20, + 255, + 4, + 0, + 11, + 255, + 5, + 0, + 10, + 255, + 1, + 0, + 9, + 255, + 3, + 0, + 15, + 255, + 0, + 0, + 19, + 255, + 0, + 2, + 21, + 255, + 0, + 1, + 20, + 255, + 1, + 2, + 22, + 255, + 0, + 0, + 24, + 255, + 0, + 0, + 26, + 255, + 3, + 1, + 25, + 255, + 3, + 1, + 23, + 255, + 2, + 0, + 20, + 255, + 2, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 3, + 1, + 22, + 255, + 2, + 0, + 21, + 255, + 0, + 0, + 19, + 255, + 0, + 3, + 16, + 255, + 0, + 1, + 30, + 255, + 30, + 31, + 61, + 255, + 0, + 1, + 25, + 255, + 0, + 2, + 15, + 255, + 0, + 2, + 21, + 255, + 3, + 5, + 30, + 255, + 3, + 4, + 34, + 255, + 1, + 3, + 26, + 255, + 1, + 3, + 26, + 255, + 0, + 1, + 25, + 255, + 0, + 0, + 23, + 255, + 2, + 0, + 21, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 14, + 255, + 2, + 1, + 19, + 255, + 0, + 2, + 20, + 255, + 0, + 3, + 21, + 255, + 0, + 2, + 20, + 255, + 0, + 2, + 20, + 255, + 1, + 0, + 14, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 12, + 255, + 3, + 0, + 28, + 255, + 1, + 1, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 2, + 0, + 15, + 255, + 2, + 0, + 11, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 3, + 12, + 255, + 7, + 8, + 28, + 255, + 3, + 8, + 31, + 255, + 5, + 10, + 33, + 255, + 4, + 9, + 32, + 255, + 5, + 10, + 33, + 255, + 3, + 9, + 33, + 255, + 3, + 9, + 33, + 255, + 3, + 9, + 33, + 255, + 3, + 9, + 33, + 255, + 5, + 9, + 38, + 255, + 5, + 9, + 36, + 255, + 5, + 9, + 34, + 255, + 5, + 9, + 34, + 255, + 5, + 11, + 33, + 255, + 5, + 11, + 35, + 255, + 6, + 12, + 37, + 255, + 6, + 12, + 38, + 255, + 8, + 9, + 36, + 255, + 8, + 9, + 36, + 255, + 8, + 9, + 36, + 255, + 8, + 9, + 36, + 255, + 6, + 10, + 36, + 255, + 7, + 11, + 37, + 255, + 8, + 12, + 38, + 255, + 8, + 12, + 38, + 255, + 8, + 12, + 38, + 255, + 9, + 13, + 39, + 255, + 11, + 15, + 41, + 255, + 13, + 17, + 43, + 255, + 9, + 15, + 40, + 255, + 10, + 16, + 41, + 255, + 14, + 20, + 45, + 255, + 13, + 19, + 44, + 255, + 12, + 18, + 43, + 255, + 12, + 18, + 43, + 255, + 14, + 20, + 45, + 255, + 5, + 11, + 36, + 255, + 4, + 6, + 27, + 255, + 6, + 9, + 29, + 255, + 7, + 10, + 28, + 255, + 18, + 21, + 38, + 255, + 25, + 29, + 41, + 255, + 32, + 36, + 46, + 255, + 32, + 37, + 44, + 255, + 31, + 36, + 43, + 255, + 34, + 36, + 47, + 255, + 34, + 36, + 47, + 255, + 35, + 37, + 48, + 255, + 35, + 37, + 48, + 255, + 34, + 36, + 47, + 255, + 34, + 36, + 47, + 255, + 34, + 36, + 47, + 255, + 34, + 36, + 47, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 33, + 36, + 51, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 33, + 36, + 51, + 255, + 33, + 36, + 51, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 34, + 37, + 52, + 255, + 35, + 38, + 54, + 255, + 33, + 36, + 53, + 255, + 20, + 23, + 39, + 255, + 5, + 8, + 24, + 255, + 2, + 4, + 15, + 255, + 2, + 5, + 22, + 255, + 12, + 14, + 39, + 255, + 23, + 27, + 56, + 255, + 12, + 9, + 34, + 255, + 5, + 4, + 18, + 255, + 4, + 4, + 12, + 255, + 4, + 4, + 13, + 255, + 3, + 2, + 15, + 255, + 3, + 2, + 15, + 255, + 3, + 2, + 15, + 255, + 3, + 2, + 15, + 255, + 6, + 4, + 24, + 255, + 6, + 5, + 18, + 255, + 8, + 6, + 26, + 255, + 13, + 9, + 42, + 255, + 12, + 11, + 53, + 255, + 12, + 12, + 50, + 255, + 15, + 16, + 48, + 255, + 23, + 24, + 53, + 255, + 27, + 26, + 21, + 255, + 22, + 15, + 65, + 255, + 19, + 20, + 57, + 255, + 14, + 14, + 68, + 255, + 14, + 15, + 60, + 255, + 15, + 16, + 61, + 255, + 16, + 17, + 62, + 255, + 26, + 27, + 72, + 255, + 42, + 38, + 78, + 255, + 40, + 32, + 64, + 255, + 108, + 91, + 82, + 255, + 94, + 74, + 30, + 255, + 180, + 152, + 49, + 255, + 190, + 159, + 32, + 255, + 199, + 170, + 0, + 255, + 193, + 167, + 3, + 255, + 198, + 169, + 5, + 255, + 203, + 174, + 17, + 255, + 182, + 150, + 29, + 255, + 199, + 173, + 26, + 255, + 205, + 176, + 38, + 255, + 212, + 190, + 96, + 255, + 206, + 190, + 41, + 255, + 214, + 184, + 10, + 255, + 218, + 187, + 0, + 255, + 218, + 187, + 0, + 255, + 211, + 182, + 36, + 255, + 210, + 181, + 90, + 255, + 228, + 194, + 25, + 255, + 229, + 199, + 7, + 255, + 225, + 194, + 4, + 255, + 227, + 193, + 23, + 255, + 203, + 157, + 115, + 255, + 189, + 155, + 143, + 255, + 126, + 121, + 114, + 255, + 194, + 144, + 145, + 255, + 205, + 138, + 146, + 255, + 186, + 134, + 136, + 255, + 168, + 134, + 121, + 255, + 203, + 156, + 126, + 255, + 198, + 152, + 128, + 255, + 208, + 171, + 81, + 255, + 230, + 186, + 78, + 255, + 198, + 156, + 126, + 255, + 192, + 149, + 124, + 255, + 176, + 148, + 129, + 255, + 163, + 143, + 131, + 255, + 222, + 202, + 208, + 255, + 222, + 203, + 199, + 255, + 225, + 198, + 191, + 255, + 227, + 197, + 186, + 255, + 224, + 199, + 180, + 255, + 225, + 196, + 189, + 255, + 225, + 198, + 188, + 255, + 224, + 199, + 192, + 255, + 225, + 200, + 203, + 255, + 220, + 205, + 202, + 255, + 223, + 209, + 206, + 255, + 223, + 210, + 206, + 255, + 223, + 212, + 208, + 255, + 223, + 216, + 210, + 255, + 223, + 216, + 210, + 255, + 223, + 216, + 210, + 255, + 223, + 216, + 210, + 255, + 222, + 216, + 210, + 255, + 223, + 216, + 210, + 255, + 224, + 215, + 210, + 255, + 225, + 214, + 210, + 255, + 224, + 213, + 211, + 255, + 226, + 212, + 211, + 255, + 222, + 214, + 211, + 255, + 216, + 217, + 211, + 255, + 223, + 216, + 210, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 221, + 210, + 206, + 255, + 134, + 106, + 113, + 255, + 193, + 155, + 135, + 255, + 195, + 155, + 122, + 255, + 200, + 157, + 131, + 255, + 202, + 156, + 142, + 255, + 186, + 156, + 120, + 255, + 80, + 61, + 70, + 255, + 57, + 57, + 85, + 255, + 51, + 61, + 104, + 255, + 52, + 53, + 88, + 255, + 52, + 56, + 93, + 255, + 61, + 60, + 92, + 255, + 74, + 73, + 90, + 255, + 93, + 76, + 75, + 255, + 188, + 155, + 115, + 255, + 234, + 194, + 1, + 255, + 114, + 94, + 41, + 255, + 36, + 42, + 67, + 255, + 31, + 22, + 75, + 255, + 21, + 21, + 63, + 255, + 20, + 23, + 57, + 255, + 22, + 28, + 62, + 255, + 22, + 30, + 70, + 255, + 21, + 29, + 86, + 255, + 30, + 38, + 93, + 255, + 25, + 34, + 87, + 255, + 16, + 25, + 76, + 255, + 21, + 21, + 76, + 255, + 18, + 22, + 76, + 255, + 19, + 28, + 80, + 255, + 19, + 30, + 82, + 255, + 20, + 22, + 70, + 255, + 18, + 19, + 65, + 255, + 21, + 19, + 64, + 255, + 22, + 19, + 64, + 255, + 23, + 30, + 72, + 255, + 14, + 17, + 53, + 255, + 14, + 12, + 43, + 255, + 19, + 14, + 42, + 255, + 15, + 12, + 41, + 255, + 14, + 12, + 41, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 14, + 13, + 44, + 255, + 15, + 14, + 45, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 12, + 13, + 45, + 255, + 12, + 12, + 37, + 255, + 12, + 12, + 29, + 255, + 12, + 12, + 24, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 14, + 29, + 255, + 11, + 13, + 28, + 255, + 13, + 14, + 32, + 255, + 13, + 14, + 32, + 255, + 15, + 14, + 29, + 255, + 15, + 14, + 29, + 255, + 15, + 14, + 29, + 255, + 15, + 14, + 29, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 15, + 14, + 30, + 255, + 16, + 16, + 26, + 255, + 15, + 15, + 25, + 255, + 13, + 13, + 23, + 255, + 14, + 14, + 24, + 255, + 13, + 13, + 25, + 255, + 12, + 12, + 24, + 255, + 13, + 13, + 25, + 255, + 12, + 12, + 24, + 255, + 10, + 13, + 22, + 255, + 9, + 12, + 21, + 255, + 9, + 12, + 21, + 255, + 9, + 12, + 21, + 255, + 12, + 10, + 25, + 255, + 11, + 9, + 24, + 255, + 11, + 9, + 24, + 255, + 10, + 8, + 23, + 255, + 10, + 11, + 21, + 255, + 14, + 10, + 25, + 255, + 11, + 9, + 28, + 255, + 8, + 12, + 32, + 255, + 16, + 19, + 33, + 255, + 3, + 17, + 28, + 255, + 9, + 6, + 24, + 255, + 13, + 13, + 31, + 255, + 11, + 11, + 38, + 255, + 11, + 10, + 44, + 255, + 13, + 11, + 47, + 255, + 11, + 10, + 43, + 255, + 14, + 10, + 43, + 255, + 8, + 7, + 24, + 255, + 7, + 7, + 16, + 255, + 7, + 7, + 16, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 8, + 8, + 16, + 255, + 7, + 7, + 17, + 255, + 10, + 10, + 20, + 255, + 9, + 9, + 19, + 255, + 9, + 9, + 19, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 10, + 10, + 20, + 255, + 11, + 11, + 21, + 255, + 9, + 10, + 28, + 255, + 15, + 17, + 33, + 255, + 14, + 16, + 30, + 255, + 9, + 11, + 24, + 255, + 12, + 12, + 24, + 255, + 12, + 12, + 24, + 255, + 11, + 11, + 23, + 255, + 1, + 0, + 4, + 255, + 1, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 4, + 255, + 0, + 2, + 0, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 10, + 255, + 0, + 2, + 13, + 255, + 2, + 0, + 3, + 255, + 1, + 0, + 8, + 255, + 5, + 3, + 25, + 255, + 36, + 35, + 85, + 255, + 3, + 5, + 28, + 255, + 0, + 4, + 7, + 255, + 3, + 5, + 17, + 255, + 13, + 18, + 72, + 255, + 0, + 1, + 32, + 255, + 7, + 2, + 23, + 255, + 10, + 0, + 26, + 255, + 5, + 5, + 32, + 255, + 6, + 6, + 30, + 255, + 4, + 5, + 25, + 255, + 4, + 5, + 23, + 255, + 7, + 5, + 25, + 255, + 7, + 6, + 24, + 255, + 7, + 6, + 22, + 255, + 7, + 6, + 20, + 255, + 6, + 4, + 25, + 255, + 6, + 4, + 25, + 255, + 4, + 2, + 23, + 255, + 5, + 3, + 24, + 255, + 4, + 7, + 15, + 255, + 5, + 6, + 23, + 255, + 4, + 5, + 24, + 255, + 5, + 7, + 20, + 255, + 2, + 3, + 24, + 255, + 4, + 4, + 28, + 255, + 0, + 0, + 29, + 255, + 6, + 5, + 37, + 255, + 6, + 7, + 29, + 255, + 6, + 6, + 32, + 255, + 5, + 4, + 35, + 255, + 6, + 5, + 39, + 255, + 6, + 4, + 24, + 255, + 4, + 3, + 17, + 255, + 4, + 4, + 15, + 255, + 4, + 3, + 17, + 255, + 4, + 4, + 14, + 255, + 4, + 3, + 17, + 255, + 5, + 4, + 22, + 255, + 5, + 3, + 23, + 255, + 5, + 5, + 31, + 255, + 6, + 6, + 32, + 255, + 6, + 6, + 32, + 255, + 6, + 6, + 32, + 255, + 6, + 4, + 26, + 255, + 5, + 4, + 18, + 255, + 4, + 4, + 16, + 255, + 7, + 6, + 23, + 255, + 5, + 4, + 18, + 255, + 3, + 3, + 15, + 255, + 4, + 4, + 14, + 255, + 4, + 4, + 13, + 255, + 3, + 1, + 12, + 255, + 4, + 3, + 10, + 255, + 6, + 6, + 8, + 255, + 6, + 6, + 5, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 6, + 6, + 6, + 255, + 5, + 6, + 9, + 255, + 5, + 6, + 21, + 255, + 9, + 9, + 36, + 255, + 9, + 11, + 35, + 255, + 9, + 11, + 35, + 255, + 9, + 11, + 35, + 255, + 10, + 12, + 36, + 255, + 8, + 12, + 38, + 255, + 8, + 12, + 38, + 255, + 8, + 12, + 38, + 255, + 8, + 12, + 38, + 255, + 11, + 12, + 39, + 255, + 11, + 13, + 38, + 255, + 9, + 11, + 35, + 255, + 9, + 11, + 33, + 255, + 7, + 11, + 32, + 255, + 9, + 12, + 34, + 255, + 9, + 12, + 36, + 255, + 12, + 15, + 40, + 255, + 10, + 15, + 38, + 255, + 10, + 15, + 38, + 255, + 10, + 15, + 38, + 255, + 10, + 15, + 38, + 255, + 12, + 14, + 38, + 255, + 13, + 15, + 39, + 255, + 14, + 16, + 40, + 255, + 14, + 16, + 40, + 255, + 13, + 15, + 39, + 255, + 14, + 16, + 40, + 255, + 15, + 17, + 41, + 255, + 16, + 18, + 42, + 255, + 15, + 20, + 43, + 255, + 14, + 19, + 42, + 255, + 16, + 21, + 44, + 255, + 17, + 22, + 45, + 255, + 16, + 21, + 44, + 255, + 16, + 21, + 44, + 255, + 15, + 20, + 43, + 255, + 7, + 12, + 35, + 255, + 7, + 7, + 34, + 255, + 6, + 6, + 32, + 255, + 7, + 7, + 31, + 255, + 9, + 9, + 33, + 255, + 16, + 18, + 34, + 255, + 26, + 28, + 42, + 255, + 32, + 34, + 47, + 255, + 33, + 35, + 47, + 255, + 37, + 37, + 51, + 255, + 37, + 37, + 51, + 255, + 38, + 38, + 52, + 255, + 38, + 38, + 52, + 255, + 38, + 39, + 52, + 255, + 38, + 39, + 52, + 255, + 38, + 39, + 52, + 255, + 38, + 39, + 52, + 255, + 38, + 40, + 55, + 255, + 39, + 41, + 56, + 255, + 39, + 41, + 56, + 255, + 38, + 40, + 55, + 255, + 37, + 39, + 54, + 255, + 37, + 39, + 54, + 255, + 38, + 40, + 55, + 255, + 38, + 40, + 55, + 255, + 37, + 39, + 54, + 255, + 37, + 39, + 54, + 255, + 37, + 39, + 54, + 255, + 37, + 39, + 54, + 255, + 34, + 35, + 57, + 255, + 33, + 34, + 52, + 255, + 14, + 16, + 30, + 255, + 5, + 7, + 18, + 255, + 6, + 7, + 10, + 255, + 6, + 8, + 20, + 255, + 17, + 19, + 42, + 255, + 16, + 17, + 47, + 255, + 9, + 11, + 33, + 255, + 4, + 6, + 27, + 255, + 5, + 7, + 29, + 255, + 8, + 10, + 34, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 8, + 10, + 35, + 255, + 8, + 10, + 35, + 255, + 9, + 10, + 36, + 255, + 8, + 10, + 31, + 255, + 10, + 11, + 38, + 255, + 12, + 12, + 46, + 255, + 12, + 13, + 41, + 255, + 9, + 11, + 37, + 255, + 11, + 13, + 38, + 255, + 15, + 17, + 40, + 255, + 14, + 15, + 42, + 255, + 19, + 20, + 56, + 255, + 13, + 19, + 41, + 255, + 11, + 15, + 60, + 255, + 15, + 15, + 53, + 255, + 16, + 16, + 54, + 255, + 16, + 16, + 54, + 255, + 22, + 22, + 60, + 255, + 45, + 39, + 55, + 255, + 147, + 134, + 129, + 255, + 166, + 141, + 65, + 255, + 176, + 148, + 24, + 255, + 188, + 151, + 9, + 255, + 188, + 157, + 0, + 255, + 177, + 138, + 80, + 255, + 167, + 142, + 30, + 255, + 135, + 108, + 17, + 255, + 180, + 165, + 22, + 255, + 183, + 168, + 75, + 255, + 214, + 197, + 133, + 255, + 203, + 183, + 63, + 255, + 201, + 178, + 12, + 255, + 216, + 178, + 19, + 255, + 220, + 183, + 0, + 255, + 218, + 189, + 1, + 255, + 211, + 182, + 0, + 255, + 220, + 181, + 85, + 255, + 213, + 179, + 72, + 255, + 221, + 191, + 0, + 255, + 223, + 192, + 2, + 255, + 225, + 195, + 3, + 255, + 227, + 193, + 22, + 255, + 199, + 157, + 99, + 255, + 198, + 150, + 138, + 255, + 166, + 142, + 143, + 255, + 211, + 192, + 188, + 255, + 195, + 145, + 147, + 255, + 204, + 143, + 151, + 255, + 150, + 101, + 97, + 255, + 200, + 154, + 129, + 255, + 198, + 151, + 115, + 255, + 207, + 170, + 100, + 255, + 224, + 193, + 33, + 255, + 199, + 163, + 111, + 255, + 186, + 141, + 117, + 255, + 201, + 163, + 96, + 255, + 192, + 156, + 131, + 255, + 158, + 140, + 125, + 255, + 223, + 207, + 201, + 255, + 221, + 200, + 200, + 255, + 223, + 198, + 204, + 255, + 226, + 199, + 205, + 255, + 222, + 199, + 200, + 255, + 222, + 199, + 198, + 255, + 224, + 202, + 200, + 255, + 224, + 204, + 202, + 255, + 221, + 207, + 204, + 255, + 223, + 209, + 206, + 255, + 222, + 210, + 206, + 255, + 223, + 212, + 208, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 220, + 215, + 209, + 255, + 220, + 215, + 209, + 255, + 218, + 216, + 209, + 255, + 221, + 214, + 211, + 255, + 224, + 213, + 211, + 255, + 223, + 213, + 211, + 255, + 221, + 214, + 211, + 255, + 223, + 216, + 210, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 223, + 206, + 207, + 255, + 151, + 120, + 109, + 255, + 196, + 154, + 121, + 255, + 201, + 153, + 131, + 255, + 203, + 151, + 122, + 255, + 212, + 159, + 116, + 255, + 203, + 151, + 136, + 255, + 185, + 153, + 89, + 255, + 76, + 63, + 73, + 255, + 47, + 54, + 79, + 255, + 39, + 44, + 80, + 255, + 34, + 43, + 86, + 255, + 34, + 44, + 86, + 255, + 37, + 50, + 87, + 255, + 51, + 55, + 90, + 255, + 79, + 77, + 81, + 255, + 213, + 203, + 54, + 255, + 88, + 74, + 25, + 255, + 35, + 36, + 73, + 255, + 22, + 23, + 78, + 255, + 24, + 29, + 79, + 255, + 22, + 27, + 74, + 255, + 26, + 33, + 80, + 255, + 22, + 30, + 80, + 255, + 20, + 22, + 79, + 255, + 17, + 19, + 74, + 255, + 18, + 21, + 73, + 255, + 15, + 18, + 69, + 255, + 21, + 17, + 66, + 255, + 19, + 18, + 66, + 255, + 18, + 21, + 67, + 255, + 17, + 22, + 68, + 255, + 18, + 20, + 67, + 255, + 18, + 19, + 64, + 255, + 18, + 17, + 61, + 255, + 18, + 15, + 59, + 255, + 17, + 17, + 59, + 255, + 18, + 19, + 59, + 255, + 20, + 21, + 60, + 255, + 19, + 20, + 59, + 255, + 15, + 14, + 45, + 255, + 14, + 13, + 44, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 14, + 13, + 44, + 255, + 15, + 14, + 45, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 13, + 14, + 44, + 255, + 14, + 14, + 39, + 255, + 13, + 13, + 32, + 255, + 13, + 12, + 27, + 255, + 13, + 12, + 28, + 255, + 13, + 12, + 28, + 255, + 14, + 13, + 29, + 255, + 16, + 15, + 31, + 255, + 15, + 15, + 33, + 255, + 17, + 17, + 35, + 255, + 17, + 17, + 35, + 255, + 20, + 20, + 38, + 255, + 20, + 21, + 39, + 255, + 23, + 24, + 42, + 255, + 22, + 23, + 41, + 255, + 24, + 25, + 43, + 255, + 27, + 26, + 41, + 255, + 27, + 26, + 41, + 255, + 26, + 25, + 40, + 255, + 25, + 24, + 39, + 255, + 25, + 24, + 40, + 255, + 24, + 23, + 39, + 255, + 22, + 21, + 37, + 255, + 20, + 19, + 35, + 255, + 20, + 19, + 36, + 255, + 19, + 18, + 35, + 255, + 19, + 18, + 35, + 255, + 18, + 17, + 34, + 255, + 17, + 16, + 32, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 16, + 15, + 31, + 255, + 15, + 15, + 26, + 255, + 14, + 14, + 25, + 255, + 14, + 14, + 25, + 255, + 13, + 13, + 24, + 255, + 13, + 13, + 29, + 255, + 21, + 22, + 40, + 255, + 45, + 55, + 72, + 255, + 36, + 56, + 72, + 255, + 2, + 62, + 87, + 255, + 7, + 39, + 63, + 255, + 18, + 16, + 39, + 255, + 6, + 11, + 23, + 255, + 11, + 11, + 35, + 255, + 11, + 10, + 41, + 255, + 13, + 12, + 42, + 255, + 12, + 12, + 39, + 255, + 8, + 7, + 24, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 16, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 8, + 8, + 16, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 18, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 9, + 9, + 19, + 255, + 10, + 11, + 29, + 255, + 14, + 16, + 32, + 255, + 10, + 12, + 26, + 255, + 10, + 12, + 25, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 22, + 255, + 1, + 0, + 1, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 0, + 2, + 3, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 16, + 255, + 0, + 11, + 39, + 255, + 0, + 17, + 48, + 255, + 0, + 24, + 48, + 255, + 0, + 25, + 56, + 255, + 2, + 26, + 71, + 255, + 7, + 27, + 60, + 255, + 11, + 33, + 55, + 255, + 19, + 37, + 55, + 255, + 29, + 41, + 61, + 255, + 49, + 48, + 80, + 255, + 42, + 42, + 69, + 255, + 41, + 42, + 63, + 255, + 41, + 42, + 61, + 255, + 42, + 40, + 63, + 255, + 43, + 41, + 62, + 255, + 42, + 40, + 60, + 255, + 41, + 40, + 58, + 255, + 41, + 40, + 55, + 255, + 41, + 40, + 55, + 255, + 41, + 40, + 55, + 255, + 41, + 40, + 55, + 255, + 41, + 40, + 56, + 255, + 41, + 40, + 58, + 255, + 42, + 41, + 59, + 255, + 42, + 41, + 57, + 255, + 42, + 41, + 55, + 255, + 42, + 41, + 57, + 255, + 42, + 41, + 59, + 255, + 42, + 40, + 60, + 255, + 42, + 41, + 55, + 255, + 42, + 41, + 58, + 255, + 42, + 40, + 61, + 255, + 42, + 40, + 63, + 255, + 42, + 42, + 54, + 255, + 41, + 41, + 49, + 255, + 41, + 41, + 49, + 255, + 44, + 44, + 56, + 255, + 42, + 43, + 48, + 255, + 42, + 42, + 51, + 255, + 41, + 41, + 53, + 255, + 43, + 42, + 57, + 255, + 44, + 43, + 61, + 255, + 44, + 43, + 61, + 255, + 42, + 41, + 59, + 255, + 42, + 41, + 59, + 255, + 42, + 41, + 57, + 255, + 40, + 40, + 51, + 255, + 42, + 42, + 51, + 255, + 42, + 42, + 51, + 255, + 42, + 42, + 51, + 255, + 42, + 42, + 50, + 255, + 42, + 43, + 48, + 255, + 42, + 43, + 47, + 255, + 42, + 41, + 46, + 255, + 41, + 41, + 43, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 40, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 42, + 42, + 42, + 255, + 41, + 42, + 44, + 255, + 41, + 42, + 53, + 255, + 45, + 46, + 66, + 255, + 44, + 44, + 71, + 255, + 44, + 44, + 71, + 255, + 45, + 45, + 72, + 255, + 45, + 45, + 72, + 255, + 40, + 41, + 70, + 255, + 40, + 41, + 70, + 255, + 41, + 42, + 71, + 255, + 41, + 42, + 71, + 255, + 46, + 47, + 65, + 255, + 44, + 46, + 61, + 255, + 41, + 43, + 56, + 255, + 41, + 43, + 56, + 255, + 43, + 44, + 55, + 255, + 45, + 46, + 59, + 255, + 46, + 46, + 61, + 255, + 48, + 48, + 64, + 255, + 45, + 48, + 73, + 255, + 46, + 49, + 74, + 255, + 47, + 50, + 75, + 255, + 47, + 50, + 75, + 255, + 49, + 49, + 75, + 255, + 49, + 49, + 75, + 255, + 49, + 49, + 75, + 255, + 49, + 49, + 75, + 255, + 48, + 48, + 74, + 255, + 48, + 48, + 74, + 255, + 49, + 49, + 75, + 255, + 50, + 50, + 76, + 255, + 50, + 52, + 77, + 255, + 50, + 52, + 77, + 255, + 51, + 53, + 78, + 255, + 51, + 53, + 78, + 255, + 50, + 52, + 77, + 255, + 49, + 51, + 76, + 255, + 46, + 48, + 73, + 255, + 41, + 43, + 68, + 255, + 43, + 41, + 61, + 255, + 41, + 40, + 58, + 255, + 42, + 41, + 58, + 255, + 44, + 43, + 59, + 255, + 45, + 43, + 66, + 255, + 48, + 46, + 68, + 255, + 52, + 50, + 70, + 255, + 58, + 57, + 75, + 255, + 62, + 60, + 72, + 255, + 66, + 64, + 76, + 255, + 71, + 69, + 81, + 255, + 71, + 69, + 81, + 255, + 71, + 70, + 79, + 255, + 71, + 70, + 79, + 255, + 67, + 66, + 75, + 255, + 68, + 67, + 76, + 255, + 64, + 64, + 75, + 255, + 65, + 65, + 76, + 255, + 65, + 65, + 76, + 255, + 65, + 65, + 76, + 255, + 63, + 63, + 74, + 255, + 63, + 63, + 74, + 255, + 59, + 59, + 70, + 255, + 59, + 59, + 70, + 255, + 63, + 63, + 74, + 255, + 63, + 63, + 74, + 255, + 63, + 63, + 74, + 255, + 62, + 62, + 73, + 255, + 56, + 55, + 71, + 255, + 41, + 41, + 53, + 255, + 40, + 40, + 49, + 255, + 34, + 35, + 41, + 255, + 33, + 31, + 43, + 255, + 33, + 32, + 49, + 255, + 33, + 33, + 58, + 255, + 34, + 33, + 64, + 255, + 31, + 31, + 59, + 255, + 30, + 29, + 61, + 255, + 29, + 28, + 61, + 255, + 26, + 25, + 55, + 255, + 29, + 28, + 61, + 255, + 28, + 27, + 60, + 255, + 26, + 25, + 58, + 255, + 24, + 23, + 56, + 255, + 22, + 21, + 54, + 255, + 24, + 23, + 56, + 255, + 23, + 22, + 55, + 255, + 25, + 24, + 58, + 255, + 19, + 19, + 55, + 255, + 18, + 18, + 55, + 255, + 23, + 22, + 63, + 255, + 23, + 22, + 65, + 255, + 26, + 23, + 76, + 255, + 23, + 23, + 65, + 255, + 22, + 22, + 63, + 255, + 22, + 21, + 71, + 255, + 24, + 20, + 70, + 255, + 24, + 20, + 70, + 255, + 24, + 20, + 70, + 255, + 26, + 22, + 72, + 255, + 29, + 31, + 65, + 255, + 37, + 33, + 63, + 255, + 58, + 43, + 47, + 255, + 105, + 85, + 69, + 255, + 115, + 102, + 95, + 255, + 92, + 80, + 73, + 255, + 86, + 75, + 58, + 255, + 181, + 171, + 126, + 255, + 194, + 185, + 100, + 255, + 209, + 191, + 115, + 255, + 197, + 173, + 31, + 255, + 203, + 175, + 7, + 255, + 212, + 176, + 1, + 255, + 214, + 177, + 3, + 255, + 210, + 185, + 0, + 255, + 205, + 185, + 8, + 255, + 220, + 187, + 38, + 255, + 210, + 173, + 67, + 255, + 197, + 158, + 57, + 255, + 215, + 185, + 11, + 255, + 222, + 191, + 5, + 255, + 223, + 191, + 11, + 255, + 224, + 194, + 2, + 255, + 225, + 187, + 42, + 255, + 201, + 155, + 112, + 255, + 198, + 151, + 114, + 255, + 194, + 156, + 129, + 255, + 135, + 113, + 108, + 255, + 234, + 209, + 204, + 255, + 199, + 159, + 162, + 255, + 202, + 167, + 162, + 255, + 188, + 144, + 125, + 255, + 197, + 153, + 123, + 255, + 147, + 115, + 49, + 255, + 222, + 199, + 15, + 255, + 200, + 158, + 109, + 255, + 186, + 156, + 121, + 255, + 135, + 100, + 62, + 255, + 232, + 203, + 93, + 255, + 189, + 150, + 56, + 255, + 149, + 129, + 91, + 255, + 210, + 193, + 175, + 255, + 218, + 202, + 196, + 255, + 217, + 201, + 202, + 255, + 155, + 143, + 138, + 255, + 219, + 205, + 204, + 255, + 222, + 207, + 206, + 255, + 223, + 206, + 203, + 255, + 222, + 209, + 205, + 255, + 223, + 211, + 207, + 255, + 221, + 212, + 207, + 255, + 223, + 214, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 222, + 215, + 209, + 255, + 221, + 215, + 209, + 255, + 221, + 215, + 209, + 255, + 221, + 215, + 209, + 255, + 219, + 214, + 208, + 255, + 222, + 214, + 211, + 255, + 220, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 224, + 213, + 211, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 220, + 213, + 207, + 255, + 180, + 161, + 164, + 255, + 193, + 160, + 142, + 255, + 193, + 149, + 111, + 255, + 202, + 151, + 132, + 255, + 196, + 153, + 129, + 255, + 201, + 162, + 104, + 255, + 157, + 120, + 58, + 255, + 204, + 166, + 144, + 255, + 198, + 182, + 105, + 255, + 64, + 66, + 89, + 255, + 37, + 40, + 91, + 255, + 29, + 41, + 75, + 255, + 33, + 37, + 76, + 255, + 31, + 37, + 77, + 255, + 37, + 41, + 89, + 255, + 45, + 49, + 79, + 255, + 53, + 57, + 50, + 255, + 56, + 46, + 74, + 255, + 35, + 42, + 69, + 255, + 26, + 29, + 82, + 255, + 24, + 28, + 82, + 255, + 19, + 23, + 79, + 255, + 18, + 21, + 76, + 255, + 18, + 20, + 75, + 255, + 22, + 19, + 73, + 255, + 21, + 18, + 71, + 255, + 20, + 18, + 68, + 255, + 20, + 18, + 68, + 255, + 21, + 18, + 63, + 255, + 20, + 17, + 62, + 255, + 20, + 19, + 63, + 255, + 20, + 19, + 63, + 255, + 15, + 18, + 62, + 255, + 16, + 17, + 61, + 255, + 17, + 16, + 58, + 255, + 18, + 15, + 57, + 255, + 19, + 15, + 58, + 255, + 17, + 16, + 59, + 255, + 14, + 17, + 61, + 255, + 16, + 20, + 64, + 255, + 19, + 22, + 56, + 255, + 13, + 15, + 47, + 255, + 16, + 15, + 46, + 255, + 16, + 14, + 43, + 255, + 14, + 13, + 44, + 255, + 15, + 14, + 45, + 255, + 15, + 14, + 45, + 255, + 16, + 15, + 46, + 255, + 14, + 15, + 43, + 255, + 13, + 13, + 38, + 255, + 14, + 13, + 34, + 255, + 15, + 14, + 31, + 255, + 15, + 14, + 30, + 255, + 18, + 17, + 33, + 255, + 22, + 21, + 37, + 255, + 23, + 22, + 38, + 255, + 26, + 25, + 41, + 255, + 32, + 31, + 45, + 255, + 37, + 37, + 48, + 255, + 39, + 39, + 48, + 255, + 50, + 50, + 60, + 255, + 52, + 52, + 62, + 255, + 49, + 49, + 59, + 255, + 57, + 57, + 67, + 255, + 58, + 57, + 64, + 255, + 62, + 61, + 68, + 255, + 61, + 60, + 67, + 255, + 54, + 53, + 60, + 255, + 53, + 51, + 62, + 255, + 45, + 43, + 54, + 255, + 48, + 46, + 57, + 255, + 51, + 49, + 60, + 255, + 46, + 44, + 57, + 255, + 48, + 46, + 59, + 255, + 37, + 35, + 48, + 255, + 42, + 40, + 53, + 255, + 36, + 34, + 47, + 255, + 34, + 32, + 45, + 255, + 31, + 29, + 42, + 255, + 32, + 30, + 43, + 255, + 30, + 26, + 44, + 255, + 33, + 29, + 47, + 255, + 30, + 26, + 44, + 255, + 29, + 25, + 43, + 255, + 21, + 18, + 29, + 255, + 104, + 106, + 121, + 255, + 122, + 135, + 152, + 255, + 116, + 140, + 158, + 255, + 37, + 140, + 157, + 255, + 5, + 60, + 80, + 255, + 11, + 13, + 36, + 255, + 9, + 10, + 22, + 255, + 7, + 8, + 27, + 255, + 9, + 10, + 32, + 255, + 10, + 11, + 32, + 255, + 6, + 8, + 23, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 17, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 14, + 255, + 6, + 6, + 14, + 255, + 6, + 6, + 14, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 9, + 9, + 19, + 255, + 8, + 9, + 27, + 255, + 11, + 13, + 29, + 255, + 9, + 11, + 25, + 255, + 6, + 8, + 21, + 255, + 10, + 10, + 22, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 3, + 3, + 13, + 255, + 3, + 2, + 16, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 6, + 255, + 2, + 1, + 6, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 12, + 255, + 0, + 10, + 31, + 255, + 9, + 39, + 65, + 255, + 20, + 147, + 217, + 255, + 23, + 149, + 233, + 255, + 17, + 148, + 229, + 255, + 19, + 154, + 220, + 255, + 26, + 152, + 230, + 255, + 61, + 148, + 217, + 255, + 214, + 244, + 255, + 255, + 255, + 253, + 248, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 254, + 253, + 255, + 251, + 252, + 255, + 255, + 251, + 252, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 252, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 252, + 254, + 255, + 255, + 250, + 252, + 255, + 255, + 251, + 254, + 255, + 255, + 251, + 254, + 255, + 255, + 251, + 254, + 255, + 255, + 251, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 249, + 251, + 254, + 255, + 252, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 250, + 254, + 255, + 255, + 252, + 252, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 252, + 253, + 254, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 252, + 251, + 255, + 255, + 252, + 251, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 249, + 250, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 251, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 250, + 251, + 253, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 254, + 255, + 252, + 252, + 253, + 255, + 252, + 253, + 255, + 255, + 249, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 253, + 255, + 255, + 252, + 251, + 255, + 255, + 252, + 251, + 255, + 255, + 252, + 251, + 255, + 255, + 249, + 248, + 255, + 255, + 252, + 251, + 255, + 255, + 250, + 249, + 255, + 255, + 250, + 255, + 254, + 255, + 249, + 254, + 255, + 255, + 251, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 253, + 255, + 255, + 254, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 247, + 247, + 255, + 255, + 46, + 41, + 70, + 255, + 60, + 51, + 71, + 255, + 186, + 175, + 74, + 255, + 190, + 161, + 60, + 255, + 182, + 146, + 28, + 255, + 203, + 173, + 23, + 255, + 202, + 171, + 8, + 255, + 204, + 173, + 4, + 255, + 207, + 175, + 2, + 255, + 204, + 182, + 0, + 255, + 207, + 175, + 28, + 255, + 204, + 153, + 53, + 255, + 189, + 145, + 84, + 255, + 189, + 148, + 85, + 255, + 216, + 190, + 4, + 255, + 222, + 187, + 7, + 255, + 221, + 192, + 0, + 255, + 222, + 190, + 8, + 255, + 224, + 191, + 15, + 255, + 207, + 156, + 94, + 255, + 198, + 151, + 114, + 255, + 193, + 152, + 135, + 255, + 191, + 147, + 103, + 255, + 225, + 200, + 56, + 255, + 110, + 103, + 93, + 255, + 220, + 213, + 207, + 255, + 212, + 204, + 193, + 255, + 196, + 150, + 136, + 255, + 194, + 158, + 118, + 255, + 202, + 182, + 78, + 255, + 221, + 201, + 0, + 255, + 211, + 163, + 106, + 255, + 208, + 152, + 121, + 255, + 187, + 158, + 133, + 255, + 157, + 138, + 97, + 255, + 224, + 199, + 74, + 255, + 230, + 194, + 19, + 255, + 218, + 193, + 47, + 255, + 218, + 200, + 74, + 255, + 217, + 203, + 88, + 255, + 125, + 121, + 103, + 255, + 207, + 199, + 193, + 255, + 221, + 210, + 208, + 255, + 224, + 211, + 207, + 255, + 222, + 211, + 207, + 255, + 221, + 212, + 207, + 255, + 223, + 215, + 210, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 223, + 216, + 210, + 255, + 220, + 215, + 209, + 255, + 223, + 214, + 209, + 255, + 223, + 205, + 203, + 255, + 164, + 140, + 140, + 255, + 134, + 118, + 118, + 255, + 223, + 217, + 213, + 255, + 217, + 215, + 210, + 255, + 220, + 215, + 211, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 213, + 206, + 200, + 255, + 130, + 115, + 113, + 255, + 120, + 89, + 85, + 255, + 198, + 157, + 129, + 255, + 198, + 153, + 124, + 255, + 201, + 147, + 121, + 255, + 198, + 151, + 125, + 255, + 190, + 155, + 90, + 255, + 218, + 193, + 68, + 255, + 126, + 103, + 34, + 255, + 64, + 72, + 51, + 255, + 44, + 48, + 75, + 255, + 34, + 38, + 75, + 255, + 28, + 36, + 82, + 255, + 30, + 36, + 78, + 255, + 29, + 35, + 85, + 255, + 28, + 38, + 71, + 255, + 30, + 36, + 63, + 255, + 22, + 28, + 80, + 255, + 5, + 17, + 73, + 255, + 27, + 20, + 73, + 255, + 20, + 21, + 66, + 255, + 20, + 18, + 71, + 255, + 23, + 17, + 70, + 255, + 24, + 18, + 64, + 255, + 18, + 18, + 68, + 255, + 17, + 18, + 66, + 255, + 18, + 19, + 65, + 255, + 18, + 19, + 65, + 255, + 16, + 19, + 63, + 255, + 15, + 18, + 62, + 255, + 15, + 16, + 61, + 255, + 15, + 16, + 61, + 255, + 14, + 17, + 60, + 255, + 15, + 17, + 58, + 255, + 17, + 16, + 57, + 255, + 18, + 16, + 55, + 255, + 16, + 16, + 58, + 255, + 16, + 17, + 57, + 255, + 16, + 17, + 55, + 255, + 15, + 16, + 53, + 255, + 13, + 20, + 57, + 255, + 19, + 22, + 57, + 255, + 17, + 16, + 47, + 255, + 18, + 15, + 44, + 255, + 16, + 15, + 46, + 255, + 17, + 16, + 47, + 255, + 19, + 18, + 49, + 255, + 20, + 19, + 50, + 255, + 18, + 20, + 45, + 255, + 17, + 17, + 41, + 255, + 20, + 19, + 40, + 255, + 24, + 22, + 42, + 255, + 29, + 28, + 44, + 255, + 38, + 37, + 53, + 255, + 45, + 44, + 60, + 255, + 60, + 59, + 75, + 255, + 90, + 89, + 97, + 255, + 152, + 151, + 155, + 255, + 163, + 163, + 163, + 255, + 153, + 154, + 150, + 255, + 160, + 154, + 147, + 255, + 155, + 149, + 142, + 255, + 158, + 152, + 145, + 255, + 151, + 145, + 138, + 255, + 152, + 151, + 145, + 255, + 153, + 152, + 146, + 255, + 153, + 152, + 146, + 255, + 151, + 150, + 144, + 255, + 150, + 150, + 141, + 255, + 149, + 149, + 140, + 255, + 148, + 148, + 139, + 255, + 150, + 150, + 141, + 255, + 150, + 149, + 143, + 255, + 147, + 146, + 140, + 255, + 150, + 149, + 143, + 255, + 149, + 148, + 142, + 255, + 152, + 148, + 145, + 255, + 153, + 149, + 146, + 255, + 151, + 147, + 144, + 255, + 152, + 148, + 145, + 255, + 155, + 146, + 142, + 255, + 158, + 149, + 145, + 255, + 159, + 150, + 146, + 255, + 164, + 155, + 151, + 255, + 154, + 145, + 140, + 255, + 106, + 97, + 105, + 255, + 39, + 36, + 57, + 255, + 16, + 20, + 49, + 255, + 14, + 17, + 31, + 255, + 5, + 19, + 30, + 255, + 11, + 10, + 27, + 255, + 10, + 10, + 28, + 255, + 8, + 10, + 24, + 255, + 7, + 8, + 26, + 255, + 6, + 8, + 21, + 255, + 5, + 8, + 14, + 255, + 6, + 5, + 20, + 255, + 6, + 5, + 23, + 255, + 6, + 5, + 18, + 255, + 6, + 7, + 11, + 255, + 6, + 6, + 14, + 255, + 6, + 6, + 14, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 9, + 9, + 19, + 255, + 13, + 14, + 32, + 255, + 12, + 14, + 30, + 255, + 14, + 16, + 30, + 255, + 9, + 11, + 24, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 4, + 7, + 32, + 255, + 14, + 17, + 51, + 255, + 2, + 0, + 5, + 255, + 0, + 0, + 3, + 255, + 2, + 6, + 15, + 255, + 9, + 14, + 44, + 255, + 0, + 3, + 20, + 255, + 1, + 0, + 14, + 255, + 1, + 14, + 32, + 255, + 0, + 74, + 136, + 255, + 2, + 148, + 242, + 255, + 3, + 149, + 242, + 255, + 2, + 148, + 239, + 255, + 3, + 150, + 238, + 255, + 14, + 154, + 246, + 255, + 72, + 164, + 230, + 255, + 249, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 254, + 252, + 248, + 255, + 255, + 255, + 253, + 255, + 249, + 249, + 248, + 255, + 251, + 252, + 254, + 255, + 250, + 253, + 255, + 255, + 251, + 254, + 255, + 255, + 251, + 254, + 255, + 255, + 251, + 254, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 253, + 255, + 252, + 252, + 249, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 166, + 172, + 197, + 255, + 123, + 134, + 183, + 255, + 120, + 130, + 183, + 255, + 114, + 123, + 174, + 255, + 112, + 120, + 166, + 255, + 116, + 125, + 159, + 255, + 131, + 140, + 173, + 255, + 211, + 217, + 223, + 255, + 254, + 251, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 252, + 252, + 255, + 253, + 253, + 251, + 255, + 120, + 118, + 128, + 255, + 95, + 101, + 108, + 255, + 91, + 97, + 105, + 255, + 95, + 95, + 106, + 255, + 93, + 97, + 106, + 255, + 97, + 98, + 113, + 255, + 112, + 112, + 122, + 255, + 219, + 221, + 219, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 253, + 255, + 252, + 255, + 246, + 255, + 102, + 102, + 120, + 255, + 64, + 56, + 59, + 255, + 153, + 138, + 44, + 255, + 188, + 149, + 71, + 255, + 176, + 150, + 23, + 255, + 199, + 167, + 13, + 255, + 197, + 165, + 31, + 255, + 193, + 158, + 46, + 255, + 187, + 147, + 32, + 255, + 175, + 143, + 43, + 255, + 171, + 144, + 63, + 255, + 123, + 103, + 38, + 255, + 130, + 110, + 37, + 255, + 112, + 92, + 2, + 255, + 131, + 105, + 21, + 255, + 210, + 185, + 21, + 255, + 212, + 190, + 0, + 255, + 220, + 186, + 26, + 255, + 210, + 171, + 49, + 255, + 201, + 160, + 72, + 255, + 195, + 145, + 137, + 255, + 190, + 149, + 110, + 255, + 191, + 153, + 123, + 255, + 193, + 150, + 133, + 255, + 219, + 185, + 58, + 255, + 195, + 153, + 122, + 255, + 131, + 107, + 98, + 255, + 156, + 142, + 157, + 255, + 189, + 158, + 111, + 255, + 139, + 112, + 33, + 255, + 216, + 184, + 20, + 255, + 226, + 195, + 0, + 255, + 201, + 163, + 98, + 255, + 199, + 148, + 110, + 255, + 191, + 159, + 125, + 255, + 105, + 78, + 57, + 255, + 114, + 93, + 64, + 255, + 155, + 131, + 58, + 255, + 236, + 201, + 46, + 255, + 218, + 192, + 64, + 255, + 140, + 133, + 62, + 255, + 226, + 215, + 211, + 255, + 221, + 210, + 206, + 255, + 221, + 210, + 206, + 255, + 222, + 211, + 207, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 231, + 224, + 218, + 255, + 135, + 128, + 122, + 255, + 155, + 142, + 139, + 255, + 161, + 134, + 132, + 255, + 213, + 178, + 174, + 255, + 184, + 149, + 142, + 255, + 221, + 190, + 189, + 255, + 189, + 171, + 167, + 255, + 213, + 215, + 205, + 255, + 226, + 214, + 210, + 255, + 221, + 214, + 213, + 255, + 222, + 215, + 214, + 255, + 220, + 219, + 208, + 255, + 183, + 161, + 167, + 255, + 189, + 158, + 133, + 255, + 102, + 73, + 94, + 255, + 69, + 55, + 63, + 255, + 184, + 159, + 138, + 255, + 189, + 146, + 118, + 255, + 207, + 155, + 106, + 255, + 206, + 151, + 123, + 255, + 203, + 163, + 103, + 255, + 216, + 177, + 58, + 255, + 161, + 139, + 57, + 255, + 51, + 43, + 56, + 255, + 40, + 49, + 69, + 255, + 28, + 36, + 77, + 255, + 27, + 34, + 76, + 255, + 35, + 39, + 84, + 255, + 28, + 31, + 77, + 255, + 25, + 25, + 75, + 255, + 21, + 21, + 71, + 255, + 20, + 20, + 70, + 255, + 20, + 20, + 70, + 255, + 22, + 20, + 70, + 255, + 21, + 19, + 69, + 255, + 20, + 18, + 68, + 255, + 20, + 18, + 68, + 255, + 20, + 18, + 67, + 255, + 20, + 18, + 67, + 255, + 19, + 17, + 66, + 255, + 18, + 16, + 65, + 255, + 16, + 17, + 61, + 255, + 16, + 17, + 61, + 255, + 15, + 16, + 60, + 255, + 14, + 15, + 59, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 61, + 255, + 17, + 16, + 60, + 255, + 17, + 16, + 59, + 255, + 16, + 18, + 57, + 255, + 15, + 17, + 58, + 255, + 15, + 17, + 59, + 255, + 14, + 15, + 58, + 255, + 16, + 15, + 55, + 255, + 17, + 21, + 56, + 255, + 20, + 22, + 54, + 255, + 21, + 16, + 48, + 255, + 25, + 24, + 55, + 255, + 34, + 22, + 55, + 255, + 29, + 28, + 53, + 255, + 35, + 24, + 48, + 255, + 32, + 24, + 45, + 255, + 35, + 26, + 55, + 255, + 25, + 19, + 48, + 255, + 34, + 29, + 52, + 255, + 54, + 54, + 69, + 255, + 59, + 58, + 67, + 255, + 149, + 147, + 149, + 255, + 162, + 161, + 158, + 255, + 165, + 157, + 150, + 255, + 164, + 158, + 150, + 255, + 161, + 157, + 148, + 255, + 157, + 154, + 145, + 255, + 158, + 158, + 152, + 255, + 156, + 154, + 149, + 255, + 153, + 150, + 145, + 255, + 156, + 151, + 147, + 255, + 154, + 149, + 145, + 255, + 158, + 150, + 147, + 255, + 154, + 140, + 139, + 255, + 149, + 132, + 132, + 255, + 148, + 123, + 126, + 255, + 145, + 119, + 122, + 255, + 145, + 116, + 120, + 255, + 141, + 112, + 116, + 255, + 144, + 109, + 115, + 255, + 144, + 109, + 115, + 255, + 145, + 110, + 116, + 255, + 144, + 109, + 115, + 255, + 147, + 108, + 113, + 255, + 147, + 108, + 113, + 255, + 148, + 109, + 114, + 255, + 148, + 109, + 114, + 255, + 148, + 107, + 113, + 255, + 148, + 107, + 113, + 255, + 149, + 108, + 114, + 255, + 149, + 108, + 114, + 255, + 153, + 106, + 113, + 255, + 154, + 104, + 112, + 255, + 82, + 49, + 65, + 255, + 39, + 30, + 57, + 255, + 17, + 14, + 29, + 255, + 13, + 13, + 23, + 255, + 1, + 9, + 29, + 255, + 11, + 9, + 30, + 255, + 12, + 17, + 31, + 255, + 15, + 9, + 30, + 255, + 19, + 4, + 16, + 255, + 0, + 8, + 23, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 22, + 22, + 32, + 255, + 11, + 11, + 21, + 255, + 7, + 7, + 15, + 255, + 7, + 7, + 16, + 255, + 7, + 7, + 18, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 17, + 255, + 8, + 9, + 15, + 255, + 8, + 8, + 19, + 255, + 10, + 9, + 27, + 255, + 9, + 12, + 22, + 255, + 9, + 10, + 27, + 255, + 13, + 14, + 33, + 255, + 9, + 11, + 27, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 5, + 6, + 255, + 0, + 2, + 5, + 255, + 1, + 2, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 41, + 255, + 1, + 0, + 14, + 255, + 1, + 3, + 17, + 255, + 0, + 25, + 52, + 255, + 27, + 127, + 206, + 255, + 1, + 138, + 240, + 255, + 2, + 140, + 239, + 255, + 3, + 141, + 238, + 255, + 4, + 142, + 239, + 255, + 25, + 152, + 241, + 255, + 117, + 187, + 238, + 255, + 251, + 255, + 255, + 255, + 251, + 252, + 252, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 203, + 212, + 235, + 255, + 136, + 148, + 199, + 255, + 125, + 139, + 213, + 255, + 102, + 120, + 202, + 255, + 105, + 123, + 206, + 255, + 103, + 120, + 206, + 255, + 104, + 121, + 208, + 255, + 121, + 136, + 213, + 255, + 135, + 147, + 204, + 255, + 195, + 205, + 232, + 255, + 248, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 249, + 255, + 248, + 255, + 255, + 255, + 130, + 143, + 203, + 255, + 80, + 105, + 187, + 255, + 75, + 98, + 183, + 255, + 68, + 90, + 171, + 255, + 64, + 85, + 160, + 255, + 74, + 90, + 168, + 255, + 111, + 123, + 179, + 255, + 243, + 248, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 250, + 249, + 254, + 255, + 73, + 70, + 98, + 255, + 44, + 45, + 72, + 255, + 44, + 47, + 73, + 255, + 47, + 50, + 74, + 255, + 47, + 56, + 78, + 255, + 56, + 64, + 92, + 255, + 90, + 97, + 115, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 255, + 246, + 255, + 254, + 255, + 255, + 255, + 53, + 50, + 69, + 255, + 167, + 150, + 62, + 255, + 164, + 136, + 55, + 255, + 173, + 134, + 61, + 255, + 169, + 131, + 76, + 255, + 172, + 131, + 84, + 255, + 172, + 132, + 99, + 255, + 174, + 131, + 115, + 255, + 177, + 130, + 112, + 255, + 98, + 73, + 60, + 255, + 89, + 66, + 32, + 255, + 196, + 173, + 97, + 255, + 194, + 167, + 77, + 255, + 198, + 171, + 74, + 255, + 171, + 152, + 75, + 255, + 103, + 85, + 29, + 255, + 176, + 155, + 50, + 255, + 132, + 100, + 15, + 255, + 186, + 147, + 106, + 255, + 187, + 148, + 104, + 255, + 188, + 149, + 101, + 255, + 197, + 145, + 123, + 255, + 195, + 149, + 89, + 255, + 213, + 172, + 84, + 255, + 196, + 143, + 108, + 255, + 203, + 142, + 122, + 255, + 191, + 153, + 113, + 255, + 166, + 146, + 109, + 255, + 129, + 100, + 51, + 255, + 217, + 194, + 12, + 255, + 212, + 179, + 0, + 255, + 230, + 192, + 14, + 255, + 204, + 161, + 92, + 255, + 199, + 151, + 105, + 255, + 185, + 157, + 136, + 255, + 136, + 105, + 59, + 255, + 182, + 154, + 131, + 255, + 221, + 205, + 199, + 255, + 218, + 210, + 189, + 255, + 218, + 211, + 200, + 255, + 216, + 207, + 218, + 255, + 225, + 216, + 211, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 223, + 214, + 209, + 255, + 222, + 215, + 209, + 255, + 223, + 216, + 210, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 225, + 218, + 212, + 255, + 226, + 219, + 213, + 255, + 227, + 212, + 209, + 255, + 183, + 155, + 154, + 255, + 220, + 181, + 181, + 255, + 231, + 187, + 186, + 255, + 238, + 192, + 186, + 255, + 211, + 181, + 175, + 255, + 222, + 219, + 210, + 255, + 218, + 209, + 205, + 255, + 222, + 216, + 209, + 255, + 219, + 211, + 205, + 255, + 221, + 211, + 203, + 255, + 135, + 99, + 94, + 255, + 197, + 152, + 123, + 255, + 151, + 126, + 95, + 255, + 54, + 48, + 85, + 255, + 67, + 54, + 90, + 255, + 67, + 57, + 55, + 255, + 97, + 79, + 60, + 255, + 134, + 109, + 106, + 255, + 129, + 111, + 88, + 255, + 106, + 92, + 55, + 255, + 64, + 62, + 10, + 255, + 55, + 56, + 61, + 255, + 39, + 43, + 78, + 255, + 29, + 37, + 74, + 255, + 27, + 33, + 75, + 255, + 25, + 27, + 76, + 255, + 20, + 21, + 74, + 255, + 21, + 21, + 71, + 255, + 19, + 19, + 69, + 255, + 19, + 19, + 69, + 255, + 19, + 19, + 69, + 255, + 20, + 18, + 67, + 255, + 19, + 17, + 66, + 255, + 19, + 17, + 66, + 255, + 19, + 17, + 66, + 255, + 19, + 17, + 64, + 255, + 19, + 17, + 64, + 255, + 18, + 16, + 63, + 255, + 17, + 15, + 62, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 15, + 16, + 60, + 255, + 14, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 14, + 60, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 63, + 255, + 17, + 16, + 56, + 255, + 15, + 15, + 51, + 255, + 16, + 17, + 49, + 255, + 15, + 16, + 46, + 255, + 13, + 13, + 46, + 255, + 13, + 16, + 46, + 255, + 21, + 21, + 50, + 255, + 43, + 38, + 69, + 255, + 59, + 43, + 63, + 255, + 68, + 39, + 61, + 255, + 59, + 42, + 60, + 255, + 64, + 44, + 63, + 255, + 67, + 49, + 61, + 255, + 55, + 41, + 56, + 255, + 46, + 38, + 52, + 255, + 166, + 163, + 174, + 255, + 176, + 165, + 164, + 255, + 177, + 163, + 159, + 255, + 172, + 153, + 146, + 255, + 179, + 158, + 148, + 255, + 169, + 158, + 154, + 255, + 166, + 157, + 152, + 255, + 163, + 157, + 151, + 255, + 163, + 157, + 151, + 255, + 165, + 148, + 149, + 255, + 156, + 135, + 138, + 255, + 151, + 123, + 128, + 255, + 148, + 117, + 123, + 255, + 149, + 114, + 121, + 255, + 151, + 112, + 121, + 255, + 154, + 111, + 121, + 255, + 153, + 108, + 119, + 255, + 151, + 107, + 117, + 255, + 151, + 105, + 116, + 255, + 150, + 102, + 114, + 255, + 151, + 102, + 114, + 255, + 147, + 104, + 114, + 255, + 147, + 104, + 114, + 255, + 148, + 105, + 115, + 255, + 147, + 104, + 114, + 255, + 151, + 105, + 115, + 255, + 151, + 105, + 115, + 255, + 150, + 104, + 114, + 255, + 150, + 104, + 114, + 255, + 153, + 104, + 115, + 255, + 153, + 104, + 115, + 255, + 154, + 105, + 116, + 255, + 154, + 105, + 116, + 255, + 156, + 104, + 115, + 255, + 160, + 104, + 113, + 255, + 152, + 111, + 120, + 255, + 37, + 15, + 29, + 255, + 20, + 18, + 38, + 255, + 17, + 20, + 38, + 255, + 40, + 56, + 75, + 255, + 17, + 45, + 72, + 255, + 47, + 89, + 126, + 255, + 1, + 21, + 58, + 255, + 15, + 9, + 27, + 255, + 4, + 8, + 21, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 4, + 4, + 14, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 16, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 19, + 255, + 8, + 7, + 21, + 255, + 7, + 6, + 23, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 19, + 255, + 9, + 8, + 22, + 255, + 8, + 10, + 22, + 255, + 10, + 11, + 29, + 255, + 13, + 14, + 32, + 255, + 9, + 11, + 25, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 2, + 2, + 1, + 255, + 3, + 0, + 7, + 255, + 0, + 6, + 18, + 255, + 0, + 28, + 67, + 255, + 11, + 129, + 235, + 255, + 4, + 131, + 242, + 255, + 5, + 133, + 241, + 255, + 6, + 134, + 240, + 255, + 7, + 135, + 240, + 255, + 43, + 154, + 241, + 255, + 175, + 217, + 246, + 255, + 255, + 255, + 251, + 255, + 253, + 255, + 255, + 255, + 251, + 253, + 248, + 255, + 251, + 255, + 255, + 255, + 248, + 255, + 255, + 255, + 136, + 143, + 178, + 255, + 113, + 126, + 207, + 255, + 86, + 102, + 188, + 255, + 75, + 95, + 190, + 255, + 65, + 88, + 190, + 255, + 61, + 87, + 189, + 255, + 61, + 87, + 190, + 255, + 61, + 87, + 192, + 255, + 63, + 89, + 195, + 255, + 68, + 93, + 196, + 255, + 78, + 98, + 203, + 255, + 92, + 108, + 204, + 255, + 119, + 134, + 217, + 255, + 220, + 229, + 252, + 255, + 248, + 249, + 250, + 255, + 255, + 255, + 246, + 255, + 253, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 184, + 197, + 222, + 255, + 101, + 120, + 198, + 255, + 66, + 81, + 180, + 255, + 63, + 77, + 177, + 255, + 57, + 69, + 163, + 255, + 54, + 67, + 153, + 255, + 56, + 77, + 150, + 255, + 115, + 127, + 167, + 255, + 250, + 255, + 250, + 255, + 255, + 255, + 247, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 138, + 136, + 149, + 255, + 42, + 47, + 71, + 255, + 23, + 28, + 56, + 255, + 27, + 38, + 68, + 255, + 24, + 40, + 72, + 255, + 29, + 50, + 95, + 255, + 54, + 75, + 121, + 255, + 102, + 115, + 140, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 250, + 255, + 251, + 248, + 255, + 255, + 58, + 50, + 28, + 255, + 147, + 120, + 42, + 255, + 169, + 139, + 102, + 255, + 158, + 131, + 122, + 255, + 141, + 120, + 92, + 255, + 108, + 85, + 75, + 255, + 104, + 84, + 77, + 255, + 116, + 96, + 89, + 255, + 144, + 120, + 108, + 255, + 162, + 145, + 127, + 255, + 172, + 149, + 123, + 255, + 175, + 143, + 109, + 255, + 155, + 120, + 88, + 255, + 129, + 90, + 47, + 255, + 135, + 107, + 27, + 255, + 151, + 129, + 38, + 255, + 167, + 142, + 56, + 255, + 124, + 104, + 0, + 255, + 195, + 176, + 64, + 255, + 204, + 187, + 73, + 255, + 129, + 104, + 35, + 255, + 171, + 137, + 67, + 255, + 199, + 162, + 103, + 255, + 191, + 157, + 82, + 255, + 193, + 156, + 139, + 255, + 184, + 157, + 120, + 255, + 156, + 119, + 90, + 255, + 154, + 128, + 50, + 255, + 223, + 196, + 3, + 255, + 226, + 197, + 0, + 255, + 232, + 194, + 18, + 255, + 230, + 195, + 9, + 255, + 204, + 159, + 99, + 255, + 198, + 152, + 100, + 255, + 158, + 134, + 123, + 255, + 126, + 99, + 35, + 255, + 191, + 152, + 126, + 255, + 158, + 134, + 132, + 255, + 219, + 213, + 217, + 255, + 217, + 214, + 214, + 255, + 226, + 212, + 204, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 223, + 216, + 210, + 255, + 223, + 216, + 210, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 217, + 217, + 209, + 255, + 218, + 212, + 204, + 255, + 197, + 182, + 177, + 255, + 220, + 198, + 194, + 255, + 227, + 181, + 174, + 255, + 213, + 180, + 173, + 255, + 216, + 212, + 202, + 255, + 221, + 215, + 210, + 255, + 219, + 212, + 202, + 255, + 215, + 209, + 200, + 255, + 148, + 135, + 137, + 255, + 193, + 149, + 130, + 255, + 210, + 154, + 130, + 255, + 184, + 165, + 88, + 255, + 47, + 51, + 81, + 255, + 34, + 41, + 69, + 255, + 31, + 41, + 85, + 255, + 40, + 44, + 79, + 255, + 47, + 48, + 86, + 255, + 46, + 48, + 82, + 255, + 41, + 48, + 82, + 255, + 40, + 46, + 78, + 255, + 34, + 38, + 76, + 255, + 31, + 35, + 74, + 255, + 28, + 33, + 74, + 255, + 27, + 30, + 75, + 255, + 20, + 20, + 71, + 255, + 20, + 19, + 72, + 255, + 19, + 19, + 69, + 255, + 18, + 18, + 68, + 255, + 19, + 19, + 69, + 255, + 19, + 19, + 69, + 255, + 19, + 17, + 64, + 255, + 19, + 17, + 64, + 255, + 18, + 16, + 63, + 255, + 19, + 17, + 64, + 255, + 18, + 16, + 62, + 255, + 18, + 16, + 62, + 255, + 17, + 15, + 61, + 255, + 16, + 14, + 60, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 15, + 14, + 58, + 255, + 16, + 15, + 57, + 255, + 15, + 14, + 55, + 255, + 15, + 15, + 52, + 255, + 14, + 13, + 44, + 255, + 9, + 9, + 34, + 255, + 9, + 10, + 31, + 255, + 9, + 10, + 28, + 255, + 11, + 11, + 30, + 255, + 10, + 12, + 34, + 255, + 20, + 19, + 44, + 255, + 32, + 25, + 56, + 255, + 183, + 138, + 142, + 255, + 191, + 126, + 130, + 255, + 184, + 128, + 129, + 255, + 184, + 126, + 133, + 255, + 180, + 124, + 134, + 255, + 175, + 125, + 134, + 255, + 168, + 125, + 134, + 255, + 175, + 136, + 146, + 255, + 136, + 101, + 107, + 255, + 130, + 92, + 99, + 255, + 164, + 121, + 131, + 255, + 161, + 116, + 127, + 255, + 162, + 121, + 129, + 255, + 161, + 121, + 129, + 255, + 159, + 121, + 128, + 255, + 157, + 121, + 127, + 255, + 157, + 118, + 129, + 255, + 157, + 115, + 127, + 255, + 158, + 112, + 125, + 255, + 158, + 110, + 124, + 255, + 153, + 109, + 122, + 255, + 151, + 107, + 120, + 255, + 152, + 107, + 120, + 255, + 151, + 106, + 119, + 255, + 148, + 107, + 119, + 255, + 148, + 106, + 118, + 255, + 148, + 105, + 117, + 255, + 149, + 104, + 117, + 255, + 150, + 102, + 116, + 255, + 150, + 102, + 116, + 255, + 151, + 103, + 117, + 255, + 151, + 103, + 117, + 255, + 152, + 103, + 115, + 255, + 152, + 103, + 115, + 255, + 152, + 103, + 115, + 255, + 152, + 103, + 115, + 255, + 154, + 102, + 115, + 255, + 155, + 103, + 116, + 255, + 156, + 104, + 117, + 255, + 156, + 104, + 117, + 255, + 156, + 103, + 115, + 255, + 160, + 103, + 113, + 255, + 156, + 106, + 115, + 255, + 136, + 96, + 103, + 255, + 35, + 29, + 50, + 255, + 24, + 29, + 52, + 255, + 152, + 174, + 188, + 255, + 27, + 99, + 130, + 255, + 0, + 71, + 123, + 255, + 40, + 86, + 137, + 255, + 8, + 14, + 39, + 255, + 7, + 10, + 21, + 255, + 7, + 7, + 17, + 255, + 6, + 6, + 16, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 6, + 6, + 16, + 255, + 6, + 6, + 16, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 19, + 255, + 7, + 6, + 21, + 255, + 7, + 6, + 22, + 255, + 7, + 8, + 28, + 255, + 13, + 14, + 33, + 255, + 8, + 10, + 25, + 255, + 7, + 9, + 21, + 255, + 8, + 10, + 25, + 255, + 10, + 11, + 30, + 255, + 13, + 15, + 31, + 255, + 8, + 10, + 22, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 2, + 0, + 6, + 255, + 2, + 0, + 7, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 7, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 11, + 255, + 0, + 1, + 2, + 255, + 0, + 13, + 23, + 255, + 4, + 50, + 99, + 255, + 0, + 120, + 244, + 255, + 3, + 123, + 238, + 255, + 4, + 124, + 238, + 255, + 5, + 125, + 237, + 255, + 10, + 130, + 241, + 255, + 53, + 153, + 239, + 255, + 231, + 254, + 255, + 255, + 255, + 255, + 246, + 255, + 253, + 255, + 255, + 255, + 249, + 250, + 251, + 255, + 192, + 199, + 219, + 255, + 96, + 109, + 171, + 255, + 73, + 87, + 186, + 255, + 81, + 105, + 195, + 255, + 55, + 79, + 172, + 255, + 54, + 78, + 176, + 255, + 53, + 76, + 179, + 255, + 57, + 79, + 181, + 255, + 57, + 79, + 183, + 255, + 58, + 79, + 186, + 255, + 60, + 81, + 188, + 255, + 58, + 83, + 184, + 255, + 58, + 81, + 193, + 255, + 64, + 88, + 194, + 255, + 76, + 100, + 195, + 255, + 104, + 121, + 201, + 255, + 195, + 199, + 234, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 251, + 255, + 253, + 255, + 255, + 255, + 143, + 155, + 188, + 255, + 91, + 110, + 186, + 255, + 65, + 87, + 167, + 255, + 62, + 82, + 162, + 255, + 58, + 77, + 151, + 255, + 58, + 79, + 142, + 255, + 79, + 96, + 158, + 255, + 139, + 147, + 177, + 255, + 253, + 255, + 252, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 252, + 252, + 254, + 255, + 106, + 103, + 120, + 255, + 44, + 56, + 88, + 255, + 40, + 50, + 93, + 255, + 48, + 64, + 116, + 255, + 48, + 73, + 130, + 255, + 53, + 86, + 148, + 255, + 70, + 100, + 159, + 255, + 128, + 142, + 171, + 255, + 255, + 254, + 248, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 251, + 241, + 255, + 255, + 141, + 130, + 57, + 255, + 160, + 128, + 115, + 255, + 60, + 39, + 43, + 255, + 38, + 30, + 68, + 255, + 37, + 31, + 68, + 255, + 33, + 26, + 59, + 255, + 28, + 26, + 56, + 255, + 34, + 33, + 56, + 255, + 35, + 31, + 48, + 255, + 56, + 53, + 71, + 255, + 92, + 84, + 100, + 255, + 205, + 198, + 189, + 255, + 190, + 193, + 158, + 255, + 202, + 180, + 42, + 255, + 211, + 181, + 0, + 255, + 218, + 175, + 31, + 255, + 211, + 183, + 32, + 255, + 212, + 177, + 0, + 255, + 220, + 187, + 14, + 255, + 224, + 195, + 22, + 255, + 215, + 190, + 10, + 255, + 215, + 191, + 6, + 255, + 224, + 192, + 31, + 255, + 224, + 194, + 35, + 255, + 219, + 200, + 26, + 255, + 228, + 203, + 41, + 255, + 220, + 187, + 6, + 255, + 231, + 207, + 6, + 255, + 228, + 193, + 10, + 255, + 229, + 193, + 12, + 255, + 227, + 197, + 0, + 255, + 221, + 182, + 72, + 255, + 197, + 151, + 116, + 255, + 201, + 156, + 99, + 255, + 87, + 69, + 66, + 255, + 152, + 131, + 38, + 255, + 199, + 152, + 108, + 255, + 140, + 105, + 91, + 255, + 225, + 199, + 199, + 255, + 227, + 214, + 215, + 255, + 218, + 215, + 206, + 255, + 220, + 215, + 209, + 255, + 220, + 215, + 209, + 255, + 220, + 215, + 209, + 255, + 220, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 222, + 215, + 209, + 255, + 221, + 214, + 208, + 255, + 226, + 212, + 207, + 255, + 222, + 215, + 209, + 255, + 217, + 209, + 204, + 255, + 224, + 211, + 209, + 255, + 151, + 137, + 130, + 255, + 155, + 137, + 133, + 255, + 220, + 218, + 210, + 255, + 218, + 210, + 205, + 255, + 220, + 211, + 205, + 255, + 189, + 188, + 180, + 255, + 99, + 91, + 104, + 255, + 194, + 158, + 128, + 255, + 199, + 154, + 117, + 255, + 128, + 113, + 50, + 255, + 38, + 40, + 98, + 255, + 28, + 29, + 81, + 255, + 29, + 26, + 80, + 255, + 27, + 29, + 78, + 255, + 26, + 34, + 71, + 255, + 27, + 35, + 83, + 255, + 28, + 34, + 72, + 255, + 29, + 36, + 69, + 255, + 29, + 39, + 67, + 255, + 22, + 28, + 77, + 255, + 15, + 16, + 70, + 255, + 20, + 20, + 71, + 255, + 20, + 19, + 67, + 255, + 20, + 18, + 64, + 255, + 19, + 19, + 69, + 255, + 18, + 18, + 68, + 255, + 17, + 17, + 67, + 255, + 17, + 17, + 67, + 255, + 18, + 16, + 61, + 255, + 18, + 16, + 61, + 255, + 17, + 15, + 60, + 255, + 16, + 14, + 59, + 255, + 18, + 17, + 61, + 255, + 18, + 17, + 61, + 255, + 17, + 16, + 60, + 255, + 16, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 15, + 13, + 58, + 255, + 13, + 13, + 49, + 255, + 10, + 12, + 34, + 255, + 8, + 12, + 25, + 255, + 10, + 11, + 24, + 255, + 10, + 10, + 25, + 255, + 10, + 10, + 25, + 255, + 10, + 10, + 26, + 255, + 10, + 10, + 18, + 255, + 9, + 11, + 24, + 255, + 16, + 15, + 37, + 255, + 32, + 24, + 53, + 255, + 111, + 71, + 97, + 255, + 197, + 127, + 145, + 255, + 194, + 125, + 135, + 255, + 194, + 121, + 137, + 255, + 187, + 125, + 132, + 255, + 184, + 124, + 125, + 255, + 188, + 127, + 133, + 255, + 176, + 114, + 126, + 255, + 177, + 121, + 125, + 255, + 173, + 121, + 126, + 255, + 174, + 124, + 132, + 255, + 159, + 112, + 121, + 255, + 164, + 115, + 127, + 255, + 164, + 115, + 127, + 255, + 161, + 115, + 126, + 255, + 159, + 114, + 125, + 255, + 163, + 111, + 126, + 255, + 159, + 110, + 124, + 255, + 155, + 110, + 123, + 255, + 152, + 110, + 122, + 255, + 161, + 106, + 122, + 255, + 159, + 104, + 120, + 255, + 157, + 104, + 120, + 255, + 156, + 103, + 119, + 255, + 154, + 105, + 119, + 255, + 154, + 103, + 118, + 255, + 154, + 101, + 117, + 255, + 154, + 101, + 117, + 255, + 151, + 105, + 118, + 255, + 151, + 105, + 118, + 255, + 150, + 104, + 117, + 255, + 150, + 104, + 117, + 255, + 149, + 104, + 117, + 255, + 149, + 104, + 117, + 255, + 149, + 104, + 117, + 255, + 149, + 104, + 117, + 255, + 151, + 105, + 118, + 255, + 152, + 106, + 119, + 255, + 152, + 106, + 119, + 255, + 152, + 106, + 119, + 255, + 152, + 104, + 116, + 255, + 156, + 104, + 118, + 255, + 154, + 102, + 117, + 255, + 158, + 108, + 123, + 255, + 40, + 26, + 45, + 255, + 33, + 32, + 56, + 255, + 150, + 173, + 179, + 255, + 37, + 142, + 172, + 255, + 46, + 125, + 169, + 255, + 20, + 72, + 121, + 255, + 6, + 18, + 44, + 255, + 4, + 9, + 22, + 255, + 7, + 7, + 17, + 255, + 6, + 6, + 16, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 7, + 7, + 17, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 18, + 255, + 9, + 9, + 21, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 24, + 255, + 9, + 8, + 25, + 255, + 6, + 10, + 22, + 255, + 11, + 13, + 35, + 255, + 5, + 7, + 31, + 255, + 8, + 11, + 30, + 255, + 8, + 9, + 27, + 255, + 12, + 13, + 33, + 255, + 10, + 12, + 27, + 255, + 8, + 11, + 19, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 0, + 1, + 3, + 255, + 0, + 2, + 2, + 255, + 35, + 33, + 72, + 255, + 2, + 5, + 15, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 18, + 255, + 6, + 6, + 8, + 255, + 0, + 2, + 4, + 255, + 7, + 13, + 29, + 255, + 0, + 75, + 160, + 255, + 1, + 113, + 238, + 255, + 2, + 116, + 240, + 255, + 5, + 117, + 234, + 255, + 8, + 117, + 244, + 255, + 15, + 128, + 239, + 255, + 89, + 159, + 229, + 255, + 248, + 255, + 255, + 255, + 255, + 255, + 246, + 255, + 250, + 255, + 255, + 255, + 156, + 166, + 192, + 255, + 92, + 105, + 177, + 255, + 61, + 77, + 161, + 255, + 55, + 68, + 160, + 255, + 53, + 70, + 165, + 255, + 52, + 70, + 170, + 255, + 51, + 71, + 174, + 255, + 52, + 75, + 172, + 255, + 58, + 81, + 182, + 255, + 51, + 74, + 177, + 255, + 55, + 75, + 179, + 255, + 56, + 76, + 179, + 255, + 54, + 78, + 177, + 255, + 59, + 82, + 188, + 255, + 57, + 80, + 186, + 255, + 59, + 82, + 186, + 255, + 73, + 94, + 192, + 255, + 111, + 127, + 203, + 255, + 242, + 253, + 255, + 255, + 251, + 250, + 248, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 247, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 254, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 254, + 252, + 249, + 255, + 252, + 252, + 249, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 254, + 255, + 248, + 255, + 255, + 255, + 249, + 255, + 253, + 252, + 248, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 159, + 164, + 202, + 255, + 125, + 137, + 188, + 255, + 115, + 128, + 181, + 255, + 111, + 123, + 173, + 255, + 108, + 119, + 167, + 255, + 110, + 120, + 166, + 255, + 122, + 133, + 171, + 255, + 225, + 229, + 240, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 252, + 252, + 250, + 255, + 254, + 254, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 126, + 127, + 140, + 255, + 92, + 107, + 135, + 255, + 92, + 108, + 141, + 255, + 97, + 116, + 156, + 255, + 99, + 122, + 166, + 255, + 103, + 122, + 165, + 255, + 120, + 143, + 186, + 255, + 228, + 234, + 248, + 255, + 252, + 255, + 253, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 253, + 255, + 255, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 249, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 246, + 255, + 253, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 250, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 254, + 253, + 255, + 252, + 254, + 252, + 255, + 251, + 253, + 249, + 255, + 251, + 251, + 250, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 69, + 59, + 69, + 255, + 93, + 78, + 58, + 255, + 40, + 35, + 54, + 255, + 23, + 19, + 44, + 255, + 20, + 18, + 50, + 255, + 18, + 18, + 46, + 255, + 17, + 15, + 54, + 255, + 18, + 16, + 56, + 255, + 21, + 20, + 53, + 255, + 30, + 30, + 55, + 255, + 62, + 68, + 66, + 255, + 197, + 187, + 186, + 255, + 198, + 195, + 159, + 255, + 206, + 192, + 162, + 255, + 208, + 189, + 121, + 255, + 203, + 179, + 47, + 255, + 134, + 119, + 2, + 255, + 224, + 203, + 112, + 255, + 217, + 188, + 0, + 255, + 222, + 185, + 1, + 255, + 224, + 185, + 3, + 255, + 222, + 188, + 4, + 255, + 228, + 190, + 10, + 255, + 226, + 190, + 0, + 255, + 230, + 192, + 3, + 255, + 231, + 191, + 9, + 255, + 221, + 185, + 9, + 255, + 224, + 189, + 0, + 255, + 229, + 192, + 14, + 255, + 227, + 196, + 0, + 255, + 228, + 195, + 3, + 255, + 217, + 191, + 46, + 255, + 194, + 155, + 99, + 255, + 205, + 150, + 127, + 255, + 199, + 174, + 151, + 255, + 141, + 139, + 115, + 255, + 229, + 194, + 42, + 255, + 205, + 156, + 105, + 255, + 140, + 109, + 88, + 255, + 198, + 180, + 177, + 255, + 220, + 214, + 199, + 255, + 215, + 215, + 198, + 255, + 214, + 215, + 207, + 255, + 219, + 216, + 210, + 255, + 221, + 213, + 211, + 255, + 222, + 212, + 212, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 220, + 212, + 209, + 255, + 218, + 210, + 207, + 255, + 224, + 218, + 214, + 255, + 216, + 215, + 211, + 255, + 217, + 215, + 209, + 255, + 224, + 215, + 209, + 255, + 217, + 210, + 207, + 255, + 84, + 90, + 114, + 255, + 63, + 67, + 97, + 255, + 163, + 134, + 131, + 255, + 199, + 156, + 96, + 255, + 65, + 68, + 43, + 255, + 37, + 42, + 71, + 255, + 28, + 35, + 60, + 255, + 26, + 30, + 74, + 255, + 22, + 26, + 70, + 255, + 23, + 27, + 71, + 255, + 29, + 33, + 77, + 255, + 26, + 34, + 73, + 255, + 30, + 35, + 78, + 255, + 24, + 26, + 73, + 255, + 22, + 23, + 71, + 255, + 20, + 18, + 66, + 255, + 20, + 18, + 67, + 255, + 20, + 17, + 69, + 255, + 20, + 17, + 70, + 255, + 20, + 18, + 68, + 255, + 19, + 17, + 67, + 255, + 19, + 17, + 67, + 255, + 19, + 17, + 67, + 255, + 19, + 18, + 62, + 255, + 17, + 16, + 60, + 255, + 17, + 16, + 60, + 255, + 17, + 16, + 60, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 12, + 17, + 57, + 255, + 13, + 15, + 62, + 255, + 15, + 16, + 62, + 255, + 15, + 16, + 57, + 255, + 16, + 12, + 46, + 255, + 12, + 10, + 33, + 255, + 11, + 9, + 29, + 255, + 11, + 9, + 32, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 26, + 255, + 14, + 13, + 31, + 255, + 22, + 21, + 39, + 255, + 56, + 33, + 62, + 255, + 191, + 125, + 135, + 255, + 193, + 126, + 132, + 255, + 185, + 128, + 128, + 255, + 187, + 125, + 132, + 255, + 185, + 124, + 131, + 255, + 183, + 124, + 130, + 255, + 179, + 122, + 128, + 255, + 178, + 121, + 128, + 255, + 176, + 119, + 126, + 255, + 174, + 117, + 124, + 255, + 173, + 116, + 123, + 255, + 169, + 116, + 126, + 255, + 167, + 115, + 126, + 255, + 164, + 113, + 126, + 255, + 162, + 112, + 124, + 255, + 160, + 112, + 124, + 255, + 159, + 111, + 123, + 255, + 159, + 111, + 123, + 255, + 158, + 110, + 122, + 255, + 159, + 108, + 123, + 255, + 158, + 107, + 122, + 255, + 156, + 105, + 120, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 153, + 102, + 117, + 255, + 154, + 103, + 118, + 255, + 154, + 103, + 118, + 255, + 151, + 104, + 118, + 255, + 151, + 104, + 118, + 255, + 150, + 103, + 117, + 255, + 150, + 103, + 117, + 255, + 150, + 103, + 117, + 255, + 150, + 103, + 117, + 255, + 150, + 103, + 117, + 255, + 151, + 104, + 118, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 157, + 104, + 116, + 255, + 156, + 104, + 117, + 255, + 157, + 107, + 118, + 255, + 157, + 107, + 116, + 255, + 44, + 25, + 45, + 255, + 23, + 36, + 62, + 255, + 67, + 124, + 158, + 255, + 33, + 118, + 157, + 255, + 31, + 75, + 134, + 255, + 41, + 70, + 120, + 255, + 3, + 16, + 47, + 255, + 8, + 10, + 24, + 255, + 9, + 7, + 19, + 255, + 9, + 7, + 21, + 255, + 6, + 5, + 22, + 255, + 7, + 8, + 26, + 255, + 7, + 6, + 22, + 255, + 7, + 7, + 18, + 255, + 7, + 7, + 19, + 255, + 8, + 7, + 24, + 255, + 9, + 9, + 20, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 24, + 255, + 10, + 9, + 27, + 255, + 13, + 14, + 35, + 255, + 26, + 27, + 48, + 255, + 5, + 5, + 29, + 255, + 9, + 9, + 35, + 255, + 12, + 14, + 38, + 255, + 16, + 17, + 37, + 255, + 9, + 10, + 23, + 255, + 9, + 9, + 18, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 0, + 1, + 0, + 255, + 0, + 2, + 0, + 255, + 0, + 0, + 17, + 255, + 2, + 4, + 8, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 10, + 255, + 5, + 1, + 28, + 255, + 3, + 0, + 17, + 255, + 0, + 4, + 5, + 255, + 4, + 21, + 54, + 255, + 23, + 106, + 210, + 255, + 11, + 115, + 248, + 255, + 3, + 108, + 236, + 255, + 3, + 110, + 232, + 255, + 7, + 110, + 238, + 255, + 28, + 129, + 237, + 255, + 123, + 169, + 227, + 255, + 253, + 255, + 249, + 255, + 255, + 255, + 251, + 255, + 165, + 169, + 204, + 255, + 81, + 95, + 156, + 255, + 49, + 65, + 152, + 255, + 44, + 64, + 146, + 255, + 45, + 66, + 153, + 255, + 48, + 65, + 155, + 255, + 50, + 67, + 163, + 255, + 49, + 66, + 165, + 255, + 50, + 69, + 165, + 255, + 55, + 70, + 172, + 255, + 56, + 72, + 170, + 255, + 54, + 71, + 169, + 255, + 55, + 72, + 172, + 255, + 51, + 72, + 171, + 255, + 54, + 74, + 179, + 255, + 55, + 75, + 181, + 255, + 56, + 76, + 180, + 255, + 58, + 81, + 184, + 255, + 85, + 101, + 205, + 255, + 132, + 142, + 195, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 254, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 244, + 255, + 250, + 255, + 254, + 255, + 247, + 250, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 254, + 252, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 252, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 251, + 249, + 255, + 255, + 251, + 253, + 255, + 255, + 247, + 252, + 255, + 255, + 244, + 254, + 255, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 250, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 250, + 253, + 254, + 255, + 250, + 253, + 255, + 255, + 251, + 254, + 255, + 255, + 244, + 249, + 255, + 255, + 243, + 251, + 255, + 255, + 251, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 251, + 255, + 252, + 255, + 255, + 255, + 247, + 254, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 250, + 251, + 254, + 255, + 249, + 250, + 252, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 251, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 252, + 252, + 251, + 255, + 244, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 249, + 253, + 255, + 255, + 255, + 251, + 255, + 255, + 250, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 254, + 247, + 255, + 246, + 253, + 248, + 255, + 254, + 255, + 254, + 255, + 250, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 254, + 255, + 255, + 250, + 255, + 255, + 255, + 255, + 252, + 248, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 248, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 252, + 255, + 254, + 255, + 253, + 255, + 254, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 251, + 253, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 250, + 252, + 255, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 248, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 254, + 255, + 42, + 40, + 68, + 255, + 41, + 37, + 69, + 255, + 27, + 23, + 55, + 255, + 14, + 10, + 44, + 255, + 15, + 13, + 49, + 255, + 13, + 12, + 46, + 255, + 14, + 12, + 49, + 255, + 15, + 13, + 50, + 255, + 18, + 17, + 47, + 255, + 36, + 37, + 58, + 255, + 188, + 179, + 114, + 255, + 207, + 193, + 124, + 255, + 197, + 193, + 158, + 255, + 170, + 160, + 124, + 255, + 160, + 146, + 48, + 255, + 215, + 188, + 47, + 255, + 208, + 181, + 13, + 255, + 215, + 179, + 0, + 255, + 218, + 182, + 9, + 255, + 221, + 186, + 0, + 255, + 220, + 187, + 0, + 255, + 221, + 190, + 11, + 255, + 216, + 186, + 12, + 255, + 221, + 189, + 33, + 255, + 223, + 190, + 16, + 255, + 226, + 194, + 15, + 255, + 214, + 189, + 11, + 255, + 222, + 192, + 32, + 255, + 227, + 187, + 63, + 255, + 225, + 181, + 64, + 255, + 210, + 165, + 75, + 255, + 205, + 154, + 106, + 255, + 192, + 151, + 111, + 255, + 159, + 132, + 99, + 255, + 132, + 111, + 80, + 255, + 213, + 196, + 38, + 255, + 216, + 194, + 23, + 255, + 206, + 154, + 129, + 255, + 108, + 90, + 71, + 255, + 66, + 54, + 75, + 255, + 175, + 174, + 183, + 255, + 221, + 225, + 219, + 255, + 219, + 217, + 209, + 255, + 220, + 216, + 208, + 255, + 222, + 213, + 206, + 255, + 223, + 213, + 206, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 208, + 255, + 223, + 213, + 211, + 255, + 221, + 215, + 207, + 255, + 221, + 216, + 205, + 255, + 222, + 215, + 205, + 255, + 121, + 122, + 133, + 255, + 60, + 65, + 95, + 255, + 48, + 51, + 83, + 255, + 81, + 54, + 53, + 255, + 205, + 186, + 66, + 255, + 60, + 60, + 79, + 255, + 31, + 33, + 72, + 255, + 24, + 28, + 71, + 255, + 27, + 31, + 69, + 255, + 30, + 34, + 72, + 255, + 30, + 34, + 72, + 255, + 29, + 33, + 71, + 255, + 27, + 33, + 68, + 255, + 24, + 28, + 66, + 255, + 16, + 18, + 58, + 255, + 22, + 23, + 63, + 255, + 18, + 17, + 58, + 255, + 21, + 20, + 62, + 255, + 19, + 18, + 61, + 255, + 19, + 17, + 63, + 255, + 19, + 18, + 61, + 255, + 18, + 17, + 60, + 255, + 18, + 17, + 60, + 255, + 16, + 15, + 58, + 255, + 15, + 14, + 58, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 13, + 16, + 57, + 255, + 14, + 16, + 59, + 255, + 15, + 15, + 55, + 255, + 12, + 12, + 46, + 255, + 11, + 9, + 32, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 25, + 255, + 11, + 10, + 25, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 26, + 255, + 13, + 12, + 30, + 255, + 17, + 16, + 34, + 255, + 42, + 29, + 55, + 255, + 171, + 123, + 137, + 255, + 196, + 127, + 132, + 255, + 192, + 126, + 132, + 255, + 189, + 125, + 133, + 255, + 187, + 125, + 132, + 255, + 184, + 124, + 131, + 255, + 182, + 123, + 129, + 255, + 179, + 122, + 129, + 255, + 177, + 120, + 127, + 255, + 175, + 118, + 125, + 255, + 174, + 117, + 124, + 255, + 172, + 116, + 125, + 255, + 170, + 116, + 126, + 255, + 167, + 115, + 127, + 255, + 164, + 113, + 126, + 255, + 163, + 113, + 125, + 255, + 162, + 112, + 124, + 255, + 161, + 111, + 123, + 255, + 160, + 110, + 122, + 255, + 159, + 108, + 123, + 255, + 158, + 107, + 122, + 255, + 158, + 107, + 122, + 255, + 157, + 106, + 121, + 255, + 157, + 106, + 121, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 152, + 104, + 118, + 255, + 153, + 105, + 119, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 153, + 105, + 117, + 255, + 156, + 104, + 116, + 255, + 158, + 106, + 118, + 255, + 158, + 106, + 120, + 255, + 41, + 27, + 46, + 255, + 21, + 27, + 52, + 255, + 59, + 88, + 123, + 255, + 19, + 61, + 102, + 255, + 29, + 55, + 115, + 255, + 34, + 51, + 103, + 255, + 6, + 12, + 45, + 255, + 11, + 10, + 26, + 255, + 10, + 8, + 21, + 255, + 9, + 8, + 24, + 255, + 10, + 11, + 31, + 255, + 13, + 14, + 36, + 255, + 9, + 7, + 27, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 25, + 255, + 11, + 9, + 30, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 6, + 7, + 27, + 255, + 12, + 13, + 34, + 255, + 10, + 10, + 33, + 255, + 14, + 14, + 38, + 255, + 14, + 16, + 39, + 255, + 12, + 13, + 32, + 255, + 11, + 11, + 26, + 255, + 11, + 11, + 22, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 6, + 255, + 1, + 1, + 1, + 255, + 1, + 4, + 12, + 255, + 0, + 31, + 88, + 255, + 11, + 100, + 227, + 255, + 2, + 95, + 231, + 255, + 6, + 101, + 236, + 255, + 4, + 104, + 233, + 255, + 11, + 104, + 234, + 255, + 41, + 128, + 232, + 255, + 197, + 223, + 255, + 255, + 255, + 255, + 248, + 255, + 216, + 221, + 240, + 255, + 88, + 99, + 164, + 255, + 50, + 67, + 144, + 255, + 44, + 58, + 146, + 255, + 41, + 60, + 138, + 255, + 40, + 62, + 148, + 255, + 45, + 61, + 146, + 255, + 46, + 62, + 150, + 255, + 53, + 67, + 154, + 255, + 62, + 76, + 156, + 255, + 73, + 91, + 171, + 255, + 69, + 91, + 165, + 255, + 65, + 88, + 168, + 255, + 59, + 83, + 172, + 255, + 53, + 71, + 163, + 255, + 54, + 71, + 170, + 255, + 54, + 70, + 170, + 255, + 55, + 72, + 168, + 255, + 56, + 78, + 171, + 255, + 71, + 87, + 180, + 255, + 115, + 125, + 188, + 255, + 248, + 254, + 255, + 255, + 252, + 250, + 255, + 255, + 169, + 176, + 212, + 255, + 136, + 145, + 201, + 255, + 127, + 133, + 190, + 255, + 126, + 136, + 195, + 255, + 126, + 136, + 198, + 255, + 127, + 137, + 196, + 255, + 147, + 159, + 207, + 255, + 177, + 179, + 205, + 255, + 252, + 255, + 238, + 255, + 249, + 254, + 255, + 255, + 143, + 153, + 203, + 255, + 134, + 143, + 210, + 255, + 163, + 167, + 218, + 255, + 252, + 255, + 251, + 255, + 255, + 255, + 250, + 255, + 251, + 255, + 248, + 255, + 250, + 255, + 255, + 255, + 247, + 255, + 255, + 255, + 148, + 155, + 193, + 255, + 115, + 130, + 195, + 255, + 106, + 122, + 198, + 255, + 94, + 113, + 195, + 255, + 91, + 114, + 194, + 255, + 98, + 112, + 190, + 255, + 113, + 124, + 189, + 255, + 137, + 145, + 184, + 255, + 233, + 240, + 255, + 255, + 247, + 250, + 255, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 253, + 247, + 255, + 248, + 251, + 250, + 255, + 250, + 255, + 255, + 255, + 157, + 165, + 188, + 255, + 123, + 131, + 179, + 255, + 109, + 118, + 176, + 255, + 99, + 109, + 171, + 255, + 95, + 105, + 168, + 255, + 96, + 106, + 176, + 255, + 109, + 117, + 175, + 255, + 136, + 143, + 177, + 255, + 241, + 248, + 255, + 255, + 247, + 247, + 254, + 255, + 250, + 251, + 247, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 204, + 209, + 224, + 255, + 133, + 137, + 186, + 255, + 117, + 122, + 172, + 255, + 103, + 115, + 161, + 255, + 102, + 113, + 157, + 255, + 102, + 111, + 152, + 255, + 119, + 128, + 168, + 255, + 175, + 175, + 200, + 255, + 254, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 235, + 238, + 240, + 255, + 151, + 158, + 176, + 255, + 122, + 129, + 150, + 255, + 106, + 112, + 138, + 255, + 100, + 105, + 136, + 255, + 86, + 90, + 126, + 255, + 81, + 86, + 119, + 255, + 81, + 86, + 115, + 255, + 84, + 90, + 117, + 255, + 96, + 100, + 120, + 255, + 107, + 110, + 126, + 255, + 124, + 125, + 138, + 255, + 254, + 254, + 255, + 255, + 248, + 248, + 249, + 255, + 252, + 252, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 254, + 252, + 255, + 254, + 255, + 255, + 255, + 161, + 164, + 171, + 255, + 100, + 104, + 117, + 255, + 88, + 93, + 100, + 255, + 88, + 91, + 105, + 255, + 89, + 92, + 110, + 255, + 96, + 98, + 122, + 255, + 123, + 122, + 148, + 255, + 251, + 253, + 255, + 255, + 252, + 254, + 255, + 255, + 111, + 110, + 135, + 255, + 74, + 74, + 111, + 255, + 58, + 58, + 93, + 255, + 59, + 60, + 90, + 255, + 74, + 75, + 104, + 255, + 104, + 109, + 124, + 255, + 246, + 249, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 180, + 191, + 204, + 255, + 112, + 141, + 174, + 255, + 97, + 148, + 187, + 255, + 92, + 165, + 193, + 255, + 95, + 174, + 197, + 255, + 105, + 174, + 198, + 255, + 125, + 174, + 203, + 255, + 174, + 194, + 210, + 255, + 254, + 249, + 247, + 255, + 249, + 255, + 255, + 255, + 128, + 177, + 206, + 255, + 105, + 169, + 195, + 255, + 113, + 172, + 195, + 255, + 127, + 171, + 188, + 255, + 127, + 175, + 190, + 255, + 120, + 184, + 202, + 255, + 129, + 188, + 196, + 255, + 240, + 251, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 253, + 255, + 255, + 255, + 110, + 119, + 151, + 255, + 74, + 75, + 113, + 255, + 64, + 66, + 96, + 255, + 65, + 67, + 99, + 255, + 67, + 68, + 108, + 255, + 71, + 74, + 116, + 255, + 101, + 101, + 147, + 255, + 252, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 247, + 251, + 242, + 255, + 245, + 249, + 255, + 255, + 68, + 72, + 101, + 255, + 68, + 72, + 111, + 255, + 42, + 43, + 81, + 255, + 37, + 39, + 69, + 255, + 31, + 34, + 62, + 255, + 33, + 34, + 71, + 255, + 66, + 69, + 105, + 255, + 38, + 40, + 82, + 255, + 51, + 54, + 91, + 255, + 139, + 143, + 171, + 255, + 250, + 255, + 255, + 255, + 252, + 255, + 253, + 255, + 248, + 249, + 243, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 248, + 255, + 255, + 255, + 249, + 255, + 24, + 24, + 57, + 255, + 23, + 28, + 69, + 255, + 18, + 17, + 57, + 255, + 14, + 14, + 51, + 255, + 13, + 12, + 45, + 255, + 15, + 12, + 47, + 255, + 13, + 12, + 45, + 255, + 14, + 13, + 46, + 255, + 20, + 20, + 46, + 255, + 42, + 43, + 61, + 255, + 193, + 170, + 5, + 255, + 201, + 177, + 8, + 255, + 165, + 139, + 81, + 255, + 205, + 179, + 51, + 255, + 209, + 177, + 0, + 255, + 214, + 175, + 3, + 255, + 203, + 181, + 1, + 255, + 211, + 183, + 0, + 255, + 215, + 177, + 4, + 255, + 207, + 171, + 32, + 255, + 195, + 159, + 57, + 255, + 136, + 94, + 43, + 255, + 125, + 95, + 52, + 255, + 165, + 132, + 100, + 255, + 182, + 147, + 117, + 255, + 192, + 158, + 122, + 255, + 197, + 158, + 115, + 255, + 194, + 151, + 109, + 255, + 196, + 154, + 86, + 255, + 205, + 162, + 86, + 255, + 208, + 180, + 43, + 255, + 205, + 170, + 54, + 255, + 205, + 172, + 75, + 255, + 131, + 109, + 15, + 255, + 225, + 194, + 11, + 255, + 236, + 190, + 0, + 255, + 213, + 162, + 83, + 255, + 193, + 148, + 124, + 255, + 45, + 38, + 47, + 255, + 32, + 28, + 69, + 255, + 37, + 38, + 68, + 255, + 46, + 47, + 68, + 255, + 78, + 78, + 88, + 255, + 210, + 207, + 213, + 255, + 220, + 216, + 215, + 255, + 223, + 217, + 212, + 255, + 219, + 212, + 206, + 255, + 224, + 217, + 211, + 255, + 220, + 213, + 207, + 255, + 221, + 214, + 208, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 222, + 215, + 207, + 255, + 222, + 215, + 207, + 255, + 221, + 213, + 208, + 255, + 222, + 215, + 204, + 255, + 211, + 207, + 199, + 255, + 201, + 201, + 202, + 255, + 53, + 59, + 90, + 255, + 35, + 39, + 77, + 255, + 31, + 36, + 74, + 255, + 93, + 81, + 94, + 255, + 148, + 135, + 169, + 255, + 16, + 19, + 53, + 255, + 23, + 19, + 61, + 255, + 18, + 20, + 61, + 255, + 20, + 22, + 61, + 255, + 19, + 21, + 60, + 255, + 17, + 19, + 58, + 255, + 16, + 18, + 57, + 255, + 13, + 17, + 55, + 255, + 12, + 14, + 51, + 255, + 15, + 15, + 51, + 255, + 14, + 13, + 49, + 255, + 14, + 14, + 50, + 255, + 14, + 14, + 51, + 255, + 12, + 11, + 51, + 255, + 12, + 11, + 51, + 255, + 15, + 14, + 56, + 255, + 14, + 13, + 55, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 16, + 57, + 255, + 15, + 16, + 55, + 255, + 13, + 13, + 43, + 255, + 8, + 9, + 29, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 10, + 20, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 26, + 255, + 11, + 10, + 28, + 255, + 14, + 13, + 31, + 255, + 21, + 17, + 39, + 255, + 52, + 32, + 57, + 255, + 187, + 121, + 124, + 255, + 190, + 121, + 132, + 255, + 191, + 125, + 134, + 255, + 189, + 124, + 132, + 255, + 187, + 124, + 132, + 255, + 185, + 124, + 131, + 255, + 180, + 123, + 130, + 255, + 178, + 121, + 128, + 255, + 177, + 120, + 127, + 255, + 176, + 119, + 126, + 255, + 174, + 117, + 124, + 255, + 172, + 116, + 125, + 255, + 170, + 116, + 126, + 255, + 167, + 114, + 124, + 255, + 164, + 112, + 125, + 255, + 163, + 111, + 124, + 255, + 163, + 111, + 124, + 255, + 162, + 110, + 123, + 255, + 160, + 110, + 122, + 255, + 159, + 109, + 121, + 255, + 159, + 109, + 121, + 255, + 158, + 108, + 120, + 255, + 157, + 106, + 121, + 255, + 156, + 105, + 120, + 255, + 156, + 105, + 120, + 255, + 156, + 105, + 120, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 155, + 104, + 119, + 255, + 154, + 103, + 118, + 255, + 154, + 103, + 118, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 153, + 107, + 119, + 255, + 158, + 105, + 115, + 255, + 156, + 105, + 119, + 255, + 156, + 113, + 133, + 255, + 31, + 20, + 43, + 255, + 15, + 16, + 39, + 255, + 11, + 15, + 43, + 255, + 15, + 14, + 47, + 255, + 5, + 14, + 38, + 255, + 9, + 15, + 39, + 255, + 9, + 12, + 28, + 255, + 7, + 9, + 16, + 255, + 11, + 10, + 24, + 255, + 9, + 10, + 29, + 255, + 18, + 20, + 45, + 255, + 8, + 10, + 40, + 255, + 11, + 11, + 37, + 255, + 10, + 11, + 32, + 255, + 27, + 27, + 50, + 255, + 11, + 11, + 38, + 255, + 11, + 11, + 34, + 255, + 11, + 12, + 33, + 255, + 11, + 12, + 32, + 255, + 9, + 10, + 30, + 255, + 8, + 9, + 27, + 255, + 9, + 10, + 29, + 255, + 10, + 11, + 32, + 255, + 8, + 9, + 30, + 255, + 11, + 14, + 33, + 255, + 16, + 17, + 35, + 255, + 11, + 11, + 27, + 255, + 10, + 9, + 24, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 0, + 255, + 1, + 0, + 5, + 255, + 1, + 2, + 0, + 255, + 4, + 6, + 22, + 255, + 2, + 44, + 119, + 255, + 1, + 97, + 234, + 255, + 9, + 98, + 228, + 255, + 6, + 95, + 233, + 255, + 3, + 98, + 232, + 255, + 15, + 102, + 234, + 255, + 59, + 137, + 239, + 255, + 241, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 99, + 112, + 155, + 255, + 58, + 78, + 156, + 255, + 38, + 55, + 123, + 255, + 43, + 53, + 131, + 255, + 40, + 53, + 129, + 255, + 42, + 59, + 150, + 255, + 45, + 62, + 144, + 255, + 50, + 65, + 146, + 255, + 77, + 91, + 163, + 255, + 105, + 120, + 178, + 255, + 177, + 182, + 214, + 255, + 198, + 207, + 237, + 255, + 140, + 151, + 195, + 255, + 102, + 113, + 175, + 255, + 69, + 85, + 168, + 255, + 55, + 70, + 160, + 255, + 56, + 71, + 162, + 255, + 65, + 81, + 168, + 255, + 80, + 97, + 176, + 255, + 109, + 126, + 186, + 255, + 161, + 169, + 217, + 255, + 250, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 123, + 137, + 185, + 255, + 70, + 92, + 179, + 255, + 61, + 82, + 175, + 255, + 65, + 83, + 174, + 255, + 65, + 82, + 179, + 255, + 68, + 86, + 177, + 255, + 92, + 112, + 189, + 255, + 239, + 242, + 255, + 255, + 191, + 194, + 217, + 255, + 105, + 112, + 191, + 255, + 73, + 101, + 174, + 255, + 83, + 98, + 179, + 255, + 142, + 152, + 197, + 255, + 251, + 255, + 242, + 255, + 255, + 251, + 255, + 255, + 251, + 254, + 255, + 255, + 139, + 145, + 187, + 255, + 95, + 108, + 184, + 255, + 74, + 93, + 180, + 255, + 64, + 86, + 179, + 255, + 56, + 76, + 173, + 255, + 61, + 81, + 174, + 255, + 60, + 81, + 168, + 255, + 63, + 85, + 168, + 255, + 67, + 85, + 175, + 255, + 77, + 92, + 174, + 255, + 96, + 112, + 180, + 255, + 139, + 147, + 176, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 249, + 246, + 254, + 255, + 178, + 183, + 206, + 255, + 107, + 120, + 171, + 255, + 74, + 91, + 164, + 255, + 63, + 80, + 152, + 255, + 53, + 72, + 150, + 255, + 54, + 74, + 154, + 255, + 53, + 73, + 152, + 255, + 56, + 75, + 142, + 255, + 60, + 75, + 151, + 255, + 67, + 83, + 151, + 255, + 97, + 112, + 167, + 255, + 165, + 165, + 189, + 255, + 246, + 246, + 249, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 246, + 250, + 253, + 255, + 134, + 147, + 179, + 255, + 70, + 87, + 159, + 255, + 60, + 77, + 149, + 255, + 54, + 67, + 137, + 255, + 51, + 64, + 125, + 255, + 54, + 67, + 119, + 255, + 83, + 96, + 141, + 255, + 197, + 208, + 220, + 255, + 249, + 255, + 241, + 255, + 250, + 252, + 250, + 255, + 137, + 136, + 168, + 255, + 71, + 83, + 123, + 255, + 47, + 59, + 101, + 255, + 41, + 53, + 96, + 255, + 34, + 45, + 90, + 255, + 33, + 45, + 86, + 255, + 31, + 44, + 80, + 255, + 28, + 41, + 74, + 255, + 28, + 42, + 72, + 255, + 31, + 38, + 76, + 255, + 44, + 50, + 83, + 255, + 51, + 57, + 85, + 255, + 83, + 88, + 111, + 255, + 107, + 106, + 110, + 255, + 250, + 250, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 254, + 255, + 252, + 255, + 248, + 250, + 254, + 255, + 103, + 106, + 116, + 255, + 27, + 30, + 48, + 255, + 26, + 31, + 52, + 255, + 26, + 30, + 59, + 255, + 27, + 29, + 66, + 255, + 34, + 35, + 80, + 255, + 55, + 54, + 96, + 255, + 190, + 192, + 214, + 255, + 64, + 65, + 94, + 255, + 47, + 44, + 98, + 255, + 26, + 27, + 72, + 255, + 15, + 17, + 57, + 255, + 18, + 20, + 57, + 255, + 21, + 24, + 58, + 255, + 37, + 41, + 75, + 255, + 91, + 94, + 110, + 255, + 255, + 255, + 255, + 255, + 249, + 248, + 243, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 119, + 142, + 174, + 255, + 54, + 102, + 167, + 255, + 49, + 141, + 181, + 255, + 60, + 165, + 195, + 255, + 69, + 156, + 183, + 255, + 98, + 154, + 187, + 255, + 119, + 174, + 194, + 255, + 220, + 242, + 246, + 255, + 251, + 255, + 248, + 255, + 193, + 221, + 230, + 255, + 72, + 150, + 197, + 255, + 50, + 149, + 190, + 255, + 60, + 154, + 182, + 255, + 87, + 159, + 176, + 255, + 116, + 178, + 193, + 255, + 108, + 190, + 211, + 255, + 122, + 186, + 198, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 251, + 253, + 255, + 255, + 66, + 75, + 134, + 255, + 33, + 40, + 91, + 255, + 26, + 35, + 75, + 255, + 28, + 37, + 78, + 255, + 35, + 42, + 96, + 255, + 50, + 54, + 115, + 255, + 95, + 95, + 158, + 255, + 249, + 254, + 252, + 255, + 252, + 255, + 251, + 255, + 148, + 152, + 186, + 255, + 81, + 82, + 153, + 255, + 44, + 51, + 124, + 255, + 34, + 47, + 97, + 255, + 31, + 33, + 80, + 255, + 26, + 31, + 60, + 255, + 15, + 21, + 44, + 255, + 17, + 22, + 51, + 255, + 21, + 27, + 61, + 255, + 23, + 26, + 79, + 255, + 28, + 30, + 90, + 255, + 33, + 36, + 90, + 255, + 33, + 35, + 86, + 255, + 65, + 67, + 91, + 255, + 255, + 254, + 255, + 255, + 245, + 242, + 248, + 255, + 255, + 255, + 255, + 255, + 253, + 248, + 255, + 255, + 27, + 20, + 72, + 255, + 11, + 14, + 55, + 255, + 12, + 15, + 57, + 255, + 12, + 14, + 48, + 255, + 14, + 14, + 41, + 255, + 12, + 9, + 40, + 255, + 12, + 11, + 41, + 255, + 13, + 12, + 43, + 255, + 19, + 19, + 42, + 255, + 41, + 43, + 58, + 255, + 185, + 160, + 39, + 255, + 182, + 145, + 72, + 255, + 172, + 148, + 38, + 255, + 206, + 172, + 5, + 255, + 203, + 176, + 10, + 255, + 211, + 177, + 0, + 255, + 211, + 178, + 10, + 255, + 202, + 145, + 38, + 255, + 178, + 145, + 65, + 255, + 131, + 104, + 60, + 255, + 128, + 105, + 87, + 255, + 181, + 157, + 146, + 255, + 181, + 146, + 114, + 255, + 190, + 152, + 108, + 255, + 192, + 148, + 101, + 255, + 198, + 149, + 108, + 255, + 189, + 144, + 108, + 255, + 191, + 143, + 122, + 255, + 196, + 152, + 104, + 255, + 197, + 153, + 107, + 255, + 197, + 154, + 126, + 255, + 148, + 118, + 30, + 255, + 189, + 156, + 44, + 255, + 225, + 190, + 27, + 255, + 231, + 194, + 0, + 255, + 222, + 194, + 43, + 255, + 202, + 145, + 109, + 255, + 155, + 138, + 129, + 255, + 43, + 35, + 65, + 255, + 27, + 24, + 62, + 255, + 19, + 19, + 46, + 255, + 30, + 26, + 60, + 255, + 36, + 39, + 63, + 255, + 56, + 56, + 74, + 255, + 86, + 85, + 94, + 255, + 223, + 221, + 225, + 255, + 219, + 212, + 206, + 255, + 224, + 217, + 211, + 255, + 219, + 212, + 206, + 255, + 220, + 213, + 207, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 221, + 214, + 206, + 255, + 222, + 215, + 207, + 255, + 222, + 215, + 207, + 255, + 223, + 216, + 208, + 255, + 223, + 216, + 208, + 255, + 221, + 218, + 210, + 255, + 223, + 219, + 208, + 255, + 217, + 217, + 216, + 255, + 89, + 95, + 108, + 255, + 41, + 46, + 83, + 255, + 32, + 32, + 75, + 255, + 16, + 25, + 67, + 255, + 21, + 21, + 41, + 255, + 29, + 29, + 63, + 255, + 23, + 31, + 61, + 255, + 21, + 16, + 66, + 255, + 16, + 18, + 58, + 255, + 17, + 15, + 60, + 255, + 21, + 19, + 64, + 255, + 20, + 18, + 63, + 255, + 19, + 17, + 62, + 255, + 19, + 21, + 63, + 255, + 20, + 21, + 61, + 255, + 16, + 15, + 54, + 255, + 17, + 15, + 52, + 255, + 16, + 16, + 53, + 255, + 18, + 18, + 56, + 255, + 16, + 15, + 56, + 255, + 16, + 15, + 57, + 255, + 17, + 16, + 60, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 16, + 15, + 56, + 255, + 14, + 14, + 51, + 255, + 9, + 9, + 35, + 255, + 9, + 8, + 23, + 255, + 10, + 10, + 21, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 26, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 23, + 255, + 9, + 8, + 22, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 26, + 255, + 10, + 9, + 27, + 255, + 12, + 11, + 29, + 255, + 24, + 19, + 40, + 255, + 44, + 35, + 64, + 255, + 204, + 141, + 143, + 255, + 197, + 132, + 144, + 255, + 193, + 126, + 135, + 255, + 190, + 125, + 133, + 255, + 189, + 125, + 133, + 255, + 187, + 125, + 132, + 255, + 181, + 124, + 131, + 255, + 179, + 122, + 129, + 255, + 178, + 121, + 128, + 255, + 177, + 120, + 127, + 255, + 175, + 118, + 125, + 255, + 174, + 117, + 124, + 255, + 172, + 116, + 125, + 255, + 168, + 115, + 125, + 255, + 167, + 113, + 127, + 255, + 166, + 112, + 126, + 255, + 165, + 111, + 125, + 255, + 164, + 110, + 124, + 255, + 161, + 111, + 122, + 255, + 160, + 110, + 121, + 255, + 160, + 110, + 121, + 255, + 159, + 109, + 120, + 255, + 158, + 107, + 122, + 255, + 157, + 106, + 121, + 255, + 157, + 106, + 121, + 255, + 157, + 106, + 121, + 255, + 157, + 104, + 120, + 255, + 157, + 104, + 120, + 255, + 157, + 104, + 120, + 255, + 157, + 104, + 120, + 255, + 156, + 103, + 119, + 255, + 156, + 103, + 119, + 255, + 156, + 103, + 119, + 255, + 156, + 103, + 119, + 255, + 155, + 105, + 117, + 255, + 155, + 105, + 117, + 255, + 156, + 106, + 118, + 255, + 156, + 106, + 118, + 255, + 157, + 106, + 120, + 255, + 161, + 105, + 115, + 255, + 155, + 107, + 120, + 255, + 75, + 41, + 63, + 255, + 28, + 17, + 41, + 255, + 10, + 14, + 34, + 255, + 9, + 15, + 34, + 255, + 12, + 10, + 32, + 255, + 11, + 14, + 33, + 255, + 11, + 13, + 39, + 255, + 7, + 11, + 37, + 255, + 6, + 11, + 33, + 255, + 9, + 11, + 24, + 255, + 8, + 10, + 31, + 255, + 14, + 15, + 44, + 255, + 13, + 16, + 49, + 255, + 11, + 12, + 41, + 255, + 10, + 12, + 36, + 255, + 8, + 10, + 35, + 255, + 12, + 13, + 43, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 37, + 255, + 6, + 8, + 30, + 255, + 6, + 9, + 28, + 255, + 8, + 10, + 25, + 255, + 9, + 10, + 28, + 255, + 9, + 10, + 30, + 255, + 10, + 11, + 32, + 255, + 10, + 13, + 30, + 255, + 13, + 14, + 32, + 255, + 11, + 11, + 28, + 255, + 10, + 9, + 25, + 255, + 10, + 10, + 22, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 1, + 0, + 6, + 255, + 6, + 4, + 18, + 255, + 2, + 0, + 11, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 8, + 255, + 0, + 0, + 6, + 255, + 0, + 2, + 2, + 255, + 0, + 12, + 25, + 255, + 11, + 69, + 180, + 255, + 0, + 95, + 231, + 255, + 7, + 90, + 235, + 255, + 2, + 96, + 229, + 255, + 5, + 93, + 228, + 255, + 19, + 103, + 243, + 255, + 79, + 142, + 228, + 255, + 251, + 255, + 255, + 255, + 152, + 158, + 182, + 255, + 65, + 75, + 125, + 255, + 39, + 52, + 115, + 255, + 36, + 51, + 115, + 255, + 37, + 52, + 119, + 255, + 37, + 51, + 123, + 255, + 40, + 53, + 129, + 255, + 44, + 66, + 139, + 255, + 83, + 95, + 154, + 255, + 180, + 182, + 214, + 255, + 244, + 246, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 115, + 125, + 178, + 255, + 70, + 86, + 165, + 255, + 86, + 102, + 168, + 255, + 113, + 120, + 180, + 255, + 178, + 185, + 220, + 255, + 249, + 255, + 255, + 255, + 253, + 254, + 254, + 255, + 255, + 254, + 255, + 255, + 252, + 255, + 255, + 255, + 99, + 111, + 180, + 255, + 56, + 75, + 164, + 255, + 52, + 69, + 165, + 255, + 49, + 71, + 163, + 255, + 52, + 70, + 172, + 255, + 57, + 74, + 169, + 255, + 74, + 91, + 173, + 255, + 184, + 189, + 230, + 255, + 101, + 113, + 183, + 255, + 63, + 80, + 167, + 255, + 59, + 78, + 164, + 255, + 86, + 101, + 182, + 255, + 212, + 214, + 242, + 255, + 255, + 255, + 251, + 255, + 246, + 253, + 255, + 255, + 117, + 129, + 181, + 255, + 83, + 95, + 172, + 255, + 61, + 77, + 171, + 255, + 54, + 74, + 170, + 255, + 54, + 71, + 167, + 255, + 53, + 72, + 167, + 255, + 52, + 73, + 164, + 255, + 51, + 72, + 162, + 255, + 50, + 73, + 158, + 255, + 52, + 72, + 159, + 255, + 52, + 71, + 154, + 255, + 61, + 79, + 155, + 255, + 75, + 92, + 162, + 255, + 130, + 141, + 179, + 255, + 253, + 255, + 251, + 255, + 252, + 246, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 243, + 248, + 250, + 255, + 127, + 134, + 171, + 255, + 80, + 93, + 153, + 255, + 60, + 76, + 150, + 255, + 52, + 67, + 142, + 255, + 48, + 65, + 143, + 255, + 46, + 64, + 140, + 255, + 46, + 66, + 139, + 255, + 45, + 65, + 137, + 255, + 47, + 64, + 136, + 255, + 46, + 63, + 133, + 255, + 46, + 64, + 130, + 255, + 54, + 72, + 137, + 255, + 84, + 93, + 150, + 255, + 174, + 178, + 197, + 255, + 255, + 255, + 253, + 255, + 255, + 253, + 254, + 255, + 252, + 254, + 255, + 255, + 104, + 113, + 168, + 255, + 55, + 73, + 141, + 255, + 42, + 61, + 134, + 255, + 42, + 53, + 119, + 255, + 38, + 51, + 105, + 255, + 42, + 54, + 111, + 255, + 83, + 96, + 139, + 255, + 250, + 255, + 255, + 255, + 255, + 253, + 248, + 255, + 254, + 252, + 254, + 255, + 126, + 133, + 153, + 255, + 51, + 62, + 101, + 255, + 30, + 40, + 85, + 255, + 27, + 37, + 84, + 255, + 25, + 35, + 80, + 255, + 25, + 34, + 74, + 255, + 24, + 32, + 71, + 255, + 26, + 31, + 70, + 255, + 25, + 29, + 66, + 255, + 21, + 27, + 62, + 255, + 21, + 28, + 58, + 255, + 21, + 28, + 55, + 255, + 28, + 36, + 59, + 255, + 55, + 60, + 81, + 255, + 134, + 137, + 144, + 255, + 248, + 249, + 250, + 255, + 252, + 250, + 251, + 255, + 255, + 255, + 254, + 255, + 225, + 225, + 232, + 255, + 70, + 72, + 85, + 255, + 17, + 22, + 42, + 255, + 10, + 17, + 33, + 255, + 11, + 15, + 49, + 255, + 16, + 19, + 63, + 255, + 19, + 21, + 70, + 255, + 25, + 28, + 72, + 255, + 26, + 29, + 73, + 255, + 23, + 26, + 70, + 255, + 14, + 17, + 61, + 255, + 12, + 17, + 65, + 255, + 14, + 17, + 62, + 255, + 13, + 15, + 57, + 255, + 15, + 14, + 55, + 255, + 14, + 20, + 56, + 255, + 52, + 56, + 84, + 255, + 161, + 161, + 171, + 255, + 249, + 248, + 243, + 255, + 252, + 255, + 253, + 255, + 252, + 255, + 255, + 255, + 90, + 118, + 163, + 255, + 54, + 118, + 174, + 255, + 52, + 136, + 175, + 255, + 135, + 194, + 202, + 255, + 176, + 205, + 219, + 255, + 118, + 160, + 194, + 255, + 114, + 173, + 203, + 255, + 251, + 252, + 254, + 255, + 253, + 254, + 250, + 255, + 126, + 167, + 206, + 255, + 67, + 136, + 186, + 255, + 40, + 152, + 184, + 255, + 60, + 157, + 181, + 255, + 75, + 150, + 169, + 255, + 73, + 158, + 181, + 255, + 76, + 168, + 197, + 255, + 182, + 224, + 232, + 255, + 255, + 253, + 250, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 154, + 155, + 183, + 255, + 50, + 59, + 129, + 255, + 25, + 32, + 91, + 255, + 26, + 28, + 80, + 255, + 29, + 31, + 87, + 255, + 35, + 42, + 105, + 255, + 55, + 58, + 138, + 255, + 97, + 106, + 146, + 255, + 255, + 251, + 255, + 255, + 146, + 181, + 194, + 255, + 70, + 103, + 166, + 255, + 66, + 70, + 151, + 255, + 47, + 55, + 131, + 255, + 34, + 42, + 108, + 255, + 34, + 39, + 94, + 255, + 24, + 25, + 70, + 255, + 21, + 24, + 56, + 255, + 17, + 25, + 49, + 255, + 18, + 24, + 59, + 255, + 22, + 25, + 76, + 255, + 23, + 24, + 80, + 255, + 23, + 25, + 73, + 255, + 24, + 29, + 78, + 255, + 45, + 47, + 87, + 255, + 243, + 242, + 255, + 255, + 254, + 254, + 247, + 255, + 247, + 249, + 246, + 255, + 221, + 221, + 239, + 255, + 18, + 15, + 58, + 255, + 14, + 13, + 53, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 56, + 255, + 13, + 13, + 48, + 255, + 11, + 12, + 44, + 255, + 11, + 11, + 35, + 255, + 13, + 13, + 39, + 255, + 17, + 17, + 42, + 255, + 36, + 37, + 55, + 255, + 158, + 131, + 87, + 255, + 155, + 120, + 99, + 255, + 198, + 174, + 3, + 255, + 207, + 171, + 5, + 255, + 201, + 172, + 0, + 255, + 210, + 174, + 12, + 255, + 183, + 139, + 65, + 255, + 182, + 145, + 113, + 255, + 56, + 52, + 56, + 255, + 38, + 33, + 48, + 255, + 37, + 30, + 52, + 255, + 45, + 38, + 61, + 255, + 49, + 49, + 56, + 255, + 77, + 64, + 56, + 255, + 144, + 116, + 112, + 255, + 163, + 133, + 123, + 255, + 180, + 150, + 125, + 255, + 175, + 141, + 120, + 255, + 175, + 140, + 95, + 255, + 148, + 121, + 17, + 255, + 214, + 180, + 39, + 255, + 229, + 193, + 21, + 255, + 230, + 197, + 0, + 255, + 226, + 196, + 11, + 255, + 219, + 185, + 6, + 255, + 194, + 158, + 72, + 255, + 129, + 107, + 83, + 255, + 46, + 40, + 51, + 255, + 28, + 25, + 70, + 255, + 22, + 19, + 63, + 255, + 18, + 17, + 51, + 255, + 17, + 17, + 42, + 255, + 19, + 20, + 41, + 255, + 26, + 26, + 53, + 255, + 35, + 35, + 59, + 255, + 49, + 51, + 66, + 255, + 68, + 70, + 84, + 255, + 143, + 144, + 153, + 255, + 217, + 215, + 218, + 255, + 217, + 216, + 213, + 255, + 217, + 214, + 203, + 255, + 220, + 218, + 207, + 255, + 218, + 212, + 203, + 255, + 224, + 213, + 203, + 255, + 217, + 217, + 209, + 255, + 222, + 216, + 209, + 255, + 219, + 217, + 209, + 255, + 216, + 220, + 212, + 255, + 217, + 220, + 209, + 255, + 217, + 220, + 210, + 255, + 159, + 163, + 172, + 255, + 54, + 62, + 93, + 255, + 20, + 39, + 78, + 255, + 28, + 23, + 64, + 255, + 17, + 18, + 56, + 255, + 25, + 21, + 63, + 255, + 17, + 16, + 56, + 255, + 24, + 23, + 65, + 255, + 21, + 20, + 64, + 255, + 21, + 19, + 66, + 255, + 21, + 17, + 67, + 255, + 21, + 17, + 67, + 255, + 19, + 15, + 65, + 255, + 19, + 15, + 65, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 62, + 255, + 16, + 14, + 61, + 255, + 15, + 13, + 60, + 255, + 14, + 14, + 50, + 255, + 14, + 14, + 50, + 255, + 12, + 12, + 48, + 255, + 12, + 12, + 48, + 255, + 13, + 13, + 48, + 255, + 17, + 17, + 53, + 255, + 18, + 17, + 57, + 255, + 17, + 16, + 58, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 58, + 255, + 13, + 16, + 58, + 255, + 17, + 15, + 62, + 255, + 16, + 16, + 51, + 255, + 16, + 14, + 61, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 49, + 255, + 9, + 10, + 28, + 255, + 8, + 10, + 23, + 255, + 8, + 9, + 29, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 11, + 25, + 255, + 18, + 14, + 29, + 255, + 41, + 29, + 44, + 255, + 151, + 116, + 132, + 255, + 202, + 124, + 123, + 255, + 194, + 129, + 133, + 255, + 191, + 127, + 132, + 255, + 188, + 126, + 132, + 255, + 185, + 124, + 131, + 255, + 185, + 124, + 132, + 255, + 183, + 123, + 131, + 255, + 180, + 123, + 130, + 255, + 177, + 121, + 128, + 255, + 176, + 121, + 127, + 255, + 174, + 119, + 127, + 255, + 173, + 117, + 126, + 255, + 172, + 116, + 127, + 255, + 168, + 114, + 127, + 255, + 167, + 113, + 126, + 255, + 166, + 112, + 126, + 255, + 165, + 111, + 127, + 255, + 160, + 112, + 126, + 255, + 159, + 111, + 125, + 255, + 158, + 110, + 124, + 255, + 157, + 109, + 123, + 255, + 160, + 108, + 121, + 255, + 159, + 107, + 120, + 255, + 159, + 107, + 120, + 255, + 158, + 106, + 119, + 255, + 157, + 107, + 119, + 255, + 156, + 106, + 118, + 255, + 156, + 106, + 118, + 255, + 156, + 106, + 118, + 255, + 159, + 104, + 118, + 255, + 159, + 104, + 120, + 255, + 158, + 104, + 122, + 255, + 158, + 104, + 123, + 255, + 154, + 106, + 121, + 255, + 155, + 106, + 118, + 255, + 156, + 108, + 115, + 255, + 158, + 110, + 115, + 255, + 165, + 107, + 122, + 255, + 153, + 101, + 115, + 255, + 157, + 123, + 141, + 255, + 31, + 12, + 38, + 255, + 27, + 20, + 46, + 255, + 6, + 16, + 49, + 255, + 12, + 24, + 55, + 255, + 11, + 11, + 37, + 255, + 10, + 15, + 35, + 255, + 13, + 17, + 43, + 255, + 13, + 16, + 49, + 255, + 20, + 22, + 61, + 255, + 16, + 20, + 49, + 255, + 13, + 16, + 50, + 255, + 14, + 16, + 54, + 255, + 17, + 19, + 61, + 255, + 18, + 13, + 47, + 255, + 14, + 11, + 40, + 255, + 11, + 11, + 36, + 255, + 15, + 17, + 40, + 255, + 5, + 5, + 30, + 255, + 5, + 6, + 24, + 255, + 10, + 11, + 29, + 255, + 9, + 10, + 31, + 255, + 9, + 10, + 31, + 255, + 10, + 11, + 32, + 255, + 11, + 12, + 33, + 255, + 13, + 14, + 35, + 255, + 17, + 16, + 32, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 9, + 8, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 3, + 2, + 11, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 4, + 255, + 2, + 1, + 5, + 255, + 4, + 4, + 12, + 255, + 7, + 8, + 18, + 255, + 0, + 2, + 11, + 255, + 3, + 25, + 58, + 255, + 13, + 83, + 204, + 255, + 2, + 92, + 231, + 255, + 6, + 90, + 233, + 255, + 2, + 91, + 229, + 255, + 5, + 92, + 234, + 255, + 35, + 112, + 244, + 255, + 109, + 155, + 219, + 255, + 252, + 255, + 255, + 255, + 101, + 109, + 138, + 255, + 42, + 54, + 104, + 255, + 31, + 43, + 101, + 255, + 31, + 44, + 102, + 255, + 32, + 45, + 105, + 255, + 35, + 48, + 110, + 255, + 44, + 56, + 121, + 255, + 71, + 84, + 135, + 255, + 177, + 184, + 204, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 253, + 253, + 255, + 254, + 254, + 254, + 255, + 228, + 228, + 248, + 255, + 152, + 157, + 190, + 255, + 229, + 235, + 252, + 255, + 253, + 253, + 255, + 255, + 255, + 255, + 247, + 255, + 255, + 255, + 245, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 197, + 202, + 221, + 255, + 77, + 90, + 160, + 255, + 49, + 68, + 152, + 255, + 49, + 64, + 155, + 255, + 47, + 65, + 155, + 255, + 48, + 66, + 159, + 255, + 50, + 67, + 157, + 255, + 61, + 79, + 160, + 255, + 71, + 86, + 159, + 255, + 56, + 75, + 161, + 255, + 51, + 69, + 158, + 255, + 59, + 73, + 154, + 255, + 95, + 109, + 173, + 255, + 250, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 114, + 122, + 170, + 255, + 65, + 88, + 159, + 255, + 53, + 72, + 157, + 255, + 49, + 68, + 160, + 255, + 49, + 69, + 159, + 255, + 49, + 71, + 158, + 255, + 50, + 71, + 155, + 255, + 49, + 70, + 153, + 255, + 49, + 68, + 155, + 255, + 49, + 69, + 149, + 255, + 49, + 68, + 153, + 255, + 49, + 67, + 151, + 255, + 49, + 67, + 147, + 255, + 54, + 72, + 148, + 255, + 80, + 93, + 161, + 255, + 164, + 171, + 198, + 255, + 250, + 251, + 248, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 246, + 255, + 250, + 253, + 255, + 255, + 125, + 131, + 166, + 255, + 69, + 87, + 151, + 255, + 47, + 64, + 140, + 255, + 46, + 61, + 143, + 255, + 46, + 60, + 139, + 255, + 43, + 63, + 134, + 255, + 44, + 64, + 135, + 255, + 44, + 63, + 133, + 255, + 43, + 62, + 131, + 255, + 44, + 59, + 131, + 255, + 43, + 59, + 128, + 255, + 43, + 59, + 128, + 255, + 42, + 58, + 127, + 255, + 52, + 66, + 127, + 255, + 101, + 108, + 155, + 255, + 246, + 249, + 255, + 255, + 254, + 255, + 247, + 255, + 248, + 252, + 255, + 255, + 90, + 100, + 154, + 255, + 58, + 75, + 139, + 255, + 57, + 74, + 142, + 255, + 39, + 53, + 117, + 255, + 35, + 47, + 101, + 255, + 46, + 56, + 109, + 255, + 104, + 116, + 148, + 255, + 251, + 255, + 255, + 255, + 254, + 253, + 250, + 255, + 251, + 251, + 251, + 255, + 210, + 213, + 228, + 255, + 61, + 72, + 106, + 255, + 34, + 44, + 84, + 255, + 33, + 44, + 83, + 255, + 34, + 45, + 80, + 255, + 35, + 44, + 86, + 255, + 31, + 40, + 76, + 255, + 28, + 37, + 71, + 255, + 21, + 28, + 64, + 255, + 22, + 28, + 61, + 255, + 19, + 26, + 56, + 255, + 18, + 25, + 52, + 255, + 17, + 25, + 49, + 255, + 20, + 25, + 48, + 255, + 83, + 87, + 100, + 255, + 198, + 200, + 205, + 255, + 255, + 255, + 254, + 255, + 254, + 254, + 254, + 255, + 111, + 113, + 121, + 255, + 48, + 51, + 67, + 255, + 13, + 18, + 41, + 255, + 8, + 15, + 40, + 255, + 12, + 17, + 57, + 255, + 14, + 18, + 65, + 255, + 14, + 18, + 66, + 255, + 16, + 18, + 67, + 255, + 18, + 20, + 69, + 255, + 14, + 16, + 65, + 255, + 12, + 14, + 63, + 255, + 10, + 15, + 63, + 255, + 13, + 17, + 62, + 255, + 14, + 19, + 60, + 255, + 17, + 21, + 60, + 255, + 23, + 33, + 70, + 255, + 34, + 41, + 71, + 255, + 105, + 108, + 123, + 255, + 253, + 255, + 255, + 255, + 251, + 248, + 248, + 255, + 237, + 242, + 255, + 255, + 70, + 106, + 154, + 255, + 66, + 139, + 190, + 255, + 51, + 147, + 181, + 255, + 68, + 149, + 187, + 255, + 91, + 156, + 185, + 255, + 141, + 175, + 196, + 255, + 153, + 199, + 222, + 255, + 254, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 109, + 153, + 200, + 255, + 55, + 132, + 193, + 255, + 44, + 140, + 189, + 255, + 60, + 147, + 189, + 255, + 66, + 153, + 186, + 255, + 97, + 181, + 199, + 255, + 115, + 187, + 209, + 255, + 238, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 96, + 98, + 139, + 255, + 44, + 53, + 119, + 255, + 26, + 33, + 96, + 255, + 29, + 30, + 87, + 255, + 35, + 36, + 99, + 255, + 43, + 49, + 121, + 255, + 67, + 74, + 153, + 255, + 223, + 224, + 245, + 255, + 231, + 243, + 255, + 255, + 77, + 148, + 192, + 255, + 64, + 107, + 176, + 255, + 67, + 77, + 165, + 255, + 55, + 64, + 148, + 255, + 44, + 48, + 122, + 255, + 35, + 38, + 105, + 255, + 36, + 35, + 83, + 255, + 37, + 37, + 73, + 255, + 29, + 31, + 69, + 255, + 25, + 29, + 58, + 255, + 29, + 31, + 72, + 255, + 24, + 27, + 70, + 255, + 24, + 27, + 68, + 255, + 30, + 31, + 79, + 255, + 132, + 136, + 153, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 254, + 255, + 252, + 254, + 251, + 255, + 29, + 29, + 46, + 255, + 14, + 12, + 48, + 255, + 12, + 13, + 43, + 255, + 12, + 12, + 45, + 255, + 12, + 13, + 45, + 255, + 11, + 12, + 40, + 255, + 10, + 12, + 37, + 255, + 11, + 11, + 37, + 255, + 11, + 11, + 39, + 255, + 16, + 16, + 42, + 255, + 26, + 27, + 47, + 255, + 132, + 114, + 110, + 255, + 104, + 81, + 18, + 255, + 200, + 169, + 10, + 255, + 206, + 168, + 0, + 255, + 201, + 170, + 3, + 255, + 179, + 135, + 88, + 255, + 170, + 141, + 116, + 255, + 55, + 37, + 59, + 255, + 30, + 29, + 52, + 255, + 20, + 17, + 50, + 255, + 19, + 16, + 53, + 255, + 20, + 17, + 52, + 255, + 28, + 21, + 53, + 255, + 34, + 36, + 66, + 255, + 46, + 47, + 60, + 255, + 57, + 50, + 51, + 255, + 96, + 85, + 59, + 255, + 210, + 197, + 84, + 255, + 224, + 201, + 17, + 255, + 226, + 190, + 11, + 255, + 221, + 196, + 0, + 255, + 224, + 193, + 0, + 255, + 225, + 191, + 0, + 255, + 228, + 190, + 29, + 255, + 195, + 166, + 98, + 255, + 132, + 84, + 74, + 255, + 187, + 155, + 131, + 255, + 49, + 31, + 70, + 255, + 23, + 22, + 66, + 255, + 20, + 19, + 63, + 255, + 19, + 19, + 57, + 255, + 13, + 14, + 45, + 255, + 14, + 15, + 35, + 255, + 15, + 15, + 40, + 255, + 18, + 18, + 44, + 255, + 21, + 21, + 45, + 255, + 31, + 31, + 57, + 255, + 35, + 34, + 56, + 255, + 48, + 46, + 64, + 255, + 59, + 57, + 72, + 255, + 73, + 76, + 84, + 255, + 163, + 161, + 166, + 255, + 215, + 212, + 215, + 255, + 227, + 225, + 227, + 255, + 220, + 220, + 211, + 255, + 218, + 216, + 209, + 255, + 219, + 221, + 212, + 255, + 221, + 227, + 216, + 255, + 225, + 229, + 221, + 255, + 203, + 192, + 209, + 255, + 39, + 68, + 108, + 255, + 13, + 74, + 130, + 255, + 71, + 103, + 142, + 255, + 0, + 11, + 51, + 255, + 14, + 26, + 65, + 255, + 19, + 22, + 67, + 255, + 17, + 15, + 65, + 255, + 20, + 18, + 67, + 255, + 19, + 17, + 64, + 255, + 19, + 18, + 62, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 62, + 255, + 18, + 16, + 63, + 255, + 18, + 16, + 63, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 62, + 255, + 17, + 15, + 62, + 255, + 18, + 16, + 63, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 17, + 16, + 59, + 255, + 16, + 15, + 56, + 255, + 15, + 14, + 55, + 255, + 10, + 10, + 48, + 255, + 13, + 13, + 49, + 255, + 12, + 14, + 51, + 255, + 14, + 16, + 55, + 255, + 14, + 15, + 58, + 255, + 14, + 15, + 60, + 255, + 16, + 14, + 60, + 255, + 14, + 14, + 51, + 255, + 16, + 14, + 63, + 255, + 16, + 15, + 56, + 255, + 11, + 11, + 39, + 255, + 8, + 9, + 26, + 255, + 8, + 10, + 23, + 255, + 8, + 9, + 27, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 11, + 25, + 255, + 16, + 13, + 29, + 255, + 32, + 22, + 39, + 255, + 78, + 46, + 66, + 255, + 205, + 130, + 133, + 255, + 196, + 130, + 134, + 255, + 193, + 128, + 133, + 255, + 192, + 128, + 135, + 255, + 189, + 127, + 134, + 255, + 186, + 124, + 133, + 255, + 184, + 124, + 132, + 255, + 182, + 124, + 131, + 255, + 179, + 122, + 129, + 255, + 177, + 122, + 128, + 255, + 175, + 119, + 128, + 255, + 174, + 118, + 127, + 255, + 173, + 117, + 128, + 255, + 171, + 118, + 128, + 255, + 170, + 117, + 128, + 255, + 167, + 113, + 127, + 255, + 166, + 112, + 126, + 255, + 164, + 114, + 126, + 255, + 163, + 113, + 125, + 255, + 161, + 111, + 123, + 255, + 160, + 110, + 122, + 255, + 162, + 110, + 123, + 255, + 161, + 109, + 122, + 255, + 160, + 108, + 121, + 255, + 159, + 107, + 120, + 255, + 158, + 108, + 120, + 255, + 157, + 107, + 119, + 255, + 157, + 107, + 119, + 255, + 157, + 107, + 119, + 255, + 154, + 108, + 120, + 255, + 154, + 108, + 119, + 255, + 156, + 107, + 118, + 255, + 156, + 108, + 117, + 255, + 161, + 103, + 117, + 255, + 157, + 105, + 118, + 255, + 153, + 105, + 119, + 255, + 156, + 112, + 127, + 255, + 164, + 148, + 159, + 255, + 48, + 34, + 48, + 255, + 37, + 30, + 48, + 255, + 21, + 21, + 44, + 255, + 16, + 26, + 54, + 255, + 90, + 114, + 149, + 255, + 38, + 62, + 101, + 255, + 4, + 18, + 56, + 255, + 14, + 16, + 37, + 255, + 11, + 13, + 35, + 255, + 14, + 16, + 40, + 255, + 17, + 19, + 44, + 255, + 23, + 25, + 49, + 255, + 19, + 21, + 46, + 255, + 19, + 20, + 50, + 255, + 15, + 16, + 47, + 255, + 17, + 14, + 44, + 255, + 13, + 12, + 43, + 255, + 10, + 11, + 39, + 255, + 14, + 16, + 42, + 255, + 10, + 10, + 35, + 255, + 14, + 15, + 34, + 255, + 11, + 12, + 30, + 255, + 11, + 12, + 33, + 255, + 11, + 12, + 33, + 255, + 10, + 11, + 32, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 19, + 18, + 34, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 11, + 10, + 26, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 8, + 255, + 2, + 4, + 19, + 255, + 0, + 30, + 90, + 255, + 9, + 94, + 229, + 255, + 6, + 89, + 234, + 255, + 5, + 91, + 232, + 255, + 6, + 92, + 228, + 255, + 5, + 92, + 236, + 255, + 47, + 115, + 233, + 255, + 204, + 229, + 255, + 255, + 250, + 251, + 255, + 255, + 76, + 86, + 121, + 255, + 34, + 47, + 98, + 255, + 30, + 40, + 92, + 255, + 30, + 40, + 90, + 255, + 32, + 42, + 92, + 255, + 34, + 44, + 96, + 255, + 58, + 68, + 120, + 255, + 108, + 112, + 149, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 247, + 255, + 255, + 255, + 252, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 133, + 137, + 171, + 255, + 61, + 75, + 148, + 255, + 45, + 64, + 143, + 255, + 48, + 61, + 146, + 255, + 46, + 61, + 145, + 255, + 46, + 62, + 148, + 255, + 45, + 63, + 146, + 255, + 46, + 64, + 146, + 255, + 47, + 65, + 154, + 255, + 44, + 64, + 153, + 255, + 46, + 64, + 148, + 255, + 61, + 73, + 149, + 255, + 111, + 122, + 170, + 255, + 249, + 255, + 254, + 255, + 133, + 138, + 178, + 255, + 72, + 87, + 160, + 255, + 48, + 71, + 156, + 255, + 50, + 70, + 158, + 255, + 52, + 72, + 160, + 255, + 54, + 72, + 158, + 255, + 56, + 73, + 163, + 255, + 60, + 77, + 155, + 255, + 63, + 77, + 151, + 255, + 62, + 73, + 152, + 255, + 54, + 70, + 145, + 255, + 47, + 64, + 146, + 255, + 47, + 65, + 150, + 255, + 47, + 65, + 148, + 255, + 46, + 64, + 143, + 255, + 58, + 77, + 155, + 255, + 112, + 121, + 178, + 255, + 243, + 248, + 253, + 255, + 253, + 253, + 252, + 255, + 254, + 255, + 252, + 255, + 175, + 182, + 210, + 255, + 92, + 101, + 170, + 255, + 48, + 69, + 140, + 255, + 44, + 60, + 131, + 255, + 44, + 60, + 130, + 255, + 43, + 61, + 127, + 255, + 43, + 59, + 136, + 255, + 53, + 67, + 139, + 255, + 58, + 69, + 135, + 255, + 58, + 68, + 131, + 255, + 49, + 63, + 126, + 255, + 42, + 56, + 119, + 255, + 41, + 55, + 119, + 255, + 42, + 56, + 121, + 255, + 46, + 60, + 116, + 255, + 78, + 89, + 138, + 255, + 148, + 154, + 177, + 255, + 249, + 250, + 243, + 255, + 162, + 167, + 186, + 255, + 69, + 79, + 132, + 255, + 42, + 58, + 116, + 255, + 60, + 77, + 139, + 255, + 38, + 52, + 114, + 255, + 32, + 44, + 96, + 255, + 50, + 58, + 106, + 255, + 127, + 135, + 155, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 251, + 251, + 252, + 255, + 252, + 253, + 255, + 255, + 96, + 102, + 133, + 255, + 71, + 76, + 112, + 255, + 80, + 86, + 119, + 255, + 95, + 102, + 129, + 255, + 96, + 101, + 125, + 255, + 89, + 95, + 112, + 255, + 56, + 64, + 85, + 255, + 34, + 42, + 73, + 255, + 23, + 30, + 60, + 255, + 17, + 24, + 53, + 255, + 17, + 24, + 53, + 255, + 16, + 23, + 52, + 255, + 17, + 24, + 51, + 255, + 57, + 62, + 81, + 255, + 112, + 116, + 126, + 255, + 254, + 255, + 252, + 255, + 250, + 251, + 251, + 255, + 92, + 96, + 107, + 255, + 36, + 41, + 61, + 255, + 10, + 16, + 46, + 255, + 10, + 17, + 54, + 255, + 18, + 24, + 70, + 255, + 17, + 22, + 72, + 255, + 15, + 20, + 69, + 255, + 18, + 20, + 68, + 255, + 19, + 21, + 69, + 255, + 18, + 20, + 68, + 255, + 15, + 17, + 65, + 255, + 12, + 16, + 64, + 255, + 12, + 18, + 62, + 255, + 22, + 30, + 70, + 255, + 16, + 26, + 63, + 255, + 24, + 34, + 67, + 255, + 40, + 47, + 76, + 255, + 83, + 86, + 102, + 255, + 249, + 250, + 253, + 255, + 255, + 255, + 254, + 255, + 129, + 135, + 159, + 255, + 53, + 83, + 141, + 255, + 38, + 96, + 150, + 255, + 46, + 131, + 177, + 255, + 76, + 187, + 205, + 255, + 110, + 167, + 189, + 255, + 93, + 166, + 181, + 255, + 159, + 191, + 202, + 255, + 248, + 252, + 253, + 255, + 241, + 255, + 255, + 255, + 97, + 144, + 203, + 255, + 66, + 130, + 191, + 255, + 50, + 169, + 202, + 255, + 41, + 170, + 192, + 255, + 35, + 166, + 185, + 255, + 53, + 164, + 210, + 255, + 105, + 175, + 204, + 255, + 239, + 255, + 255, + 255, + 251, + 255, + 248, + 255, + 253, + 254, + 250, + 255, + 250, + 253, + 255, + 255, + 81, + 84, + 143, + 255, + 29, + 37, + 99, + 255, + 27, + 34, + 95, + 255, + 32, + 33, + 91, + 255, + 38, + 39, + 105, + 255, + 49, + 54, + 130, + 255, + 80, + 86, + 156, + 255, + 255, + 251, + 255, + 255, + 156, + 179, + 205, + 255, + 90, + 160, + 228, + 255, + 65, + 126, + 197, + 255, + 70, + 83, + 176, + 255, + 69, + 64, + 155, + 255, + 65, + 46, + 129, + 255, + 53, + 59, + 116, + 255, + 167, + 170, + 193, + 255, + 240, + 242, + 248, + 255, + 121, + 123, + 135, + 255, + 46, + 46, + 72, + 255, + 48, + 48, + 83, + 255, + 23, + 26, + 70, + 255, + 30, + 34, + 82, + 255, + 45, + 45, + 71, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 244, + 245, + 248, + 255, + 26, + 26, + 45, + 255, + 14, + 13, + 46, + 255, + 11, + 13, + 37, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 38, + 255, + 10, + 11, + 38, + 255, + 11, + 11, + 38, + 255, + 12, + 11, + 42, + 255, + 13, + 13, + 41, + 255, + 22, + 23, + 45, + 255, + 55, + 47, + 54, + 255, + 185, + 167, + 33, + 255, + 201, + 168, + 0, + 255, + 203, + 171, + 1, + 255, + 174, + 134, + 82, + 255, + 183, + 155, + 128, + 255, + 49, + 42, + 34, + 255, + 21, + 25, + 50, + 255, + 16, + 16, + 42, + 255, + 14, + 14, + 42, + 255, + 13, + 13, + 40, + 255, + 16, + 17, + 38, + 255, + 16, + 21, + 43, + 255, + 38, + 32, + 53, + 255, + 64, + 42, + 18, + 255, + 205, + 183, + 56, + 255, + 204, + 157, + 89, + 255, + 150, + 106, + 26, + 255, + 198, + 167, + 18, + 255, + 218, + 195, + 1, + 255, + 217, + 184, + 20, + 255, + 215, + 186, + 68, + 255, + 158, + 131, + 59, + 255, + 135, + 105, + 81, + 255, + 197, + 153, + 118, + 255, + 184, + 155, + 122, + 255, + 60, + 50, + 70, + 255, + 26, + 41, + 54, + 255, + 20, + 22, + 63, + 255, + 18, + 19, + 66, + 255, + 19, + 20, + 67, + 255, + 16, + 17, + 60, + 255, + 14, + 13, + 43, + 255, + 13, + 13, + 38, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 39, + 255, + 15, + 14, + 43, + 255, + 18, + 18, + 46, + 255, + 19, + 20, + 49, + 255, + 20, + 22, + 52, + 255, + 22, + 26, + 56, + 255, + 38, + 34, + 58, + 255, + 44, + 54, + 74, + 255, + 151, + 183, + 204, + 255, + 68, + 109, + 153, + 255, + 63, + 106, + 158, + 255, + 57, + 102, + 151, + 255, + 55, + 100, + 141, + 255, + 33, + 49, + 99, + 255, + 33, + 105, + 147, + 255, + 15, + 62, + 117, + 255, + 22, + 28, + 95, + 255, + 20, + 25, + 76, + 255, + 24, + 18, + 66, + 255, + 16, + 17, + 62, + 255, + 23, + 11, + 65, + 255, + 18, + 16, + 66, + 255, + 18, + 16, + 65, + 255, + 18, + 16, + 63, + 255, + 17, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 59, + 255, + 16, + 14, + 59, + 255, + 16, + 14, + 59, + 255, + 16, + 14, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 55, + 255, + 16, + 15, + 55, + 255, + 14, + 14, + 49, + 255, + 10, + 10, + 46, + 255, + 14, + 14, + 51, + 255, + 11, + 11, + 48, + 255, + 14, + 14, + 47, + 255, + 11, + 12, + 43, + 255, + 14, + 13, + 54, + 255, + 13, + 14, + 42, + 255, + 9, + 10, + 29, + 255, + 8, + 10, + 24, + 255, + 6, + 8, + 20, + 255, + 7, + 9, + 21, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 11, + 25, + 255, + 14, + 13, + 28, + 255, + 27, + 20, + 39, + 255, + 62, + 35, + 59, + 255, + 202, + 134, + 141, + 255, + 199, + 130, + 135, + 255, + 197, + 129, + 135, + 255, + 193, + 128, + 135, + 255, + 192, + 127, + 135, + 255, + 189, + 125, + 134, + 255, + 187, + 124, + 133, + 255, + 185, + 124, + 132, + 255, + 183, + 123, + 131, + 255, + 180, + 122, + 129, + 255, + 179, + 120, + 130, + 255, + 178, + 119, + 129, + 255, + 177, + 118, + 130, + 255, + 173, + 120, + 128, + 255, + 171, + 118, + 128, + 255, + 169, + 116, + 127, + 255, + 168, + 114, + 127, + 255, + 166, + 114, + 126, + 255, + 165, + 113, + 125, + 255, + 165, + 113, + 125, + 255, + 164, + 112, + 124, + 255, + 163, + 111, + 124, + 255, + 162, + 110, + 123, + 255, + 162, + 110, + 123, + 255, + 162, + 110, + 123, + 255, + 160, + 110, + 122, + 255, + 159, + 109, + 121, + 255, + 159, + 109, + 121, + 255, + 158, + 108, + 120, + 255, + 163, + 110, + 123, + 255, + 153, + 104, + 117, + 255, + 153, + 108, + 121, + 255, + 146, + 104, + 117, + 255, + 153, + 130, + 142, + 255, + 70, + 53, + 67, + 255, + 43, + 33, + 50, + 255, + 38, + 35, + 53, + 255, + 28, + 21, + 44, + 255, + 24, + 20, + 46, + 255, + 22, + 16, + 42, + 255, + 22, + 12, + 37, + 255, + 17, + 15, + 35, + 255, + 14, + 19, + 39, + 255, + 15, + 18, + 42, + 255, + 16, + 13, + 39, + 255, + 12, + 12, + 36, + 255, + 11, + 12, + 33, + 255, + 11, + 12, + 32, + 255, + 11, + 12, + 31, + 255, + 11, + 12, + 32, + 255, + 11, + 12, + 32, + 255, + 12, + 13, + 33, + 255, + 18, + 19, + 40, + 255, + 20, + 21, + 42, + 255, + 24, + 24, + 58, + 255, + 13, + 15, + 52, + 255, + 7, + 11, + 41, + 255, + 13, + 13, + 41, + 255, + 11, + 12, + 34, + 255, + 10, + 11, + 32, + 255, + 11, + 11, + 35, + 255, + 14, + 15, + 36, + 255, + 12, + 13, + 34, + 255, + 11, + 12, + 33, + 255, + 16, + 17, + 38, + 255, + 13, + 12, + 28, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 2, + 255, + 6, + 8, + 22, + 255, + 0, + 42, + 119, + 255, + 0, + 88, + 231, + 255, + 10, + 87, + 235, + 255, + 4, + 91, + 232, + 255, + 7, + 91, + 222, + 255, + 7, + 94, + 235, + 255, + 70, + 133, + 237, + 255, + 242, + 255, + 255, + 255, + 134, + 132, + 146, + 255, + 52, + 64, + 102, + 255, + 30, + 44, + 95, + 255, + 27, + 36, + 84, + 255, + 28, + 36, + 82, + 255, + 30, + 39, + 83, + 255, + 38, + 47, + 90, + 255, + 77, + 86, + 129, + 255, + 192, + 198, + 205, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 250, + 254, + 250, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 251, + 255, + 253, + 255, + 255, + 255, + 251, + 255, + 248, + 255, + 253, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 108, + 112, + 155, + 255, + 54, + 68, + 142, + 255, + 39, + 57, + 132, + 255, + 44, + 56, + 137, + 255, + 44, + 57, + 137, + 255, + 43, + 57, + 137, + 255, + 41, + 60, + 139, + 255, + 41, + 59, + 141, + 255, + 45, + 58, + 141, + 255, + 43, + 59, + 143, + 255, + 47, + 63, + 142, + 255, + 68, + 80, + 156, + 255, + 121, + 129, + 169, + 255, + 235, + 238, + 252, + 255, + 91, + 95, + 164, + 255, + 47, + 67, + 145, + 255, + 45, + 59, + 147, + 255, + 44, + 60, + 145, + 255, + 45, + 63, + 147, + 255, + 51, + 72, + 155, + 255, + 79, + 93, + 166, + 255, + 111, + 124, + 176, + 255, + 135, + 146, + 186, + 255, + 118, + 124, + 168, + 255, + 79, + 93, + 164, + 255, + 55, + 69, + 149, + 255, + 45, + 63, + 148, + 255, + 45, + 63, + 149, + 255, + 45, + 64, + 143, + 255, + 43, + 68, + 136, + 255, + 74, + 89, + 155, + 255, + 211, + 217, + 238, + 255, + 255, + 255, + 249, + 255, + 248, + 249, + 255, + 255, + 108, + 115, + 168, + 255, + 59, + 72, + 156, + 255, + 46, + 58, + 143, + 255, + 48, + 56, + 139, + 255, + 44, + 57, + 136, + 255, + 43, + 63, + 139, + 255, + 67, + 78, + 140, + 255, + 101, + 111, + 161, + 255, + 129, + 136, + 173, + 255, + 125, + 132, + 160, + 255, + 83, + 99, + 150, + 255, + 53, + 68, + 122, + 255, + 47, + 62, + 119, + 255, + 58, + 73, + 132, + 255, + 80, + 91, + 139, + 255, + 116, + 128, + 160, + 255, + 186, + 189, + 205, + 255, + 255, + 253, + 255, + 255, + 117, + 123, + 148, + 255, + 49, + 59, + 113, + 255, + 33, + 50, + 104, + 255, + 37, + 52, + 111, + 255, + 45, + 59, + 120, + 255, + 39, + 49, + 102, + 255, + 70, + 76, + 119, + 255, + 218, + 225, + 235, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 200, + 202, + 208, + 255, + 252, + 253, + 255, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 253, + 255, + 253, + 253, + 253, + 255, + 254, + 255, + 253, + 255, + 252, + 255, + 255, + 255, + 60, + 63, + 89, + 255, + 35, + 42, + 70, + 255, + 18, + 25, + 54, + 255, + 17, + 24, + 53, + 255, + 16, + 23, + 52, + 255, + 15, + 22, + 51, + 255, + 47, + 51, + 76, + 255, + 107, + 110, + 124, + 255, + 253, + 255, + 251, + 255, + 253, + 255, + 255, + 255, + 69, + 73, + 85, + 255, + 25, + 30, + 52, + 255, + 13, + 19, + 53, + 255, + 15, + 22, + 66, + 255, + 19, + 25, + 76, + 255, + 18, + 24, + 76, + 255, + 27, + 33, + 82, + 255, + 48, + 51, + 94, + 255, + 67, + 70, + 113, + 255, + 56, + 59, + 102, + 255, + 30, + 33, + 76, + 255, + 17, + 21, + 69, + 255, + 15, + 21, + 65, + 255, + 20, + 29, + 69, + 255, + 80, + 92, + 129, + 255, + 38, + 45, + 73, + 255, + 27, + 30, + 55, + 255, + 88, + 87, + 100, + 255, + 255, + 253, + 254, + 255, + 247, + 255, + 251, + 255, + 99, + 105, + 135, + 255, + 46, + 62, + 129, + 255, + 53, + 88, + 148, + 255, + 55, + 124, + 181, + 255, + 67, + 140, + 191, + 255, + 60, + 148, + 183, + 255, + 111, + 197, + 223, + 255, + 237, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 177, + 199, + 215, + 255, + 92, + 141, + 207, + 255, + 69, + 125, + 202, + 255, + 63, + 142, + 200, + 255, + 62, + 149, + 199, + 255, + 58, + 162, + 207, + 255, + 62, + 190, + 210, + 255, + 128, + 189, + 201, + 255, + 255, + 255, + 252, + 255, + 255, + 252, + 255, + 255, + 253, + 254, + 249, + 255, + 238, + 244, + 252, + 255, + 63, + 66, + 136, + 255, + 34, + 43, + 100, + 255, + 27, + 35, + 91, + 255, + 35, + 36, + 90, + 255, + 41, + 42, + 105, + 255, + 57, + 62, + 137, + 255, + 102, + 104, + 164, + 255, + 255, + 253, + 255, + 255, + 114, + 137, + 172, + 255, + 77, + 119, + 191, + 255, + 83, + 102, + 187, + 255, + 80, + 77, + 174, + 255, + 61, + 72, + 156, + 255, + 43, + 59, + 128, + 255, + 52, + 57, + 122, + 255, + 167, + 170, + 187, + 255, + 255, + 255, + 249, + 255, + 254, + 254, + 254, + 255, + 254, + 255, + 252, + 255, + 251, + 255, + 255, + 255, + 60, + 66, + 90, + 255, + 60, + 66, + 103, + 255, + 239, + 241, + 240, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 184, + 184, + 195, + 255, + 16, + 14, + 41, + 255, + 13, + 11, + 48, + 255, + 9, + 11, + 36, + 255, + 10, + 11, + 39, + 255, + 10, + 11, + 40, + 255, + 10, + 11, + 40, + 255, + 10, + 11, + 42, + 255, + 11, + 10, + 40, + 255, + 13, + 12, + 44, + 255, + 13, + 12, + 42, + 255, + 20, + 21, + 43, + 255, + 51, + 44, + 60, + 255, + 196, + 174, + 54, + 255, + 200, + 167, + 2, + 255, + 188, + 158, + 16, + 255, + 160, + 126, + 88, + 255, + 73, + 49, + 46, + 255, + 33, + 23, + 50, + 255, + 22, + 22, + 48, + 255, + 14, + 10, + 45, + 255, + 15, + 10, + 47, + 255, + 15, + 11, + 43, + 255, + 19, + 16, + 41, + 255, + 22, + 21, + 56, + 255, + 72, + 62, + 9, + 255, + 183, + 172, + 57, + 255, + 93, + 68, + 70, + 255, + 80, + 64, + 32, + 255, + 81, + 68, + 16, + 255, + 94, + 83, + 12, + 255, + 88, + 73, + 24, + 255, + 89, + 77, + 19, + 255, + 96, + 76, + 50, + 255, + 197, + 164, + 137, + 255, + 190, + 146, + 118, + 255, + 186, + 152, + 130, + 255, + 62, + 53, + 49, + 255, + 41, + 43, + 67, + 255, + 41, + 38, + 72, + 255, + 17, + 21, + 60, + 255, + 16, + 18, + 65, + 255, + 16, + 18, + 68, + 255, + 15, + 17, + 64, + 255, + 16, + 14, + 51, + 255, + 12, + 12, + 38, + 255, + 12, + 13, + 33, + 255, + 12, + 13, + 34, + 255, + 14, + 12, + 35, + 255, + 13, + 13, + 38, + 255, + 13, + 16, + 43, + 255, + 22, + 26, + 54, + 255, + 16, + 18, + 50, + 255, + 31, + 26, + 54, + 255, + 164, + 183, + 209, + 255, + 46, + 97, + 126, + 255, + 25, + 105, + 146, + 255, + 23, + 109, + 158, + 255, + 9, + 97, + 143, + 255, + 120, + 204, + 241, + 255, + 29, + 68, + 98, + 255, + 29, + 26, + 82, + 255, + 19, + 24, + 79, + 255, + 8, + 26, + 67, + 255, + 21, + 17, + 68, + 255, + 19, + 13, + 59, + 255, + 12, + 18, + 59, + 255, + 17, + 13, + 62, + 255, + 17, + 16, + 57, + 255, + 17, + 16, + 59, + 255, + 17, + 15, + 61, + 255, + 16, + 14, + 61, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 59, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 55, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 59, + 255, + 16, + 14, + 60, + 255, + 16, + 14, + 54, + 255, + 14, + 12, + 49, + 255, + 12, + 11, + 43, + 255, + 12, + 11, + 41, + 255, + 10, + 12, + 35, + 255, + 9, + 11, + 36, + 255, + 13, + 13, + 48, + 255, + 7, + 10, + 28, + 255, + 8, + 10, + 23, + 255, + 7, + 9, + 22, + 255, + 6, + 8, + 20, + 255, + 7, + 9, + 20, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 24, + 255, + 12, + 11, + 25, + 255, + 14, + 13, + 30, + 255, + 24, + 18, + 39, + 255, + 57, + 33, + 59, + 255, + 194, + 130, + 139, + 255, + 200, + 131, + 136, + 255, + 199, + 130, + 136, + 255, + 195, + 128, + 136, + 255, + 193, + 128, + 136, + 255, + 191, + 125, + 135, + 255, + 189, + 125, + 134, + 255, + 186, + 124, + 133, + 255, + 185, + 124, + 132, + 255, + 183, + 123, + 131, + 255, + 182, + 122, + 132, + 255, + 180, + 120, + 130, + 255, + 179, + 119, + 131, + 255, + 174, + 121, + 127, + 255, + 172, + 119, + 127, + 255, + 171, + 118, + 128, + 255, + 170, + 117, + 128, + 255, + 170, + 117, + 127, + 255, + 169, + 116, + 126, + 255, + 168, + 115, + 125, + 255, + 167, + 114, + 124, + 255, + 164, + 112, + 125, + 255, + 163, + 111, + 124, + 255, + 163, + 111, + 124, + 255, + 163, + 111, + 124, + 255, + 161, + 111, + 123, + 255, + 160, + 110, + 122, + 255, + 160, + 110, + 122, + 255, + 159, + 109, + 121, + 255, + 160, + 119, + 128, + 255, + 146, + 113, + 124, + 255, + 165, + 143, + 157, + 255, + 60, + 43, + 59, + 255, + 48, + 34, + 57, + 255, + 33, + 24, + 46, + 255, + 30, + 28, + 51, + 255, + 24, + 25, + 47, + 255, + 21, + 16, + 39, + 255, + 15, + 13, + 40, + 255, + 16, + 13, + 38, + 255, + 20, + 12, + 33, + 255, + 18, + 14, + 41, + 255, + 15, + 16, + 37, + 255, + 16, + 14, + 35, + 255, + 18, + 12, + 32, + 255, + 14, + 13, + 35, + 255, + 13, + 12, + 36, + 255, + 13, + 12, + 37, + 255, + 13, + 12, + 37, + 255, + 12, + 11, + 34, + 255, + 12, + 11, + 34, + 255, + 16, + 16, + 36, + 255, + 14, + 14, + 34, + 255, + 15, + 18, + 37, + 255, + 17, + 17, + 53, + 255, + 8, + 10, + 50, + 255, + 8, + 13, + 46, + 255, + 14, + 14, + 42, + 255, + 12, + 13, + 35, + 255, + 13, + 14, + 35, + 255, + 15, + 15, + 41, + 255, + 12, + 13, + 34, + 255, + 11, + 12, + 33, + 255, + 16, + 17, + 38, + 255, + 15, + 16, + 37, + 255, + 13, + 12, + 28, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 12, + 11, + 25, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 2, + 255, + 0, + 0, + 11, + 255, + 5, + 1, + 1, + 255, + 2, + 15, + 41, + 255, + 14, + 72, + 173, + 255, + 0, + 95, + 234, + 255, + 9, + 88, + 231, + 255, + 0, + 94, + 231, + 255, + 2, + 89, + 231, + 255, + 10, + 97, + 228, + 255, + 95, + 146, + 218, + 255, + 255, + 254, + 255, + 255, + 106, + 110, + 130, + 255, + 40, + 48, + 88, + 255, + 24, + 35, + 71, + 255, + 26, + 33, + 76, + 255, + 24, + 36, + 77, + 255, + 27, + 37, + 82, + 255, + 38, + 46, + 88, + 255, + 88, + 96, + 133, + 255, + 254, + 255, + 255, + 255, + 249, + 251, + 250, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 251, + 255, + 254, + 254, + 255, + 255, + 79, + 93, + 141, + 255, + 44, + 55, + 120, + 255, + 38, + 51, + 121, + 255, + 38, + 53, + 117, + 255, + 36, + 55, + 124, + 255, + 38, + 56, + 130, + 255, + 39, + 55, + 131, + 255, + 42, + 57, + 130, + 255, + 52, + 67, + 142, + 255, + 58, + 72, + 145, + 255, + 71, + 83, + 151, + 255, + 90, + 102, + 168, + 255, + 232, + 235, + 255, + 255, + 98, + 105, + 143, + 255, + 63, + 73, + 153, + 255, + 41, + 59, + 134, + 255, + 43, + 56, + 142, + 255, + 40, + 58, + 141, + 255, + 45, + 61, + 147, + 255, + 71, + 86, + 151, + 255, + 149, + 157, + 195, + 255, + 248, + 251, + 252, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 253, + 255, + 168, + 170, + 202, + 255, + 67, + 79, + 154, + 255, + 48, + 65, + 147, + 255, + 48, + 61, + 145, + 255, + 39, + 57, + 139, + 255, + 43, + 62, + 140, + 255, + 65, + 79, + 149, + 255, + 137, + 148, + 186, + 255, + 255, + 255, + 249, + 255, + 151, + 159, + 179, + 255, + 72, + 83, + 156, + 255, + 45, + 59, + 133, + 255, + 42, + 54, + 138, + 255, + 38, + 55, + 133, + 255, + 42, + 57, + 140, + 255, + 62, + 74, + 142, + 255, + 104, + 112, + 159, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 250, + 255, + 253, + 255, + 255, + 255, + 227, + 231, + 248, + 255, + 99, + 111, + 150, + 255, + 86, + 99, + 141, + 255, + 129, + 134, + 162, + 255, + 247, + 251, + 255, + 255, + 249, + 249, + 251, + 255, + 255, + 255, + 252, + 255, + 254, + 255, + 255, + 255, + 88, + 98, + 133, + 255, + 46, + 55, + 105, + 255, + 33, + 43, + 97, + 255, + 32, + 44, + 93, + 255, + 30, + 42, + 98, + 255, + 38, + 49, + 103, + 255, + 83, + 89, + 122, + 255, + 250, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 250, + 249, + 246, + 255, + 254, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 250, + 251, + 251, + 255, + 253, + 254, + 254, + 255, + 253, + 254, + 255, + 255, + 250, + 252, + 248, + 255, + 254, + 255, + 255, + 255, + 79, + 78, + 93, + 255, + 42, + 50, + 87, + 255, + 16, + 24, + 61, + 255, + 17, + 25, + 62, + 255, + 16, + 24, + 61, + 255, + 14, + 23, + 56, + 255, + 53, + 56, + 90, + 255, + 115, + 119, + 130, + 255, + 255, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 55, + 57, + 90, + 255, + 20, + 25, + 59, + 255, + 18, + 24, + 68, + 255, + 20, + 24, + 77, + 255, + 19, + 28, + 78, + 255, + 16, + 26, + 71, + 255, + 64, + 68, + 106, + 255, + 218, + 216, + 236, + 255, + 255, + 253, + 255, + 255, + 254, + 254, + 255, + 255, + 67, + 68, + 107, + 255, + 21, + 25, + 70, + 255, + 15, + 19, + 64, + 255, + 34, + 39, + 79, + 255, + 35, + 42, + 73, + 255, + 16, + 26, + 54, + 255, + 34, + 38, + 69, + 255, + 102, + 102, + 119, + 255, + 253, + 253, + 253, + 255, + 253, + 255, + 255, + 255, + 70, + 76, + 116, + 255, + 33, + 50, + 104, + 255, + 41, + 63, + 136, + 255, + 52, + 111, + 169, + 255, + 56, + 177, + 204, + 255, + 72, + 178, + 210, + 255, + 101, + 175, + 200, + 255, + 247, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 140, + 164, + 209, + 255, + 82, + 122, + 201, + 255, + 71, + 118, + 196, + 255, + 70, + 121, + 201, + 255, + 68, + 129, + 203, + 255, + 68, + 134, + 202, + 255, + 86, + 143, + 197, + 255, + 212, + 233, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 121, + 127, + 154, + 255, + 50, + 56, + 127, + 255, + 31, + 38, + 93, + 255, + 33, + 34, + 90, + 255, + 32, + 36, + 90, + 255, + 38, + 43, + 106, + 255, + 63, + 67, + 139, + 255, + 117, + 121, + 159, + 255, + 252, + 255, + 248, + 255, + 123, + 149, + 190, + 255, + 77, + 138, + 200, + 255, + 78, + 90, + 180, + 255, + 71, + 80, + 166, + 255, + 62, + 67, + 150, + 255, + 49, + 52, + 133, + 255, + 40, + 46, + 111, + 255, + 45, + 51, + 101, + 255, + 60, + 63, + 95, + 255, + 75, + 78, + 98, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 252, + 255, + 251, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 46, + 49, + 66, + 255, + 17, + 18, + 47, + 255, + 10, + 10, + 45, + 255, + 10, + 11, + 38, + 255, + 10, + 11, + 41, + 255, + 9, + 10, + 40, + 255, + 10, + 11, + 41, + 255, + 10, + 11, + 41, + 255, + 11, + 12, + 39, + 255, + 11, + 11, + 45, + 255, + 13, + 14, + 44, + 255, + 17, + 19, + 43, + 255, + 40, + 36, + 37, + 255, + 189, + 172, + 56, + 255, + 199, + 161, + 18, + 255, + 170, + 145, + 42, + 255, + 172, + 144, + 125, + 255, + 42, + 39, + 55, + 255, + 23, + 19, + 45, + 255, + 13, + 14, + 43, + 255, + 12, + 11, + 42, + 255, + 12, + 11, + 42, + 255, + 13, + 12, + 43, + 255, + 19, + 18, + 49, + 255, + 43, + 40, + 24, + 255, + 49, + 52, + 0, + 255, + 42, + 32, + 59, + 255, + 35, + 28, + 37, + 255, + 28, + 27, + 44, + 255, + 28, + 27, + 44, + 255, + 30, + 29, + 46, + 255, + 31, + 30, + 47, + 255, + 37, + 36, + 52, + 255, + 83, + 57, + 60, + 255, + 201, + 140, + 93, + 255, + 187, + 163, + 144, + 255, + 50, + 42, + 56, + 255, + 34, + 27, + 52, + 255, + 24, + 21, + 48, + 255, + 31, + 33, + 56, + 255, + 14, + 17, + 63, + 255, + 14, + 14, + 74, + 255, + 16, + 17, + 61, + 255, + 18, + 17, + 57, + 255, + 17, + 18, + 63, + 255, + 10, + 11, + 41, + 255, + 11, + 12, + 31, + 255, + 12, + 12, + 30, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 34, + 255, + 14, + 12, + 34, + 255, + 14, + 12, + 34, + 255, + 13, + 17, + 45, + 255, + 22, + 27, + 57, + 255, + 125, + 139, + 168, + 255, + 24, + 48, + 76, + 255, + 36, + 73, + 105, + 255, + 28, + 68, + 95, + 255, + 17, + 49, + 80, + 255, + 36, + 56, + 98, + 255, + 25, + 31, + 75, + 255, + 17, + 22, + 72, + 255, + 20, + 18, + 69, + 255, + 22, + 12, + 62, + 255, + 15, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 16, + 14, + 61, + 255, + 13, + 16, + 61, + 255, + 13, + 16, + 61, + 255, + 13, + 16, + 61, + 255, + 13, + 16, + 61, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 57, + 255, + 14, + 16, + 58, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 56, + 255, + 14, + 16, + 57, + 255, + 14, + 15, + 61, + 255, + 13, + 16, + 50, + 255, + 6, + 12, + 28, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 8, + 7, + 21, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 10, + 21, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 11, + 10, + 28, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 26, + 255, + 21, + 16, + 36, + 255, + 50, + 30, + 55, + 255, + 196, + 136, + 146, + 255, + 206, + 129, + 136, + 255, + 202, + 130, + 136, + 255, + 198, + 130, + 136, + 255, + 194, + 129, + 134, + 255, + 193, + 128, + 133, + 255, + 187, + 127, + 133, + 255, + 189, + 126, + 135, + 255, + 190, + 123, + 135, + 255, + 184, + 125, + 129, + 255, + 181, + 125, + 130, + 255, + 176, + 125, + 131, + 255, + 173, + 125, + 132, + 255, + 175, + 122, + 133, + 255, + 173, + 120, + 131, + 255, + 173, + 120, + 131, + 255, + 172, + 119, + 130, + 255, + 171, + 120, + 127, + 255, + 168, + 120, + 125, + 255, + 166, + 120, + 123, + 255, + 163, + 119, + 121, + 255, + 168, + 112, + 125, + 255, + 170, + 116, + 126, + 255, + 161, + 111, + 119, + 255, + 165, + 119, + 123, + 255, + 164, + 109, + 116, + 255, + 163, + 119, + 127, + 255, + 151, + 121, + 131, + 255, + 165, + 143, + 155, + 255, + 64, + 53, + 69, + 255, + 58, + 49, + 67, + 255, + 38, + 32, + 51, + 255, + 30, + 25, + 45, + 255, + 24, + 22, + 46, + 255, + 21, + 19, + 43, + 255, + 20, + 18, + 42, + 255, + 19, + 17, + 41, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 14, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 14, + 15, + 36, + 255, + 14, + 17, + 34, + 255, + 15, + 17, + 39, + 255, + 21, + 22, + 52, + 255, + 18, + 18, + 54, + 255, + 16, + 16, + 42, + 255, + 14, + 14, + 39, + 255, + 14, + 14, + 38, + 255, + 13, + 14, + 35, + 255, + 17, + 18, + 39, + 255, + 16, + 17, + 38, + 255, + 13, + 14, + 35, + 255, + 12, + 13, + 34, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 12, + 11, + 28, + 255, + 12, + 11, + 28, + 255, + 12, + 11, + 28, + 255, + 0, + 0, + 5, + 255, + 2, + 1, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 6, + 255, + 7, + 7, + 17, + 255, + 3, + 2, + 1, + 255, + 1, + 24, + 59, + 255, + 22, + 87, + 214, + 255, + 0, + 90, + 232, + 255, + 7, + 89, + 234, + 255, + 1, + 93, + 227, + 255, + 5, + 88, + 236, + 255, + 19, + 103, + 230, + 255, + 130, + 166, + 215, + 255, + 254, + 255, + 254, + 255, + 104, + 107, + 124, + 255, + 33, + 40, + 77, + 255, + 20, + 30, + 64, + 255, + 25, + 31, + 72, + 255, + 21, + 32, + 69, + 255, + 25, + 33, + 74, + 255, + 35, + 43, + 81, + 255, + 91, + 98, + 131, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 167, + 169, + 188, + 255, + 61, + 73, + 122, + 255, + 38, + 50, + 110, + 255, + 35, + 47, + 112, + 255, + 35, + 49, + 111, + 255, + 36, + 48, + 113, + 255, + 37, + 50, + 120, + 255, + 42, + 57, + 125, + 255, + 59, + 77, + 136, + 255, + 93, + 99, + 151, + 255, + 125, + 131, + 174, + 255, + 153, + 158, + 189, + 255, + 199, + 205, + 229, + 255, + 251, + 254, + 255, + 255, + 101, + 110, + 154, + 255, + 47, + 59, + 136, + 255, + 39, + 53, + 134, + 255, + 39, + 53, + 134, + 255, + 37, + 54, + 134, + 255, + 50, + 63, + 142, + 255, + 104, + 115, + 167, + 255, + 253, + 254, + 255, + 255, + 244, + 247, + 237, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 245, + 249, + 255, + 255, + 80, + 92, + 151, + 255, + 45, + 63, + 136, + 255, + 41, + 55, + 134, + 255, + 40, + 58, + 132, + 255, + 46, + 64, + 138, + 255, + 62, + 73, + 145, + 255, + 119, + 128, + 169, + 255, + 252, + 253, + 255, + 255, + 116, + 124, + 164, + 255, + 53, + 63, + 141, + 255, + 47, + 59, + 137, + 255, + 37, + 51, + 130, + 255, + 34, + 52, + 127, + 255, + 44, + 57, + 135, + 255, + 90, + 99, + 157, + 255, + 242, + 244, + 255, + 255, + 236, + 235, + 234, + 255, + 255, + 255, + 252, + 255, + 250, + 255, + 255, + 255, + 245, + 247, + 244, + 255, + 183, + 190, + 199, + 255, + 249, + 255, + 255, + 255, + 254, + 255, + 251, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 248, + 248, + 246, + 255, + 237, + 239, + 247, + 255, + 69, + 79, + 116, + 255, + 32, + 42, + 88, + 255, + 29, + 39, + 89, + 255, + 28, + 40, + 87, + 255, + 28, + 40, + 87, + 255, + 42, + 54, + 95, + 255, + 106, + 113, + 133, + 255, + 251, + 253, + 251, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 249, + 251, + 255, + 255, + 226, + 227, + 237, + 255, + 123, + 130, + 143, + 255, + 104, + 110, + 127, + 255, + 95, + 100, + 122, + 255, + 94, + 98, + 124, + 255, + 105, + 110, + 131, + 255, + 107, + 113, + 130, + 255, + 123, + 128, + 151, + 255, + 75, + 78, + 111, + 255, + 34, + 41, + 92, + 255, + 21, + 29, + 79, + 255, + 18, + 26, + 76, + 255, + 17, + 25, + 75, + 255, + 20, + 26, + 77, + 255, + 66, + 68, + 108, + 255, + 133, + 136, + 149, + 255, + 253, + 253, + 252, + 255, + 172, + 176, + 187, + 255, + 36, + 38, + 79, + 255, + 20, + 24, + 63, + 255, + 16, + 23, + 69, + 255, + 16, + 22, + 71, + 255, + 20, + 28, + 76, + 255, + 32, + 41, + 83, + 255, + 138, + 141, + 167, + 255, + 252, + 254, + 252, + 255, + 255, + 255, + 248, + 255, + 253, + 255, + 247, + 255, + 90, + 94, + 114, + 255, + 30, + 36, + 72, + 255, + 14, + 19, + 58, + 255, + 30, + 36, + 71, + 255, + 3, + 10, + 38, + 255, + 14, + 23, + 55, + 255, + 48, + 52, + 80, + 255, + 121, + 121, + 136, + 255, + 255, + 255, + 255, + 255, + 230, + 234, + 244, + 255, + 56, + 62, + 104, + 255, + 27, + 40, + 93, + 255, + 31, + 49, + 116, + 255, + 34, + 84, + 146, + 255, + 46, + 101, + 160, + 255, + 61, + 113, + 173, + 255, + 136, + 157, + 205, + 255, + 248, + 251, + 249, + 255, + 254, + 254, + 255, + 255, + 109, + 136, + 190, + 255, + 68, + 108, + 189, + 255, + 74, + 107, + 192, + 255, + 76, + 107, + 195, + 255, + 79, + 110, + 193, + 255, + 78, + 108, + 186, + 255, + 106, + 138, + 189, + 255, + 244, + 253, + 255, + 255, + 255, + 254, + 254, + 255, + 253, + 255, + 255, + 255, + 252, + 253, + 255, + 255, + 94, + 99, + 138, + 255, + 43, + 50, + 115, + 255, + 30, + 39, + 94, + 255, + 32, + 36, + 91, + 255, + 32, + 39, + 94, + 255, + 39, + 45, + 105, + 255, + 70, + 75, + 139, + 255, + 244, + 243, + 255, + 255, + 255, + 253, + 241, + 255, + 219, + 215, + 251, + 255, + 93, + 104, + 187, + 255, + 75, + 83, + 172, + 255, + 66, + 73, + 160, + 255, + 56, + 62, + 142, + 255, + 46, + 50, + 124, + 255, + 38, + 44, + 104, + 255, + 33, + 39, + 92, + 255, + 39, + 43, + 89, + 255, + 36, + 39, + 80, + 255, + 64, + 71, + 108, + 255, + 70, + 72, + 111, + 255, + 252, + 253, + 255, + 255, + 252, + 253, + 246, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 31, + 33, + 55, + 255, + 16, + 17, + 47, + 255, + 11, + 11, + 45, + 255, + 11, + 12, + 40, + 255, + 12, + 13, + 43, + 255, + 12, + 13, + 43, + 255, + 11, + 12, + 42, + 255, + 11, + 12, + 42, + 255, + 11, + 12, + 40, + 255, + 11, + 12, + 43, + 255, + 16, + 17, + 48, + 255, + 15, + 16, + 45, + 255, + 34, + 33, + 38, + 255, + 135, + 118, + 37, + 255, + 198, + 161, + 9, + 255, + 172, + 129, + 77, + 255, + 67, + 44, + 38, + 255, + 27, + 25, + 49, + 255, + 17, + 12, + 42, + 255, + 11, + 11, + 45, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 19, + 18, + 49, + 255, + 66, + 66, + 76, + 255, + 28, + 27, + 42, + 255, + 21, + 18, + 45, + 255, + 17, + 14, + 43, + 255, + 18, + 15, + 41, + 255, + 18, + 15, + 41, + 255, + 17, + 14, + 40, + 255, + 18, + 15, + 41, + 255, + 25, + 22, + 47, + 255, + 56, + 39, + 39, + 255, + 189, + 153, + 122, + 255, + 63, + 52, + 64, + 255, + 24, + 18, + 34, + 255, + 19, + 15, + 38, + 255, + 16, + 14, + 41, + 255, + 17, + 17, + 43, + 255, + 15, + 18, + 64, + 255, + 13, + 14, + 71, + 255, + 16, + 18, + 59, + 255, + 18, + 17, + 59, + 255, + 14, + 15, + 60, + 255, + 14, + 15, + 47, + 255, + 10, + 11, + 32, + 255, + 11, + 11, + 29, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 11, + 14, + 34, + 255, + 16, + 19, + 45, + 255, + 24, + 35, + 66, + 255, + 42, + 61, + 94, + 255, + 43, + 56, + 78, + 255, + 31, + 44, + 66, + 255, + 31, + 40, + 73, + 255, + 31, + 32, + 77, + 255, + 13, + 20, + 75, + 255, + 12, + 22, + 77, + 255, + 13, + 20, + 73, + 255, + 12, + 14, + 62, + 255, + 15, + 16, + 60, + 255, + 15, + 16, + 60, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 16, + 14, + 60, + 255, + 16, + 14, + 60, + 255, + 16, + 14, + 60, + 255, + 16, + 14, + 60, + 255, + 14, + 15, + 60, + 255, + 14, + 15, + 60, + 255, + 14, + 15, + 60, + 255, + 14, + 15, + 60, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 14, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 59, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 57, + 255, + 15, + 13, + 59, + 255, + 13, + 13, + 51, + 255, + 9, + 11, + 36, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 9, + 8, + 22, + 255, + 9, + 8, + 22, + 255, + 8, + 7, + 21, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 11, + 10, + 28, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 28, + 255, + 20, + 16, + 37, + 255, + 47, + 29, + 54, + 255, + 198, + 141, + 151, + 255, + 201, + 133, + 147, + 255, + 199, + 132, + 144, + 255, + 199, + 130, + 142, + 255, + 197, + 128, + 139, + 255, + 197, + 126, + 132, + 255, + 191, + 130, + 135, + 255, + 186, + 131, + 135, + 255, + 184, + 128, + 133, + 255, + 187, + 129, + 138, + 255, + 183, + 128, + 138, + 255, + 181, + 129, + 140, + 255, + 179, + 129, + 139, + 255, + 180, + 128, + 135, + 255, + 178, + 126, + 133, + 255, + 176, + 124, + 131, + 255, + 175, + 123, + 130, + 255, + 175, + 120, + 132, + 255, + 173, + 120, + 131, + 255, + 171, + 119, + 131, + 255, + 169, + 117, + 130, + 255, + 164, + 119, + 124, + 255, + 157, + 116, + 124, + 255, + 153, + 119, + 128, + 255, + 163, + 133, + 143, + 255, + 163, + 148, + 160, + 255, + 78, + 67, + 81, + 255, + 50, + 46, + 63, + 255, + 41, + 41, + 60, + 255, + 38, + 33, + 56, + 255, + 23, + 19, + 42, + 255, + 24, + 22, + 45, + 255, + 18, + 17, + 42, + 255, + 20, + 18, + 42, + 255, + 19, + 17, + 41, + 255, + 18, + 16, + 40, + 255, + 17, + 15, + 39, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 14, + 16, + 40, + 255, + 15, + 17, + 42, + 255, + 15, + 16, + 43, + 255, + 17, + 18, + 45, + 255, + 20, + 20, + 46, + 255, + 18, + 18, + 43, + 255, + 21, + 21, + 45, + 255, + 17, + 18, + 39, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 13, + 14, + 35, + 255, + 12, + 13, + 34, + 255, + 14, + 12, + 33, + 255, + 14, + 12, + 33, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 32, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 6, + 255, + 3, + 5, + 8, + 255, + 0, + 30, + 86, + 255, + 11, + 90, + 233, + 255, + 7, + 93, + 230, + 255, + 4, + 90, + 236, + 255, + 4, + 92, + 225, + 255, + 9, + 89, + 236, + 255, + 32, + 111, + 229, + 255, + 237, + 253, + 255, + 255, + 249, + 254, + 252, + 255, + 102, + 103, + 117, + 255, + 34, + 40, + 73, + 255, + 20, + 29, + 59, + 255, + 20, + 25, + 63, + 255, + 20, + 29, + 62, + 255, + 22, + 30, + 66, + 255, + 30, + 37, + 71, + 255, + 85, + 91, + 118, + 255, + 248, + 249, + 254, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 253, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 119, + 123, + 153, + 255, + 48, + 58, + 108, + 255, + 33, + 44, + 99, + 255, + 32, + 44, + 102, + 255, + 33, + 45, + 103, + 255, + 36, + 47, + 103, + 255, + 40, + 50, + 111, + 255, + 65, + 76, + 123, + 255, + 118, + 131, + 157, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 246, + 255, + 250, + 251, + 255, + 255, + 85, + 95, + 149, + 255, + 40, + 54, + 124, + 255, + 35, + 47, + 125, + 255, + 36, + 50, + 124, + 255, + 37, + 52, + 127, + 255, + 52, + 62, + 132, + 255, + 137, + 144, + 180, + 255, + 255, + 255, + 252, + 255, + 254, + 255, + 247, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 87, + 98, + 153, + 255, + 39, + 55, + 125, + 255, + 37, + 49, + 126, + 255, + 38, + 55, + 126, + 255, + 38, + 55, + 125, + 255, + 58, + 68, + 136, + 255, + 116, + 123, + 160, + 255, + 250, + 255, + 255, + 255, + 89, + 96, + 155, + 255, + 44, + 55, + 129, + 255, + 36, + 48, + 125, + 255, + 35, + 50, + 125, + 255, + 34, + 51, + 123, + 255, + 48, + 58, + 128, + 255, + 112, + 119, + 161, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 251, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 252, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 255, + 255, + 133, + 137, + 153, + 255, + 53, + 62, + 102, + 255, + 29, + 39, + 82, + 255, + 28, + 39, + 84, + 255, + 26, + 39, + 83, + 255, + 28, + 39, + 82, + 255, + 51, + 63, + 96, + 255, + 128, + 134, + 148, + 255, + 255, + 255, + 251, + 255, + 254, + 255, + 255, + 255, + 243, + 247, + 255, + 255, + 94, + 97, + 121, + 255, + 63, + 68, + 96, + 255, + 45, + 54, + 87, + 255, + 35, + 43, + 80, + 255, + 34, + 42, + 83, + 255, + 37, + 44, + 88, + 255, + 41, + 47, + 95, + 255, + 48, + 54, + 103, + 255, + 45, + 51, + 104, + 255, + 36, + 41, + 99, + 255, + 27, + 35, + 92, + 255, + 22, + 30, + 87, + 255, + 21, + 29, + 86, + 255, + 21, + 29, + 86, + 255, + 27, + 32, + 88, + 255, + 81, + 83, + 123, + 255, + 239, + 243, + 253, + 255, + 253, + 253, + 254, + 255, + 106, + 109, + 134, + 255, + 27, + 29, + 78, + 255, + 18, + 23, + 68, + 255, + 16, + 24, + 70, + 255, + 15, + 22, + 66, + 255, + 19, + 27, + 73, + 255, + 48, + 54, + 89, + 255, + 252, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 99, + 102, + 130, + 255, + 28, + 34, + 69, + 255, + 15, + 20, + 59, + 255, + 15, + 20, + 58, + 255, + 16, + 22, + 55, + 255, + 18, + 26, + 62, + 255, + 59, + 63, + 90, + 255, + 216, + 217, + 229, + 255, + 254, + 254, + 253, + 255, + 107, + 114, + 131, + 255, + 53, + 59, + 104, + 255, + 24, + 34, + 84, + 255, + 31, + 41, + 103, + 255, + 40, + 48, + 119, + 255, + 45, + 66, + 138, + 255, + 77, + 88, + 159, + 255, + 151, + 172, + 204, + 255, + 255, + 254, + 253, + 255, + 243, + 245, + 255, + 255, + 90, + 117, + 180, + 255, + 71, + 103, + 179, + 255, + 71, + 110, + 189, + 255, + 81, + 116, + 197, + 255, + 70, + 100, + 177, + 255, + 73, + 102, + 170, + 255, + 118, + 134, + 177, + 255, + 252, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 252, + 255, + 253, + 255, + 255, + 255, + 79, + 83, + 137, + 255, + 39, + 49, + 108, + 255, + 30, + 41, + 96, + 255, + 31, + 40, + 95, + 255, + 33, + 41, + 99, + 255, + 44, + 51, + 107, + 255, + 76, + 82, + 135, + 255, + 249, + 255, + 255, + 255, + 254, + 255, + 247, + 255, + 253, + 254, + 255, + 255, + 96, + 98, + 147, + 255, + 78, + 85, + 155, + 255, + 59, + 65, + 143, + 255, + 50, + 56, + 132, + 255, + 42, + 50, + 116, + 255, + 37, + 44, + 100, + 255, + 33, + 40, + 94, + 255, + 31, + 38, + 89, + 255, + 39, + 47, + 96, + 255, + 33, + 41, + 95, + 255, + 41, + 46, + 104, + 255, + 63, + 66, + 108, + 255, + 239, + 244, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 250, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 21, + 22, + 51, + 255, + 14, + 15, + 46, + 255, + 12, + 13, + 44, + 255, + 12, + 13, + 43, + 255, + 11, + 12, + 43, + 255, + 12, + 13, + 44, + 255, + 12, + 13, + 44, + 255, + 11, + 12, + 43, + 255, + 11, + 12, + 42, + 255, + 11, + 12, + 42, + 255, + 13, + 13, + 47, + 255, + 16, + 15, + 54, + 255, + 23, + 22, + 48, + 255, + 63, + 52, + 32, + 255, + 180, + 155, + 22, + 255, + 167, + 126, + 72, + 255, + 52, + 39, + 49, + 255, + 22, + 22, + 52, + 255, + 16, + 11, + 41, + 255, + 10, + 12, + 45, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 15, + 14, + 45, + 255, + 15, + 18, + 37, + 255, + 17, + 17, + 51, + 255, + 13, + 16, + 32, + 255, + 11, + 13, + 37, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 41, + 255, + 12, + 12, + 40, + 255, + 13, + 13, + 41, + 255, + 18, + 18, + 44, + 255, + 38, + 31, + 46, + 255, + 87, + 80, + 87, + 255, + 24, + 21, + 56, + 255, + 17, + 15, + 34, + 255, + 11, + 11, + 30, + 255, + 11, + 11, + 38, + 255, + 16, + 15, + 48, + 255, + 20, + 22, + 72, + 255, + 14, + 15, + 68, + 255, + 15, + 17, + 56, + 255, + 17, + 15, + 62, + 255, + 15, + 16, + 60, + 255, + 15, + 15, + 53, + 255, + 12, + 12, + 39, + 255, + 11, + 11, + 28, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 9, + 11, + 28, + 255, + 14, + 15, + 37, + 255, + 13, + 18, + 47, + 255, + 186, + 197, + 228, + 255, + 54, + 62, + 99, + 255, + 21, + 28, + 71, + 255, + 12, + 22, + 75, + 255, + 14, + 25, + 89, + 255, + 17, + 30, + 93, + 255, + 16, + 30, + 92, + 255, + 13, + 23, + 76, + 255, + 13, + 17, + 63, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 58, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 56, + 255, + 15, + 13, + 50, + 255, + 15, + 14, + 48, + 255, + 14, + 13, + 44, + 255, + 14, + 14, + 42, + 255, + 10, + 10, + 38, + 255, + 8, + 8, + 36, + 255, + 8, + 8, + 36, + 255, + 9, + 9, + 37, + 255, + 8, + 8, + 36, + 255, + 8, + 8, + 36, + 255, + 9, + 9, + 37, + 255, + 9, + 9, + 34, + 255, + 12, + 11, + 29, + 255, + 9, + 8, + 25, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 8, + 28, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 14, + 11, + 30, + 255, + 19, + 15, + 39, + 255, + 42, + 28, + 54, + 255, + 188, + 136, + 147, + 255, + 210, + 130, + 134, + 255, + 203, + 128, + 134, + 255, + 205, + 138, + 145, + 255, + 193, + 130, + 139, + 255, + 152, + 107, + 122, + 255, + 133, + 100, + 110, + 255, + 194, + 170, + 176, + 255, + 198, + 176, + 179, + 255, + 190, + 181, + 173, + 255, + 189, + 180, + 171, + 255, + 189, + 181, + 169, + 255, + 185, + 177, + 165, + 255, + 180, + 169, + 166, + 255, + 180, + 169, + 166, + 255, + 175, + 164, + 161, + 255, + 180, + 169, + 166, + 255, + 179, + 166, + 158, + 255, + 178, + 166, + 161, + 255, + 173, + 162, + 160, + 255, + 171, + 161, + 160, + 255, + 165, + 161, + 166, + 255, + 76, + 76, + 85, + 255, + 44, + 47, + 62, + 255, + 43, + 48, + 67, + 255, + 36, + 30, + 56, + 255, + 32, + 26, + 53, + 255, + 28, + 22, + 52, + 255, + 24, + 19, + 50, + 255, + 21, + 21, + 49, + 255, + 19, + 19, + 47, + 255, + 19, + 17, + 44, + 255, + 21, + 17, + 43, + 255, + 19, + 17, + 41, + 255, + 19, + 17, + 41, + 255, + 19, + 17, + 41, + 255, + 19, + 17, + 41, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 42, + 255, + 16, + 16, + 42, + 255, + 15, + 16, + 44, + 255, + 15, + 17, + 42, + 255, + 15, + 17, + 42, + 255, + 15, + 17, + 40, + 255, + 16, + 16, + 42, + 255, + 16, + 16, + 41, + 255, + 16, + 16, + 40, + 255, + 16, + 17, + 38, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 14, + 15, + 36, + 255, + 14, + 15, + 36, + 255, + 15, + 13, + 35, + 255, + 14, + 12, + 34, + 255, + 14, + 12, + 34, + 255, + 13, + 11, + 33, + 255, + 11, + 12, + 32, + 255, + 11, + 12, + 32, + 255, + 11, + 12, + 32, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 1, + 0, + 1, + 255, + 5, + 8, + 14, + 255, + 7, + 49, + 123, + 255, + 3, + 93, + 235, + 255, + 7, + 91, + 218, + 255, + 2, + 91, + 237, + 255, + 6, + 91, + 225, + 255, + 11, + 91, + 231, + 255, + 46, + 124, + 234, + 255, + 246, + 248, + 255, + 255, + 248, + 253, + 255, + 255, + 113, + 113, + 124, + 255, + 39, + 43, + 75, + 255, + 22, + 29, + 57, + 255, + 20, + 24, + 59, + 255, + 17, + 26, + 55, + 255, + 20, + 27, + 60, + 255, + 27, + 32, + 63, + 255, + 60, + 66, + 90, + 255, + 126, + 127, + 132, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 157, + 156, + 160, + 255, + 219, + 219, + 219, + 255, + 249, + 249, + 249, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 87, + 94, + 131, + 255, + 39, + 46, + 98, + 255, + 30, + 40, + 91, + 255, + 30, + 41, + 95, + 255, + 31, + 42, + 99, + 255, + 29, + 45, + 96, + 255, + 57, + 67, + 119, + 255, + 113, + 120, + 148, + 255, + 237, + 243, + 242, + 255, + 254, + 255, + 253, + 255, + 250, + 250, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 247, + 248, + 255, + 255, + 80, + 90, + 153, + 255, + 32, + 50, + 112, + 255, + 33, + 44, + 115, + 255, + 33, + 47, + 117, + 255, + 35, + 47, + 121, + 255, + 55, + 63, + 128, + 255, + 163, + 168, + 192, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 246, + 255, + 247, + 247, + 255, + 255, + 71, + 79, + 142, + 255, + 36, + 50, + 124, + 255, + 36, + 46, + 126, + 255, + 35, + 49, + 124, + 255, + 36, + 52, + 122, + 255, + 59, + 70, + 132, + 255, + 142, + 150, + 178, + 255, + 249, + 255, + 255, + 255, + 78, + 86, + 153, + 255, + 39, + 52, + 120, + 255, + 32, + 44, + 117, + 255, + 31, + 48, + 120, + 255, + 33, + 50, + 120, + 255, + 59, + 68, + 134, + 255, + 127, + 133, + 166, + 255, + 254, + 255, + 255, + 255, + 252, + 253, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 249, + 255, + 252, + 255, + 251, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 254, + 255, + 255, + 105, + 109, + 128, + 255, + 41, + 50, + 91, + 255, + 28, + 39, + 79, + 255, + 25, + 37, + 77, + 255, + 24, + 37, + 79, + 255, + 30, + 39, + 83, + 255, + 68, + 79, + 109, + 255, + 248, + 253, + 255, + 255, + 255, + 253, + 251, + 255, + 243, + 245, + 250, + 255, + 105, + 108, + 132, + 255, + 51, + 56, + 94, + 255, + 30, + 37, + 79, + 255, + 24, + 29, + 78, + 255, + 28, + 33, + 81, + 255, + 38, + 43, + 90, + 255, + 60, + 65, + 112, + 255, + 79, + 85, + 126, + 255, + 77, + 82, + 128, + 255, + 56, + 61, + 110, + 255, + 35, + 40, + 90, + 255, + 24, + 33, + 92, + 255, + 23, + 32, + 91, + 255, + 21, + 30, + 89, + 255, + 21, + 30, + 89, + 255, + 31, + 37, + 87, + 255, + 107, + 111, + 142, + 255, + 251, + 255, + 255, + 255, + 252, + 251, + 255, + 255, + 89, + 92, + 125, + 255, + 33, + 35, + 91, + 255, + 22, + 29, + 76, + 255, + 16, + 27, + 74, + 255, + 16, + 25, + 65, + 255, + 30, + 37, + 81, + 255, + 70, + 75, + 107, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 251, + 252, + 255, + 255, + 73, + 76, + 103, + 255, + 24, + 29, + 67, + 255, + 16, + 21, + 64, + 255, + 18, + 22, + 67, + 255, + 19, + 24, + 64, + 255, + 27, + 35, + 75, + 255, + 80, + 85, + 109, + 255, + 253, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 93, + 101, + 122, + 255, + 29, + 34, + 81, + 255, + 25, + 32, + 79, + 255, + 28, + 35, + 91, + 255, + 29, + 42, + 104, + 255, + 40, + 55, + 123, + 255, + 75, + 89, + 146, + 255, + 255, + 249, + 255, + 255, + 253, + 253, + 255, + 255, + 150, + 155, + 186, + 255, + 66, + 91, + 158, + 255, + 50, + 71, + 142, + 255, + 45, + 74, + 149, + 255, + 51, + 79, + 154, + 255, + 56, + 82, + 151, + 255, + 67, + 93, + 152, + 255, + 119, + 134, + 167, + 255, + 246, + 254, + 241, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 249, + 255, + 198, + 200, + 212, + 255, + 62, + 66, + 130, + 255, + 34, + 47, + 101, + 255, + 33, + 46, + 100, + 255, + 34, + 46, + 102, + 255, + 37, + 46, + 105, + 255, + 47, + 55, + 110, + 255, + 95, + 102, + 148, + 255, + 255, + 253, + 252, + 255, + 254, + 249, + 255, + 255, + 252, + 253, + 248, + 255, + 249, + 254, + 252, + 255, + 104, + 112, + 162, + 255, + 68, + 73, + 140, + 255, + 58, + 65, + 136, + 255, + 46, + 54, + 118, + 255, + 42, + 49, + 103, + 255, + 37, + 44, + 96, + 255, + 34, + 43, + 91, + 255, + 36, + 46, + 91, + 255, + 36, + 41, + 96, + 255, + 37, + 44, + 97, + 255, + 43, + 52, + 103, + 255, + 41, + 50, + 101, + 255, + 254, + 253, + 255, + 255, + 255, + 255, + 249, + 255, + 252, + 253, + 248, + 255, + 133, + 132, + 139, + 255, + 23, + 23, + 57, + 255, + 12, + 13, + 44, + 255, + 13, + 14, + 44, + 255, + 13, + 14, + 45, + 255, + 11, + 11, + 45, + 255, + 12, + 12, + 46, + 255, + 12, + 12, + 46, + 255, + 11, + 11, + 45, + 255, + 11, + 12, + 42, + 255, + 11, + 12, + 40, + 255, + 10, + 10, + 45, + 255, + 17, + 16, + 59, + 255, + 16, + 18, + 40, + 255, + 38, + 32, + 54, + 255, + 143, + 117, + 77, + 255, + 169, + 132, + 123, + 255, + 41, + 35, + 47, + 255, + 12, + 13, + 41, + 255, + 16, + 11, + 35, + 255, + 10, + 14, + 42, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 12, + 11, + 42, + 255, + 12, + 10, + 47, + 255, + 11, + 12, + 31, + 255, + 12, + 10, + 48, + 255, + 12, + 11, + 44, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 11, + 13, + 38, + 255, + 12, + 14, + 39, + 255, + 12, + 14, + 35, + 255, + 21, + 15, + 46, + 255, + 27, + 29, + 57, + 255, + 27, + 21, + 49, + 255, + 10, + 12, + 32, + 255, + 12, + 13, + 33, + 255, + 11, + 11, + 37, + 255, + 23, + 20, + 56, + 255, + 16, + 18, + 69, + 255, + 15, + 17, + 68, + 255, + 15, + 17, + 56, + 255, + 17, + 15, + 63, + 255, + 14, + 15, + 59, + 255, + 16, + 15, + 57, + 255, + 15, + 14, + 44, + 255, + 10, + 10, + 26, + 255, + 11, + 10, + 27, + 255, + 11, + 10, + 27, + 255, + 11, + 10, + 27, + 255, + 11, + 10, + 27, + 255, + 10, + 11, + 31, + 255, + 13, + 11, + 33, + 255, + 7, + 9, + 33, + 255, + 13, + 21, + 45, + 255, + 18, + 19, + 62, + 255, + 11, + 9, + 54, + 255, + 12, + 17, + 67, + 255, + 19, + 31, + 88, + 255, + 10, + 30, + 92, + 255, + 10, + 25, + 85, + 255, + 10, + 14, + 66, + 255, + 20, + 13, + 57, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 16, + 15, + 57, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 56, + 255, + 12, + 11, + 53, + 255, + 11, + 10, + 33, + 255, + 8, + 7, + 28, + 255, + 9, + 9, + 24, + 255, + 9, + 10, + 22, + 255, + 8, + 9, + 20, + 255, + 9, + 10, + 21, + 255, + 8, + 9, + 20, + 255, + 9, + 10, + 21, + 255, + 8, + 9, + 20, + 255, + 8, + 9, + 20, + 255, + 8, + 9, + 22, + 255, + 8, + 8, + 24, + 255, + 8, + 7, + 25, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 8, + 28, + 255, + 10, + 8, + 29, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 16, + 13, + 34, + 255, + 18, + 15, + 39, + 255, + 40, + 27, + 55, + 255, + 188, + 139, + 151, + 255, + 204, + 128, + 138, + 255, + 198, + 139, + 153, + 255, + 79, + 41, + 61, + 255, + 74, + 49, + 72, + 255, + 54, + 40, + 63, + 255, + 55, + 52, + 68, + 255, + 58, + 59, + 72, + 255, + 65, + 66, + 76, + 255, + 67, + 65, + 79, + 255, + 86, + 84, + 96, + 255, + 130, + 127, + 136, + 255, + 164, + 161, + 168, + 255, + 171, + 170, + 168, + 255, + 171, + 170, + 168, + 255, + 168, + 167, + 165, + 255, + 139, + 138, + 136, + 255, + 102, + 100, + 111, + 255, + 67, + 66, + 80, + 255, + 62, + 62, + 80, + 255, + 47, + 48, + 68, + 255, + 46, + 43, + 64, + 255, + 35, + 29, + 54, + 255, + 34, + 25, + 54, + 255, + 29, + 18, + 51, + 255, + 25, + 21, + 45, + 255, + 22, + 21, + 46, + 255, + 20, + 20, + 45, + 255, + 17, + 20, + 44, + 255, + 20, + 18, + 47, + 255, + 22, + 19, + 46, + 255, + 23, + 17, + 42, + 255, + 24, + 17, + 40, + 255, + 21, + 19, + 43, + 255, + 21, + 19, + 43, + 255, + 21, + 19, + 43, + 255, + 21, + 19, + 43, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 19, + 19, + 43, + 255, + 19, + 19, + 43, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 17, + 17, + 43, + 255, + 17, + 17, + 43, + 255, + 16, + 18, + 42, + 255, + 16, + 18, + 43, + 255, + 16, + 17, + 44, + 255, + 16, + 17, + 46, + 255, + 16, + 16, + 42, + 255, + 16, + 16, + 41, + 255, + 16, + 16, + 40, + 255, + 16, + 17, + 38, + 255, + 16, + 17, + 38, + 255, + 16, + 17, + 38, + 255, + 16, + 17, + 38, + 255, + 16, + 17, + 38, + 255, + 18, + 16, + 40, + 255, + 17, + 15, + 39, + 255, + 16, + 14, + 38, + 255, + 15, + 13, + 37, + 255, + 12, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 11, + 13, + 34, + 255, + 1, + 0, + 9, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 15, + 255, + 9, + 8, + 23, + 255, + 4, + 76, + 188, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 18, + 105, + 239, + 255, + 78, + 141, + 235, + 255, + 254, + 254, + 255, + 255, + 253, + 255, + 252, + 255, + 126, + 128, + 134, + 255, + 44, + 46, + 70, + 255, + 18, + 23, + 54, + 255, + 17, + 25, + 49, + 255, + 16, + 23, + 51, + 255, + 17, + 24, + 53, + 255, + 24, + 30, + 62, + 255, + 35, + 41, + 73, + 255, + 71, + 76, + 99, + 255, + 200, + 204, + 214, + 255, + 254, + 255, + 255, + 255, + 251, + 248, + 248, + 255, + 255, + 254, + 255, + 255, + 250, + 252, + 255, + 255, + 94, + 98, + 117, + 255, + 64, + 68, + 102, + 255, + 70, + 80, + 107, + 255, + 153, + 159, + 175, + 255, + 251, + 253, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 248, + 252, + 255, + 255, + 72, + 78, + 121, + 255, + 29, + 40, + 87, + 255, + 25, + 35, + 84, + 255, + 27, + 37, + 89, + 255, + 28, + 38, + 91, + 255, + 38, + 50, + 101, + 255, + 89, + 94, + 126, + 255, + 253, + 254, + 255, + 255, + 246, + 248, + 246, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 250, + 254, + 255, + 255, + 76, + 84, + 140, + 255, + 32, + 49, + 105, + 255, + 28, + 43, + 115, + 255, + 28, + 43, + 109, + 255, + 32, + 43, + 114, + 255, + 53, + 62, + 123, + 255, + 117, + 125, + 170, + 255, + 248, + 250, + 249, + 255, + 248, + 245, + 245, + 255, + 255, + 254, + 254, + 255, + 253, + 255, + 255, + 255, + 103, + 113, + 146, + 255, + 57, + 67, + 129, + 255, + 35, + 46, + 121, + 255, + 32, + 47, + 116, + 255, + 33, + 44, + 116, + 255, + 35, + 51, + 118, + 255, + 70, + 79, + 139, + 255, + 248, + 249, + 255, + 255, + 251, + 254, + 255, + 255, + 79, + 87, + 142, + 255, + 35, + 46, + 119, + 255, + 30, + 42, + 106, + 255, + 31, + 44, + 113, + 255, + 34, + 48, + 118, + 255, + 50, + 61, + 119, + 255, + 121, + 127, + 170, + 255, + 252, + 255, + 252, + 255, + 255, + 254, + 254, + 255, + 247, + 247, + 246, + 255, + 245, + 251, + 246, + 255, + 239, + 239, + 249, + 255, + 239, + 240, + 241, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 252, + 255, + 255, + 255, + 75, + 82, + 118, + 255, + 33, + 42, + 83, + 255, + 26, + 35, + 76, + 255, + 26, + 35, + 76, + 255, + 26, + 35, + 76, + 255, + 33, + 45, + 83, + 255, + 86, + 94, + 125, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 96, + 103, + 122, + 255, + 43, + 49, + 82, + 255, + 25, + 34, + 75, + 255, + 23, + 34, + 78, + 255, + 27, + 34, + 86, + 255, + 33, + 42, + 99, + 255, + 70, + 77, + 120, + 255, + 212, + 215, + 239, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 156, + 162, + 187, + 255, + 36, + 46, + 104, + 255, + 28, + 34, + 92, + 255, + 24, + 30, + 89, + 255, + 24, + 30, + 90, + 255, + 27, + 33, + 93, + 255, + 32, + 42, + 94, + 255, + 146, + 145, + 168, + 255, + 255, + 255, + 251, + 255, + 160, + 163, + 187, + 255, + 67, + 76, + 120, + 255, + 26, + 33, + 87, + 255, + 25, + 31, + 89, + 255, + 24, + 31, + 87, + 255, + 19, + 32, + 77, + 255, + 44, + 49, + 98, + 255, + 93, + 98, + 120, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 250, + 251, + 255, + 255, + 57, + 61, + 96, + 255, + 24, + 29, + 70, + 255, + 20, + 25, + 67, + 255, + 23, + 27, + 72, + 255, + 24, + 28, + 74, + 255, + 36, + 46, + 87, + 255, + 107, + 112, + 136, + 255, + 249, + 254, + 251, + 255, + 253, + 255, + 255, + 255, + 70, + 76, + 108, + 255, + 28, + 35, + 80, + 255, + 26, + 34, + 89, + 255, + 24, + 33, + 89, + 255, + 27, + 36, + 92, + 255, + 41, + 51, + 103, + 255, + 86, + 91, + 138, + 255, + 250, + 255, + 254, + 255, + 251, + 254, + 254, + 255, + 121, + 130, + 165, + 255, + 57, + 70, + 130, + 255, + 49, + 63, + 126, + 255, + 46, + 59, + 128, + 255, + 42, + 55, + 122, + 255, + 44, + 58, + 122, + 255, + 56, + 70, + 133, + 255, + 107, + 118, + 155, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 247, + 255, + 245, + 252, + 253, + 255, + 81, + 87, + 123, + 255, + 44, + 51, + 103, + 255, + 41, + 51, + 113, + 255, + 37, + 48, + 112, + 255, + 37, + 46, + 110, + 255, + 43, + 57, + 121, + 255, + 48, + 55, + 116, + 255, + 129, + 130, + 157, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 253, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 255, + 245, + 246, + 255, + 255, + 81, + 88, + 125, + 255, + 65, + 76, + 117, + 255, + 58, + 62, + 116, + 255, + 46, + 56, + 114, + 255, + 59, + 72, + 130, + 255, + 40, + 50, + 105, + 255, + 38, + 50, + 110, + 255, + 39, + 48, + 107, + 255, + 40, + 48, + 103, + 255, + 55, + 63, + 118, + 255, + 247, + 255, + 255, + 255, + 251, + 253, + 251, + 255, + 252, + 250, + 253, + 255, + 46, + 48, + 68, + 255, + 23, + 26, + 59, + 255, + 18, + 19, + 56, + 255, + 18, + 18, + 52, + 255, + 17, + 18, + 47, + 255, + 15, + 15, + 49, + 255, + 12, + 13, + 44, + 255, + 12, + 14, + 45, + 255, + 10, + 14, + 43, + 255, + 12, + 13, + 43, + 255, + 12, + 13, + 41, + 255, + 11, + 11, + 46, + 255, + 16, + 15, + 57, + 255, + 17, + 15, + 52, + 255, + 25, + 26, + 45, + 255, + 53, + 39, + 49, + 255, + 161, + 131, + 116, + 255, + 51, + 37, + 49, + 255, + 12, + 11, + 42, + 255, + 10, + 14, + 42, + 255, + 14, + 9, + 46, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 12, + 11, + 42, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 41, + 255, + 11, + 11, + 39, + 255, + 11, + 11, + 39, + 255, + 12, + 11, + 42, + 255, + 12, + 11, + 42, + 255, + 12, + 11, + 42, + 255, + 12, + 11, + 42, + 255, + 12, + 12, + 40, + 255, + 13, + 12, + 44, + 255, + 16, + 16, + 44, + 255, + 11, + 12, + 34, + 255, + 8, + 10, + 32, + 255, + 9, + 11, + 32, + 255, + 17, + 18, + 47, + 255, + 16, + 15, + 54, + 255, + 13, + 16, + 57, + 255, + 13, + 16, + 59, + 255, + 13, + 16, + 61, + 255, + 13, + 15, + 63, + 255, + 13, + 16, + 61, + 255, + 14, + 15, + 62, + 255, + 14, + 13, + 54, + 255, + 13, + 12, + 44, + 255, + 10, + 9, + 27, + 255, + 9, + 8, + 26, + 255, + 9, + 8, + 26, + 255, + 9, + 8, + 26, + 255, + 8, + 11, + 27, + 255, + 9, + 11, + 33, + 255, + 10, + 12, + 42, + 255, + 19, + 20, + 55, + 255, + 19, + 18, + 59, + 255, + 17, + 19, + 59, + 255, + 16, + 21, + 67, + 255, + 20, + 27, + 81, + 255, + 14, + 20, + 68, + 255, + 14, + 18, + 64, + 255, + 14, + 15, + 59, + 255, + 15, + 14, + 56, + 255, + 17, + 14, + 58, + 255, + 17, + 14, + 56, + 255, + 16, + 15, + 55, + 255, + 16, + 16, + 53, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 17, + 14, + 57, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 55, + 255, + 15, + 14, + 54, + 255, + 15, + 14, + 56, + 255, + 14, + 12, + 59, + 255, + 15, + 15, + 53, + 255, + 8, + 10, + 35, + 255, + 6, + 9, + 27, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 7, + 9, + 25, + 255, + 8, + 10, + 24, + 255, + 9, + 11, + 27, + 255, + 12, + 12, + 35, + 255, + 11, + 9, + 23, + 255, + 10, + 9, + 26, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 17, + 12, + 35, + 255, + 16, + 17, + 36, + 255, + 40, + 31, + 60, + 255, + 99, + 78, + 94, + 255, + 63, + 40, + 59, + 255, + 49, + 31, + 52, + 255, + 39, + 28, + 51, + 255, + 32, + 24, + 49, + 255, + 29, + 25, + 48, + 255, + 29, + 25, + 48, + 255, + 32, + 28, + 51, + 255, + 34, + 30, + 53, + 255, + 37, + 35, + 57, + 255, + 41, + 39, + 61, + 255, + 42, + 40, + 62, + 255, + 45, + 43, + 65, + 255, + 44, + 42, + 64, + 255, + 45, + 43, + 65, + 255, + 45, + 43, + 65, + 255, + 43, + 41, + 63, + 255, + 40, + 38, + 62, + 255, + 38, + 36, + 60, + 255, + 34, + 32, + 56, + 255, + 30, + 28, + 52, + 255, + 28, + 25, + 52, + 255, + 26, + 23, + 50, + 255, + 24, + 21, + 48, + 255, + 23, + 20, + 47, + 255, + 23, + 20, + 47, + 255, + 23, + 20, + 47, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 48, + 255, + 19, + 19, + 47, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 42, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 17, + 17, + 43, + 255, + 17, + 17, + 43, + 255, + 16, + 18, + 43, + 255, + 16, + 18, + 43, + 255, + 15, + 17, + 42, + 255, + 15, + 17, + 42, + 255, + 16, + 17, + 38, + 255, + 16, + 17, + 38, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 16, + 14, + 38, + 255, + 16, + 14, + 38, + 255, + 14, + 12, + 36, + 255, + 14, + 11, + 28, + 255, + 3, + 2, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 11, + 255, + 0, + 5, + 12, + 255, + 4, + 19, + 40, + 255, + 16, + 91, + 229, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 7, + 94, + 235, + 255, + 19, + 101, + 228, + 255, + 105, + 150, + 226, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 250, + 255, + 240, + 241, + 245, + 255, + 66, + 67, + 85, + 255, + 22, + 26, + 51, + 255, + 15, + 21, + 45, + 255, + 15, + 21, + 45, + 255, + 16, + 22, + 48, + 255, + 17, + 23, + 51, + 255, + 20, + 25, + 55, + 255, + 28, + 37, + 62, + 255, + 52, + 60, + 81, + 255, + 88, + 94, + 111, + 255, + 105, + 109, + 126, + 255, + 96, + 101, + 122, + 255, + 65, + 71, + 97, + 255, + 42, + 50, + 82, + 255, + 25, + 34, + 74, + 255, + 25, + 34, + 68, + 255, + 56, + 61, + 91, + 255, + 103, + 106, + 124, + 255, + 246, + 246, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 135, + 139, + 153, + 255, + 50, + 58, + 98, + 255, + 24, + 34, + 75, + 255, + 23, + 33, + 78, + 255, + 24, + 33, + 84, + 255, + 28, + 36, + 91, + 255, + 50, + 60, + 103, + 255, + 118, + 122, + 143, + 255, + 254, + 255, + 255, + 255, + 252, + 254, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 254, + 255, + 255, + 90, + 99, + 141, + 255, + 35, + 48, + 106, + 255, + 25, + 39, + 103, + 255, + 27, + 41, + 104, + 255, + 29, + 41, + 106, + 255, + 36, + 46, + 106, + 255, + 71, + 80, + 130, + 255, + 191, + 196, + 218, + 255, + 250, + 253, + 255, + 255, + 240, + 243, + 249, + 255, + 120, + 126, + 152, + 255, + 65, + 75, + 128, + 255, + 38, + 47, + 117, + 255, + 30, + 41, + 114, + 255, + 28, + 41, + 108, + 255, + 30, + 39, + 113, + 255, + 46, + 59, + 120, + 255, + 100, + 108, + 145, + 255, + 253, + 255, + 255, + 255, + 252, + 254, + 255, + 255, + 77, + 84, + 131, + 255, + 34, + 45, + 111, + 255, + 29, + 40, + 102, + 255, + 30, + 42, + 102, + 255, + 34, + 48, + 113, + 255, + 38, + 49, + 111, + 255, + 79, + 84, + 140, + 255, + 232, + 240, + 253, + 255, + 250, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 108, + 114, + 142, + 255, + 102, + 108, + 150, + 255, + 155, + 159, + 185, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 214, + 219, + 224, + 255, + 65, + 74, + 105, + 255, + 27, + 36, + 77, + 255, + 25, + 34, + 75, + 255, + 26, + 35, + 76, + 255, + 26, + 35, + 76, + 255, + 37, + 48, + 84, + 255, + 111, + 116, + 140, + 255, + 253, + 255, + 255, + 255, + 250, + 251, + 255, + 255, + 76, + 82, + 115, + 255, + 36, + 42, + 88, + 255, + 26, + 34, + 89, + 255, + 25, + 36, + 92, + 255, + 28, + 38, + 101, + 255, + 51, + 58, + 113, + 255, + 119, + 119, + 144, + 255, + 255, + 252, + 246, + 255, + 249, + 251, + 239, + 255, + 252, + 253, + 255, + 255, + 97, + 99, + 133, + 255, + 42, + 46, + 109, + 255, + 29, + 35, + 95, + 255, + 26, + 32, + 92, + 255, + 26, + 32, + 91, + 255, + 32, + 38, + 96, + 255, + 56, + 63, + 116, + 255, + 252, + 253, + 255, + 255, + 255, + 255, + 253, + 255, + 107, + 111, + 138, + 255, + 53, + 61, + 107, + 255, + 28, + 35, + 90, + 255, + 27, + 33, + 91, + 255, + 27, + 34, + 88, + 255, + 24, + 35, + 82, + 255, + 63, + 69, + 111, + 255, + 125, + 130, + 145, + 255, + 255, + 255, + 249, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 132, + 135, + 152, + 255, + 48, + 55, + 92, + 255, + 26, + 32, + 74, + 255, + 24, + 30, + 74, + 255, + 27, + 33, + 78, + 255, + 30, + 35, + 83, + 255, + 54, + 65, + 102, + 255, + 142, + 145, + 164, + 255, + 252, + 255, + 254, + 255, + 185, + 190, + 204, + 255, + 55, + 64, + 107, + 255, + 29, + 37, + 86, + 255, + 24, + 34, + 84, + 255, + 25, + 36, + 82, + 255, + 26, + 36, + 86, + 255, + 47, + 58, + 104, + 255, + 114, + 121, + 149, + 255, + 252, + 254, + 249, + 255, + 254, + 255, + 255, + 255, + 111, + 120, + 154, + 255, + 79, + 91, + 148, + 255, + 35, + 49, + 109, + 255, + 39, + 53, + 114, + 255, + 35, + 50, + 108, + 255, + 36, + 51, + 108, + 255, + 42, + 57, + 114, + 255, + 61, + 72, + 120, + 255, + 121, + 127, + 153, + 255, + 177, + 182, + 206, + 255, + 92, + 99, + 136, + 255, + 48, + 57, + 108, + 255, + 45, + 55, + 106, + 255, + 50, + 63, + 113, + 255, + 54, + 69, + 116, + 255, + 40, + 53, + 115, + 255, + 44, + 60, + 126, + 255, + 75, + 84, + 141, + 255, + 251, + 254, + 255, + 255, + 255, + 255, + 248, + 255, + 251, + 255, + 255, + 255, + 128, + 135, + 162, + 255, + 166, + 175, + 208, + 255, + 253, + 255, + 255, + 255, + 248, + 249, + 244, + 255, + 250, + 250, + 248, + 255, + 251, + 248, + 255, + 255, + 186, + 190, + 217, + 255, + 113, + 128, + 166, + 255, + 66, + 86, + 137, + 255, + 51, + 72, + 127, + 255, + 37, + 56, + 113, + 255, + 42, + 63, + 119, + 255, + 42, + 61, + 118, + 255, + 56, + 71, + 129, + 255, + 198, + 205, + 232, + 255, + 255, + 255, + 250, + 255, + 253, + 255, + 255, + 255, + 51, + 59, + 103, + 255, + 29, + 39, + 83, + 255, + 27, + 33, + 77, + 255, + 25, + 30, + 67, + 255, + 25, + 30, + 58, + 255, + 19, + 23, + 57, + 255, + 16, + 19, + 51, + 255, + 14, + 18, + 47, + 255, + 14, + 17, + 44, + 255, + 14, + 15, + 46, + 255, + 14, + 15, + 45, + 255, + 14, + 14, + 47, + 255, + 16, + 15, + 55, + 255, + 16, + 15, + 54, + 255, + 16, + 19, + 44, + 255, + 33, + 28, + 52, + 255, + 86, + 73, + 81, + 255, + 58, + 50, + 56, + 255, + 28, + 27, + 52, + 255, + 14, + 16, + 40, + 255, + 14, + 11, + 48, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 13, + 12, + 43, + 255, + 12, + 11, + 42, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 41, + 255, + 13, + 13, + 39, + 255, + 13, + 13, + 39, + 255, + 13, + 13, + 39, + 255, + 13, + 13, + 39, + 255, + 13, + 13, + 41, + 255, + 14, + 13, + 45, + 255, + 13, + 13, + 41, + 255, + 10, + 11, + 33, + 255, + 9, + 11, + 32, + 255, + 21, + 22, + 50, + 255, + 15, + 15, + 52, + 255, + 15, + 13, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 59, + 255, + 14, + 15, + 61, + 255, + 14, + 15, + 61, + 255, + 14, + 15, + 60, + 255, + 15, + 15, + 58, + 255, + 11, + 9, + 47, + 255, + 14, + 13, + 45, + 255, + 11, + 10, + 28, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 13, + 12, + 30, + 255, + 13, + 14, + 35, + 255, + 19, + 21, + 44, + 255, + 22, + 28, + 52, + 255, + 27, + 36, + 61, + 255, + 30, + 35, + 65, + 255, + 31, + 38, + 66, + 255, + 27, + 36, + 68, + 255, + 23, + 32, + 73, + 255, + 26, + 25, + 65, + 255, + 19, + 20, + 57, + 255, + 18, + 19, + 55, + 255, + 15, + 16, + 52, + 255, + 15, + 16, + 52, + 255, + 16, + 16, + 54, + 255, + 15, + 14, + 55, + 255, + 16, + 13, + 57, + 255, + 14, + 13, + 55, + 255, + 14, + 13, + 55, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 56, + 255, + 15, + 14, + 55, + 255, + 15, + 14, + 58, + 255, + 14, + 13, + 57, + 255, + 14, + 13, + 56, + 255, + 12, + 11, + 42, + 255, + 6, + 6, + 31, + 255, + 8, + 9, + 27, + 255, + 7, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 7, + 9, + 20, + 255, + 8, + 10, + 21, + 255, + 8, + 9, + 29, + 255, + 15, + 15, + 43, + 255, + 9, + 9, + 27, + 255, + 9, + 10, + 24, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 24, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 32, + 255, + 14, + 12, + 33, + 255, + 18, + 15, + 34, + 255, + 14, + 18, + 36, + 255, + 23, + 23, + 56, + 255, + 25, + 21, + 44, + 255, + 22, + 17, + 39, + 255, + 32, + 25, + 50, + 255, + 25, + 18, + 45, + 255, + 24, + 16, + 46, + 255, + 20, + 17, + 42, + 255, + 20, + 17, + 42, + 255, + 22, + 19, + 44, + 255, + 23, + 20, + 45, + 255, + 26, + 24, + 48, + 255, + 27, + 25, + 49, + 255, + 29, + 27, + 51, + 255, + 29, + 27, + 51, + 255, + 29, + 27, + 51, + 255, + 30, + 28, + 52, + 255, + 29, + 27, + 51, + 255, + 30, + 28, + 52, + 255, + 29, + 26, + 53, + 255, + 27, + 24, + 51, + 255, + 25, + 22, + 49, + 255, + 24, + 21, + 48, + 255, + 25, + 22, + 50, + 255, + 23, + 20, + 48, + 255, + 24, + 21, + 49, + 255, + 23, + 20, + 48, + 255, + 23, + 20, + 48, + 255, + 23, + 20, + 48, + 255, + 24, + 21, + 49, + 255, + 24, + 21, + 49, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 22, + 21, + 51, + 255, + 21, + 21, + 48, + 255, + 21, + 21, + 48, + 255, + 21, + 21, + 48, + 255, + 21, + 21, + 48, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 21, + 48, + 255, + 21, + 21, + 48, + 255, + 20, + 20, + 47, + 255, + 20, + 20, + 47, + 255, + 22, + 19, + 47, + 255, + 22, + 19, + 47, + 255, + 22, + 19, + 47, + 255, + 22, + 19, + 47, + 255, + 20, + 20, + 47, + 255, + 20, + 20, + 47, + 255, + 19, + 19, + 46, + 255, + 19, + 19, + 46, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 17, + 17, + 43, + 255, + 17, + 17, + 43, + 255, + 17, + 17, + 41, + 255, + 17, + 17, + 41, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 40, + 255, + 18, + 16, + 40, + 255, + 18, + 16, + 40, + 255, + 18, + 16, + 40, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 4, + 3, + 18, + 255, + 1, + 8, + 18, + 255, + 0, + 26, + 66, + 255, + 8, + 90, + 238, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 5, + 92, + 233, + 255, + 8, + 95, + 236, + 255, + 31, + 109, + 224, + 255, + 163, + 186, + 238, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 250, + 255, + 255, + 255, + 255, + 255, + 89, + 90, + 100, + 255, + 31, + 34, + 51, + 255, + 14, + 19, + 41, + 255, + 13, + 19, + 41, + 255, + 14, + 20, + 43, + 255, + 14, + 20, + 44, + 255, + 15, + 21, + 47, + 255, + 13, + 23, + 47, + 255, + 17, + 26, + 55, + 255, + 26, + 32, + 65, + 255, + 32, + 39, + 69, + 255, + 28, + 37, + 70, + 255, + 23, + 31, + 69, + 255, + 20, + 28, + 66, + 255, + 18, + 26, + 63, + 255, + 19, + 26, + 62, + 255, + 29, + 33, + 72, + 255, + 49, + 52, + 84, + 255, + 97, + 101, + 120, + 255, + 244, + 245, + 251, + 255, + 254, + 255, + 255, + 255, + 91, + 95, + 121, + 255, + 32, + 43, + 81, + 255, + 23, + 31, + 72, + 255, + 23, + 30, + 74, + 255, + 25, + 32, + 78, + 255, + 29, + 36, + 83, + 255, + 60, + 67, + 101, + 255, + 242, + 246, + 255, + 255, + 254, + 255, + 253, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 250, + 253, + 255, + 114, + 121, + 148, + 255, + 43, + 53, + 111, + 255, + 25, + 36, + 91, + 255, + 27, + 39, + 97, + 255, + 28, + 40, + 99, + 255, + 29, + 39, + 98, + 255, + 39, + 50, + 105, + 255, + 59, + 67, + 123, + 255, + 77, + 84, + 123, + 255, + 73, + 80, + 124, + 255, + 53, + 62, + 121, + 255, + 36, + 46, + 108, + 255, + 29, + 38, + 107, + 255, + 29, + 39, + 109, + 255, + 29, + 40, + 103, + 255, + 38, + 47, + 112, + 255, + 65, + 72, + 123, + 255, + 185, + 190, + 202, + 255, + 252, + 252, + 252, + 255, + 253, + 255, + 255, + 255, + 85, + 92, + 128, + 255, + 37, + 48, + 104, + 255, + 28, + 39, + 96, + 255, + 30, + 40, + 100, + 255, + 33, + 47, + 108, + 255, + 30, + 43, + 105, + 255, + 43, + 51, + 114, + 255, + 63, + 72, + 122, + 255, + 80, + 85, + 127, + 255, + 72, + 77, + 126, + 255, + 50, + 58, + 120, + 255, + 41, + 51, + 111, + 255, + 65, + 73, + 121, + 255, + 97, + 102, + 131, + 255, + 242, + 247, + 255, + 255, + 251, + 252, + 254, + 255, + 254, + 255, + 251, + 255, + 123, + 128, + 148, + 255, + 42, + 54, + 86, + 255, + 27, + 36, + 77, + 255, + 26, + 35, + 76, + 255, + 26, + 35, + 76, + 255, + 25, + 34, + 75, + 255, + 58, + 66, + 99, + 255, + 167, + 167, + 184, + 255, + 255, + 255, + 252, + 255, + 198, + 201, + 215, + 255, + 60, + 66, + 108, + 255, + 29, + 36, + 91, + 255, + 28, + 37, + 102, + 255, + 28, + 39, + 106, + 255, + 27, + 38, + 104, + 255, + 50, + 58, + 115, + 255, + 185, + 186, + 212, + 255, + 255, + 254, + 249, + 255, + 255, + 255, + 253, + 255, + 230, + 235, + 255, + 255, + 66, + 71, + 120, + 255, + 33, + 36, + 98, + 255, + 25, + 33, + 96, + 255, + 25, + 34, + 93, + 255, + 25, + 34, + 91, + 255, + 35, + 45, + 98, + 255, + 80, + 85, + 136, + 255, + 251, + 253, + 251, + 255, + 254, + 255, + 255, + 255, + 89, + 97, + 128, + 255, + 47, + 56, + 98, + 255, + 33, + 41, + 90, + 255, + 33, + 41, + 91, + 255, + 33, + 42, + 85, + 255, + 35, + 46, + 86, + 255, + 88, + 93, + 126, + 255, + 227, + 231, + 239, + 255, + 255, + 255, + 251, + 255, + 253, + 253, + 251, + 255, + 254, + 254, + 255, + 255, + 97, + 102, + 125, + 255, + 39, + 51, + 90, + 255, + 31, + 41, + 84, + 255, + 32, + 42, + 86, + 255, + 33, + 43, + 89, + 255, + 40, + 49, + 97, + 255, + 78, + 88, + 121, + 255, + 248, + 248, + 255, + 255, + 253, + 255, + 254, + 255, + 111, + 121, + 146, + 255, + 47, + 59, + 106, + 255, + 28, + 39, + 91, + 255, + 29, + 39, + 89, + 255, + 31, + 41, + 86, + 255, + 34, + 46, + 94, + 255, + 62, + 71, + 118, + 255, + 183, + 189, + 201, + 255, + 255, + 255, + 252, + 255, + 251, + 250, + 254, + 255, + 105, + 112, + 146, + 255, + 83, + 94, + 149, + 255, + 43, + 55, + 112, + 255, + 38, + 51, + 105, + 255, + 38, + 51, + 106, + 255, + 34, + 46, + 103, + 255, + 37, + 49, + 107, + 255, + 45, + 57, + 115, + 255, + 57, + 69, + 119, + 255, + 63, + 74, + 123, + 255, + 53, + 65, + 121, + 255, + 40, + 54, + 111, + 255, + 63, + 77, + 130, + 255, + 97, + 112, + 162, + 255, + 64, + 80, + 131, + 255, + 46, + 63, + 124, + 255, + 51, + 70, + 135, + 255, + 88, + 98, + 150, + 255, + 250, + 252, + 255, + 255, + 254, + 254, + 255, + 255, + 100, + 110, + 152, + 255, + 69, + 85, + 147, + 255, + 72, + 87, + 153, + 255, + 102, + 114, + 170, + 255, + 151, + 162, + 192, + 255, + 249, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 249, + 249, + 250, + 255, + 245, + 255, + 255, + 255, + 81, + 94, + 155, + 255, + 79, + 92, + 169, + 255, + 49, + 79, + 139, + 255, + 46, + 84, + 139, + 255, + 79, + 113, + 166, + 255, + 77, + 102, + 157, + 255, + 247, + 255, + 255, + 255, + 251, + 250, + 247, + 255, + 245, + 250, + 255, + 255, + 54, + 71, + 132, + 255, + 30, + 46, + 111, + 255, + 42, + 53, + 119, + 255, + 61, + 68, + 130, + 255, + 23, + 28, + 83, + 255, + 21, + 27, + 69, + 255, + 22, + 27, + 65, + 255, + 19, + 22, + 56, + 255, + 24, + 25, + 56, + 255, + 19, + 19, + 53, + 255, + 15, + 16, + 46, + 255, + 16, + 17, + 48, + 255, + 15, + 15, + 51, + 255, + 16, + 16, + 58, + 255, + 14, + 17, + 44, + 255, + 20, + 19, + 52, + 255, + 24, + 22, + 45, + 255, + 31, + 28, + 45, + 255, + 27, + 26, + 53, + 255, + 16, + 17, + 39, + 255, + 12, + 12, + 47, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 13, + 13, + 41, + 255, + 14, + 14, + 42, + 255, + 13, + 13, + 41, + 255, + 14, + 14, + 42, + 255, + 14, + 13, + 43, + 255, + 18, + 17, + 47, + 255, + 26, + 25, + 55, + 255, + 29, + 28, + 58, + 255, + 32, + 32, + 60, + 255, + 32, + 31, + 63, + 255, + 33, + 33, + 61, + 255, + 30, + 31, + 53, + 255, + 17, + 19, + 42, + 255, + 12, + 13, + 43, + 255, + 17, + 17, + 54, + 255, + 16, + 16, + 54, + 255, + 17, + 16, + 57, + 255, + 17, + 16, + 56, + 255, + 15, + 15, + 53, + 255, + 15, + 15, + 52, + 255, + 11, + 12, + 40, + 255, + 10, + 11, + 31, + 255, + 10, + 11, + 25, + 255, + 9, + 8, + 23, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 17, + 16, + 34, + 255, + 21, + 20, + 38, + 255, + 38, + 36, + 60, + 255, + 62, + 61, + 82, + 255, + 61, + 61, + 78, + 255, + 106, + 108, + 121, + 255, + 162, + 162, + 168, + 255, + 158, + 159, + 161, + 255, + 150, + 151, + 156, + 255, + 82, + 83, + 95, + 255, + 55, + 59, + 76, + 255, + 48, + 54, + 77, + 255, + 30, + 41, + 71, + 255, + 20, + 32, + 68, + 255, + 14, + 20, + 53, + 255, + 10, + 14, + 49, + 255, + 13, + 13, + 51, + 255, + 16, + 14, + 55, + 255, + 13, + 15, + 56, + 255, + 12, + 14, + 55, + 255, + 13, + 15, + 56, + 255, + 13, + 15, + 56, + 255, + 13, + 12, + 52, + 255, + 14, + 13, + 57, + 255, + 13, + 12, + 51, + 255, + 8, + 9, + 36, + 255, + 9, + 8, + 25, + 255, + 8, + 7, + 22, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 18, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 10, + 23, + 255, + 9, + 11, + 23, + 255, + 9, + 10, + 29, + 255, + 11, + 11, + 38, + 255, + 10, + 14, + 42, + 255, + 8, + 11, + 27, + 255, + 9, + 10, + 23, + 255, + 11, + 8, + 26, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 9, + 10, + 30, + 255, + 9, + 10, + 30, + 255, + 10, + 11, + 31, + 255, + 10, + 11, + 31, + 255, + 12, + 10, + 32, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 34, + 255, + 15, + 13, + 35, + 255, + 15, + 15, + 35, + 255, + 15, + 17, + 40, + 255, + 19, + 20, + 57, + 255, + 16, + 18, + 43, + 255, + 19, + 19, + 45, + 255, + 20, + 17, + 44, + 255, + 20, + 17, + 45, + 255, + 21, + 16, + 46, + 255, + 19, + 18, + 44, + 255, + 19, + 18, + 44, + 255, + 20, + 19, + 45, + 255, + 21, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 21, + 21, + 47, + 255, + 22, + 22, + 48, + 255, + 22, + 22, + 48, + 255, + 24, + 21, + 48, + 255, + 24, + 21, + 48, + 255, + 25, + 22, + 49, + 255, + 25, + 22, + 49, + 255, + 22, + 22, + 49, + 255, + 22, + 22, + 49, + 255, + 22, + 22, + 49, + 255, + 22, + 22, + 49, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 22, + 21, + 51, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 54, + 255, + 23, + 22, + 54, + 255, + 22, + 21, + 53, + 255, + 22, + 21, + 53, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 54, + 255, + 23, + 22, + 54, + 255, + 23, + 22, + 54, + 255, + 23, + 22, + 54, + 255, + 23, + 22, + 52, + 255, + 23, + 22, + 52, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 21, + 20, + 50, + 255, + 20, + 20, + 47, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 48, + 255, + 21, + 21, + 48, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 19, + 19, + 45, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 20, + 17, + 44, + 255, + 18, + 18, + 44, + 255, + 17, + 17, + 43, + 255, + 18, + 18, + 44, + 255, + 17, + 17, + 43, + 255, + 17, + 17, + 41, + 255, + 17, + 17, + 41, + 255, + 17, + 17, + 41, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 9, + 255, + 4, + 11, + 29, + 255, + 0, + 35, + 92, + 255, + 1, + 91, + 230, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 4, + 91, + 232, + 255, + 15, + 102, + 243, + 255, + 54, + 129, + 238, + 255, + 244, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 249, + 255, + 255, + 255, + 254, + 255, + 213, + 214, + 217, + 255, + 64, + 68, + 80, + 255, + 22, + 26, + 46, + 255, + 14, + 19, + 39, + 255, + 12, + 17, + 38, + 255, + 13, + 18, + 41, + 255, + 14, + 18, + 43, + 255, + 13, + 18, + 38, + 255, + 14, + 19, + 49, + 255, + 18, + 23, + 62, + 255, + 17, + 23, + 60, + 255, + 16, + 25, + 59, + 255, + 16, + 23, + 61, + 255, + 16, + 23, + 57, + 255, + 19, + 25, + 51, + 255, + 18, + 24, + 57, + 255, + 19, + 24, + 65, + 255, + 37, + 41, + 77, + 255, + 83, + 90, + 111, + 255, + 197, + 198, + 208, + 255, + 253, + 255, + 253, + 255, + 77, + 80, + 114, + 255, + 23, + 34, + 71, + 255, + 19, + 25, + 73, + 255, + 20, + 27, + 71, + 255, + 19, + 27, + 66, + 255, + 30, + 38, + 75, + 255, + 84, + 89, + 117, + 255, + 252, + 254, + 255, + 255, + 254, + 255, + 250, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 200, + 206, + 222, + 255, + 67, + 75, + 133, + 255, + 30, + 41, + 89, + 255, + 26, + 37, + 92, + 255, + 25, + 36, + 91, + 255, + 26, + 38, + 95, + 255, + 27, + 39, + 99, + 255, + 28, + 44, + 96, + 255, + 35, + 46, + 102, + 255, + 32, + 44, + 100, + 255, + 30, + 47, + 99, + 255, + 27, + 39, + 97, + 255, + 26, + 37, + 101, + 255, + 28, + 37, + 103, + 255, + 32, + 42, + 105, + 255, + 51, + 61, + 115, + 255, + 111, + 116, + 158, + 255, + 252, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 251, + 252, + 253, + 255, + 127, + 133, + 164, + 255, + 54, + 63, + 114, + 255, + 28, + 37, + 92, + 255, + 30, + 37, + 101, + 255, + 30, + 43, + 103, + 255, + 24, + 38, + 98, + 255, + 27, + 37, + 98, + 255, + 28, + 41, + 96, + 255, + 37, + 44, + 107, + 255, + 33, + 40, + 101, + 255, + 28, + 43, + 93, + 255, + 27, + 36, + 95, + 255, + 32, + 41, + 101, + 255, + 52, + 61, + 112, + 255, + 97, + 107, + 148, + 255, + 175, + 177, + 184, + 255, + 254, + 255, + 253, + 255, + 98, + 101, + 135, + 255, + 38, + 49, + 86, + 255, + 25, + 34, + 75, + 255, + 26, + 35, + 76, + 255, + 25, + 34, + 75, + 255, + 27, + 36, + 77, + 255, + 71, + 77, + 109, + 255, + 254, + 252, + 255, + 255, + 255, + 255, + 251, + 255, + 200, + 204, + 223, + 255, + 62, + 69, + 114, + 255, + 34, + 42, + 99, + 255, + 29, + 38, + 106, + 255, + 25, + 37, + 106, + 255, + 28, + 39, + 101, + 255, + 39, + 49, + 110, + 255, + 85, + 91, + 133, + 255, + 253, + 253, + 255, + 255, + 143, + 144, + 165, + 255, + 89, + 97, + 143, + 255, + 36, + 46, + 107, + 255, + 31, + 39, + 97, + 255, + 26, + 36, + 99, + 255, + 26, + 36, + 95, + 255, + 27, + 38, + 94, + 255, + 47, + 59, + 111, + 255, + 98, + 101, + 151, + 255, + 254, + 255, + 245, + 255, + 252, + 253, + 255, + 255, + 85, + 93, + 125, + 255, + 53, + 63, + 99, + 255, + 51, + 60, + 101, + 255, + 53, + 62, + 103, + 255, + 56, + 66, + 100, + 255, + 58, + 68, + 100, + 255, + 122, + 126, + 152, + 255, + 253, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 253, + 255, + 252, + 252, + 255, + 255, + 103, + 109, + 136, + 255, + 47, + 62, + 102, + 255, + 47, + 60, + 103, + 255, + 47, + 60, + 105, + 255, + 45, + 57, + 104, + 255, + 52, + 64, + 112, + 255, + 98, + 109, + 139, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 99, + 110, + 145, + 255, + 46, + 62, + 106, + 255, + 39, + 51, + 102, + 255, + 40, + 50, + 102, + 255, + 43, + 51, + 100, + 255, + 47, + 58, + 111, + 255, + 87, + 96, + 146, + 255, + 251, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 119, + 124, + 158, + 255, + 68, + 79, + 132, + 255, + 45, + 56, + 109, + 255, + 40, + 51, + 107, + 255, + 40, + 50, + 109, + 255, + 36, + 46, + 108, + 255, + 39, + 49, + 112, + 255, + 43, + 56, + 117, + 255, + 69, + 85, + 142, + 255, + 79, + 96, + 151, + 255, + 75, + 92, + 147, + 255, + 42, + 60, + 117, + 255, + 49, + 66, + 120, + 255, + 39, + 55, + 115, + 255, + 38, + 51, + 120, + 255, + 42, + 62, + 121, + 255, + 63, + 83, + 147, + 255, + 100, + 111, + 159, + 255, + 253, + 255, + 252, + 255, + 136, + 140, + 169, + 255, + 73, + 88, + 154, + 255, + 53, + 70, + 156, + 255, + 59, + 73, + 154, + 255, + 60, + 91, + 156, + 255, + 73, + 96, + 174, + 255, + 88, + 103, + 178, + 255, + 95, + 108, + 169, + 255, + 98, + 111, + 166, + 255, + 71, + 92, + 156, + 255, + 58, + 85, + 155, + 255, + 60, + 87, + 158, + 255, + 57, + 93, + 161, + 255, + 47, + 95, + 152, + 255, + 108, + 153, + 201, + 255, + 124, + 157, + 202, + 255, + 247, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 116, + 122, + 149, + 255, + 39, + 64, + 127, + 255, + 80, + 102, + 160, + 255, + 33, + 51, + 114, + 255, + 31, + 42, + 105, + 255, + 36, + 43, + 102, + 255, + 11, + 19, + 70, + 255, + 105, + 110, + 158, + 255, + 19, + 21, + 63, + 255, + 21, + 19, + 58, + 255, + 73, + 73, + 109, + 255, + 22, + 23, + 53, + 255, + 17, + 18, + 49, + 255, + 16, + 16, + 51, + 255, + 16, + 19, + 63, + 255, + 13, + 14, + 42, + 255, + 15, + 11, + 44, + 255, + 22, + 16, + 42, + 255, + 13, + 11, + 42, + 255, + 4, + 1, + 36, + 255, + 15, + 16, + 38, + 255, + 14, + 14, + 47, + 255, + 14, + 13, + 44, + 255, + 14, + 13, + 44, + 255, + 15, + 14, + 45, + 255, + 15, + 14, + 45, + 255, + 15, + 15, + 43, + 255, + 16, + 16, + 44, + 255, + 15, + 15, + 43, + 255, + 21, + 21, + 49, + 255, + 14, + 12, + 48, + 255, + 17, + 15, + 51, + 255, + 15, + 13, + 49, + 255, + 16, + 14, + 50, + 255, + 15, + 15, + 43, + 255, + 15, + 14, + 46, + 255, + 17, + 17, + 45, + 255, + 12, + 13, + 35, + 255, + 11, + 13, + 37, + 255, + 13, + 14, + 44, + 255, + 14, + 15, + 44, + 255, + 14, + 16, + 38, + 255, + 15, + 14, + 48, + 255, + 15, + 14, + 46, + 255, + 15, + 15, + 43, + 255, + 16, + 16, + 43, + 255, + 14, + 13, + 45, + 255, + 11, + 12, + 34, + 255, + 10, + 9, + 26, + 255, + 11, + 8, + 29, + 255, + 11, + 10, + 28, + 255, + 16, + 15, + 33, + 255, + 29, + 28, + 46, + 255, + 47, + 46, + 64, + 255, + 201, + 204, + 200, + 255, + 203, + 203, + 194, + 255, + 218, + 213, + 197, + 255, + 222, + 214, + 193, + 255, + 220, + 210, + 195, + 255, + 219, + 209, + 191, + 255, + 224, + 212, + 196, + 255, + 219, + 206, + 196, + 255, + 222, + 213, + 191, + 255, + 219, + 213, + 207, + 255, + 169, + 168, + 181, + 255, + 53, + 55, + 79, + 255, + 40, + 48, + 85, + 255, + 21, + 25, + 60, + 255, + 12, + 13, + 48, + 255, + 14, + 13, + 46, + 255, + 12, + 15, + 56, + 255, + 11, + 14, + 55, + 255, + 12, + 15, + 56, + 255, + 12, + 15, + 56, + 255, + 14, + 13, + 55, + 255, + 13, + 12, + 55, + 255, + 7, + 8, + 35, + 255, + 5, + 10, + 17, + 255, + 8, + 8, + 20, + 255, + 7, + 7, + 19, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 9, + 27, + 255, + 9, + 11, + 25, + 255, + 9, + 11, + 26, + 255, + 9, + 10, + 31, + 255, + 22, + 27, + 68, + 255, + 9, + 14, + 36, + 255, + 9, + 9, + 27, + 255, + 11, + 7, + 30, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 12, + 10, + 31, + 255, + 9, + 12, + 31, + 255, + 9, + 12, + 31, + 255, + 9, + 12, + 31, + 255, + 9, + 12, + 31, + 255, + 13, + 11, + 35, + 255, + 14, + 12, + 36, + 255, + 16, + 14, + 38, + 255, + 17, + 15, + 39, + 255, + 13, + 15, + 40, + 255, + 17, + 15, + 43, + 255, + 19, + 15, + 54, + 255, + 14, + 13, + 38, + 255, + 21, + 15, + 43, + 255, + 19, + 15, + 41, + 255, + 19, + 16, + 42, + 255, + 18, + 17, + 40, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 18, + 20, + 45, + 255, + 19, + 21, + 46, + 255, + 20, + 22, + 47, + 255, + 20, + 22, + 47, + 255, + 23, + 20, + 47, + 255, + 23, + 20, + 47, + 255, + 24, + 21, + 48, + 255, + 24, + 21, + 48, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 22, + 23, + 53, + 255, + 22, + 23, + 53, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 56, + 255, + 24, + 23, + 55, + 255, + 24, + 23, + 55, + 255, + 25, + 24, + 55, + 255, + 25, + 24, + 55, + 255, + 25, + 24, + 55, + 255, + 25, + 24, + 55, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 55, + 255, + 25, + 24, + 55, + 255, + 24, + 23, + 54, + 255, + 24, + 23, + 54, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 24, + 23, + 54, + 255, + 24, + 23, + 54, + 255, + 22, + 21, + 52, + 255, + 22, + 21, + 52, + 255, + 22, + 22, + 50, + 255, + 22, + 22, + 50, + 255, + 22, + 22, + 50, + 255, + 22, + 22, + 50, + 255, + 22, + 22, + 48, + 255, + 22, + 22, + 48, + 255, + 21, + 21, + 47, + 255, + 20, + 20, + 46, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 21, + 18, + 45, + 255, + 20, + 20, + 46, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 18, + 18, + 44, + 255, + 17, + 19, + 42, + 255, + 17, + 19, + 42, + 255, + 16, + 18, + 41, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 1, + 9, + 255, + 0, + 21, + 44, + 255, + 0, + 50, + 137, + 255, + 1, + 92, + 234, + 255, + 5, + 90, + 231, + 255, + 4, + 91, + 231, + 255, + 7, + 91, + 236, + 255, + 24, + 106, + 232, + 255, + 86, + 140, + 246, + 255, + 247, + 255, + 248, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 128, + 127, + 134, + 255, + 64, + 62, + 73, + 255, + 22, + 25, + 44, + 255, + 15, + 17, + 40, + 255, + 11, + 16, + 37, + 255, + 11, + 19, + 32, + 255, + 10, + 16, + 40, + 255, + 12, + 17, + 48, + 255, + 13, + 17, + 54, + 255, + 15, + 19, + 55, + 255, + 14, + 21, + 57, + 255, + 15, + 21, + 55, + 255, + 15, + 20, + 51, + 255, + 15, + 20, + 49, + 255, + 18, + 24, + 59, + 255, + 35, + 40, + 72, + 255, + 75, + 80, + 101, + 255, + 152, + 158, + 166, + 255, + 255, + 255, + 252, + 255, + 229, + 229, + 244, + 255, + 55, + 60, + 89, + 255, + 20, + 28, + 60, + 255, + 19, + 24, + 66, + 255, + 19, + 24, + 66, + 255, + 21, + 26, + 68, + 255, + 37, + 42, + 84, + 255, + 100, + 105, + 126, + 255, + 254, + 255, + 251, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 253, + 255, + 255, + 255, + 111, + 117, + 141, + 255, + 56, + 62, + 111, + 255, + 29, + 41, + 93, + 255, + 26, + 36, + 89, + 255, + 26, + 36, + 89, + 255, + 28, + 36, + 91, + 255, + 29, + 41, + 92, + 255, + 28, + 40, + 91, + 255, + 28, + 40, + 91, + 255, + 29, + 41, + 92, + 255, + 24, + 41, + 89, + 255, + 24, + 37, + 98, + 255, + 35, + 44, + 104, + 255, + 49, + 58, + 109, + 255, + 107, + 109, + 148, + 255, + 244, + 248, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 247, + 252, + 255, + 255, + 93, + 100, + 129, + 255, + 36, + 43, + 98, + 255, + 27, + 38, + 95, + 255, + 29, + 37, + 101, + 255, + 29, + 37, + 100, + 255, + 29, + 37, + 95, + 255, + 25, + 36, + 90, + 255, + 26, + 36, + 96, + 255, + 26, + 36, + 98, + 255, + 26, + 36, + 95, + 255, + 26, + 38, + 94, + 255, + 29, + 39, + 100, + 255, + 43, + 53, + 105, + 255, + 81, + 92, + 129, + 255, + 197, + 199, + 211, + 255, + 251, + 255, + 255, + 255, + 74, + 77, + 112, + 255, + 33, + 39, + 78, + 255, + 28, + 35, + 80, + 255, + 28, + 35, + 78, + 255, + 27, + 35, + 75, + 255, + 31, + 39, + 79, + 255, + 94, + 99, + 123, + 255, + 253, + 255, + 255, + 255, + 252, + 253, + 255, + 255, + 244, + 248, + 251, + 255, + 75, + 83, + 131, + 255, + 33, + 44, + 105, + 255, + 30, + 41, + 107, + 255, + 33, + 40, + 106, + 255, + 31, + 37, + 104, + 255, + 33, + 41, + 107, + 255, + 41, + 49, + 110, + 255, + 54, + 65, + 119, + 255, + 55, + 62, + 116, + 255, + 38, + 48, + 101, + 255, + 30, + 41, + 96, + 255, + 28, + 40, + 97, + 255, + 31, + 41, + 100, + 255, + 35, + 43, + 100, + 255, + 36, + 43, + 95, + 255, + 73, + 81, + 120, + 255, + 120, + 128, + 151, + 255, + 255, + 255, + 250, + 255, + 243, + 243, + 252, + 255, + 79, + 89, + 122, + 255, + 64, + 74, + 108, + 255, + 63, + 73, + 107, + 255, + 63, + 73, + 107, + 255, + 64, + 74, + 108, + 255, + 67, + 77, + 110, + 255, + 151, + 155, + 166, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 218, + 222, + 238, + 255, + 89, + 98, + 129, + 255, + 60, + 73, + 109, + 255, + 50, + 65, + 106, + 255, + 49, + 63, + 109, + 255, + 48, + 62, + 107, + 255, + 62, + 77, + 117, + 255, + 119, + 129, + 156, + 255, + 255, + 255, + 250, + 255, + 254, + 253, + 255, + 255, + 92, + 102, + 139, + 255, + 55, + 69, + 114, + 255, + 53, + 67, + 112, + 255, + 60, + 74, + 119, + 255, + 56, + 70, + 115, + 255, + 67, + 82, + 133, + 255, + 114, + 120, + 146, + 255, + 254, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 134, + 138, + 165, + 255, + 77, + 86, + 135, + 255, + 49, + 61, + 119, + 255, + 42, + 54, + 113, + 255, + 39, + 51, + 111, + 255, + 39, + 50, + 112, + 255, + 41, + 52, + 116, + 255, + 44, + 58, + 120, + 255, + 91, + 106, + 165, + 255, + 83, + 97, + 158, + 255, + 43, + 57, + 119, + 255, + 44, + 59, + 122, + 255, + 44, + 59, + 124, + 255, + 45, + 60, + 126, + 255, + 46, + 61, + 128, + 255, + 49, + 63, + 132, + 255, + 70, + 84, + 146, + 255, + 184, + 193, + 216, + 255, + 249, + 249, + 255, + 255, + 100, + 115, + 172, + 255, + 67, + 82, + 164, + 255, + 64, + 90, + 177, + 255, + 55, + 96, + 169, + 255, + 70, + 115, + 197, + 255, + 63, + 97, + 179, + 255, + 72, + 105, + 184, + 255, + 73, + 111, + 186, + 255, + 72, + 111, + 186, + 255, + 72, + 107, + 181, + 255, + 68, + 102, + 175, + 255, + 61, + 98, + 170, + 255, + 65, + 95, + 171, + 255, + 55, + 102, + 172, + 255, + 80, + 126, + 184, + 255, + 124, + 156, + 203, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 249, + 255, + 76, + 78, + 142, + 255, + 50, + 65, + 131, + 255, + 29, + 75, + 133, + 255, + 55, + 58, + 136, + 255, + 39, + 56, + 128, + 255, + 45, + 43, + 115, + 255, + 35, + 39, + 101, + 255, + 34, + 38, + 93, + 255, + 24, + 25, + 73, + 255, + 22, + 21, + 63, + 255, + 15, + 21, + 60, + 255, + 12, + 17, + 50, + 255, + 15, + 17, + 50, + 255, + 17, + 15, + 53, + 255, + 17, + 18, + 65, + 255, + 15, + 15, + 52, + 255, + 14, + 13, + 44, + 255, + 16, + 14, + 45, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 14, + 15, + 45, + 255, + 15, + 16, + 45, + 255, + 15, + 16, + 44, + 255, + 16, + 17, + 44, + 255, + 22, + 23, + 52, + 255, + 16, + 16, + 53, + 255, + 17, + 16, + 58, + 255, + 18, + 17, + 57, + 255, + 19, + 17, + 57, + 255, + 19, + 16, + 59, + 255, + 18, + 15, + 60, + 255, + 18, + 15, + 62, + 255, + 17, + 16, + 58, + 255, + 17, + 16, + 56, + 255, + 17, + 16, + 56, + 255, + 16, + 16, + 54, + 255, + 15, + 12, + 39, + 255, + 9, + 11, + 33, + 255, + 10, + 10, + 29, + 255, + 11, + 6, + 26, + 255, + 9, + 9, + 28, + 255, + 9, + 9, + 28, + 255, + 10, + 8, + 28, + 255, + 11, + 7, + 29, + 255, + 13, + 9, + 26, + 255, + 13, + 8, + 27, + 255, + 12, + 8, + 26, + 255, + 12, + 9, + 27, + 255, + 20, + 23, + 40, + 255, + 35, + 29, + 48, + 255, + 57, + 66, + 71, + 255, + 218, + 205, + 206, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 221, + 213, + 202, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 198, + 255, + 220, + 213, + 197, + 255, + 221, + 213, + 200, + 255, + 219, + 211, + 198, + 255, + 222, + 214, + 201, + 255, + 225, + 217, + 204, + 255, + 144, + 152, + 157, + 255, + 49, + 58, + 90, + 255, + 32, + 39, + 77, + 255, + 12, + 15, + 42, + 255, + 9, + 14, + 47, + 255, + 13, + 12, + 55, + 255, + 14, + 12, + 58, + 255, + 9, + 16, + 53, + 255, + 12, + 12, + 47, + 255, + 9, + 9, + 33, + 255, + 8, + 9, + 22, + 255, + 8, + 8, + 19, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 18, + 255, + 10, + 10, + 21, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 12, + 10, + 31, + 255, + 22, + 24, + 67, + 255, + 6, + 11, + 42, + 255, + 14, + 9, + 22, + 255, + 9, + 10, + 30, + 255, + 10, + 9, + 27, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 11, + 12, + 33, + 255, + 10, + 11, + 32, + 255, + 12, + 13, + 34, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 14, + 16, + 41, + 255, + 17, + 18, + 49, + 255, + 16, + 17, + 47, + 255, + 19, + 21, + 45, + 255, + 19, + 16, + 43, + 255, + 20, + 17, + 44, + 255, + 20, + 17, + 44, + 255, + 21, + 18, + 45, + 255, + 21, + 19, + 43, + 255, + 21, + 19, + 43, + 255, + 22, + 20, + 44, + 255, + 22, + 20, + 44, + 255, + 20, + 20, + 44, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 49, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 22, + 23, + 53, + 255, + 22, + 23, + 53, + 255, + 23, + 24, + 54, + 255, + 23, + 24, + 54, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 26, + 25, + 59, + 255, + 26, + 25, + 59, + 255, + 27, + 26, + 60, + 255, + 27, + 26, + 60, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 27, + 26, + 60, + 255, + 27, + 26, + 60, + 255, + 28, + 27, + 61, + 255, + 28, + 27, + 61, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 26, + 25, + 57, + 255, + 25, + 26, + 57, + 255, + 25, + 26, + 57, + 255, + 24, + 25, + 56, + 255, + 24, + 25, + 56, + 255, + 24, + 23, + 55, + 255, + 24, + 23, + 55, + 255, + 24, + 23, + 55, + 255, + 24, + 23, + 55, + 255, + 24, + 24, + 52, + 255, + 24, + 24, + 52, + 255, + 23, + 23, + 51, + 255, + 23, + 23, + 51, + 255, + 22, + 22, + 50, + 255, + 21, + 21, + 49, + 255, + 21, + 21, + 49, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 20, + 20, + 46, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 20, + 17, + 44, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 3, + 14, + 255, + 0, + 28, + 75, + 255, + 24, + 91, + 199, + 255, + 4, + 94, + 235, + 255, + 4, + 91, + 230, + 255, + 2, + 92, + 231, + 255, + 8, + 90, + 233, + 255, + 41, + 116, + 234, + 255, + 110, + 152, + 228, + 255, + 250, + 254, + 246, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 128, + 127, + 133, + 255, + 66, + 68, + 80, + 255, + 31, + 34, + 51, + 255, + 21, + 25, + 47, + 255, + 12, + 17, + 40, + 255, + 12, + 18, + 44, + 255, + 14, + 19, + 52, + 255, + 18, + 22, + 60, + 255, + 13, + 17, + 54, + 255, + 9, + 19, + 52, + 255, + 12, + 21, + 54, + 255, + 16, + 22, + 58, + 255, + 27, + 31, + 67, + 255, + 48, + 52, + 77, + 255, + 88, + 92, + 110, + 255, + 212, + 216, + 223, + 255, + 252, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 114, + 119, + 133, + 255, + 41, + 48, + 78, + 255, + 18, + 26, + 63, + 255, + 20, + 27, + 57, + 255, + 20, + 27, + 57, + 255, + 23, + 30, + 60, + 255, + 50, + 57, + 87, + 255, + 150, + 155, + 169, + 255, + 248, + 249, + 244, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 252, + 251, + 255, + 253, + 255, + 254, + 255, + 251, + 255, + 255, + 255, + 114, + 119, + 140, + 255, + 55, + 66, + 110, + 255, + 35, + 46, + 92, + 255, + 27, + 39, + 89, + 255, + 25, + 36, + 89, + 255, + 28, + 37, + 86, + 255, + 30, + 39, + 88, + 255, + 28, + 37, + 86, + 255, + 30, + 39, + 88, + 255, + 32, + 44, + 94, + 255, + 42, + 50, + 105, + 255, + 67, + 72, + 121, + 255, + 109, + 113, + 151, + 255, + 241, + 245, + 254, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 250, + 255, + 251, + 254, + 253, + 255, + 213, + 219, + 233, + 255, + 90, + 96, + 127, + 255, + 44, + 55, + 103, + 255, + 31, + 40, + 97, + 255, + 28, + 38, + 97, + 255, + 25, + 36, + 92, + 255, + 26, + 34, + 91, + 255, + 28, + 35, + 98, + 255, + 28, + 35, + 98, + 255, + 30, + 37, + 96, + 255, + 31, + 42, + 103, + 255, + 50, + 57, + 112, + 255, + 89, + 93, + 131, + 255, + 175, + 177, + 198, + 255, + 247, + 248, + 243, + 255, + 178, + 185, + 188, + 255, + 57, + 67, + 102, + 255, + 28, + 42, + 81, + 255, + 31, + 40, + 84, + 255, + 31, + 40, + 82, + 255, + 30, + 39, + 80, + 255, + 41, + 50, + 90, + 255, + 121, + 124, + 147, + 255, + 252, + 252, + 252, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 249, + 255, + 106, + 115, + 147, + 255, + 53, + 64, + 130, + 255, + 35, + 45, + 124, + 255, + 32, + 41, + 108, + 255, + 31, + 42, + 105, + 255, + 34, + 43, + 110, + 255, + 37, + 47, + 109, + 255, + 51, + 60, + 117, + 255, + 59, + 66, + 125, + 255, + 46, + 55, + 113, + 255, + 39, + 50, + 103, + 255, + 40, + 54, + 101, + 255, + 43, + 55, + 103, + 255, + 53, + 64, + 111, + 255, + 60, + 69, + 112, + 255, + 100, + 109, + 141, + 255, + 204, + 203, + 220, + 255, + 254, + 254, + 253, + 255, + 150, + 153, + 169, + 255, + 80, + 93, + 128, + 255, + 68, + 81, + 116, + 255, + 67, + 80, + 115, + 255, + 68, + 81, + 116, + 255, + 72, + 85, + 120, + 255, + 90, + 97, + 130, + 255, + 243, + 244, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 251, + 255, + 251, + 251, + 249, + 255, + 146, + 152, + 167, + 255, + 81, + 95, + 125, + 255, + 58, + 79, + 116, + 255, + 59, + 74, + 115, + 255, + 57, + 71, + 117, + 255, + 56, + 70, + 115, + 255, + 79, + 94, + 134, + 255, + 172, + 179, + 198, + 255, + 254, + 255, + 253, + 255, + 168, + 173, + 194, + 255, + 78, + 96, + 136, + 255, + 63, + 76, + 126, + 255, + 63, + 76, + 126, + 255, + 62, + 75, + 125, + 255, + 63, + 76, + 126, + 255, + 81, + 93, + 143, + 255, + 148, + 152, + 177, + 255, + 255, + 254, + 255, + 255, + 254, + 254, + 253, + 255, + 252, + 253, + 249, + 255, + 228, + 234, + 249, + 255, + 100, + 113, + 155, + 255, + 60, + 78, + 136, + 255, + 46, + 60, + 120, + 255, + 41, + 55, + 119, + 255, + 43, + 56, + 122, + 255, + 45, + 59, + 123, + 255, + 57, + 71, + 135, + 255, + 76, + 89, + 140, + 255, + 72, + 87, + 135, + 255, + 62, + 79, + 132, + 255, + 50, + 64, + 134, + 255, + 49, + 63, + 134, + 255, + 50, + 64, + 137, + 255, + 51, + 64, + 139, + 255, + 52, + 74, + 134, + 255, + 85, + 101, + 153, + 255, + 247, + 255, + 255, + 255, + 246, + 245, + 254, + 255, + 120, + 126, + 180, + 255, + 79, + 96, + 173, + 255, + 61, + 99, + 180, + 255, + 80, + 138, + 210, + 255, + 89, + 142, + 221, + 255, + 74, + 121, + 199, + 255, + 82, + 125, + 201, + 255, + 86, + 128, + 201, + 255, + 87, + 134, + 198, + 255, + 80, + 131, + 196, + 255, + 77, + 126, + 192, + 255, + 74, + 115, + 186, + 255, + 69, + 111, + 188, + 255, + 74, + 116, + 190, + 255, + 112, + 143, + 191, + 255, + 239, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 253, + 255, + 255, + 255, + 85, + 86, + 158, + 255, + 56, + 66, + 143, + 255, + 53, + 63, + 141, + 255, + 40, + 100, + 164, + 255, + 66, + 63, + 148, + 255, + 50, + 49, + 129, + 255, + 39, + 42, + 112, + 255, + 34, + 37, + 99, + 255, + 27, + 27, + 81, + 255, + 25, + 23, + 71, + 255, + 21, + 27, + 66, + 255, + 21, + 26, + 59, + 255, + 16, + 17, + 51, + 255, + 18, + 16, + 54, + 255, + 18, + 19, + 66, + 255, + 16, + 16, + 53, + 255, + 14, + 13, + 44, + 255, + 16, + 14, + 45, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 16, + 15, + 46, + 255, + 15, + 16, + 46, + 255, + 16, + 17, + 47, + 255, + 20, + 21, + 51, + 255, + 19, + 20, + 50, + 255, + 15, + 17, + 60, + 255, + 25, + 26, + 73, + 255, + 22, + 23, + 68, + 255, + 16, + 18, + 58, + 255, + 19, + 17, + 57, + 255, + 19, + 16, + 58, + 255, + 18, + 15, + 58, + 255, + 18, + 15, + 60, + 255, + 17, + 16, + 58, + 255, + 17, + 16, + 60, + 255, + 15, + 13, + 58, + 255, + 16, + 14, + 61, + 255, + 16, + 15, + 55, + 255, + 11, + 14, + 47, + 255, + 11, + 12, + 38, + 255, + 14, + 9, + 32, + 255, + 13, + 10, + 28, + 255, + 13, + 10, + 28, + 255, + 12, + 12, + 29, + 255, + 12, + 12, + 29, + 255, + 11, + 10, + 26, + 255, + 12, + 10, + 25, + 255, + 14, + 12, + 27, + 255, + 19, + 17, + 32, + 255, + 35, + 24, + 46, + 255, + 64, + 56, + 69, + 255, + 208, + 211, + 204, + 255, + 213, + 201, + 187, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 221, + 213, + 202, + 255, + 221, + 213, + 200, + 255, + 220, + 212, + 197, + 255, + 221, + 214, + 198, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 225, + 217, + 204, + 255, + 219, + 211, + 198, + 255, + 215, + 214, + 195, + 255, + 187, + 191, + 192, + 255, + 43, + 50, + 78, + 255, + 32, + 37, + 85, + 255, + 10, + 21, + 44, + 255, + 13, + 17, + 44, + 255, + 14, + 14, + 51, + 255, + 14, + 11, + 61, + 255, + 9, + 10, + 41, + 255, + 8, + 9, + 29, + 255, + 8, + 9, + 21, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 19, + 255, + 11, + 11, + 23, + 255, + 11, + 10, + 24, + 255, + 11, + 10, + 26, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 12, + 10, + 31, + 255, + 13, + 15, + 55, + 255, + 7, + 14, + 49, + 255, + 14, + 10, + 26, + 255, + 10, + 11, + 31, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 32, + 255, + 11, + 12, + 33, + 255, + 12, + 13, + 34, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 14, + 14, + 38, + 255, + 15, + 15, + 39, + 255, + 15, + 17, + 42, + 255, + 19, + 20, + 51, + 255, + 35, + 36, + 66, + 255, + 21, + 23, + 47, + 255, + 19, + 16, + 43, + 255, + 20, + 17, + 44, + 255, + 21, + 18, + 45, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 45, + 255, + 22, + 19, + 45, + 255, + 23, + 20, + 46, + 255, + 23, + 20, + 46, + 255, + 21, + 21, + 46, + 255, + 21, + 21, + 47, + 255, + 22, + 22, + 50, + 255, + 23, + 22, + 52, + 255, + 22, + 23, + 51, + 255, + 22, + 23, + 51, + 255, + 23, + 24, + 52, + 255, + 23, + 24, + 52, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 24, + 25, + 55, + 255, + 26, + 27, + 57, + 255, + 26, + 27, + 57, + 255, + 26, + 27, + 57, + 255, + 26, + 27, + 57, + 255, + 27, + 26, + 60, + 255, + 27, + 26, + 60, + 255, + 28, + 27, + 61, + 255, + 28, + 27, + 61, + 255, + 27, + 28, + 59, + 255, + 27, + 28, + 59, + 255, + 27, + 28, + 59, + 255, + 27, + 28, + 59, + 255, + 28, + 27, + 61, + 255, + 28, + 27, + 61, + 255, + 27, + 26, + 60, + 255, + 27, + 26, + 60, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 27, + 28, + 59, + 255, + 27, + 28, + 59, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 26, + 25, + 57, + 255, + 26, + 25, + 57, + 255, + 26, + 25, + 57, + 255, + 26, + 25, + 57, + 255, + 25, + 25, + 53, + 255, + 25, + 25, + 53, + 255, + 25, + 25, + 53, + 255, + 25, + 25, + 53, + 255, + 24, + 24, + 52, + 255, + 23, + 23, + 51, + 255, + 22, + 22, + 50, + 255, + 21, + 21, + 49, + 255, + 21, + 21, + 47, + 255, + 21, + 21, + 47, + 255, + 21, + 21, + 47, + 255, + 21, + 21, + 47, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 21, + 18, + 45, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 3, + 11, + 23, + 255, + 0, + 36, + 113, + 255, + 10, + 89, + 225, + 255, + 4, + 91, + 231, + 255, + 3, + 92, + 230, + 255, + 0, + 93, + 233, + 255, + 13, + 93, + 232, + 255, + 62, + 127, + 237, + 255, + 186, + 212, + 248, + 255, + 255, + 253, + 247, + 255, + 248, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 247, + 248, + 252, + 255, + 107, + 110, + 116, + 255, + 69, + 73, + 86, + 255, + 43, + 45, + 67, + 255, + 40, + 45, + 67, + 255, + 29, + 33, + 62, + 255, + 26, + 29, + 63, + 255, + 27, + 30, + 62, + 255, + 29, + 36, + 63, + 255, + 41, + 46, + 70, + 255, + 60, + 63, + 86, + 255, + 82, + 84, + 105, + 255, + 119, + 121, + 133, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 252, + 255, + 251, + 254, + 252, + 255, + 119, + 121, + 134, + 255, + 61, + 64, + 88, + 255, + 51, + 55, + 82, + 255, + 49, + 53, + 81, + 255, + 49, + 53, + 81, + 255, + 57, + 61, + 89, + 255, + 90, + 94, + 122, + 255, + 246, + 250, + 254, + 255, + 255, + 255, + 250, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 133, + 139, + 158, + 255, + 87, + 94, + 120, + 255, + 63, + 72, + 105, + 255, + 44, + 55, + 93, + 255, + 47, + 52, + 102, + 255, + 48, + 53, + 103, + 255, + 46, + 51, + 101, + 255, + 56, + 61, + 111, + 255, + 74, + 77, + 128, + 255, + 101, + 105, + 140, + 255, + 169, + 173, + 185, + 255, + 246, + 250, + 245, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 238, + 241, + 247, + 255, + 116, + 119, + 153, + 255, + 78, + 82, + 128, + 255, + 55, + 61, + 113, + 255, + 43, + 52, + 103, + 255, + 43, + 48, + 96, + 255, + 44, + 48, + 99, + 255, + 45, + 50, + 99, + 255, + 55, + 61, + 104, + 255, + 70, + 75, + 113, + 255, + 116, + 119, + 148, + 255, + 248, + 249, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 253, + 255, + 255, + 142, + 145, + 159, + 255, + 79, + 84, + 123, + 255, + 62, + 73, + 109, + 255, + 62, + 66, + 109, + 255, + 62, + 67, + 107, + 255, + 67, + 72, + 110, + 255, + 77, + 82, + 120, + 255, + 203, + 205, + 219, + 255, + 255, + 255, + 253, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 249, + 255, + 245, + 247, + 255, + 255, + 104, + 112, + 151, + 255, + 68, + 76, + 132, + 255, + 59, + 67, + 122, + 255, + 48, + 57, + 118, + 255, + 55, + 62, + 121, + 255, + 81, + 86, + 136, + 255, + 118, + 123, + 163, + 255, + 248, + 255, + 255, + 255, + 93, + 99, + 132, + 255, + 84, + 90, + 135, + 255, + 83, + 91, + 137, + 255, + 87, + 94, + 132, + 255, + 91, + 96, + 136, + 255, + 97, + 101, + 139, + 255, + 137, + 141, + 170, + 255, + 253, + 250, + 255, + 255, + 254, + 255, + 255, + 255, + 156, + 159, + 176, + 255, + 97, + 105, + 132, + 255, + 99, + 106, + 141, + 255, + 99, + 106, + 141, + 255, + 99, + 106, + 141, + 255, + 104, + 111, + 146, + 255, + 126, + 131, + 154, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 251, + 250, + 255, + 255, + 156, + 158, + 182, + 255, + 106, + 115, + 148, + 255, + 92, + 105, + 142, + 255, + 94, + 103, + 144, + 255, + 91, + 99, + 144, + 255, + 91, + 100, + 143, + 255, + 113, + 122, + 162, + 255, + 247, + 251, + 255, + 255, + 254, + 255, + 253, + 255, + 151, + 156, + 177, + 255, + 101, + 112, + 146, + 255, + 93, + 101, + 149, + 255, + 93, + 101, + 149, + 255, + 92, + 100, + 148, + 255, + 95, + 103, + 151, + 255, + 114, + 124, + 158, + 255, + 224, + 227, + 241, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 162, + 172, + 189, + 255, + 100, + 112, + 150, + 255, + 69, + 81, + 140, + 255, + 62, + 72, + 141, + 255, + 60, + 70, + 139, + 255, + 69, + 80, + 143, + 255, + 86, + 95, + 150, + 255, + 120, + 125, + 158, + 255, + 247, + 253, + 255, + 255, + 91, + 103, + 153, + 255, + 72, + 89, + 149, + 255, + 71, + 88, + 149, + 255, + 72, + 89, + 152, + 255, + 72, + 89, + 153, + 255, + 81, + 92, + 163, + 255, + 128, + 132, + 184, + 255, + 250, + 252, + 255, + 255, + 255, + 255, + 248, + 255, + 253, + 255, + 246, + 255, + 238, + 249, + 255, + 255, + 143, + 171, + 209, + 255, + 121, + 162, + 216, + 255, + 93, + 166, + 219, + 255, + 95, + 188, + 238, + 255, + 82, + 182, + 233, + 255, + 90, + 184, + 240, + 255, + 88, + 191, + 234, + 255, + 89, + 207, + 243, + 255, + 73, + 176, + 216, + 255, + 91, + 163, + 212, + 255, + 112, + 147, + 194, + 255, + 141, + 162, + 199, + 255, + 250, + 254, + 255, + 255, + 255, + 255, + 250, + 255, + 252, + 254, + 243, + 255, + 240, + 244, + 255, + 255, + 77, + 76, + 160, + 255, + 68, + 68, + 156, + 255, + 70, + 72, + 162, + 255, + 34, + 132, + 186, + 255, + 55, + 102, + 174, + 255, + 55, + 71, + 157, + 255, + 51, + 52, + 132, + 255, + 40, + 41, + 112, + 255, + 30, + 29, + 89, + 255, + 27, + 24, + 76, + 255, + 28, + 34, + 76, + 255, + 18, + 22, + 59, + 255, + 18, + 19, + 56, + 255, + 19, + 17, + 57, + 255, + 18, + 19, + 66, + 255, + 17, + 17, + 54, + 255, + 17, + 16, + 47, + 255, + 17, + 15, + 46, + 255, + 16, + 15, + 47, + 255, + 16, + 15, + 47, + 255, + 18, + 17, + 49, + 255, + 16, + 15, + 47, + 255, + 15, + 16, + 47, + 255, + 20, + 20, + 55, + 255, + 19, + 19, + 56, + 255, + 19, + 18, + 58, + 255, + 18, + 19, + 67, + 255, + 17, + 17, + 68, + 255, + 17, + 18, + 65, + 255, + 17, + 19, + 58, + 255, + 19, + 16, + 58, + 255, + 19, + 17, + 57, + 255, + 20, + 18, + 57, + 255, + 20, + 18, + 56, + 255, + 20, + 20, + 58, + 255, + 20, + 20, + 57, + 255, + 23, + 23, + 59, + 255, + 32, + 32, + 67, + 255, + 26, + 26, + 61, + 255, + 26, + 29, + 57, + 255, + 27, + 25, + 46, + 255, + 34, + 24, + 43, + 255, + 36, + 26, + 52, + 255, + 32, + 21, + 44, + 255, + 39, + 27, + 48, + 255, + 40, + 27, + 47, + 255, + 53, + 32, + 57, + 255, + 49, + 27, + 49, + 255, + 59, + 33, + 53, + 255, + 67, + 40, + 58, + 255, + 200, + 168, + 183, + 255, + 227, + 222, + 217, + 255, + 218, + 210, + 195, + 255, + 218, + 211, + 191, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 220, + 212, + 201, + 255, + 220, + 212, + 199, + 255, + 221, + 213, + 198, + 255, + 221, + 214, + 198, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 223, + 210, + 204, + 255, + 220, + 212, + 194, + 255, + 215, + 214, + 202, + 255, + 116, + 121, + 124, + 255, + 52, + 58, + 101, + 255, + 23, + 29, + 69, + 255, + 11, + 14, + 49, + 255, + 17, + 13, + 47, + 255, + 7, + 10, + 28, + 255, + 6, + 8, + 21, + 255, + 7, + 8, + 19, + 255, + 8, + 7, + 22, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 12, + 10, + 31, + 255, + 9, + 13, + 48, + 255, + 13, + 25, + 66, + 255, + 12, + 11, + 36, + 255, + 11, + 11, + 29, + 255, + 12, + 10, + 32, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 34, + 255, + 14, + 12, + 34, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 13, + 13, + 39, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 42, + 255, + 17, + 19, + 44, + 255, + 22, + 23, + 54, + 255, + 27, + 28, + 58, + 255, + 15, + 17, + 41, + 255, + 21, + 18, + 45, + 255, + 21, + 18, + 45, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 48, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 48, + 255, + 22, + 22, + 49, + 255, + 23, + 23, + 51, + 255, + 23, + 22, + 52, + 255, + 24, + 23, + 55, + 255, + 24, + 25, + 56, + 255, + 25, + 26, + 57, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 28, + 29, + 60, + 255, + 28, + 29, + 60, + 255, + 28, + 29, + 60, + 255, + 28, + 29, + 60, + 255, + 29, + 28, + 62, + 255, + 29, + 28, + 62, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 30, + 64, + 255, + 30, + 30, + 64, + 255, + 29, + 29, + 63, + 255, + 29, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 31, + 62, + 255, + 30, + 31, + 62, + 255, + 27, + 28, + 59, + 255, + 27, + 28, + 59, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 26, + 25, + 57, + 255, + 25, + 24, + 56, + 255, + 26, + 25, + 57, + 255, + 25, + 24, + 56, + 255, + 25, + 24, + 56, + 255, + 24, + 23, + 55, + 255, + 23, + 22, + 52, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 21, + 20, + 50, + 255, + 22, + 21, + 51, + 255, + 22, + 21, + 51, + 255, + 21, + 20, + 50, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 1, + 13, + 25, + 255, + 10, + 64, + 161, + 255, + 2, + 90, + 242, + 255, + 5, + 91, + 230, + 255, + 3, + 92, + 230, + 255, + 0, + 93, + 233, + 255, + 17, + 96, + 232, + 255, + 78, + 138, + 241, + 255, + 239, + 254, + 255, + 255, + 255, + 253, + 247, + 255, + 247, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 252, + 255, + 252, + 255, + 255, + 255, + 149, + 153, + 162, + 255, + 108, + 111, + 127, + 255, + 94, + 96, + 119, + 255, + 90, + 91, + 119, + 255, + 91, + 93, + 118, + 255, + 102, + 102, + 123, + 255, + 116, + 116, + 130, + 255, + 239, + 238, + 243, + 255, + 249, + 248, + 247, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 252, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 219, + 217, + 227, + 255, + 225, + 223, + 237, + 255, + 221, + 220, + 232, + 255, + 223, + 223, + 230, + 255, + 223, + 223, + 230, + 255, + 218, + 218, + 225, + 255, + 227, + 227, + 234, + 255, + 247, + 250, + 249, + 255, + 255, + 255, + 249, + 255, + 255, + 254, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 251, + 249, + 250, + 255, + 254, + 253, + 249, + 255, + 253, + 255, + 255, + 255, + 197, + 202, + 216, + 255, + 116, + 123, + 143, + 255, + 105, + 111, + 136, + 255, + 106, + 112, + 137, + 255, + 113, + 119, + 144, + 255, + 123, + 129, + 154, + 255, + 242, + 248, + 252, + 255, + 249, + 253, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 248, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 251, + 255, + 255, + 255, + 252, + 255, + 242, + 243, + 253, + 255, + 137, + 141, + 161, + 255, + 112, + 119, + 139, + 255, + 104, + 109, + 142, + 255, + 106, + 110, + 146, + 255, + 110, + 115, + 146, + 255, + 150, + 156, + 180, + 255, + 253, + 255, + 255, + 255, + 251, + 252, + 253, + 255, + 255, + 255, + 252, + 255, + 252, + 253, + 247, + 255, + 254, + 253, + 250, + 255, + 221, + 221, + 223, + 255, + 224, + 224, + 242, + 255, + 218, + 223, + 227, + 255, + 224, + 226, + 238, + 255, + 224, + 227, + 237, + 255, + 221, + 224, + 233, + 255, + 224, + 227, + 234, + 255, + 253, + 255, + 255, + 255, + 255, + 253, + 248, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 252, + 255, + 255, + 252, + 253, + 255, + 250, + 254, + 255, + 255, + 158, + 165, + 185, + 255, + 125, + 128, + 170, + 255, + 115, + 123, + 154, + 255, + 135, + 141, + 165, + 255, + 248, + 253, + 255, + 255, + 253, + 255, + 249, + 255, + 235, + 237, + 241, + 255, + 228, + 228, + 244, + 255, + 229, + 231, + 245, + 255, + 227, + 233, + 236, + 255, + 228, + 231, + 238, + 255, + 230, + 231, + 242, + 255, + 231, + 231, + 241, + 255, + 241, + 241, + 243, + 255, + 254, + 255, + 255, + 255, + 247, + 252, + 249, + 255, + 231, + 233, + 245, + 255, + 235, + 236, + 247, + 255, + 229, + 235, + 241, + 255, + 229, + 235, + 241, + 255, + 228, + 234, + 240, + 255, + 228, + 234, + 240, + 255, + 225, + 229, + 240, + 255, + 252, + 251, + 251, + 255, + 255, + 255, + 252, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 251, + 255, + 224, + 226, + 231, + 255, + 231, + 234, + 244, + 255, + 228, + 232, + 241, + 255, + 228, + 233, + 244, + 255, + 227, + 232, + 247, + 255, + 223, + 228, + 242, + 255, + 228, + 233, + 243, + 255, + 247, + 250, + 255, + 255, + 252, + 253, + 248, + 255, + 235, + 232, + 250, + 255, + 231, + 230, + 252, + 255, + 226, + 231, + 244, + 255, + 226, + 231, + 244, + 255, + 226, + 231, + 244, + 255, + 228, + 233, + 246, + 255, + 218, + 227, + 241, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 247, + 255, + 252, + 255, + 250, + 255, + 240, + 241, + 254, + 255, + 133, + 145, + 174, + 255, + 110, + 120, + 162, + 255, + 114, + 124, + 165, + 255, + 142, + 154, + 185, + 255, + 248, + 255, + 255, + 255, + 255, + 255, + 249, + 255, + 242, + 244, + 242, + 255, + 235, + 243, + 255, + 255, + 128, + 134, + 165, + 255, + 128, + 134, + 166, + 255, + 129, + 135, + 168, + 255, + 131, + 137, + 172, + 255, + 130, + 136, + 168, + 255, + 168, + 167, + 191, + 255, + 255, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 252, + 255, + 255, + 255, + 252, + 255, + 249, + 255, + 255, + 255, + 237, + 251, + 255, + 255, + 184, + 220, + 246, + 255, + 122, + 198, + 221, + 255, + 112, + 206, + 234, + 255, + 110, + 201, + 238, + 255, + 101, + 198, + 223, + 255, + 88, + 204, + 218, + 255, + 121, + 214, + 229, + 255, + 138, + 188, + 213, + 255, + 225, + 243, + 255, + 255, + 251, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 255, + 253, + 255, + 255, + 252, + 255, + 245, + 255, + 137, + 141, + 181, + 255, + 74, + 74, + 160, + 255, + 73, + 70, + 158, + 255, + 72, + 79, + 167, + 255, + 59, + 111, + 178, + 255, + 48, + 131, + 190, + 255, + 68, + 75, + 164, + 255, + 55, + 56, + 138, + 255, + 42, + 43, + 114, + 255, + 33, + 32, + 90, + 255, + 28, + 26, + 75, + 255, + 22, + 28, + 70, + 255, + 16, + 20, + 57, + 255, + 19, + 20, + 57, + 255, + 20, + 17, + 60, + 255, + 18, + 19, + 66, + 255, + 17, + 17, + 54, + 255, + 16, + 15, + 46, + 255, + 18, + 16, + 47, + 255, + 17, + 16, + 50, + 255, + 17, + 16, + 50, + 255, + 16, + 15, + 49, + 255, + 18, + 17, + 51, + 255, + 24, + 25, + 56, + 255, + 17, + 17, + 52, + 255, + 19, + 18, + 58, + 255, + 19, + 18, + 62, + 255, + 19, + 18, + 58, + 255, + 20, + 19, + 62, + 255, + 19, + 18, + 60, + 255, + 19, + 19, + 55, + 255, + 20, + 17, + 59, + 255, + 20, + 18, + 57, + 255, + 21, + 19, + 56, + 255, + 25, + 24, + 58, + 255, + 28, + 28, + 62, + 255, + 36, + 37, + 66, + 255, + 40, + 42, + 64, + 255, + 48, + 51, + 68, + 255, + 52, + 52, + 70, + 255, + 55, + 56, + 70, + 255, + 51, + 45, + 58, + 255, + 60, + 45, + 59, + 255, + 74, + 41, + 59, + 255, + 82, + 44, + 60, + 255, + 97, + 53, + 67, + 255, + 145, + 98, + 109, + 255, + 187, + 127, + 143, + 255, + 212, + 149, + 161, + 255, + 217, + 150, + 159, + 255, + 208, + 138, + 146, + 255, + 128, + 91, + 99, + 255, + 216, + 215, + 202, + 255, + 220, + 209, + 198, + 255, + 213, + 212, + 201, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 219, + 211, + 200, + 255, + 219, + 211, + 198, + 255, + 221, + 213, + 198, + 255, + 221, + 214, + 198, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 219, + 213, + 199, + 255, + 222, + 210, + 195, + 255, + 223, + 212, + 198, + 255, + 217, + 210, + 200, + 255, + 102, + 108, + 115, + 255, + 44, + 50, + 82, + 255, + 18, + 23, + 61, + 255, + 12, + 13, + 40, + 255, + 7, + 10, + 25, + 255, + 6, + 9, + 18, + 255, + 7, + 8, + 19, + 255, + 8, + 7, + 23, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 26, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 12, + 10, + 31, + 255, + 9, + 14, + 45, + 255, + 17, + 31, + 75, + 255, + 12, + 12, + 40, + 255, + 13, + 11, + 30, + 255, + 13, + 11, + 35, + 255, + 14, + 12, + 36, + 255, + 15, + 13, + 37, + 255, + 15, + 13, + 37, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 15, + 16, + 37, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 42, + 255, + 17, + 17, + 43, + 255, + 18, + 20, + 45, + 255, + 20, + 21, + 52, + 255, + 16, + 17, + 47, + 255, + 23, + 25, + 49, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 22, + 19, + 46, + 255, + 20, + 21, + 49, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 22, + 23, + 51, + 255, + 24, + 24, + 52, + 255, + 25, + 24, + 54, + 255, + 25, + 24, + 56, + 255, + 26, + 25, + 57, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 27, + 27, + 61, + 255, + 28, + 28, + 62, + 255, + 27, + 27, + 61, + 255, + 28, + 28, + 62, + 255, + 29, + 29, + 63, + 255, + 29, + 29, + 63, + 255, + 29, + 29, + 63, + 255, + 29, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 30, + 29, + 63, + 255, + 31, + 30, + 64, + 255, + 31, + 30, + 64, + 255, + 29, + 29, + 65, + 255, + 29, + 29, + 65, + 255, + 30, + 30, + 66, + 255, + 30, + 30, + 66, + 255, + 32, + 31, + 65, + 255, + 32, + 31, + 65, + 255, + 32, + 31, + 65, + 255, + 32, + 31, + 65, + 255, + 32, + 30, + 67, + 255, + 32, + 30, + 67, + 255, + 32, + 30, + 67, + 255, + 32, + 30, + 67, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 31, + 30, + 62, + 255, + 31, + 30, + 62, + 255, + 29, + 30, + 61, + 255, + 29, + 30, + 61, + 255, + 30, + 31, + 62, + 255, + 30, + 31, + 62, + 255, + 31, + 30, + 62, + 255, + 31, + 30, + 62, + 255, + 31, + 30, + 62, + 255, + 31, + 30, + 62, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 25, + 24, + 55, + 255, + 24, + 23, + 54, + 255, + 24, + 23, + 54, + 255, + 23, + 22, + 53, + 255, + 22, + 23, + 53, + 255, + 22, + 23, + 53, + 255, + 21, + 22, + 52, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 2, + 16, + 44, + 255, + 21, + 84, + 197, + 255, + 2, + 87, + 239, + 255, + 3, + 89, + 228, + 255, + 5, + 89, + 230, + 255, + 4, + 89, + 232, + 255, + 21, + 91, + 240, + 255, + 85, + 122, + 212, + 255, + 251, + 252, + 255, + 255, + 253, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 254, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 254, + 255, + 254, + 254, + 255, + 255, + 254, + 254, + 255, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 252, + 254, + 252, + 255, + 252, + 254, + 252, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 253, + 254, + 255, + 253, + 253, + 253, + 255, + 254, + 254, + 252, + 255, + 254, + 255, + 251, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 254, + 255, + 253, + 253, + 253, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 254, + 252, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 254, + 254, + 255, + 254, + 254, + 254, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 253, + 255, + 254, + 255, + 254, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 254, + 255, + 253, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 254, + 255, + 255, + 255, + 255, + 255, + 255, + 251, + 254, + 254, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 254, + 255, + 252, + 255, + 253, + 255, + 254, + 255, + 253, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 252, + 253, + 253, + 255, + 254, + 255, + 251, + 255, + 254, + 255, + 252, + 255, + 252, + 255, + 253, + 255, + 251, + 255, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 254, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 255, + 254, + 255, + 254, + 254, + 253, + 255, + 254, + 254, + 253, + 255, + 254, + 255, + 254, + 255, + 254, + 255, + 255, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 253, + 255, + 251, + 255, + 253, + 255, + 252, + 255, + 253, + 255, + 254, + 255, + 253, + 254, + 255, + 255, + 252, + 253, + 255, + 255, + 253, + 254, + 255, + 255, + 253, + 253, + 254, + 255, + 255, + 255, + 255, + 255, + 250, + 255, + 252, + 255, + 252, + 255, + 251, + 255, + 255, + 253, + 250, + 255, + 251, + 255, + 250, + 255, + 252, + 255, + 254, + 255, + 245, + 254, + 251, + 255, + 250, + 255, + 255, + 255, + 255, + 254, + 255, + 255, + 253, + 255, + 252, + 255, + 255, + 255, + 255, + 255, + 252, + 254, + 243, + 255, + 252, + 255, + 255, + 255, + 253, + 255, + 255, + 255, + 87, + 91, + 144, + 255, + 67, + 69, + 155, + 255, + 80, + 79, + 171, + 255, + 56, + 83, + 165, + 255, + 70, + 96, + 181, + 255, + 49, + 154, + 210, + 255, + 62, + 82, + 161, + 255, + 58, + 60, + 137, + 255, + 44, + 47, + 117, + 255, + 31, + 33, + 90, + 255, + 25, + 28, + 72, + 255, + 19, + 22, + 64, + 255, + 31, + 33, + 71, + 255, + 20, + 19, + 61, + 255, + 21, + 17, + 65, + 255, + 18, + 19, + 63, + 255, + 15, + 16, + 51, + 255, + 16, + 15, + 45, + 255, + 18, + 15, + 46, + 255, + 19, + 16, + 47, + 255, + 20, + 18, + 50, + 255, + 23, + 22, + 54, + 255, + 19, + 18, + 52, + 255, + 17, + 19, + 58, + 255, + 17, + 19, + 58, + 255, + 16, + 18, + 57, + 255, + 17, + 19, + 59, + 255, + 22, + 16, + 62, + 255, + 21, + 17, + 60, + 255, + 21, + 20, + 60, + 255, + 21, + 24, + 59, + 255, + 33, + 32, + 65, + 255, + 33, + 33, + 61, + 255, + 43, + 44, + 66, + 255, + 60, + 62, + 82, + 255, + 182, + 179, + 186, + 255, + 196, + 191, + 188, + 255, + 198, + 192, + 184, + 255, + 203, + 197, + 190, + 255, + 202, + 197, + 185, + 255, + 200, + 199, + 186, + 255, + 213, + 199, + 190, + 255, + 206, + 172, + 170, + 255, + 214, + 135, + 141, + 255, + 215, + 136, + 142, + 255, + 216, + 137, + 143, + 255, + 216, + 137, + 143, + 255, + 217, + 137, + 145, + 255, + 219, + 139, + 142, + 255, + 218, + 139, + 145, + 255, + 200, + 149, + 152, + 255, + 214, + 208, + 196, + 255, + 222, + 216, + 204, + 255, + 216, + 210, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 220, + 213, + 197, + 255, + 220, + 213, + 197, + 255, + 221, + 214, + 198, + 255, + 221, + 214, + 198, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 215, + 210, + 195, + 255, + 202, + 206, + 208, + 255, + 52, + 49, + 76, + 255, + 24, + 35, + 67, + 255, + 10, + 11, + 30, + 255, + 7, + 9, + 21, + 255, + 8, + 9, + 19, + 255, + 9, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 8, + 7, + 21, + 255, + 9, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 8, + 9, + 27, + 255, + 9, + 11, + 26, + 255, + 8, + 9, + 28, + 255, + 10, + 10, + 34, + 255, + 9, + 16, + 47, + 255, + 19, + 29, + 83, + 255, + 14, + 12, + 32, + 255, + 13, + 12, + 38, + 255, + 12, + 14, + 36, + 255, + 13, + 14, + 36, + 255, + 14, + 12, + 33, + 255, + 16, + 12, + 34, + 255, + 13, + 14, + 35, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 42, + 255, + 15, + 15, + 40, + 255, + 16, + 16, + 40, + 255, + 17, + 17, + 41, + 255, + 19, + 19, + 43, + 255, + 18, + 19, + 47, + 255, + 41, + 42, + 70, + 255, + 20, + 22, + 48, + 255, + 19, + 21, + 46, + 255, + 20, + 21, + 49, + 255, + 20, + 21, + 49, + 255, + 20, + 21, + 49, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 50, + 255, + 22, + 23, + 51, + 255, + 23, + 24, + 52, + 255, + 24, + 25, + 53, + 255, + 26, + 25, + 57, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 27, + 26, + 58, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 32, + 31, + 63, + 255, + 32, + 31, + 63, + 255, + 31, + 30, + 64, + 255, + 32, + 31, + 65, + 255, + 33, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 34, + 31, + 68, + 255, + 34, + 31, + 68, + 255, + 34, + 31, + 68, + 255, + 34, + 31, + 68, + 255, + 35, + 32, + 69, + 255, + 35, + 32, + 69, + 255, + 37, + 34, + 71, + 255, + 37, + 34, + 71, + 255, + 37, + 34, + 71, + 255, + 37, + 34, + 71, + 255, + 35, + 32, + 69, + 255, + 36, + 33, + 70, + 255, + 35, + 32, + 69, + 255, + 35, + 32, + 69, + 255, + 36, + 33, + 70, + 255, + 36, + 33, + 70, + 255, + 35, + 32, + 69, + 255, + 35, + 32, + 69, + 255, + 34, + 31, + 68, + 255, + 35, + 32, + 69, + 255, + 36, + 33, + 68, + 255, + 36, + 33, + 69, + 255, + 36, + 33, + 69, + 255, + 36, + 33, + 69, + 255, + 37, + 35, + 68, + 255, + 36, + 35, + 68, + 255, + 35, + 33, + 69, + 255, + 35, + 35, + 70, + 255, + 37, + 35, + 71, + 255, + 38, + 37, + 71, + 255, + 37, + 36, + 68, + 255, + 37, + 36, + 67, + 255, + 36, + 35, + 69, + 255, + 35, + 34, + 67, + 255, + 34, + 33, + 65, + 255, + 32, + 31, + 62, + 255, + 31, + 30, + 62, + 255, + 30, + 29, + 60, + 255, + 30, + 29, + 59, + 255, + 28, + 27, + 57, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 25, + 24, + 56, + 255, + 24, + 23, + 55, + 255, + 25, + 24, + 56, + 255, + 24, + 23, + 55, + 255, + 24, + 23, + 55, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 1, + 2, + 255, + 1, + 8, + 26, + 255, + 0, + 39, + 83, + 255, + 0, + 38, + 97, + 255, + 0, + 38, + 104, + 255, + 0, + 38, + 104, + 255, + 0, + 39, + 106, + 255, + 0, + 45, + 113, + 255, + 40, + 65, + 97, + 255, + 79, + 80, + 84, + 255, + 95, + 96, + 99, + 255, + 101, + 99, + 100, + 255, + 101, + 99, + 100, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 99, + 100, + 101, + 255, + 99, + 100, + 103, + 255, + 98, + 99, + 105, + 255, + 97, + 97, + 106, + 255, + 93, + 92, + 105, + 255, + 93, + 92, + 105, + 255, + 92, + 91, + 104, + 255, + 92, + 91, + 104, + 255, + 93, + 92, + 105, + 255, + 95, + 94, + 107, + 255, + 97, + 96, + 109, + 255, + 100, + 99, + 112, + 255, + 99, + 99, + 106, + 255, + 99, + 99, + 106, + 255, + 99, + 99, + 108, + 255, + 99, + 99, + 108, + 255, + 99, + 98, + 111, + 255, + 99, + 98, + 111, + 255, + 98, + 97, + 110, + 255, + 98, + 97, + 110, + 255, + 98, + 97, + 110, + 255, + 98, + 98, + 108, + 255, + 98, + 98, + 107, + 255, + 98, + 98, + 107, + 255, + 99, + 100, + 106, + 255, + 99, + 100, + 106, + 255, + 99, + 100, + 106, + 255, + 99, + 100, + 106, + 255, + 99, + 100, + 101, + 255, + 99, + 100, + 103, + 255, + 99, + 100, + 103, + 255, + 99, + 100, + 104, + 255, + 99, + 100, + 104, + 255, + 99, + 99, + 106, + 255, + 100, + 100, + 109, + 255, + 100, + 100, + 109, + 255, + 100, + 100, + 112, + 255, + 100, + 100, + 112, + 255, + 98, + 98, + 110, + 255, + 98, + 98, + 110, + 255, + 96, + 96, + 108, + 255, + 96, + 96, + 108, + 255, + 97, + 97, + 109, + 255, + 97, + 97, + 109, + 255, + 101, + 100, + 114, + 255, + 101, + 100, + 114, + 255, + 101, + 100, + 114, + 255, + 101, + 100, + 114, + 255, + 101, + 100, + 115, + 255, + 101, + 100, + 113, + 255, + 100, + 100, + 111, + 255, + 100, + 100, + 110, + 255, + 99, + 100, + 104, + 255, + 99, + 100, + 104, + 255, + 99, + 100, + 104, + 255, + 99, + 100, + 104, + 255, + 100, + 100, + 101, + 255, + 99, + 99, + 100, + 255, + 95, + 95, + 96, + 255, + 93, + 93, + 94, + 255, + 92, + 93, + 96, + 255, + 92, + 93, + 96, + 255, + 92, + 93, + 96, + 255, + 95, + 96, + 99, + 255, + 100, + 100, + 101, + 255, + 100, + 100, + 101, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 100, + 100, + 100, + 255, + 98, + 98, + 99, + 255, + 98, + 98, + 99, + 255, + 102, + 103, + 104, + 255, + 108, + 109, + 113, + 255, + 112, + 112, + 121, + 255, + 109, + 109, + 119, + 255, + 104, + 104, + 113, + 255, + 104, + 104, + 113, + 255, + 108, + 108, + 117, + 255, + 114, + 114, + 123, + 255, + 116, + 117, + 123, + 255, + 119, + 120, + 126, + 255, + 116, + 117, + 123, + 255, + 116, + 117, + 123, + 255, + 115, + 116, + 119, + 255, + 115, + 116, + 119, + 255, + 118, + 119, + 122, + 255, + 121, + 122, + 125, + 255, + 120, + 121, + 124, + 255, + 120, + 121, + 124, + 255, + 120, + 121, + 124, + 255, + 120, + 121, + 124, + 255, + 120, + 121, + 125, + 255, + 120, + 121, + 125, + 255, + 121, + 122, + 126, + 255, + 121, + 122, + 126, + 255, + 121, + 122, + 126, + 255, + 121, + 122, + 126, + 255, + 122, + 123, + 127, + 255, + 122, + 123, + 127, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 131, + 255, + 121, + 123, + 129, + 255, + 120, + 123, + 129, + 255, + 119, + 124, + 129, + 255, + 118, + 124, + 129, + 255, + 116, + 128, + 134, + 255, + 118, + 127, + 133, + 255, + 119, + 129, + 138, + 255, + 118, + 130, + 144, + 255, + 113, + 134, + 148, + 255, + 112, + 134, + 149, + 255, + 109, + 130, + 149, + 255, + 104, + 125, + 145, + 255, + 102, + 119, + 140, + 255, + 104, + 113, + 136, + 255, + 104, + 111, + 131, + 255, + 100, + 110, + 128, + 255, + 104, + 109, + 132, + 255, + 107, + 112, + 134, + 255, + 112, + 117, + 138, + 255, + 115, + 121, + 140, + 255, + 111, + 117, + 134, + 255, + 109, + 114, + 129, + 255, + 107, + 110, + 124, + 255, + 103, + 105, + 117, + 255, + 97, + 97, + 107, + 255, + 94, + 94, + 104, + 255, + 92, + 94, + 102, + 255, + 95, + 97, + 105, + 255, + 94, + 93, + 106, + 255, + 94, + 93, + 106, + 255, + 94, + 93, + 106, + 255, + 94, + 93, + 106, + 255, + 92, + 92, + 102, + 255, + 92, + 92, + 104, + 255, + 99, + 98, + 113, + 255, + 94, + 93, + 109, + 255, + 91, + 92, + 104, + 255, + 89, + 90, + 103, + 255, + 89, + 90, + 105, + 255, + 91, + 91, + 108, + 255, + 90, + 96, + 112, + 255, + 102, + 113, + 133, + 255, + 101, + 120, + 149, + 255, + 107, + 134, + 170, + 255, + 102, + 153, + 206, + 255, + 99, + 185, + 210, + 255, + 103, + 202, + 216, + 255, + 117, + 185, + 212, + 255, + 125, + 203, + 216, + 255, + 161, + 223, + 211, + 255, + 125, + 190, + 219, + 255, + 117, + 216, + 214, + 255, + 105, + 162, + 196, + 255, + 110, + 141, + 194, + 255, + 103, + 119, + 167, + 255, + 94, + 108, + 161, + 255, + 88, + 92, + 140, + 255, + 65, + 69, + 141, + 255, + 62, + 64, + 148, + 255, + 70, + 73, + 152, + 255, + 65, + 81, + 166, + 255, + 75, + 86, + 175, + 255, + 72, + 135, + 204, + 255, + 65, + 76, + 157, + 255, + 53, + 55, + 132, + 255, + 41, + 42, + 114, + 255, + 31, + 32, + 89, + 255, + 25, + 26, + 71, + 255, + 20, + 22, + 61, + 255, + 26, + 29, + 65, + 255, + 21, + 20, + 61, + 255, + 22, + 20, + 68, + 255, + 18, + 18, + 61, + 255, + 17, + 17, + 51, + 255, + 19, + 18, + 49, + 255, + 21, + 20, + 52, + 255, + 20, + 21, + 51, + 255, + 22, + 23, + 54, + 255, + 22, + 21, + 53, + 255, + 21, + 20, + 54, + 255, + 21, + 20, + 60, + 255, + 21, + 20, + 59, + 255, + 21, + 21, + 59, + 255, + 22, + 22, + 59, + 255, + 22, + 22, + 58, + 255, + 26, + 27, + 59, + 255, + 34, + 35, + 63, + 255, + 46, + 49, + 73, + 255, + 62, + 64, + 86, + 255, + 126, + 127, + 137, + 255, + 192, + 190, + 185, + 255, + 186, + 182, + 168, + 255, + 203, + 189, + 178, + 255, + 199, + 192, + 176, + 255, + 195, + 190, + 175, + 255, + 200, + 195, + 182, + 255, + 201, + 197, + 185, + 255, + 207, + 187, + 180, + 255, + 194, + 149, + 151, + 255, + 205, + 141, + 149, + 255, + 212, + 135, + 143, + 255, + 213, + 136, + 144, + 255, + 214, + 137, + 145, + 255, + 214, + 137, + 145, + 255, + 216, + 138, + 146, + 255, + 218, + 139, + 144, + 255, + 212, + 140, + 145, + 255, + 143, + 107, + 106, + 255, + 220, + 214, + 202, + 255, + 219, + 213, + 201, + 255, + 216, + 210, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 220, + 212, + 198, + 255, + 220, + 212, + 198, + 255, + 221, + 213, + 199, + 255, + 221, + 213, + 199, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 212, + 213, + 198, + 255, + 213, + 212, + 193, + 255, + 204, + 183, + 187, + 255, + 51, + 35, + 63, + 255, + 17, + 27, + 60, + 255, + 11, + 10, + 25, + 255, + 10, + 9, + 17, + 255, + 4, + 10, + 25, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 8, + 9, + 27, + 255, + 9, + 11, + 26, + 255, + 9, + 10, + 29, + 255, + 11, + 11, + 35, + 255, + 9, + 17, + 53, + 255, + 14, + 22, + 68, + 255, + 16, + 12, + 36, + 255, + 13, + 13, + 37, + 255, + 12, + 15, + 34, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 16, + 15, + 38, + 255, + 16, + 16, + 41, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 42, + 255, + 16, + 16, + 42, + 255, + 17, + 17, + 41, + 255, + 18, + 18, + 43, + 255, + 18, + 18, + 44, + 255, + 20, + 20, + 47, + 255, + 24, + 24, + 58, + 255, + 20, + 21, + 51, + 255, + 22, + 24, + 49, + 255, + 21, + 23, + 46, + 255, + 21, + 22, + 51, + 255, + 21, + 22, + 51, + 255, + 22, + 23, + 52, + 255, + 23, + 24, + 53, + 255, + 24, + 25, + 54, + 255, + 25, + 26, + 55, + 255, + 25, + 26, + 55, + 255, + 26, + 27, + 56, + 255, + 27, + 26, + 58, + 255, + 28, + 27, + 59, + 255, + 29, + 28, + 60, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 30, + 29, + 61, + 255, + 31, + 30, + 62, + 255, + 33, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 33, + 32, + 66, + 255, + 34, + 32, + 69, + 255, + 35, + 33, + 70, + 255, + 35, + 33, + 70, + 255, + 35, + 33, + 70, + 255, + 35, + 33, + 72, + 255, + 35, + 33, + 72, + 255, + 36, + 34, + 73, + 255, + 36, + 34, + 73, + 255, + 35, + 33, + 72, + 255, + 35, + 33, + 72, + 255, + 36, + 34, + 73, + 255, + 36, + 34, + 73, + 255, + 36, + 34, + 73, + 255, + 36, + 34, + 73, + 255, + 37, + 35, + 74, + 255, + 35, + 33, + 72, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 74, + 255, + 38, + 36, + 75, + 255, + 38, + 36, + 75, + 255, + 37, + 35, + 74, + 255, + 36, + 34, + 73, + 255, + 36, + 33, + 75, + 255, + 36, + 34, + 74, + 255, + 37, + 35, + 75, + 255, + 39, + 37, + 76, + 255, + 40, + 41, + 77, + 255, + 43, + 43, + 78, + 255, + 47, + 47, + 81, + 255, + 51, + 50, + 82, + 255, + 52, + 51, + 84, + 255, + 53, + 52, + 84, + 255, + 54, + 54, + 83, + 255, + 54, + 54, + 82, + 255, + 51, + 51, + 86, + 255, + 47, + 47, + 83, + 255, + 45, + 45, + 81, + 255, + 41, + 41, + 78, + 255, + 39, + 38, + 70, + 255, + 36, + 35, + 68, + 255, + 34, + 33, + 67, + 255, + 32, + 30, + 66, + 255, + 31, + 30, + 62, + 255, + 30, + 29, + 61, + 255, + 28, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 27, + 26, + 58, + 255, + 26, + 25, + 57, + 255, + 25, + 24, + 56, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 9, + 8, + 15, + 255, + 6, + 0, + 9, + 255, + 3, + 5, + 11, + 255, + 0, + 4, + 14, + 255, + 4, + 4, + 24, + 255, + 5, + 4, + 21, + 255, + 6, + 3, + 22, + 255, + 0, + 9, + 20, + 255, + 14, + 11, + 18, + 255, + 15, + 16, + 20, + 255, + 19, + 20, + 23, + 255, + 20, + 18, + 19, + 255, + 20, + 18, + 19, + 255, + 19, + 19, + 19, + 255, + 19, + 19, + 19, + 255, + 19, + 19, + 19, + 255, + 19, + 19, + 19, + 255, + 19, + 20, + 24, + 255, + 20, + 20, + 29, + 255, + 20, + 19, + 34, + 255, + 20, + 19, + 36, + 255, + 19, + 19, + 38, + 255, + 19, + 19, + 38, + 255, + 20, + 20, + 39, + 255, + 20, + 20, + 39, + 255, + 19, + 19, + 38, + 255, + 19, + 19, + 38, + 255, + 19, + 19, + 38, + 255, + 19, + 19, + 38, + 255, + 20, + 20, + 37, + 255, + 19, + 20, + 35, + 255, + 19, + 20, + 33, + 255, + 19, + 20, + 33, + 255, + 19, + 19, + 38, + 255, + 20, + 20, + 39, + 255, + 20, + 20, + 39, + 255, + 20, + 20, + 39, + 255, + 19, + 19, + 40, + 255, + 18, + 18, + 36, + 255, + 19, + 20, + 34, + 255, + 18, + 19, + 31, + 255, + 20, + 20, + 30, + 255, + 20, + 20, + 30, + 255, + 20, + 20, + 30, + 255, + 20, + 20, + 30, + 255, + 18, + 20, + 25, + 255, + 18, + 20, + 26, + 255, + 18, + 19, + 29, + 255, + 18, + 19, + 32, + 255, + 18, + 19, + 33, + 255, + 18, + 19, + 33, + 255, + 19, + 19, + 36, + 255, + 19, + 19, + 38, + 255, + 19, + 19, + 42, + 255, + 19, + 19, + 42, + 255, + 21, + 21, + 44, + 255, + 21, + 21, + 44, + 255, + 22, + 22, + 45, + 255, + 22, + 22, + 45, + 255, + 20, + 20, + 43, + 255, + 20, + 20, + 43, + 255, + 21, + 21, + 46, + 255, + 21, + 21, + 46, + 255, + 20, + 20, + 45, + 255, + 20, + 20, + 45, + 255, + 21, + 20, + 45, + 255, + 20, + 19, + 43, + 255, + 20, + 20, + 41, + 255, + 19, + 19, + 40, + 255, + 19, + 19, + 30, + 255, + 19, + 19, + 30, + 255, + 19, + 19, + 30, + 255, + 19, + 19, + 30, + 255, + 20, + 19, + 25, + 255, + 20, + 19, + 25, + 255, + 21, + 20, + 26, + 255, + 21, + 20, + 26, + 255, + 19, + 19, + 27, + 255, + 19, + 19, + 27, + 255, + 20, + 20, + 28, + 255, + 20, + 20, + 28, + 255, + 20, + 19, + 26, + 255, + 19, + 18, + 23, + 255, + 19, + 19, + 19, + 255, + 19, + 19, + 18, + 255, + 18, + 18, + 18, + 255, + 19, + 19, + 20, + 255, + 19, + 18, + 23, + 255, + 23, + 22, + 30, + 255, + 24, + 25, + 37, + 255, + 36, + 37, + 49, + 255, + 39, + 40, + 53, + 255, + 34, + 35, + 48, + 255, + 33, + 34, + 49, + 255, + 40, + 41, + 56, + 255, + 39, + 40, + 55, + 255, + 44, + 45, + 60, + 255, + 49, + 49, + 61, + 255, + 52, + 52, + 64, + 255, + 52, + 52, + 64, + 255, + 52, + 52, + 64, + 255, + 53, + 53, + 61, + 255, + 53, + 53, + 61, + 255, + 54, + 54, + 62, + 255, + 54, + 54, + 62, + 255, + 54, + 56, + 63, + 255, + 54, + 56, + 63, + 255, + 53, + 55, + 62, + 255, + 54, + 56, + 63, + 255, + 55, + 56, + 67, + 255, + 56, + 57, + 68, + 255, + 55, + 56, + 67, + 255, + 56, + 57, + 68, + 255, + 55, + 59, + 69, + 255, + 55, + 59, + 69, + 255, + 55, + 59, + 69, + 255, + 55, + 59, + 69, + 255, + 54, + 59, + 73, + 255, + 54, + 59, + 73, + 255, + 54, + 59, + 73, + 255, + 55, + 60, + 74, + 255, + 55, + 60, + 74, + 255, + 55, + 60, + 74, + 255, + 55, + 60, + 74, + 255, + 55, + 60, + 74, + 255, + 56, + 61, + 76, + 255, + 55, + 61, + 76, + 255, + 54, + 65, + 78, + 255, + 54, + 68, + 80, + 255, + 56, + 69, + 86, + 255, + 55, + 72, + 90, + 255, + 46, + 80, + 107, + 255, + 40, + 89, + 128, + 255, + 32, + 99, + 149, + 255, + 37, + 93, + 145, + 255, + 35, + 79, + 132, + 255, + 33, + 69, + 123, + 255, + 31, + 57, + 114, + 255, + 33, + 48, + 104, + 255, + 31, + 41, + 94, + 255, + 29, + 38, + 87, + 255, + 31, + 36, + 77, + 255, + 32, + 37, + 76, + 255, + 35, + 41, + 76, + 255, + 39, + 45, + 78, + 255, + 38, + 43, + 74, + 255, + 108, + 114, + 145, + 255, + 52, + 60, + 88, + 255, + 47, + 57, + 83, + 255, + 35, + 38, + 62, + 255, + 35, + 37, + 59, + 255, + 28, + 31, + 49, + 255, + 111, + 113, + 129, + 255, + 32, + 32, + 51, + 255, + 29, + 29, + 48, + 255, + 30, + 30, + 49, + 255, + 28, + 28, + 47, + 255, + 28, + 29, + 48, + 255, + 29, + 30, + 51, + 255, + 30, + 30, + 53, + 255, + 33, + 33, + 57, + 255, + 41, + 44, + 69, + 255, + 31, + 34, + 61, + 255, + 34, + 36, + 66, + 255, + 31, + 33, + 63, + 255, + 31, + 38, + 77, + 255, + 42, + 52, + 97, + 255, + 51, + 75, + 137, + 255, + 52, + 91, + 167, + 255, + 50, + 115, + 182, + 255, + 48, + 189, + 228, + 255, + 33, + 186, + 202, + 255, + 132, + 235, + 245, + 255, + 86, + 186, + 222, + 255, + 176, + 252, + 251, + 255, + 94, + 179, + 210, + 255, + 57, + 181, + 207, + 255, + 77, + 199, + 229, + 255, + 72, + 137, + 209, + 255, + 72, + 102, + 175, + 255, + 63, + 87, + 159, + 255, + 58, + 69, + 143, + 255, + 55, + 59, + 137, + 255, + 63, + 65, + 140, + 255, + 67, + 71, + 141, + 255, + 69, + 78, + 156, + 255, + 69, + 70, + 154, + 255, + 53, + 72, + 148, + 255, + 56, + 61, + 135, + 255, + 47, + 47, + 118, + 255, + 38, + 37, + 103, + 255, + 29, + 29, + 81, + 255, + 25, + 26, + 64, + 255, + 26, + 26, + 61, + 255, + 30, + 30, + 65, + 255, + 21, + 23, + 63, + 255, + 20, + 21, + 69, + 255, + 20, + 18, + 58, + 255, + 22, + 21, + 54, + 255, + 23, + 24, + 55, + 255, + 23, + 25, + 59, + 255, + 32, + 37, + 66, + 255, + 14, + 17, + 48, + 255, + 23, + 22, + 54, + 255, + 26, + 22, + 57, + 255, + 25, + 23, + 59, + 255, + 28, + 27, + 59, + 255, + 36, + 36, + 64, + 255, + 38, + 38, + 64, + 255, + 47, + 47, + 66, + 255, + 57, + 56, + 70, + 255, + 86, + 86, + 93, + 255, + 185, + 184, + 188, + 255, + 185, + 186, + 172, + 255, + 186, + 183, + 173, + 255, + 191, + 185, + 178, + 255, + 194, + 185, + 180, + 255, + 194, + 190, + 180, + 255, + 191, + 191, + 183, + 255, + 191, + 186, + 181, + 255, + 202, + 188, + 185, + 255, + 192, + 161, + 158, + 255, + 196, + 144, + 148, + 255, + 207, + 138, + 148, + 255, + 209, + 135, + 146, + 255, + 210, + 134, + 144, + 255, + 211, + 135, + 145, + 255, + 212, + 136, + 146, + 255, + 213, + 137, + 147, + 255, + 215, + 136, + 146, + 255, + 216, + 138, + 145, + 255, + 201, + 139, + 143, + 255, + 212, + 196, + 190, + 255, + 213, + 207, + 195, + 255, + 214, + 208, + 196, + 255, + 215, + 209, + 197, + 255, + 216, + 210, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 219, + 211, + 199, + 255, + 219, + 211, + 199, + 255, + 220, + 212, + 200, + 255, + 221, + 213, + 201, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 219, + 209, + 198, + 255, + 237, + 205, + 190, + 255, + 213, + 147, + 149, + 255, + 212, + 145, + 161, + 255, + 53, + 36, + 67, + 255, + 17, + 10, + 34, + 255, + 11, + 11, + 29, + 255, + 7, + 9, + 26, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 9, + 9, + 21, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 9, + 10, + 28, + 255, + 9, + 11, + 26, + 255, + 11, + 12, + 31, + 255, + 12, + 12, + 36, + 255, + 16, + 25, + 68, + 255, + 9, + 18, + 52, + 255, + 17, + 11, + 38, + 255, + 11, + 15, + 34, + 255, + 14, + 14, + 39, + 255, + 12, + 14, + 39, + 255, + 13, + 15, + 45, + 255, + 14, + 16, + 47, + 255, + 20, + 19, + 49, + 255, + 18, + 18, + 45, + 255, + 16, + 16, + 42, + 255, + 17, + 17, + 43, + 255, + 18, + 18, + 42, + 255, + 19, + 19, + 45, + 255, + 20, + 19, + 49, + 255, + 25, + 24, + 56, + 255, + 31, + 32, + 62, + 255, + 23, + 24, + 55, + 255, + 26, + 27, + 58, + 255, + 24, + 25, + 55, + 255, + 23, + 24, + 55, + 255, + 23, + 24, + 55, + 255, + 23, + 24, + 55, + 255, + 24, + 25, + 56, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 29, + 28, + 60, + 255, + 30, + 29, + 61, + 255, + 29, + 28, + 60, + 255, + 30, + 29, + 61, + 255, + 31, + 30, + 64, + 255, + 32, + 31, + 65, + 255, + 32, + 31, + 65, + 255, + 33, + 32, + 66, + 255, + 33, + 31, + 68, + 255, + 34, + 32, + 69, + 255, + 35, + 33, + 70, + 255, + 35, + 33, + 70, + 255, + 35, + 33, + 72, + 255, + 35, + 33, + 72, + 255, + 36, + 34, + 73, + 255, + 37, + 35, + 74, + 255, + 36, + 35, + 75, + 255, + 36, + 35, + 75, + 255, + 35, + 34, + 74, + 255, + 36, + 35, + 75, + 255, + 36, + 35, + 75, + 255, + 36, + 35, + 75, + 255, + 37, + 36, + 76, + 255, + 37, + 36, + 76, + 255, + 37, + 36, + 76, + 255, + 37, + 36, + 76, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 37, + 36, + 76, + 255, + 37, + 36, + 76, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 39, + 38, + 80, + 255, + 42, + 41, + 82, + 255, + 45, + 45, + 82, + 255, + 50, + 50, + 85, + 255, + 57, + 55, + 94, + 255, + 71, + 68, + 102, + 255, + 82, + 77, + 106, + 255, + 81, + 74, + 99, + 255, + 97, + 93, + 110, + 255, + 109, + 105, + 121, + 255, + 113, + 109, + 123, + 255, + 109, + 106, + 118, + 255, + 88, + 86, + 104, + 255, + 83, + 81, + 101, + 255, + 71, + 68, + 92, + 255, + 65, + 62, + 88, + 255, + 52, + 52, + 79, + 255, + 48, + 47, + 77, + 255, + 40, + 39, + 71, + 255, + 37, + 35, + 71, + 255, + 34, + 33, + 65, + 255, + 31, + 30, + 62, + 255, + 30, + 29, + 61, + 255, + 29, + 28, + 60, + 255, + 28, + 27, + 59, + 255, + 28, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 1, + 9, + 255, + 2, + 0, + 11, + 255, + 0, + 3, + 0, + 255, + 0, + 1, + 1, + 255, + 1, + 0, + 3, + 255, + 7, + 7, + 15, + 255, + 0, + 1, + 0, + 255, + 4, + 0, + 1, + 255, + 0, + 3, + 0, + 255, + 1, + 0, + 9, + 255, + 2, + 3, + 7, + 255, + 0, + 1, + 4, + 255, + 3, + 1, + 2, + 255, + 3, + 1, + 2, + 255, + 2, + 2, + 2, + 255, + 2, + 2, + 2, + 255, + 2, + 2, + 2, + 255, + 2, + 2, + 2, + 255, + 2, + 3, + 8, + 255, + 3, + 3, + 14, + 255, + 3, + 2, + 20, + 255, + 3, + 1, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 2, + 3, + 24, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 2, + 2, + 26, + 255, + 3, + 4, + 24, + 255, + 1, + 2, + 20, + 255, + 1, + 3, + 18, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 3, + 4, + 25, + 255, + 3, + 4, + 25, + 255, + 3, + 4, + 26, + 255, + 2, + 3, + 21, + 255, + 2, + 4, + 18, + 255, + 1, + 4, + 14, + 255, + 3, + 4, + 10, + 255, + 3, + 4, + 10, + 255, + 2, + 3, + 9, + 255, + 2, + 3, + 9, + 255, + 0, + 3, + 9, + 255, + 0, + 3, + 13, + 255, + 2, + 4, + 18, + 255, + 2, + 3, + 21, + 255, + 2, + 3, + 22, + 255, + 2, + 3, + 24, + 255, + 2, + 2, + 26, + 255, + 2, + 2, + 27, + 255, + 1, + 3, + 28, + 255, + 1, + 3, + 28, + 255, + 3, + 5, + 30, + 255, + 3, + 5, + 30, + 255, + 3, + 5, + 30, + 255, + 3, + 5, + 30, + 255, + 4, + 6, + 31, + 255, + 4, + 6, + 31, + 255, + 4, + 5, + 34, + 255, + 4, + 5, + 34, + 255, + 4, + 5, + 34, + 255, + 4, + 5, + 34, + 255, + 4, + 4, + 32, + 255, + 3, + 3, + 29, + 255, + 3, + 3, + 27, + 255, + 2, + 3, + 25, + 255, + 3, + 2, + 16, + 255, + 3, + 2, + 16, + 255, + 2, + 1, + 15, + 255, + 2, + 1, + 15, + 255, + 3, + 2, + 10, + 255, + 3, + 2, + 10, + 255, + 4, + 3, + 11, + 255, + 4, + 3, + 11, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 3, + 3, + 13, + 255, + 2, + 0, + 11, + 255, + 1, + 0, + 6, + 255, + 2, + 2, + 2, + 255, + 2, + 2, + 0, + 255, + 2, + 2, + 0, + 255, + 3, + 3, + 4, + 255, + 5, + 4, + 12, + 255, + 11, + 9, + 20, + 255, + 29, + 29, + 54, + 255, + 20, + 21, + 41, + 255, + 18, + 20, + 34, + 255, + 19, + 21, + 32, + 255, + 19, + 21, + 36, + 255, + 24, + 26, + 41, + 255, + 27, + 29, + 44, + 255, + 30, + 32, + 47, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 38, + 38, + 50, + 255, + 38, + 38, + 50, + 255, + 39, + 39, + 49, + 255, + 39, + 39, + 49, + 255, + 40, + 40, + 50, + 255, + 40, + 40, + 50, + 255, + 38, + 41, + 50, + 255, + 38, + 41, + 50, + 255, + 36, + 39, + 48, + 255, + 37, + 40, + 49, + 255, + 41, + 43, + 56, + 255, + 42, + 44, + 57, + 255, + 41, + 43, + 56, + 255, + 42, + 44, + 57, + 255, + 39, + 45, + 57, + 255, + 39, + 45, + 57, + 255, + 40, + 46, + 58, + 255, + 40, + 46, + 58, + 255, + 39, + 47, + 60, + 255, + 39, + 47, + 60, + 255, + 37, + 45, + 58, + 255, + 38, + 46, + 59, + 255, + 39, + 47, + 60, + 255, + 39, + 47, + 60, + 255, + 39, + 47, + 60, + 255, + 39, + 47, + 60, + 255, + 43, + 49, + 68, + 255, + 42, + 52, + 70, + 255, + 40, + 54, + 71, + 255, + 43, + 60, + 76, + 255, + 36, + 69, + 85, + 255, + 34, + 82, + 101, + 255, + 18, + 100, + 134, + 255, + 20, + 132, + 181, + 255, + 7, + 119, + 176, + 255, + 8, + 97, + 154, + 255, + 17, + 76, + 132, + 255, + 16, + 58, + 114, + 255, + 15, + 49, + 102, + 255, + 16, + 36, + 88, + 255, + 17, + 28, + 77, + 255, + 16, + 24, + 70, + 255, + 16, + 17, + 65, + 255, + 15, + 16, + 60, + 255, + 18, + 20, + 59, + 255, + 20, + 23, + 58, + 255, + 23, + 24, + 58, + 255, + 21, + 28, + 62, + 255, + 23, + 38, + 72, + 255, + 110, + 130, + 164, + 255, + 25, + 31, + 63, + 255, + 19, + 24, + 53, + 255, + 16, + 18, + 43, + 255, + 8, + 9, + 30, + 255, + 15, + 16, + 37, + 255, + 12, + 13, + 34, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 13, + 16, + 35, + 255, + 14, + 16, + 37, + 255, + 15, + 17, + 40, + 255, + 17, + 19, + 44, + 255, + 8, + 13, + 43, + 255, + 22, + 27, + 58, + 255, + 13, + 18, + 51, + 255, + 20, + 24, + 59, + 255, + 18, + 27, + 59, + 255, + 28, + 36, + 73, + 255, + 34, + 57, + 110, + 255, + 45, + 85, + 155, + 255, + 49, + 95, + 165, + 255, + 19, + 164, + 229, + 255, + 55, + 194, + 231, + 255, + 144, + 243, + 239, + 255, + 86, + 188, + 227, + 255, + 109, + 193, + 204, + 255, + 138, + 232, + 234, + 255, + 60, + 174, + 227, + 255, + 37, + 193, + 223, + 255, + 53, + 132, + 218, + 255, + 74, + 103, + 196, + 255, + 61, + 83, + 169, + 255, + 53, + 71, + 142, + 255, + 52, + 61, + 130, + 255, + 59, + 62, + 130, + 255, + 65, + 71, + 139, + 255, + 50, + 59, + 128, + 255, + 64, + 63, + 138, + 255, + 57, + 52, + 126, + 255, + 44, + 51, + 115, + 255, + 40, + 40, + 103, + 255, + 33, + 32, + 90, + 255, + 27, + 27, + 70, + 255, + 25, + 26, + 56, + 255, + 26, + 25, + 57, + 255, + 29, + 29, + 62, + 255, + 23, + 25, + 65, + 255, + 19, + 21, + 69, + 255, + 25, + 20, + 60, + 255, + 27, + 26, + 59, + 255, + 36, + 38, + 70, + 255, + 42, + 45, + 81, + 255, + 123, + 131, + 159, + 255, + 31, + 35, + 65, + 255, + 30, + 29, + 61, + 255, + 39, + 35, + 70, + 255, + 46, + 44, + 72, + 255, + 56, + 55, + 78, + 255, + 64, + 64, + 82, + 255, + 115, + 115, + 130, + 255, + 178, + 174, + 180, + 255, + 181, + 175, + 176, + 255, + 179, + 173, + 165, + 255, + 187, + 181, + 167, + 255, + 188, + 178, + 176, + 255, + 189, + 180, + 173, + 255, + 189, + 183, + 169, + 255, + 191, + 187, + 169, + 255, + 195, + 187, + 174, + 255, + 195, + 185, + 177, + 255, + 196, + 167, + 162, + 255, + 195, + 146, + 140, + 255, + 202, + 139, + 147, + 255, + 208, + 131, + 143, + 255, + 207, + 132, + 144, + 255, + 200, + 136, + 144, + 255, + 208, + 134, + 143, + 255, + 209, + 135, + 144, + 255, + 209, + 135, + 144, + 255, + 210, + 136, + 145, + 255, + 212, + 136, + 146, + 255, + 214, + 137, + 145, + 255, + 198, + 142, + 144, + 255, + 209, + 206, + 197, + 255, + 213, + 207, + 195, + 255, + 214, + 208, + 196, + 255, + 215, + 209, + 197, + 255, + 216, + 210, + 198, + 255, + 216, + 210, + 198, + 255, + 216, + 210, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 219, + 211, + 200, + 255, + 219, + 211, + 200, + 255, + 219, + 211, + 200, + 255, + 220, + 212, + 201, + 255, + 221, + 213, + 200, + 255, + 221, + 213, + 200, + 255, + 220, + 212, + 199, + 255, + 220, + 212, + 199, + 255, + 213, + 214, + 196, + 255, + 214, + 179, + 176, + 255, + 229, + 148, + 155, + 255, + 227, + 146, + 143, + 255, + 181, + 124, + 139, + 255, + 49, + 37, + 68, + 255, + 12, + 15, + 47, + 255, + 15, + 7, + 24, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 10, + 10, + 22, + 255, + 10, + 10, + 22, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 23, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 12, + 11, + 27, + 255, + 12, + 11, + 27, + 255, + 10, + 11, + 29, + 255, + 10, + 12, + 27, + 255, + 11, + 12, + 31, + 255, + 15, + 15, + 39, + 255, + 22, + 31, + 79, + 255, + 9, + 16, + 44, + 255, + 20, + 12, + 42, + 255, + 12, + 19, + 36, + 255, + 15, + 14, + 45, + 255, + 18, + 18, + 53, + 255, + 26, + 30, + 67, + 255, + 12, + 17, + 58, + 255, + 15, + 14, + 46, + 255, + 19, + 18, + 48, + 255, + 17, + 17, + 43, + 255, + 18, + 18, + 43, + 255, + 20, + 20, + 44, + 255, + 21, + 21, + 48, + 255, + 25, + 24, + 56, + 255, + 33, + 32, + 66, + 255, + 77, + 79, + 104, + 255, + 64, + 65, + 94, + 255, + 35, + 35, + 70, + 255, + 29, + 28, + 68, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 28, + 29, + 60, + 255, + 29, + 30, + 61, + 255, + 28, + 29, + 60, + 255, + 29, + 30, + 61, + 255, + 30, + 29, + 61, + 255, + 31, + 30, + 62, + 255, + 32, + 31, + 63, + 255, + 33, + 32, + 64, + 255, + 33, + 31, + 68, + 255, + 34, + 32, + 69, + 255, + 35, + 33, + 70, + 255, + 36, + 34, + 71, + 255, + 35, + 33, + 72, + 255, + 36, + 34, + 73, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 75, + 255, + 37, + 35, + 75, + 255, + 37, + 35, + 75, + 255, + 38, + 36, + 76, + 255, + 35, + 37, + 76, + 255, + 35, + 37, + 76, + 255, + 35, + 37, + 76, + 255, + 36, + 38, + 77, + 255, + 37, + 39, + 78, + 255, + 37, + 39, + 78, + 255, + 37, + 39, + 78, + 255, + 37, + 39, + 78, + 255, + 37, + 39, + 78, + 255, + 37, + 39, + 78, + 255, + 38, + 40, + 79, + 255, + 38, + 40, + 79, + 255, + 38, + 40, + 79, + 255, + 38, + 40, + 79, + 255, + 38, + 40, + 79, + 255, + 38, + 40, + 79, + 255, + 39, + 41, + 80, + 255, + 39, + 41, + 80, + 255, + 38, + 40, + 79, + 255, + 41, + 43, + 82, + 255, + 44, + 46, + 85, + 255, + 51, + 54, + 88, + 255, + 61, + 65, + 94, + 255, + 81, + 85, + 112, + 255, + 128, + 126, + 137, + 255, + 166, + 161, + 166, + 255, + 165, + 157, + 154, + 255, + 168, + 158, + 150, + 255, + 168, + 158, + 159, + 255, + 167, + 157, + 156, + 255, + 162, + 153, + 149, + 255, + 162, + 153, + 148, + 255, + 159, + 154, + 148, + 255, + 169, + 164, + 161, + 255, + 163, + 157, + 160, + 255, + 159, + 152, + 159, + 255, + 96, + 97, + 116, + 255, + 73, + 74, + 96, + 255, + 59, + 59, + 87, + 255, + 48, + 47, + 78, + 255, + 41, + 40, + 72, + 255, + 36, + 35, + 67, + 255, + 34, + 33, + 65, + 255, + 33, + 32, + 64, + 255, + 31, + 30, + 62, + 255, + 29, + 28, + 60, + 255, + 29, + 28, + 60, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 2, + 255, + 2, + 1, + 7, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 5, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 8, + 255, + 1, + 3, + 16, + 255, + 0, + 1, + 19, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 23, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 26, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 17, + 255, + 1, + 0, + 18, + 255, + 2, + 0, + 21, + 255, + 3, + 1, + 24, + 255, + 4, + 1, + 27, + 255, + 0, + 2, + 21, + 255, + 0, + 2, + 18, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 9, + 255, + 1, + 1, + 11, + 255, + 2, + 2, + 12, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 13, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 15, + 255, + 2, + 1, + 18, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 2, + 3, + 31, + 255, + 4, + 5, + 33, + 255, + 3, + 4, + 32, + 255, + 1, + 2, + 30, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 0, + 1, + 31, + 255, + 0, + 1, + 31, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 11, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 11, + 255, + 2, + 1, + 16, + 255, + 0, + 0, + 10, + 255, + 1, + 2, + 5, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 13, + 255, + 1, + 0, + 11, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 0, + 1, + 2, + 255, + 1, + 3, + 2, + 255, + 6, + 7, + 11, + 255, + 14, + 13, + 27, + 255, + 15, + 15, + 27, + 255, + 24, + 24, + 36, + 255, + 30, + 30, + 42, + 255, + 36, + 36, + 48, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 36, + 38, + 50, + 255, + 36, + 38, + 50, + 255, + 37, + 39, + 51, + 255, + 39, + 41, + 53, + 255, + 41, + 39, + 51, + 255, + 40, + 39, + 53, + 255, + 39, + 41, + 55, + 255, + 39, + 42, + 57, + 255, + 34, + 45, + 57, + 255, + 36, + 44, + 57, + 255, + 37, + 45, + 56, + 255, + 38, + 45, + 56, + 255, + 36, + 44, + 58, + 255, + 38, + 44, + 60, + 255, + 39, + 45, + 61, + 255, + 40, + 45, + 64, + 255, + 38, + 45, + 62, + 255, + 38, + 47, + 63, + 255, + 39, + 49, + 66, + 255, + 38, + 51, + 68, + 255, + 40, + 51, + 72, + 255, + 32, + 58, + 71, + 255, + 46, + 58, + 79, + 255, + 39, + 70, + 92, + 255, + 37, + 92, + 116, + 255, + 39, + 120, + 149, + 255, + 25, + 165, + 207, + 255, + 9, + 156, + 208, + 255, + 3, + 126, + 192, + 255, + 13, + 100, + 162, + 255, + 19, + 78, + 137, + 255, + 13, + 62, + 121, + 255, + 14, + 49, + 112, + 255, + 18, + 40, + 101, + 255, + 17, + 30, + 88, + 255, + 14, + 25, + 79, + 255, + 17, + 20, + 74, + 255, + 16, + 18, + 68, + 255, + 16, + 17, + 61, + 255, + 17, + 18, + 59, + 255, + 18, + 18, + 54, + 255, + 19, + 20, + 56, + 255, + 21, + 26, + 58, + 255, + 28, + 34, + 66, + 255, + 36, + 47, + 84, + 255, + 60, + 69, + 101, + 255, + 29, + 35, + 61, + 255, + 19, + 22, + 46, + 255, + 17, + 15, + 39, + 255, + 14, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 13, + 13, + 37, + 255, + 15, + 13, + 37, + 255, + 15, + 14, + 38, + 255, + 14, + 14, + 38, + 255, + 15, + 15, + 39, + 255, + 16, + 15, + 46, + 255, + 17, + 16, + 47, + 255, + 18, + 17, + 48, + 255, + 19, + 18, + 49, + 255, + 18, + 21, + 53, + 255, + 25, + 30, + 69, + 255, + 30, + 44, + 97, + 255, + 46, + 68, + 133, + 255, + 52, + 88, + 166, + 255, + 51, + 127, + 200, + 255, + 39, + 177, + 240, + 255, + 63, + 179, + 211, + 255, + 101, + 238, + 254, + 255, + 67, + 180, + 224, + 255, + 61, + 212, + 223, + 255, + 51, + 175, + 228, + 255, + 30, + 203, + 227, + 255, + 61, + 138, + 207, + 255, + 60, + 114, + 205, + 255, + 73, + 83, + 172, + 255, + 60, + 76, + 155, + 255, + 50, + 57, + 134, + 255, + 49, + 50, + 120, + 255, + 50, + 51, + 115, + 255, + 50, + 49, + 117, + 255, + 46, + 45, + 111, + 255, + 42, + 42, + 103, + 255, + 38, + 39, + 97, + 255, + 34, + 34, + 87, + 255, + 30, + 28, + 76, + 255, + 27, + 24, + 66, + 255, + 27, + 24, + 62, + 255, + 26, + 26, + 61, + 255, + 23, + 22, + 65, + 255, + 24, + 23, + 67, + 255, + 23, + 22, + 63, + 255, + 25, + 26, + 61, + 255, + 38, + 36, + 76, + 255, + 51, + 52, + 80, + 255, + 178, + 186, + 196, + 255, + 47, + 52, + 72, + 255, + 39, + 42, + 67, + 255, + 46, + 47, + 69, + 255, + 72, + 74, + 89, + 255, + 174, + 172, + 177, + 255, + 171, + 168, + 170, + 255, + 176, + 172, + 169, + 255, + 177, + 172, + 167, + 255, + 180, + 175, + 169, + 255, + 181, + 176, + 170, + 255, + 183, + 178, + 172, + 255, + 183, + 178, + 172, + 255, + 185, + 180, + 176, + 255, + 187, + 181, + 175, + 255, + 185, + 181, + 172, + 255, + 185, + 183, + 172, + 255, + 190, + 174, + 167, + 255, + 185, + 143, + 145, + 255, + 194, + 136, + 143, + 255, + 192, + 134, + 141, + 255, + 198, + 132, + 141, + 255, + 200, + 133, + 142, + 255, + 202, + 132, + 142, + 255, + 204, + 133, + 143, + 255, + 205, + 133, + 144, + 255, + 207, + 134, + 145, + 255, + 209, + 133, + 145, + 255, + 210, + 134, + 146, + 255, + 209, + 136, + 143, + 255, + 212, + 139, + 147, + 255, + 199, + 158, + 157, + 255, + 207, + 203, + 191, + 255, + 212, + 206, + 194, + 255, + 213, + 207, + 195, + 255, + 214, + 208, + 196, + 255, + 214, + 208, + 196, + 255, + 214, + 210, + 198, + 255, + 214, + 210, + 198, + 255, + 214, + 210, + 198, + 255, + 215, + 211, + 199, + 255, + 215, + 211, + 199, + 255, + 215, + 211, + 199, + 255, + 215, + 211, + 199, + 255, + 215, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 219, + 213, + 201, + 255, + 223, + 211, + 197, + 255, + 221, + 155, + 157, + 255, + 225, + 144, + 150, + 255, + 225, + 140, + 145, + 255, + 219, + 137, + 141, + 255, + 142, + 94, + 109, + 255, + 33, + 30, + 65, + 255, + 9, + 0, + 19, + 255, + 9, + 10, + 22, + 255, + 8, + 8, + 20, + 255, + 8, + 8, + 20, + 255, + 9, + 9, + 21, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 12, + 11, + 29, + 255, + 13, + 11, + 34, + 255, + 12, + 12, + 31, + 255, + 13, + 14, + 36, + 255, + 15, + 16, + 43, + 255, + 17, + 26, + 67, + 255, + 18, + 17, + 43, + 255, + 13, + 13, + 41, + 255, + 23, + 29, + 70, + 255, + 29, + 35, + 86, + 255, + 11, + 17, + 49, + 255, + 15, + 18, + 42, + 255, + 16, + 16, + 44, + 255, + 17, + 17, + 43, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 23, + 20, + 49, + 255, + 24, + 24, + 52, + 255, + 31, + 32, + 60, + 255, + 70, + 73, + 100, + 255, + 72, + 77, + 98, + 255, + 70, + 74, + 103, + 255, + 37, + 39, + 79, + 255, + 35, + 36, + 83, + 255, + 32, + 31, + 72, + 255, + 29, + 29, + 66, + 255, + 28, + 28, + 62, + 255, + 28, + 29, + 58, + 255, + 31, + 28, + 58, + 255, + 31, + 29, + 61, + 255, + 30, + 29, + 63, + 255, + 31, + 29, + 66, + 255, + 30, + 30, + 64, + 255, + 31, + 31, + 65, + 255, + 32, + 32, + 66, + 255, + 33, + 33, + 67, + 255, + 33, + 33, + 71, + 255, + 34, + 34, + 72, + 255, + 35, + 35, + 73, + 255, + 36, + 36, + 74, + 255, + 37, + 35, + 74, + 255, + 38, + 36, + 75, + 255, + 39, + 37, + 76, + 255, + 39, + 37, + 76, + 255, + 39, + 37, + 77, + 255, + 40, + 38, + 78, + 255, + 39, + 37, + 77, + 255, + 39, + 37, + 77, + 255, + 37, + 39, + 80, + 255, + 38, + 40, + 81, + 255, + 38, + 40, + 81, + 255, + 38, + 40, + 81, + 255, + 39, + 41, + 82, + 255, + 39, + 41, + 82, + 255, + 39, + 41, + 82, + 255, + 40, + 42, + 83, + 255, + 39, + 41, + 82, + 255, + 40, + 42, + 83, + 255, + 40, + 42, + 83, + 255, + 40, + 42, + 83, + 255, + 40, + 42, + 83, + 255, + 40, + 42, + 83, + 255, + 41, + 43, + 84, + 255, + 42, + 44, + 86, + 255, + 43, + 44, + 84, + 255, + 44, + 45, + 86, + 255, + 46, + 48, + 89, + 255, + 51, + 53, + 94, + 255, + 60, + 63, + 98, + 255, + 80, + 80, + 105, + 255, + 144, + 139, + 152, + 255, + 173, + 165, + 171, + 255, + 169, + 159, + 159, + 255, + 169, + 159, + 158, + 255, + 171, + 160, + 160, + 255, + 172, + 161, + 161, + 255, + 169, + 158, + 154, + 255, + 169, + 160, + 155, + 255, + 168, + 159, + 154, + 255, + 166, + 159, + 153, + 255, + 166, + 158, + 153, + 255, + 165, + 158, + 155, + 255, + 163, + 158, + 155, + 255, + 162, + 158, + 155, + 255, + 160, + 153, + 151, + 255, + 165, + 156, + 164, + 255, + 99, + 88, + 110, + 255, + 79, + 68, + 97, + 255, + 56, + 51, + 82, + 255, + 45, + 41, + 77, + 255, + 40, + 37, + 74, + 255, + 34, + 34, + 68, + 255, + 33, + 32, + 64, + 255, + 31, + 30, + 62, + 255, + 30, + 29, + 61, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 11, + 255, + 1, + 2, + 20, + 255, + 0, + 1, + 20, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 21, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 22, + 255, + 1, + 0, + 15, + 255, + 2, + 1, + 16, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 18, + 255, + 1, + 4, + 23, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 10, + 255, + 2, + 2, + 12, + 255, + 2, + 2, + 14, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 16, + 255, + 1, + 2, + 21, + 255, + 0, + 2, + 16, + 255, + 0, + 1, + 19, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 2, + 4, + 29, + 255, + 3, + 5, + 30, + 255, + 6, + 8, + 33, + 255, + 3, + 5, + 30, + 255, + 1, + 2, + 30, + 255, + 1, + 2, + 30, + 255, + 0, + 1, + 29, + 255, + 0, + 1, + 29, + 255, + 0, + 1, + 29, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 5, + 255, + 0, + 0, + 10, + 255, + 2, + 1, + 16, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 2, + 3, + 8, + 255, + 5, + 6, + 11, + 255, + 11, + 11, + 20, + 255, + 25, + 24, + 38, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 34, + 34, + 46, + 255, + 35, + 35, + 47, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 36, + 38, + 50, + 255, + 36, + 38, + 50, + 255, + 38, + 40, + 52, + 255, + 40, + 42, + 54, + 255, + 40, + 40, + 52, + 255, + 38, + 40, + 53, + 255, + 38, + 41, + 56, + 255, + 38, + 43, + 59, + 255, + 39, + 42, + 57, + 255, + 38, + 43, + 59, + 255, + 39, + 45, + 61, + 255, + 38, + 46, + 62, + 255, + 38, + 47, + 60, + 255, + 38, + 48, + 64, + 255, + 38, + 48, + 65, + 255, + 38, + 49, + 68, + 255, + 39, + 51, + 75, + 255, + 37, + 53, + 78, + 255, + 36, + 56, + 82, + 255, + 34, + 58, + 85, + 255, + 34, + 62, + 82, + 255, + 42, + 63, + 84, + 255, + 46, + 71, + 92, + 255, + 49, + 98, + 113, + 255, + 46, + 132, + 153, + 255, + 29, + 154, + 192, + 255, + 1, + 160, + 208, + 255, + 0, + 149, + 214, + 255, + 2, + 137, + 211, + 255, + 7, + 111, + 181, + 255, + 17, + 86, + 151, + 255, + 16, + 69, + 131, + 255, + 17, + 55, + 120, + 255, + 20, + 45, + 111, + 255, + 23, + 37, + 102, + 255, + 20, + 31, + 94, + 255, + 21, + 27, + 88, + 255, + 21, + 25, + 82, + 255, + 19, + 22, + 74, + 255, + 18, + 20, + 70, + 255, + 18, + 19, + 58, + 255, + 17, + 19, + 57, + 255, + 16, + 21, + 53, + 255, + 19, + 24, + 55, + 255, + 32, + 35, + 69, + 255, + 22, + 27, + 59, + 255, + 90, + 98, + 130, + 255, + 9, + 17, + 49, + 255, + 19, + 20, + 47, + 255, + 15, + 16, + 43, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 41, + 255, + 15, + 16, + 46, + 255, + 16, + 17, + 47, + 255, + 17, + 16, + 47, + 255, + 18, + 17, + 48, + 255, + 18, + 17, + 48, + 255, + 19, + 18, + 49, + 255, + 19, + 18, + 49, + 255, + 19, + 18, + 49, + 255, + 18, + 21, + 52, + 255, + 23, + 27, + 65, + 255, + 28, + 38, + 89, + 255, + 35, + 54, + 114, + 255, + 43, + 73, + 142, + 255, + 56, + 101, + 186, + 255, + 41, + 140, + 224, + 255, + 58, + 173, + 240, + 255, + 33, + 213, + 231, + 255, + 54, + 179, + 229, + 255, + 31, + 206, + 229, + 255, + 51, + 157, + 223, + 255, + 43, + 153, + 219, + 255, + 59, + 136, + 215, + 255, + 75, + 105, + 208, + 255, + 67, + 91, + 180, + 255, + 64, + 79, + 161, + 255, + 53, + 60, + 137, + 255, + 45, + 47, + 115, + 255, + 41, + 43, + 104, + 255, + 39, + 40, + 95, + 255, + 35, + 37, + 89, + 255, + 33, + 35, + 84, + 255, + 29, + 31, + 78, + 255, + 28, + 30, + 71, + 255, + 26, + 26, + 63, + 255, + 25, + 24, + 58, + 255, + 27, + 25, + 56, + 255, + 33, + 33, + 68, + 255, + 28, + 27, + 69, + 255, + 25, + 24, + 65, + 255, + 26, + 26, + 63, + 255, + 33, + 33, + 66, + 255, + 36, + 56, + 84, + 255, + 174, + 196, + 217, + 255, + 168, + 177, + 193, + 255, + 66, + 66, + 92, + 255, + 64, + 65, + 84, + 255, + 181, + 183, + 189, + 255, + 169, + 170, + 167, + 255, + 174, + 173, + 169, + 255, + 171, + 169, + 163, + 255, + 175, + 172, + 164, + 255, + 178, + 174, + 164, + 255, + 177, + 172, + 166, + 255, + 178, + 173, + 167, + 255, + 180, + 175, + 169, + 255, + 182, + 177, + 171, + 255, + 182, + 178, + 174, + 255, + 180, + 181, + 173, + 255, + 191, + 179, + 173, + 255, + 184, + 151, + 151, + 255, + 183, + 137, + 140, + 255, + 191, + 131, + 139, + 255, + 193, + 128, + 138, + 255, + 192, + 129, + 138, + 255, + 195, + 130, + 138, + 255, + 196, + 130, + 139, + 255, + 199, + 131, + 140, + 255, + 201, + 131, + 141, + 255, + 203, + 133, + 143, + 255, + 205, + 133, + 144, + 255, + 206, + 133, + 144, + 255, + 208, + 134, + 145, + 255, + 207, + 136, + 142, + 255, + 210, + 142, + 148, + 255, + 209, + 172, + 170, + 255, + 205, + 203, + 190, + 255, + 211, + 205, + 193, + 255, + 212, + 206, + 194, + 255, + 214, + 208, + 196, + 255, + 214, + 208, + 196, + 255, + 214, + 208, + 196, + 255, + 214, + 208, + 196, + 255, + 215, + 209, + 197, + 255, + 216, + 210, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 218, + 212, + 200, + 255, + 221, + 193, + 184, + 255, + 225, + 153, + 157, + 255, + 224, + 143, + 149, + 255, + 225, + 141, + 146, + 255, + 224, + 134, + 143, + 255, + 217, + 139, + 145, + 255, + 82, + 46, + 66, + 255, + 24, + 19, + 49, + 255, + 14, + 12, + 26, + 255, + 10, + 8, + 22, + 255, + 10, + 9, + 23, + 255, + 11, + 10, + 24, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 13, + 12, + 30, + 255, + 12, + 10, + 32, + 255, + 13, + 12, + 34, + 255, + 12, + 11, + 41, + 255, + 22, + 22, + 60, + 255, + 12, + 14, + 47, + 255, + 17, + 15, + 44, + 255, + 16, + 18, + 50, + 255, + 20, + 29, + 69, + 255, + 13, + 18, + 50, + 255, + 18, + 21, + 45, + 255, + 15, + 17, + 40, + 255, + 19, + 17, + 47, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 21, + 21, + 47, + 255, + 25, + 25, + 53, + 255, + 29, + 30, + 58, + 255, + 44, + 47, + 74, + 255, + 67, + 71, + 98, + 255, + 69, + 73, + 99, + 255, + 51, + 54, + 89, + 255, + 41, + 42, + 85, + 255, + 40, + 41, + 87, + 255, + 41, + 42, + 89, + 255, + 39, + 40, + 85, + 255, + 33, + 35, + 77, + 255, + 30, + 32, + 72, + 255, + 31, + 31, + 66, + 255, + 32, + 32, + 67, + 255, + 32, + 30, + 67, + 255, + 33, + 31, + 68, + 255, + 33, + 33, + 69, + 255, + 34, + 34, + 70, + 255, + 34, + 34, + 70, + 255, + 35, + 35, + 71, + 255, + 34, + 33, + 73, + 255, + 35, + 34, + 74, + 255, + 36, + 35, + 75, + 255, + 37, + 36, + 76, + 255, + 38, + 37, + 77, + 255, + 39, + 38, + 78, + 255, + 40, + 39, + 79, + 255, + 40, + 39, + 79, + 255, + 40, + 39, + 81, + 255, + 41, + 40, + 82, + 255, + 41, + 40, + 82, + 255, + 41, + 40, + 82, + 255, + 39, + 40, + 84, + 255, + 40, + 41, + 85, + 255, + 40, + 41, + 85, + 255, + 40, + 41, + 85, + 255, + 41, + 42, + 86, + 255, + 41, + 42, + 86, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 87, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 87, + 255, + 42, + 43, + 87, + 255, + 42, + 43, + 87, + 255, + 43, + 44, + 88, + 255, + 43, + 45, + 86, + 255, + 43, + 45, + 86, + 255, + 44, + 46, + 86, + 255, + 46, + 49, + 94, + 255, + 52, + 55, + 97, + 255, + 61, + 64, + 100, + 255, + 77, + 80, + 113, + 255, + 115, + 110, + 123, + 255, + 177, + 170, + 178, + 255, + 168, + 158, + 158, + 255, + 176, + 164, + 160, + 255, + 175, + 163, + 163, + 255, + 175, + 168, + 169, + 255, + 181, + 177, + 183, + 255, + 166, + 165, + 172, + 255, + 171, + 160, + 158, + 255, + 169, + 159, + 157, + 255, + 168, + 158, + 156, + 255, + 166, + 158, + 155, + 255, + 168, + 158, + 156, + 255, + 167, + 159, + 157, + 255, + 164, + 158, + 157, + 255, + 164, + 158, + 158, + 255, + 161, + 160, + 156, + 255, + 163, + 157, + 159, + 255, + 160, + 143, + 152, + 255, + 154, + 126, + 142, + 255, + 79, + 67, + 95, + 255, + 60, + 51, + 87, + 255, + 48, + 45, + 83, + 255, + 38, + 38, + 74, + 255, + 36, + 35, + 69, + 255, + 34, + 33, + 67, + 255, + 33, + 32, + 66, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 5, + 4, + 9, + 255, + 0, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 4, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 7, + 255, + 2, + 0, + 15, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 22, + 255, + 3, + 3, + 30, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 17, + 255, + 1, + 0, + 14, + 255, + 1, + 1, + 13, + 255, + 2, + 5, + 24, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 13, + 255, + 0, + 2, + 16, + 255, + 0, + 1, + 13, + 255, + 0, + 1, + 14, + 255, + 1, + 2, + 22, + 255, + 1, + 1, + 29, + 255, + 3, + 3, + 31, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 3, + 4, + 34, + 255, + 4, + 6, + 30, + 255, + 4, + 6, + 30, + 255, + 5, + 7, + 31, + 255, + 6, + 8, + 32, + 255, + 3, + 5, + 30, + 255, + 0, + 2, + 27, + 255, + 1, + 3, + 28, + 255, + 0, + 2, + 27, + 255, + 2, + 3, + 31, + 255, + 1, + 1, + 27, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 14, + 255, + 5, + 3, + 25, + 255, + 0, + 0, + 14, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 17, + 255, + 1, + 1, + 18, + 255, + 0, + 1, + 13, + 255, + 1, + 3, + 10, + 255, + 4, + 6, + 18, + 255, + 9, + 11, + 26, + 255, + 18, + 20, + 35, + 255, + 36, + 38, + 50, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 35, + 35, + 45, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 36, + 38, + 50, + 255, + 38, + 40, + 52, + 255, + 39, + 41, + 53, + 255, + 39, + 41, + 53, + 255, + 38, + 40, + 54, + 255, + 38, + 41, + 56, + 255, + 37, + 42, + 58, + 255, + 37, + 43, + 60, + 255, + 40, + 42, + 59, + 255, + 38, + 45, + 64, + 255, + 36, + 49, + 66, + 255, + 36, + 53, + 72, + 255, + 31, + 55, + 74, + 255, + 31, + 57, + 81, + 255, + 30, + 58, + 85, + 255, + 28, + 59, + 89, + 255, + 33, + 63, + 99, + 255, + 21, + 59, + 97, + 255, + 19, + 64, + 104, + 255, + 19, + 74, + 114, + 255, + 23, + 82, + 113, + 255, + 35, + 80, + 111, + 255, + 45, + 96, + 116, + 255, + 85, + 127, + 141, + 255, + 139, + 211, + 231, + 255, + 22, + 164, + 214, + 255, + 0, + 156, + 206, + 255, + 7, + 141, + 213, + 255, + 0, + 135, + 210, + 255, + 9, + 125, + 199, + 255, + 16, + 100, + 171, + 255, + 22, + 84, + 153, + 255, + 24, + 65, + 135, + 255, + 27, + 54, + 126, + 255, + 30, + 47, + 120, + 255, + 27, + 41, + 113, + 255, + 30, + 37, + 109, + 255, + 27, + 33, + 101, + 255, + 26, + 31, + 95, + 255, + 23, + 26, + 86, + 255, + 22, + 24, + 74, + 255, + 18, + 20, + 67, + 255, + 18, + 20, + 61, + 255, + 18, + 19, + 58, + 255, + 21, + 21, + 55, + 255, + 24, + 26, + 60, + 255, + 31, + 37, + 72, + 255, + 111, + 119, + 155, + 255, + 29, + 34, + 66, + 255, + 18, + 21, + 52, + 255, + 17, + 17, + 45, + 255, + 21, + 18, + 45, + 255, + 14, + 19, + 51, + 255, + 13, + 16, + 49, + 255, + 20, + 19, + 53, + 255, + 22, + 18, + 53, + 255, + 23, + 22, + 53, + 255, + 20, + 19, + 50, + 255, + 20, + 19, + 50, + 255, + 20, + 19, + 50, + 255, + 20, + 21, + 52, + 255, + 26, + 26, + 61, + 255, + 32, + 37, + 84, + 255, + 39, + 52, + 107, + 255, + 38, + 62, + 124, + 255, + 57, + 87, + 173, + 255, + 55, + 113, + 197, + 255, + 59, + 140, + 232, + 255, + 54, + 176, + 236, + 255, + 47, + 159, + 225, + 255, + 55, + 146, + 224, + 255, + 55, + 143, + 224, + 255, + 72, + 136, + 227, + 255, + 71, + 131, + 220, + 255, + 69, + 114, + 216, + 255, + 86, + 88, + 192, + 255, + 64, + 79, + 164, + 255, + 57, + 64, + 141, + 255, + 46, + 48, + 115, + 255, + 38, + 40, + 99, + 255, + 34, + 35, + 82, + 255, + 32, + 33, + 78, + 255, + 29, + 31, + 71, + 255, + 26, + 28, + 66, + 255, + 25, + 28, + 62, + 255, + 25, + 26, + 57, + 255, + 26, + 25, + 56, + 255, + 28, + 26, + 55, + 255, + 29, + 29, + 66, + 255, + 29, + 28, + 69, + 255, + 28, + 27, + 66, + 255, + 33, + 33, + 66, + 255, + 37, + 39, + 81, + 255, + 88, + 104, + 135, + 255, + 59, + 74, + 96, + 255, + 78, + 82, + 101, + 255, + 85, + 84, + 98, + 255, + 128, + 128, + 131, + 255, + 158, + 157, + 153, + 255, + 180, + 178, + 171, + 255, + 175, + 175, + 167, + 255, + 171, + 169, + 162, + 255, + 172, + 169, + 161, + 255, + 179, + 174, + 167, + 255, + 178, + 173, + 167, + 255, + 178, + 173, + 167, + 255, + 179, + 174, + 168, + 255, + 180, + 175, + 169, + 255, + 180, + 175, + 171, + 255, + 186, + 171, + 168, + 255, + 177, + 141, + 143, + 255, + 184, + 131, + 138, + 255, + 191, + 128, + 137, + 255, + 191, + 127, + 136, + 255, + 193, + 127, + 137, + 255, + 194, + 128, + 138, + 255, + 192, + 129, + 137, + 255, + 194, + 130, + 138, + 255, + 196, + 130, + 139, + 255, + 198, + 131, + 140, + 255, + 200, + 132, + 141, + 255, + 202, + 132, + 142, + 255, + 204, + 132, + 143, + 255, + 207, + 134, + 145, + 255, + 206, + 137, + 142, + 255, + 205, + 145, + 148, + 255, + 210, + 179, + 175, + 255, + 204, + 202, + 189, + 255, + 210, + 204, + 192, + 255, + 212, + 206, + 194, + 255, + 211, + 205, + 193, + 255, + 211, + 205, + 193, + 255, + 213, + 205, + 194, + 255, + 214, + 206, + 195, + 255, + 213, + 205, + 194, + 255, + 214, + 206, + 195, + 255, + 215, + 207, + 196, + 255, + 215, + 207, + 196, + 255, + 216, + 208, + 197, + 255, + 217, + 209, + 198, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 220, + 214, + 202, + 255, + 218, + 212, + 200, + 255, + 214, + 164, + 163, + 255, + 226, + 145, + 152, + 255, + 223, + 144, + 149, + 255, + 224, + 142, + 146, + 255, + 226, + 141, + 147, + 255, + 229, + 140, + 144, + 255, + 225, + 154, + 159, + 255, + 68, + 44, + 68, + 255, + 24, + 15, + 34, + 255, + 15, + 9, + 27, + 255, + 10, + 9, + 25, + 255, + 9, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 14, + 12, + 33, + 255, + 14, + 12, + 34, + 255, + 14, + 14, + 35, + 255, + 14, + 14, + 42, + 255, + 19, + 19, + 55, + 255, + 17, + 16, + 46, + 255, + 17, + 16, + 49, + 255, + 22, + 22, + 56, + 255, + 13, + 18, + 50, + 255, + 19, + 18, + 43, + 255, + 18, + 17, + 41, + 255, + 18, + 16, + 43, + 255, + 21, + 18, + 47, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 21, + 21, + 47, + 255, + 25, + 25, + 51, + 255, + 28, + 29, + 57, + 255, + 38, + 41, + 68, + 255, + 77, + 81, + 108, + 255, + 72, + 78, + 104, + 255, + 69, + 73, + 102, + 255, + 43, + 44, + 88, + 255, + 42, + 43, + 90, + 255, + 41, + 42, + 85, + 255, + 41, + 43, + 92, + 255, + 41, + 43, + 92, + 255, + 40, + 42, + 91, + 255, + 34, + 36, + 84, + 255, + 31, + 34, + 74, + 255, + 31, + 33, + 72, + 255, + 36, + 34, + 73, + 255, + 38, + 33, + 72, + 255, + 33, + 33, + 71, + 255, + 34, + 34, + 72, + 255, + 35, + 35, + 73, + 255, + 36, + 36, + 74, + 255, + 36, + 35, + 77, + 255, + 37, + 36, + 78, + 255, + 38, + 37, + 79, + 255, + 39, + 38, + 80, + 255, + 38, + 40, + 81, + 255, + 38, + 40, + 81, + 255, + 38, + 40, + 81, + 255, + 39, + 41, + 82, + 255, + 40, + 41, + 85, + 255, + 40, + 41, + 85, + 255, + 41, + 42, + 86, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 88, + 255, + 42, + 43, + 88, + 255, + 43, + 44, + 89, + 255, + 43, + 44, + 89, + 255, + 44, + 45, + 90, + 255, + 44, + 45, + 90, + 255, + 44, + 45, + 90, + 255, + 44, + 45, + 90, + 255, + 45, + 46, + 91, + 255, + 45, + 46, + 91, + 255, + 46, + 47, + 92, + 255, + 46, + 47, + 92, + 255, + 46, + 47, + 92, + 255, + 47, + 49, + 91, + 255, + 51, + 53, + 93, + 255, + 54, + 56, + 94, + 255, + 65, + 67, + 105, + 255, + 78, + 79, + 108, + 255, + 92, + 92, + 110, + 255, + 179, + 179, + 189, + 255, + 179, + 169, + 168, + 255, + 180, + 169, + 166, + 255, + 180, + 166, + 163, + 255, + 179, + 164, + 160, + 255, + 176, + 164, + 164, + 255, + 174, + 165, + 167, + 255, + 174, + 169, + 173, + 255, + 171, + 167, + 173, + 255, + 171, + 159, + 159, + 255, + 169, + 159, + 158, + 255, + 169, + 159, + 158, + 255, + 168, + 160, + 158, + 255, + 170, + 158, + 158, + 255, + 169, + 159, + 159, + 255, + 168, + 159, + 161, + 255, + 166, + 158, + 161, + 255, + 165, + 160, + 157, + 255, + 162, + 160, + 156, + 255, + 168, + 156, + 157, + 255, + 156, + 131, + 137, + 255, + 159, + 133, + 151, + 255, + 91, + 71, + 99, + 255, + 64, + 54, + 89, + 255, + 47, + 44, + 78, + 255, + 39, + 37, + 74, + 255, + 36, + 34, + 71, + 255, + 35, + 33, + 70, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 1, + 0, + 10, + 255, + 3, + 0, + 20, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 19, + 255, + 0, + 2, + 17, + 255, + 0, + 0, + 21, + 255, + 1, + 0, + 31, + 255, + 3, + 1, + 23, + 255, + 1, + 0, + 19, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 15, + 255, + 0, + 1, + 20, + 255, + 1, + 3, + 19, + 255, + 0, + 1, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 1, + 2, + 7, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 10, + 255, + 1, + 1, + 12, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 12, + 255, + 0, + 2, + 10, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 18, + 255, + 1, + 1, + 29, + 255, + 3, + 3, + 31, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 32, + 255, + 0, + 1, + 31, + 255, + 3, + 4, + 34, + 255, + 7, + 9, + 32, + 255, + 5, + 7, + 30, + 255, + 3, + 5, + 28, + 255, + 5, + 7, + 30, + 255, + 6, + 8, + 33, + 255, + 3, + 5, + 30, + 255, + 1, + 3, + 28, + 255, + 0, + 2, + 27, + 255, + 0, + 2, + 25, + 255, + 3, + 2, + 32, + 255, + 2, + 1, + 26, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 13, + 255, + 2, + 0, + 21, + 255, + 4, + 3, + 20, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 13, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 19, + 255, + 3, + 3, + 26, + 255, + 3, + 4, + 21, + 255, + 5, + 8, + 16, + 255, + 13, + 16, + 32, + 255, + 18, + 21, + 41, + 255, + 19, + 22, + 40, + 255, + 30, + 34, + 45, + 255, + 36, + 36, + 44, + 255, + 36, + 36, + 44, + 255, + 36, + 36, + 44, + 255, + 36, + 36, + 44, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 39, + 39, + 49, + 255, + 39, + 39, + 49, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 36, + 36, + 46, + 255, + 35, + 37, + 49, + 255, + 40, + 42, + 54, + 255, + 39, + 41, + 53, + 255, + 39, + 41, + 53, + 255, + 38, + 41, + 56, + 255, + 38, + 43, + 59, + 255, + 37, + 43, + 59, + 255, + 38, + 45, + 63, + 255, + 38, + 44, + 60, + 255, + 35, + 49, + 66, + 255, + 35, + 55, + 74, + 255, + 38, + 66, + 86, + 255, + 34, + 74, + 103, + 255, + 40, + 84, + 119, + 255, + 15, + 62, + 99, + 255, + 12, + 62, + 105, + 255, + 19, + 68, + 114, + 255, + 13, + 72, + 120, + 255, + 13, + 82, + 132, + 255, + 10, + 90, + 141, + 255, + 14, + 101, + 146, + 255, + 28, + 106, + 144, + 255, + 51, + 123, + 143, + 255, + 188, + 210, + 227, + 255, + 156, + 215, + 228, + 255, + 16, + 169, + 220, + 255, + 0, + 163, + 205, + 255, + 4, + 146, + 210, + 255, + 5, + 132, + 202, + 255, + 5, + 125, + 196, + 255, + 24, + 115, + 189, + 255, + 26, + 93, + 166, + 255, + 34, + 77, + 148, + 255, + 36, + 65, + 141, + 255, + 42, + 61, + 138, + 255, + 42, + 58, + 136, + 255, + 46, + 53, + 133, + 255, + 42, + 50, + 125, + 255, + 39, + 45, + 115, + 255, + 32, + 37, + 103, + 255, + 30, + 32, + 92, + 255, + 25, + 26, + 82, + 255, + 24, + 23, + 73, + 255, + 23, + 20, + 67, + 255, + 18, + 20, + 59, + 255, + 20, + 22, + 60, + 255, + 18, + 21, + 56, + 255, + 34, + 37, + 71, + 255, + 75, + 82, + 118, + 255, + 18, + 21, + 55, + 255, + 22, + 21, + 52, + 255, + 23, + 20, + 47, + 255, + 37, + 45, + 74, + 255, + 24, + 28, + 58, + 255, + 22, + 21, + 53, + 255, + 21, + 17, + 50, + 255, + 26, + 25, + 56, + 255, + 37, + 36, + 67, + 255, + 26, + 25, + 56, + 255, + 20, + 19, + 50, + 255, + 22, + 23, + 53, + 255, + 25, + 24, + 58, + 255, + 23, + 27, + 71, + 255, + 33, + 43, + 97, + 255, + 31, + 53, + 111, + 255, + 49, + 85, + 161, + 255, + 57, + 93, + 163, + 255, + 69, + 110, + 207, + 255, + 73, + 126, + 222, + 255, + 71, + 131, + 224, + 255, + 63, + 134, + 234, + 255, + 69, + 130, + 228, + 255, + 63, + 141, + 225, + 255, + 48, + 170, + 234, + 255, + 82, + 121, + 226, + 255, + 66, + 107, + 204, + 255, + 69, + 84, + 170, + 255, + 60, + 67, + 145, + 255, + 50, + 52, + 118, + 255, + 37, + 39, + 96, + 255, + 36, + 34, + 81, + 255, + 31, + 30, + 73, + 255, + 32, + 31, + 71, + 255, + 29, + 29, + 66, + 255, + 26, + 29, + 62, + 255, + 26, + 27, + 59, + 255, + 27, + 26, + 58, + 255, + 29, + 26, + 59, + 255, + 30, + 30, + 67, + 255, + 33, + 32, + 72, + 255, + 38, + 38, + 74, + 255, + 47, + 48, + 77, + 255, + 57, + 67, + 91, + 255, + 85, + 86, + 100, + 255, + 168, + 166, + 166, + 255, + 164, + 167, + 158, + 255, + 168, + 167, + 164, + 255, + 166, + 166, + 157, + 255, + 175, + 172, + 166, + 255, + 172, + 166, + 167, + 255, + 171, + 170, + 165, + 255, + 170, + 168, + 164, + 255, + 146, + 142, + 139, + 255, + 176, + 171, + 168, + 255, + 177, + 172, + 166, + 255, + 177, + 172, + 166, + 255, + 178, + 173, + 167, + 255, + 179, + 174, + 168, + 255, + 180, + 172, + 169, + 255, + 178, + 136, + 142, + 255, + 185, + 126, + 136, + 255, + 180, + 126, + 133, + 255, + 185, + 127, + 134, + 255, + 186, + 128, + 135, + 255, + 187, + 127, + 135, + 255, + 190, + 127, + 136, + 255, + 190, + 129, + 136, + 255, + 192, + 129, + 137, + 255, + 195, + 130, + 138, + 255, + 196, + 130, + 139, + 255, + 198, + 131, + 140, + 255, + 200, + 131, + 141, + 255, + 201, + 131, + 141, + 255, + 204, + 132, + 143, + 255, + 206, + 137, + 142, + 255, + 202, + 146, + 148, + 255, + 217, + 189, + 184, + 255, + 204, + 202, + 189, + 255, + 207, + 201, + 189, + 255, + 209, + 203, + 191, + 255, + 209, + 203, + 191, + 255, + 209, + 203, + 191, + 255, + 211, + 201, + 191, + 255, + 212, + 202, + 192, + 255, + 214, + 204, + 194, + 255, + 215, + 205, + 195, + 255, + 215, + 205, + 195, + 255, + 215, + 205, + 195, + 255, + 215, + 205, + 195, + 255, + 216, + 206, + 196, + 255, + 215, + 209, + 197, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 217, + 211, + 199, + 255, + 218, + 212, + 200, + 255, + 219, + 213, + 201, + 255, + 214, + 208, + 196, + 255, + 216, + 154, + 157, + 255, + 226, + 140, + 149, + 255, + 223, + 144, + 149, + 255, + 224, + 142, + 146, + 255, + 220, + 144, + 147, + 255, + 222, + 142, + 151, + 255, + 231, + 143, + 141, + 255, + 186, + 134, + 146, + 255, + 40, + 30, + 49, + 255, + 18, + 11, + 29, + 255, + 10, + 9, + 25, + 255, + 9, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 9, + 25, + 255, + 10, + 8, + 29, + 255, + 10, + 8, + 29, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 33, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 34, + 255, + 15, + 13, + 35, + 255, + 16, + 14, + 37, + 255, + 16, + 16, + 35, + 255, + 14, + 15, + 35, + 255, + 13, + 15, + 39, + 255, + 15, + 17, + 47, + 255, + 20, + 20, + 57, + 255, + 18, + 16, + 48, + 255, + 21, + 17, + 40, + 255, + 21, + 16, + 46, + 255, + 22, + 17, + 48, + 255, + 21, + 18, + 47, + 255, + 21, + 18, + 45, + 255, + 20, + 20, + 46, + 255, + 21, + 21, + 47, + 255, + 24, + 24, + 50, + 255, + 30, + 30, + 56, + 255, + 38, + 42, + 69, + 255, + 80, + 84, + 111, + 255, + 70, + 76, + 102, + 255, + 71, + 78, + 104, + 255, + 49, + 52, + 85, + 255, + 44, + 45, + 93, + 255, + 44, + 44, + 95, + 255, + 43, + 44, + 87, + 255, + 42, + 46, + 91, + 255, + 42, + 46, + 92, + 255, + 40, + 44, + 91, + 255, + 41, + 45, + 93, + 255, + 37, + 43, + 85, + 255, + 35, + 37, + 79, + 255, + 37, + 35, + 75, + 255, + 39, + 34, + 74, + 255, + 36, + 35, + 75, + 255, + 37, + 36, + 76, + 255, + 37, + 36, + 76, + 255, + 38, + 37, + 77, + 255, + 39, + 38, + 80, + 255, + 40, + 39, + 81, + 255, + 40, + 39, + 81, + 255, + 41, + 40, + 82, + 255, + 39, + 42, + 83, + 255, + 39, + 42, + 83, + 255, + 40, + 43, + 84, + 255, + 41, + 44, + 85, + 255, + 41, + 44, + 87, + 255, + 41, + 44, + 87, + 255, + 42, + 45, + 88, + 255, + 42, + 45, + 88, + 255, + 44, + 45, + 91, + 255, + 44, + 45, + 91, + 255, + 46, + 47, + 93, + 255, + 46, + 47, + 93, + 255, + 46, + 47, + 93, + 255, + 46, + 47, + 93, + 255, + 48, + 49, + 95, + 255, + 48, + 49, + 95, + 255, + 47, + 48, + 94, + 255, + 50, + 51, + 97, + 255, + 49, + 50, + 96, + 255, + 49, + 50, + 96, + 255, + 52, + 53, + 100, + 255, + 55, + 56, + 100, + 255, + 60, + 62, + 100, + 255, + 75, + 78, + 113, + 255, + 94, + 93, + 119, + 255, + 170, + 166, + 181, + 255, + 185, + 181, + 180, + 255, + 178, + 171, + 162, + 255, + 181, + 172, + 167, + 255, + 179, + 169, + 167, + 255, + 179, + 167, + 168, + 255, + 178, + 165, + 168, + 255, + 175, + 165, + 165, + 255, + 176, + 165, + 164, + 255, + 176, + 163, + 162, + 255, + 175, + 162, + 161, + 255, + 172, + 160, + 162, + 255, + 170, + 160, + 161, + 255, + 170, + 160, + 161, + 255, + 169, + 161, + 161, + 255, + 173, + 159, + 159, + 255, + 171, + 159, + 161, + 255, + 170, + 159, + 163, + 255, + 168, + 159, + 163, + 255, + 171, + 158, + 157, + 255, + 161, + 162, + 157, + 255, + 161, + 161, + 160, + 255, + 168, + 157, + 162, + 255, + 165, + 126, + 137, + 255, + 155, + 124, + 147, + 255, + 86, + 68, + 98, + 255, + 63, + 54, + 85, + 255, + 46, + 44, + 83, + 255, + 41, + 39, + 78, + 255, + 39, + 37, + 76, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 0, + 255, + 1, + 1, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 2, + 2, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 4, + 255, + 0, + 1, + 6, + 255, + 0, + 2, + 15, + 255, + 0, + 1, + 25, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 2, + 3, + 23, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 16, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 2, + 4, + 29, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 14, + 255, + 1, + 2, + 8, + 255, + 1, + 0, + 18, + 255, + 4, + 2, + 23, + 255, + 1, + 0, + 17, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 9, + 255, + 2, + 0, + 11, + 255, + 2, + 0, + 11, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 10, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 11, + 255, + 2, + 1, + 19, + 255, + 1, + 2, + 22, + 255, + 2, + 2, + 26, + 255, + 3, + 3, + 30, + 255, + 1, + 0, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 3, + 3, + 31, + 255, + 5, + 7, + 30, + 255, + 7, + 9, + 32, + 255, + 4, + 6, + 29, + 255, + 3, + 5, + 28, + 255, + 5, + 6, + 34, + 255, + 3, + 4, + 32, + 255, + 0, + 1, + 29, + 255, + 0, + 1, + 31, + 255, + 0, + 1, + 22, + 255, + 2, + 2, + 29, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 27, + 255, + 0, + 1, + 14, + 255, + 0, + 2, + 11, + 255, + 0, + 0, + 14, + 255, + 2, + 3, + 24, + 255, + 0, + 0, + 20, + 255, + 1, + 2, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 18, + 255, + 1, + 2, + 20, + 255, + 7, + 8, + 28, + 255, + 14, + 15, + 36, + 255, + 16, + 21, + 41, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 39, + 255, + 26, + 26, + 43, + 255, + 35, + 35, + 44, + 255, + 37, + 37, + 47, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 46, + 255, + 38, + 38, + 46, + 255, + 38, + 38, + 46, + 255, + 38, + 38, + 46, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 39, + 39, + 49, + 255, + 37, + 39, + 51, + 255, + 37, + 39, + 51, + 255, + 39, + 41, + 53, + 255, + 40, + 42, + 54, + 255, + 41, + 43, + 56, + 255, + 39, + 42, + 57, + 255, + 38, + 44, + 59, + 255, + 38, + 45, + 61, + 255, + 38, + 45, + 63, + 255, + 32, + 56, + 72, + 255, + 48, + 70, + 92, + 255, + 37, + 105, + 125, + 255, + 44, + 150, + 182, + 255, + 17, + 81, + 127, + 255, + 21, + 66, + 121, + 255, + 20, + 68, + 127, + 255, + 18, + 62, + 117, + 255, + 10, + 83, + 133, + 255, + 82, + 158, + 210, + 255, + 12, + 105, + 154, + 255, + 15, + 111, + 176, + 255, + 21, + 117, + 177, + 255, + 110, + 188, + 217, + 255, + 41, + 165, + 199, + 255, + 27, + 174, + 206, + 255, + 6, + 177, + 211, + 255, + 2, + 171, + 219, + 255, + 4, + 157, + 218, + 255, + 7, + 140, + 208, + 255, + 9, + 129, + 197, + 255, + 33, + 124, + 197, + 255, + 33, + 103, + 180, + 255, + 38, + 88, + 167, + 255, + 52, + 80, + 168, + 255, + 55, + 82, + 163, + 255, + 58, + 80, + 179, + 255, + 63, + 78, + 177, + 255, + 61, + 70, + 161, + 255, + 48, + 63, + 143, + 255, + 50, + 51, + 135, + 255, + 37, + 43, + 112, + 255, + 31, + 35, + 98, + 255, + 28, + 30, + 86, + 255, + 24, + 24, + 76, + 255, + 20, + 22, + 64, + 255, + 20, + 22, + 61, + 255, + 19, + 23, + 59, + 255, + 23, + 27, + 62, + 255, + 25, + 33, + 70, + 255, + 22, + 30, + 69, + 255, + 23, + 26, + 60, + 255, + 25, + 22, + 51, + 255, + 28, + 28, + 61, + 255, + 57, + 61, + 96, + 255, + 23, + 27, + 56, + 255, + 24, + 24, + 49, + 255, + 21, + 19, + 48, + 255, + 23, + 22, + 52, + 255, + 22, + 23, + 54, + 255, + 25, + 28, + 59, + 255, + 28, + 27, + 60, + 255, + 25, + 25, + 63, + 255, + 27, + 28, + 73, + 255, + 33, + 35, + 83, + 255, + 35, + 46, + 99, + 255, + 45, + 74, + 144, + 255, + 50, + 85, + 166, + 255, + 64, + 96, + 174, + 255, + 74, + 106, + 209, + 255, + 75, + 116, + 225, + 255, + 75, + 123, + 230, + 255, + 62, + 139, + 229, + 255, + 61, + 148, + 225, + 255, + 47, + 205, + 236, + 255, + 50, + 194, + 228, + 255, + 71, + 120, + 213, + 255, + 72, + 95, + 182, + 255, + 60, + 71, + 151, + 255, + 56, + 53, + 125, + 255, + 35, + 41, + 101, + 255, + 31, + 34, + 80, + 255, + 33, + 31, + 71, + 255, + 34, + 31, + 69, + 255, + 41, + 42, + 81, + 255, + 27, + 32, + 64, + 255, + 28, + 31, + 62, + 255, + 26, + 27, + 57, + 255, + 31, + 31, + 59, + 255, + 32, + 33, + 69, + 255, + 37, + 41, + 76, + 255, + 57, + 61, + 90, + 255, + 87, + 86, + 107, + 255, + 164, + 169, + 175, + 255, + 171, + 168, + 167, + 255, + 173, + 168, + 162, + 255, + 172, + 169, + 164, + 255, + 174, + 166, + 164, + 255, + 173, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 171, + 169, + 165, + 255, + 175, + 167, + 164, + 255, + 175, + 169, + 165, + 255, + 171, + 168, + 163, + 255, + 168, + 167, + 162, + 255, + 133, + 128, + 124, + 255, + 176, + 173, + 168, + 255, + 175, + 174, + 169, + 255, + 171, + 171, + 165, + 255, + 178, + 163, + 160, + 255, + 179, + 134, + 141, + 255, + 184, + 125, + 135, + 255, + 181, + 126, + 132, + 255, + 185, + 125, + 137, + 255, + 185, + 125, + 137, + 255, + 186, + 126, + 138, + 255, + 187, + 127, + 139, + 255, + 190, + 128, + 139, + 255, + 192, + 129, + 140, + 255, + 193, + 128, + 140, + 255, + 195, + 129, + 141, + 255, + 196, + 130, + 139, + 255, + 198, + 131, + 140, + 255, + 201, + 131, + 141, + 255, + 203, + 132, + 142, + 255, + 205, + 135, + 145, + 255, + 204, + 144, + 152, + 255, + 213, + 192, + 189, + 255, + 207, + 200, + 192, + 255, + 207, + 200, + 190, + 255, + 208, + 201, + 191, + 255, + 208, + 201, + 191, + 255, + 208, + 201, + 191, + 255, + 209, + 201, + 190, + 255, + 211, + 200, + 190, + 255, + 213, + 201, + 189, + 255, + 215, + 201, + 189, + 255, + 214, + 205, + 187, + 255, + 214, + 206, + 191, + 255, + 214, + 206, + 192, + 255, + 214, + 206, + 194, + 255, + 215, + 207, + 194, + 255, + 216, + 208, + 195, + 255, + 217, + 209, + 196, + 255, + 217, + 209, + 196, + 255, + 218, + 208, + 198, + 255, + 216, + 209, + 196, + 255, + 218, + 210, + 195, + 255, + 219, + 180, + 175, + 255, + 226, + 148, + 153, + 255, + 227, + 143, + 150, + 255, + 226, + 141, + 148, + 255, + 223, + 142, + 148, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 223, + 141, + 147, + 255, + 67, + 30, + 53, + 255, + 16, + 12, + 36, + 255, + 15, + 9, + 19, + 255, + 4, + 9, + 31, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 12, + 10, + 31, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 36, + 255, + 13, + 11, + 33, + 255, + 12, + 11, + 33, + 255, + 13, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 14, + 15, + 34, + 255, + 15, + 16, + 37, + 255, + 15, + 15, + 39, + 255, + 16, + 16, + 42, + 255, + 19, + 19, + 45, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 21, + 18, + 47, + 255, + 21, + 18, + 47, + 255, + 21, + 18, + 47, + 255, + 22, + 19, + 48, + 255, + 23, + 20, + 46, + 255, + 26, + 23, + 51, + 255, + 29, + 28, + 58, + 255, + 39, + 40, + 71, + 255, + 79, + 80, + 108, + 255, + 72, + 77, + 100, + 255, + 72, + 78, + 102, + 255, + 61, + 68, + 96, + 255, + 46, + 47, + 93, + 255, + 44, + 45, + 91, + 255, + 44, + 45, + 91, + 255, + 44, + 45, + 91, + 255, + 43, + 47, + 95, + 255, + 44, + 48, + 96, + 255, + 43, + 47, + 95, + 255, + 42, + 46, + 94, + 255, + 40, + 47, + 99, + 255, + 40, + 45, + 94, + 255, + 38, + 38, + 84, + 255, + 39, + 36, + 80, + 255, + 39, + 37, + 77, + 255, + 39, + 37, + 77, + 255, + 40, + 38, + 78, + 255, + 41, + 39, + 79, + 255, + 39, + 41, + 82, + 255, + 40, + 42, + 83, + 255, + 40, + 42, + 83, + 255, + 41, + 43, + 84, + 255, + 44, + 43, + 87, + 255, + 45, + 44, + 88, + 255, + 45, + 44, + 88, + 255, + 46, + 45, + 89, + 255, + 44, + 45, + 90, + 255, + 45, + 46, + 91, + 255, + 46, + 47, + 92, + 255, + 46, + 47, + 92, + 255, + 45, + 47, + 95, + 255, + 46, + 48, + 96, + 255, + 48, + 50, + 98, + 255, + 49, + 51, + 99, + 255, + 48, + 50, + 98, + 255, + 49, + 51, + 99, + 255, + 48, + 50, + 98, + 255, + 49, + 51, + 99, + 255, + 51, + 50, + 98, + 255, + 50, + 51, + 100, + 255, + 52, + 54, + 102, + 255, + 55, + 58, + 99, + 255, + 66, + 65, + 106, + 255, + 71, + 70, + 110, + 255, + 104, + 102, + 132, + 255, + 133, + 133, + 152, + 255, + 190, + 181, + 184, + 255, + 186, + 177, + 178, + 255, + 184, + 176, + 173, + 255, + 183, + 175, + 171, + 255, + 182, + 173, + 175, + 255, + 181, + 172, + 167, + 255, + 183, + 172, + 169, + 255, + 186, + 171, + 175, + 255, + 177, + 166, + 164, + 255, + 180, + 165, + 164, + 255, + 180, + 163, + 163, + 255, + 181, + 161, + 162, + 255, + 177, + 161, + 162, + 255, + 175, + 161, + 161, + 255, + 174, + 161, + 161, + 255, + 173, + 161, + 161, + 255, + 172, + 162, + 161, + 255, + 171, + 161, + 160, + 255, + 169, + 161, + 159, + 255, + 167, + 162, + 159, + 255, + 169, + 161, + 159, + 255, + 168, + 160, + 160, + 255, + 168, + 159, + 162, + 255, + 167, + 158, + 161, + 255, + 159, + 135, + 150, + 255, + 162, + 121, + 135, + 255, + 159, + 123, + 145, + 255, + 82, + 66, + 95, + 255, + 56, + 51, + 87, + 255, + 48, + 43, + 84, + 255, + 43, + 38, + 79, + 255, + 2, + 1, + 5, + 255, + 1, + 0, + 4, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 1, + 9, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 31, + 255, + 3, + 4, + 25, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 3, + 27, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 14, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 13, + 255, + 3, + 2, + 20, + 255, + 1, + 0, + 17, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 7, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 22, + 255, + 2, + 2, + 28, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 3, + 3, + 31, + 255, + 2, + 4, + 29, + 255, + 5, + 7, + 32, + 255, + 6, + 8, + 33, + 255, + 3, + 5, + 30, + 255, + 1, + 2, + 30, + 255, + 4, + 5, + 33, + 255, + 0, + 2, + 27, + 255, + 0, + 2, + 27, + 255, + 0, + 0, + 19, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 24, + 255, + 0, + 1, + 20, + 255, + 0, + 2, + 18, + 255, + 2, + 3, + 22, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 21, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 19, + 255, + 0, + 1, + 19, + 255, + 2, + 3, + 21, + 255, + 7, + 8, + 28, + 255, + 11, + 12, + 33, + 255, + 16, + 21, + 41, + 255, + 18, + 21, + 40, + 255, + 19, + 20, + 38, + 255, + 23, + 23, + 40, + 255, + 32, + 31, + 45, + 255, + 36, + 36, + 47, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 49, + 255, + 38, + 38, + 49, + 255, + 38, + 38, + 49, + 255, + 39, + 39, + 50, + 255, + 39, + 41, + 53, + 255, + 40, + 42, + 54, + 255, + 38, + 40, + 52, + 255, + 38, + 40, + 52, + 255, + 42, + 44, + 57, + 255, + 39, + 42, + 57, + 255, + 38, + 44, + 59, + 255, + 38, + 45, + 61, + 255, + 35, + 51, + 64, + 255, + 40, + 60, + 78, + 255, + 41, + 82, + 103, + 255, + 47, + 158, + 174, + 255, + 10, + 118, + 155, + 255, + 14, + 102, + 166, + 255, + 15, + 83, + 154, + 255, + 18, + 61, + 122, + 255, + 15, + 70, + 135, + 255, + 23, + 104, + 165, + 255, + 14, + 99, + 165, + 255, + 26, + 132, + 201, + 255, + 25, + 104, + 168, + 255, + 52, + 119, + 164, + 255, + 32, + 149, + 183, + 255, + 18, + 170, + 219, + 255, + 11, + 173, + 214, + 255, + 0, + 177, + 216, + 255, + 1, + 178, + 221, + 255, + 4, + 170, + 218, + 255, + 6, + 162, + 222, + 255, + 17, + 135, + 206, + 255, + 34, + 118, + 199, + 255, + 40, + 112, + 196, + 255, + 49, + 103, + 193, + 255, + 48, + 122, + 211, + 255, + 58, + 124, + 213, + 255, + 71, + 121, + 235, + 255, + 79, + 114, + 232, + 255, + 66, + 112, + 213, + 255, + 55, + 97, + 189, + 255, + 65, + 65, + 169, + 255, + 53, + 58, + 142, + 255, + 43, + 46, + 123, + 255, + 38, + 39, + 104, + 255, + 31, + 31, + 91, + 255, + 24, + 26, + 74, + 255, + 21, + 24, + 68, + 255, + 20, + 22, + 61, + 255, + 22, + 24, + 61, + 255, + 30, + 36, + 72, + 255, + 55, + 63, + 100, + 255, + 18, + 24, + 59, + 255, + 21, + 20, + 51, + 255, + 27, + 28, + 58, + 255, + 24, + 28, + 61, + 255, + 18, + 21, + 53, + 255, + 29, + 29, + 57, + 255, + 23, + 21, + 50, + 255, + 23, + 22, + 52, + 255, + 20, + 21, + 52, + 255, + 19, + 22, + 53, + 255, + 24, + 23, + 57, + 255, + 26, + 26, + 63, + 255, + 28, + 30, + 71, + 255, + 32, + 35, + 78, + 255, + 30, + 39, + 88, + 255, + 44, + 67, + 130, + 255, + 111, + 139, + 212, + 255, + 57, + 85, + 160, + 255, + 67, + 98, + 189, + 255, + 80, + 105, + 222, + 255, + 77, + 121, + 229, + 255, + 78, + 180, + 247, + 255, + 47, + 186, + 226, + 255, + 67, + 161, + 231, + 255, + 21, + 221, + 230, + 255, + 60, + 185, + 215, + 255, + 74, + 109, + 190, + 255, + 66, + 73, + 153, + 255, + 54, + 56, + 125, + 255, + 41, + 47, + 106, + 255, + 32, + 37, + 86, + 255, + 33, + 32, + 72, + 255, + 32, + 32, + 65, + 255, + 31, + 35, + 64, + 255, + 44, + 49, + 81, + 255, + 26, + 29, + 62, + 255, + 29, + 30, + 61, + 255, + 33, + 32, + 63, + 255, + 48, + 49, + 85, + 255, + 57, + 63, + 89, + 255, + 85, + 89, + 101, + 255, + 165, + 164, + 164, + 255, + 175, + 173, + 167, + 255, + 173, + 167, + 161, + 255, + 175, + 167, + 163, + 255, + 175, + 167, + 165, + 255, + 174, + 166, + 164, + 255, + 173, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 171, + 169, + 165, + 255, + 174, + 168, + 164, + 255, + 174, + 169, + 165, + 255, + 175, + 171, + 167, + 255, + 174, + 171, + 166, + 255, + 162, + 163, + 157, + 255, + 164, + 162, + 157, + 255, + 152, + 146, + 142, + 255, + 175, + 167, + 164, + 255, + 183, + 165, + 165, + 255, + 172, + 129, + 136, + 255, + 181, + 123, + 135, + 255, + 181, + 124, + 133, + 255, + 183, + 124, + 136, + 255, + 183, + 124, + 136, + 255, + 184, + 125, + 137, + 255, + 185, + 126, + 138, + 255, + 187, + 127, + 137, + 255, + 189, + 127, + 138, + 255, + 191, + 128, + 139, + 255, + 193, + 128, + 140, + 255, + 195, + 129, + 139, + 255, + 196, + 130, + 140, + 255, + 199, + 130, + 141, + 255, + 201, + 131, + 142, + 255, + 203, + 134, + 144, + 255, + 200, + 145, + 151, + 255, + 210, + 194, + 189, + 255, + 207, + 200, + 192, + 255, + 206, + 199, + 189, + 255, + 207, + 200, + 190, + 255, + 207, + 200, + 190, + 255, + 207, + 200, + 190, + 255, + 206, + 201, + 189, + 255, + 207, + 201, + 187, + 255, + 210, + 201, + 186, + 255, + 213, + 201, + 185, + 255, + 213, + 201, + 188, + 255, + 213, + 202, + 189, + 255, + 213, + 207, + 193, + 255, + 211, + 207, + 193, + 255, + 213, + 205, + 192, + 255, + 214, + 206, + 193, + 255, + 215, + 207, + 194, + 255, + 215, + 207, + 194, + 255, + 217, + 207, + 197, + 255, + 215, + 208, + 195, + 255, + 222, + 207, + 194, + 255, + 211, + 160, + 159, + 255, + 222, + 144, + 149, + 255, + 226, + 142, + 149, + 255, + 226, + 141, + 148, + 255, + 223, + 142, + 148, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 223, + 141, + 147, + 255, + 213, + 149, + 157, + 255, + 47, + 31, + 57, + 255, + 14, + 16, + 40, + 255, + 13, + 10, + 29, + 255, + 10, + 9, + 27, + 255, + 10, + 9, + 27, + 255, + 11, + 10, + 28, + 255, + 12, + 11, + 29, + 255, + 13, + 12, + 30, + 255, + 13, + 11, + 32, + 255, + 13, + 11, + 33, + 255, + 14, + 12, + 36, + 255, + 15, + 13, + 35, + 255, + 14, + 13, + 35, + 255, + 13, + 14, + 35, + 255, + 12, + 14, + 35, + 255, + 14, + 14, + 38, + 255, + 15, + 15, + 39, + 255, + 15, + 15, + 39, + 255, + 16, + 16, + 41, + 255, + 17, + 17, + 43, + 255, + 18, + 18, + 44, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 21, + 18, + 47, + 255, + 21, + 18, + 47, + 255, + 22, + 19, + 48, + 255, + 23, + 20, + 49, + 255, + 25, + 22, + 50, + 255, + 26, + 26, + 54, + 255, + 36, + 37, + 65, + 255, + 77, + 80, + 107, + 255, + 76, + 77, + 105, + 255, + 71, + 75, + 100, + 255, + 74, + 79, + 108, + 255, + 46, + 52, + 87, + 255, + 45, + 47, + 95, + 255, + 43, + 45, + 93, + 255, + 45, + 47, + 95, + 255, + 45, + 47, + 95, + 255, + 44, + 48, + 96, + 255, + 45, + 49, + 97, + 255, + 45, + 49, + 97, + 255, + 44, + 48, + 96, + 255, + 42, + 48, + 99, + 255, + 45, + 50, + 99, + 255, + 43, + 45, + 93, + 255, + 39, + 40, + 87, + 255, + 41, + 40, + 82, + 255, + 41, + 40, + 82, + 255, + 41, + 40, + 82, + 255, + 42, + 41, + 83, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 87, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 87, + 255, + 44, + 45, + 90, + 255, + 45, + 46, + 91, + 255, + 45, + 46, + 91, + 255, + 46, + 47, + 92, + 255, + 47, + 48, + 94, + 255, + 48, + 49, + 95, + 255, + 49, + 50, + 96, + 255, + 49, + 50, + 96, + 255, + 48, + 50, + 98, + 255, + 49, + 51, + 99, + 255, + 49, + 51, + 99, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 52, + 58, + 101, + 255, + 54, + 59, + 106, + 255, + 58, + 62, + 108, + 255, + 70, + 75, + 115, + 255, + 86, + 89, + 122, + 255, + 111, + 110, + 134, + 255, + 189, + 183, + 194, + 255, + 192, + 184, + 184, + 255, + 187, + 178, + 179, + 255, + 189, + 181, + 180, + 255, + 187, + 179, + 177, + 255, + 186, + 178, + 176, + 255, + 185, + 176, + 171, + 255, + 183, + 173, + 172, + 255, + 179, + 168, + 172, + 255, + 155, + 142, + 151, + 255, + 178, + 162, + 163, + 255, + 181, + 165, + 166, + 255, + 180, + 164, + 165, + 255, + 180, + 163, + 164, + 255, + 179, + 163, + 164, + 255, + 177, + 163, + 163, + 255, + 176, + 163, + 163, + 255, + 175, + 163, + 163, + 255, + 173, + 163, + 162, + 255, + 172, + 162, + 161, + 255, + 171, + 163, + 161, + 255, + 169, + 164, + 161, + 255, + 170, + 162, + 160, + 255, + 169, + 161, + 161, + 255, + 169, + 160, + 163, + 255, + 168, + 159, + 162, + 255, + 166, + 153, + 162, + 255, + 163, + 128, + 140, + 255, + 160, + 119, + 141, + 255, + 121, + 90, + 116, + 255, + 72, + 62, + 96, + 255, + 52, + 47, + 86, + 255, + 44, + 41, + 82, + 255, + 5, + 4, + 12, + 255, + 4, + 3, + 10, + 255, + 2, + 1, + 6, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 8, + 255, + 2, + 2, + 19, + 255, + 1, + 1, + 25, + 255, + 0, + 2, + 28, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 24, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 20, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 17, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 14, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 21, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 30, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 3, + 3, + 31, + 255, + 1, + 2, + 29, + 255, + 2, + 3, + 30, + 255, + 5, + 6, + 33, + 255, + 3, + 4, + 31, + 255, + 1, + 2, + 30, + 255, + 1, + 3, + 28, + 255, + 0, + 2, + 24, + 255, + 0, + 2, + 21, + 255, + 0, + 0, + 18, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 26, + 255, + 0, + 1, + 21, + 255, + 3, + 3, + 28, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 26, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 26, + 255, + 1, + 1, + 26, + 255, + 0, + 1, + 18, + 255, + 1, + 2, + 20, + 255, + 3, + 4, + 22, + 255, + 9, + 10, + 30, + 255, + 18, + 19, + 40, + 255, + 16, + 21, + 41, + 255, + 18, + 21, + 40, + 255, + 19, + 20, + 38, + 255, + 22, + 22, + 39, + 255, + 26, + 25, + 43, + 255, + 37, + 36, + 51, + 255, + 36, + 36, + 47, + 255, + 36, + 36, + 46, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 38, + 38, + 50, + 255, + 38, + 38, + 50, + 255, + 38, + 38, + 50, + 255, + 38, + 38, + 50, + 255, + 36, + 38, + 51, + 255, + 36, + 38, + 51, + 255, + 36, + 38, + 51, + 255, + 38, + 40, + 53, + 255, + 39, + 41, + 53, + 255, + 40, + 42, + 54, + 255, + 40, + 42, + 54, + 255, + 42, + 44, + 56, + 255, + 41, + 43, + 56, + 255, + 40, + 43, + 58, + 255, + 39, + 45, + 60, + 255, + 40, + 47, + 63, + 255, + 32, + 54, + 68, + 255, + 39, + 66, + 92, + 255, + 29, + 97, + 125, + 255, + 22, + 142, + 176, + 255, + 14, + 110, + 159, + 255, + 24, + 106, + 173, + 255, + 13, + 78, + 151, + 255, + 20, + 61, + 126, + 255, + 12, + 57, + 122, + 255, + 16, + 77, + 134, + 255, + 14, + 75, + 137, + 255, + 23, + 105, + 176, + 255, + 22, + 108, + 159, + 255, + 152, + 221, + 254, + 255, + 29, + 143, + 208, + 255, + 10, + 147, + 207, + 255, + 2, + 159, + 213, + 255, + 0, + 168, + 215, + 255, + 0, + 173, + 216, + 255, + 5, + 184, + 225, + 255, + 6, + 166, + 217, + 255, + 16, + 151, + 212, + 255, + 40, + 142, + 217, + 255, + 50, + 135, + 217, + 255, + 69, + 135, + 240, + 255, + 70, + 146, + 240, + 255, + 60, + 213, + 255, + 255, + 56, + 140, + 221, + 255, + 71, + 122, + 246, + 255, + 76, + 138, + 247, + 255, + 69, + 126, + 230, + 255, + 80, + 93, + 211, + 255, + 56, + 83, + 180, + 255, + 53, + 72, + 159, + 255, + 43, + 52, + 127, + 255, + 36, + 39, + 106, + 255, + 27, + 31, + 87, + 255, + 24, + 26, + 77, + 255, + 24, + 24, + 68, + 255, + 25, + 23, + 63, + 255, + 23, + 27, + 62, + 255, + 24, + 31, + 68, + 255, + 37, + 44, + 80, + 255, + 22, + 23, + 57, + 255, + 24, + 25, + 53, + 255, + 26, + 31, + 63, + 255, + 50, + 53, + 86, + 255, + 20, + 19, + 50, + 255, + 25, + 23, + 52, + 255, + 24, + 23, + 53, + 255, + 22, + 23, + 54, + 255, + 26, + 29, + 60, + 255, + 29, + 28, + 62, + 255, + 24, + 24, + 60, + 255, + 28, + 30, + 68, + 255, + 29, + 33, + 72, + 255, + 30, + 36, + 79, + 255, + 37, + 51, + 104, + 255, + 39, + 60, + 124, + 255, + 64, + 88, + 158, + 255, + 67, + 94, + 174, + 255, + 78, + 100, + 203, + 255, + 79, + 115, + 220, + 255, + 62, + 144, + 226, + 255, + 78, + 230, + 252, + 255, + 50, + 187, + 204, + 255, + 67, + 155, + 244, + 255, + 35, + 217, + 231, + 255, + 50, + 131, + 194, + 255, + 61, + 80, + 155, + 255, + 48, + 59, + 123, + 255, + 49, + 43, + 105, + 255, + 75, + 81, + 133, + 255, + 31, + 32, + 76, + 255, + 32, + 33, + 70, + 255, + 31, + 35, + 71, + 255, + 26, + 30, + 65, + 255, + 29, + 32, + 67, + 255, + 32, + 32, + 66, + 255, + 38, + 37, + 69, + 255, + 45, + 48, + 80, + 255, + 87, + 92, + 114, + 255, + 176, + 178, + 182, + 255, + 179, + 175, + 166, + 255, + 173, + 168, + 161, + 255, + 170, + 167, + 165, + 255, + 170, + 166, + 165, + 255, + 175, + 167, + 164, + 255, + 175, + 167, + 165, + 255, + 173, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 170, + 168, + 164, + 255, + 171, + 168, + 163, + 255, + 171, + 167, + 163, + 255, + 173, + 168, + 164, + 255, + 175, + 168, + 165, + 255, + 174, + 170, + 166, + 255, + 175, + 170, + 166, + 255, + 182, + 174, + 171, + 255, + 130, + 122, + 119, + 255, + 159, + 146, + 146, + 255, + 173, + 139, + 145, + 255, + 175, + 125, + 134, + 255, + 180, + 126, + 136, + 255, + 180, + 124, + 135, + 255, + 180, + 124, + 135, + 255, + 181, + 125, + 136, + 255, + 182, + 126, + 137, + 255, + 184, + 127, + 136, + 255, + 186, + 127, + 137, + 255, + 189, + 127, + 138, + 255, + 190, + 128, + 139, + 255, + 192, + 129, + 140, + 255, + 194, + 130, + 141, + 255, + 196, + 130, + 142, + 255, + 198, + 130, + 143, + 255, + 201, + 134, + 143, + 255, + 196, + 148, + 152, + 255, + 204, + 194, + 187, + 255, + 199, + 193, + 185, + 255, + 205, + 198, + 188, + 255, + 205, + 198, + 188, + 255, + 206, + 199, + 189, + 255, + 206, + 199, + 189, + 255, + 206, + 198, + 185, + 255, + 206, + 201, + 190, + 255, + 222, + 218, + 209, + 255, + 207, + 205, + 197, + 255, + 211, + 201, + 192, + 255, + 211, + 203, + 191, + 255, + 212, + 204, + 191, + 255, + 213, + 206, + 193, + 255, + 213, + 205, + 192, + 255, + 214, + 206, + 193, + 255, + 215, + 207, + 194, + 255, + 215, + 207, + 194, + 255, + 215, + 207, + 196, + 255, + 217, + 209, + 196, + 255, + 225, + 201, + 191, + 255, + 220, + 150, + 156, + 255, + 222, + 144, + 149, + 255, + 224, + 140, + 147, + 255, + 224, + 139, + 146, + 255, + 221, + 140, + 146, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 225, + 143, + 149, + 255, + 226, + 145, + 150, + 255, + 72, + 30, + 49, + 255, + 26, + 23, + 53, + 255, + 15, + 9, + 28, + 255, + 11, + 9, + 30, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 12, + 10, + 31, + 255, + 12, + 11, + 29, + 255, + 13, + 11, + 32, + 255, + 14, + 12, + 34, + 255, + 14, + 12, + 36, + 255, + 15, + 13, + 35, + 255, + 14, + 13, + 35, + 255, + 14, + 15, + 36, + 255, + 14, + 16, + 37, + 255, + 15, + 15, + 42, + 255, + 16, + 16, + 42, + 255, + 16, + 16, + 41, + 255, + 17, + 17, + 41, + 255, + 18, + 18, + 44, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 48, + 255, + 21, + 21, + 49, + 255, + 21, + 21, + 49, + 255, + 23, + 23, + 51, + 255, + 25, + 24, + 54, + 255, + 28, + 29, + 57, + 255, + 72, + 76, + 102, + 255, + 78, + 83, + 107, + 255, + 76, + 78, + 103, + 255, + 75, + 79, + 105, + 255, + 62, + 66, + 102, + 255, + 46, + 50, + 96, + 255, + 43, + 47, + 95, + 255, + 43, + 47, + 95, + 255, + 44, + 48, + 96, + 255, + 45, + 49, + 97, + 255, + 45, + 49, + 97, + 255, + 46, + 50, + 98, + 255, + 47, + 51, + 99, + 255, + 47, + 51, + 99, + 255, + 45, + 51, + 101, + 255, + 46, + 52, + 102, + 255, + 48, + 53, + 103, + 255, + 40, + 45, + 95, + 255, + 40, + 41, + 85, + 255, + 40, + 41, + 85, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 87, + 255, + 43, + 44, + 89, + 255, + 44, + 45, + 90, + 255, + 44, + 45, + 90, + 255, + 45, + 46, + 91, + 255, + 45, + 48, + 93, + 255, + 46, + 49, + 94, + 255, + 46, + 49, + 94, + 255, + 47, + 50, + 95, + 255, + 49, + 50, + 98, + 255, + 50, + 51, + 99, + 255, + 50, + 51, + 99, + 255, + 51, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 52, + 54, + 102, + 255, + 52, + 54, + 102, + 255, + 54, + 56, + 104, + 255, + 57, + 59, + 107, + 255, + 60, + 66, + 108, + 255, + 66, + 70, + 112, + 255, + 76, + 78, + 112, + 255, + 103, + 104, + 131, + 255, + 172, + 171, + 185, + 255, + 195, + 191, + 197, + 255, + 194, + 185, + 185, + 255, + 195, + 184, + 182, + 255, + 192, + 184, + 181, + 255, + 190, + 182, + 180, + 255, + 189, + 181, + 180, + 255, + 187, + 178, + 179, + 255, + 188, + 177, + 174, + 255, + 187, + 176, + 180, + 255, + 147, + 136, + 143, + 255, + 182, + 173, + 178, + 255, + 176, + 158, + 162, + 255, + 182, + 166, + 169, + 255, + 181, + 166, + 169, + 255, + 180, + 165, + 168, + 255, + 180, + 164, + 165, + 255, + 178, + 164, + 164, + 255, + 177, + 164, + 164, + 255, + 176, + 164, + 164, + 255, + 174, + 164, + 163, + 255, + 174, + 164, + 163, + 255, + 173, + 165, + 163, + 255, + 171, + 166, + 163, + 255, + 171, + 163, + 161, + 255, + 170, + 162, + 162, + 255, + 171, + 162, + 165, + 255, + 170, + 161, + 164, + 255, + 168, + 162, + 164, + 255, + 160, + 131, + 142, + 255, + 162, + 119, + 137, + 255, + 157, + 117, + 137, + 255, + 87, + 72, + 103, + 255, + 60, + 56, + 92, + 255, + 47, + 46, + 85, + 255, + 10, + 8, + 19, + 255, + 9, + 7, + 17, + 255, + 4, + 3, + 10, + 255, + 1, + 0, + 6, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 1, + 2, + 255, + 1, + 1, + 3, + 255, + 2, + 1, + 17, + 255, + 2, + 1, + 24, + 255, + 1, + 1, + 26, + 255, + 0, + 3, + 21, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 25, + 255, + 0, + 1, + 22, + 255, + 0, + 0, + 21, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 0, + 16, + 255, + 0, + 0, + 13, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 13, + 255, + 2, + 1, + 17, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 0, + 1, + 4, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 19, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 30, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 2, + 2, + 30, + 255, + 0, + 1, + 29, + 255, + 1, + 2, + 30, + 255, + 1, + 2, + 30, + 255, + 0, + 1, + 29, + 255, + 0, + 1, + 31, + 255, + 0, + 0, + 25, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 17, + 255, + 0, + 2, + 17, + 255, + 0, + 0, + 22, + 255, + 0, + 0, + 23, + 255, + 1, + 2, + 22, + 255, + 2, + 1, + 31, + 255, + 3, + 2, + 35, + 255, + 0, + 0, + 28, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 21, + 255, + 1, + 0, + 31, + 255, + 2, + 2, + 29, + 255, + 1, + 3, + 19, + 255, + 4, + 5, + 23, + 255, + 8, + 9, + 27, + 255, + 18, + 19, + 39, + 255, + 20, + 21, + 42, + 255, + 16, + 21, + 41, + 255, + 18, + 21, + 40, + 255, + 19, + 20, + 38, + 255, + 22, + 22, + 39, + 255, + 27, + 25, + 46, + 255, + 30, + 29, + 46, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 45, + 255, + 36, + 36, + 46, + 255, + 37, + 37, + 47, + 255, + 37, + 37, + 47, + 255, + 38, + 38, + 48, + 255, + 37, + 37, + 49, + 255, + 37, + 37, + 49, + 255, + 36, + 36, + 48, + 255, + 36, + 36, + 48, + 255, + 34, + 38, + 50, + 255, + 34, + 38, + 50, + 255, + 35, + 39, + 51, + 255, + 37, + 41, + 53, + 255, + 38, + 40, + 52, + 255, + 39, + 41, + 53, + 255, + 41, + 43, + 55, + 255, + 42, + 44, + 56, + 255, + 42, + 44, + 57, + 255, + 43, + 46, + 61, + 255, + 40, + 46, + 61, + 255, + 41, + 48, + 64, + 255, + 33, + 55, + 76, + 255, + 32, + 76, + 105, + 255, + 26, + 114, + 149, + 255, + 8, + 107, + 165, + 255, + 9, + 90, + 153, + 255, + 19, + 75, + 135, + 255, + 22, + 68, + 129, + 255, + 17, + 59, + 127, + 255, + 33, + 81, + 153, + 255, + 10, + 63, + 125, + 255, + 21, + 67, + 133, + 255, + 27, + 92, + 166, + 255, + 42, + 104, + 153, + 255, + 70, + 146, + 180, + 255, + 22, + 125, + 217, + 255, + 0, + 145, + 190, + 255, + 4, + 145, + 206, + 255, + 6, + 157, + 212, + 255, + 3, + 172, + 221, + 255, + 4, + 185, + 228, + 255, + 8, + 185, + 220, + 255, + 17, + 200, + 238, + 255, + 16, + 173, + 225, + 255, + 52, + 180, + 245, + 255, + 62, + 157, + 250, + 255, + 64, + 152, + 250, + 255, + 51, + 151, + 238, + 255, + 86, + 144, + 255, + 255, + 77, + 134, + 250, + 255, + 75, + 130, + 240, + 255, + 86, + 140, + 249, + 255, + 76, + 103, + 225, + 255, + 68, + 122, + 223, + 255, + 69, + 108, + 200, + 255, + 49, + 69, + 148, + 255, + 44, + 52, + 124, + 255, + 36, + 40, + 101, + 255, + 31, + 32, + 88, + 255, + 27, + 26, + 74, + 255, + 27, + 23, + 67, + 255, + 23, + 25, + 58, + 255, + 23, + 30, + 67, + 255, + 38, + 45, + 81, + 255, + 27, + 30, + 64, + 255, + 24, + 26, + 51, + 255, + 24, + 29, + 60, + 255, + 57, + 60, + 95, + 255, + 27, + 26, + 59, + 255, + 26, + 24, + 53, + 255, + 25, + 24, + 54, + 255, + 33, + 34, + 65, + 255, + 21, + 24, + 55, + 255, + 26, + 24, + 61, + 255, + 27, + 27, + 63, + 255, + 28, + 31, + 66, + 255, + 28, + 32, + 68, + 255, + 31, + 35, + 74, + 255, + 35, + 43, + 91, + 255, + 32, + 48, + 107, + 255, + 33, + 55, + 121, + 255, + 75, + 100, + 174, + 255, + 60, + 93, + 170, + 255, + 75, + 103, + 203, + 255, + 76, + 119, + 234, + 255, + 63, + 132, + 218, + 255, + 54, + 222, + 234, + 255, + 57, + 165, + 213, + 255, + 58, + 140, + 216, + 255, + 53, + 109, + 179, + 255, + 72, + 66, + 147, + 255, + 44, + 55, + 118, + 255, + 42, + 45, + 103, + 255, + 36, + 41, + 96, + 255, + 35, + 36, + 85, + 255, + 34, + 35, + 82, + 255, + 36, + 39, + 89, + 255, + 33, + 37, + 74, + 255, + 35, + 38, + 73, + 255, + 37, + 37, + 71, + 255, + 46, + 45, + 79, + 255, + 56, + 60, + 89, + 255, + 89, + 94, + 116, + 255, + 169, + 169, + 176, + 255, + 177, + 169, + 164, + 255, + 177, + 173, + 173, + 255, + 179, + 181, + 184, + 255, + 174, + 176, + 175, + 255, + 170, + 168, + 162, + 255, + 175, + 167, + 165, + 255, + 173, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 170, + 168, + 164, + 255, + 169, + 168, + 163, + 255, + 171, + 168, + 163, + 255, + 174, + 167, + 164, + 255, + 172, + 164, + 161, + 255, + 174, + 163, + 161, + 255, + 174, + 166, + 163, + 255, + 174, + 169, + 165, + 255, + 169, + 165, + 161, + 255, + 181, + 175, + 175, + 255, + 157, + 134, + 137, + 255, + 171, + 131, + 139, + 255, + 176, + 129, + 138, + 255, + 180, + 124, + 135, + 255, + 180, + 124, + 135, + 255, + 180, + 124, + 135, + 255, + 181, + 125, + 136, + 255, + 183, + 126, + 135, + 255, + 184, + 127, + 136, + 255, + 187, + 127, + 137, + 255, + 189, + 127, + 138, + 255, + 190, + 128, + 139, + 255, + 192, + 129, + 140, + 255, + 194, + 128, + 140, + 255, + 195, + 129, + 141, + 255, + 199, + 134, + 142, + 255, + 195, + 152, + 154, + 255, + 198, + 192, + 184, + 255, + 199, + 193, + 185, + 255, + 202, + 195, + 185, + 255, + 203, + 196, + 186, + 255, + 204, + 197, + 187, + 255, + 204, + 197, + 187, + 255, + 209, + 195, + 183, + 255, + 204, + 198, + 191, + 255, + 215, + 218, + 218, + 255, + 215, + 223, + 228, + 255, + 214, + 211, + 202, + 255, + 208, + 201, + 191, + 255, + 212, + 199, + 188, + 255, + 216, + 201, + 189, + 255, + 213, + 205, + 192, + 255, + 214, + 206, + 193, + 255, + 214, + 206, + 193, + 255, + 214, + 206, + 193, + 255, + 214, + 206, + 195, + 255, + 216, + 208, + 195, + 255, + 213, + 184, + 176, + 255, + 228, + 147, + 156, + 255, + 220, + 142, + 147, + 255, + 224, + 140, + 147, + 255, + 225, + 140, + 147, + 255, + 222, + 141, + 147, + 255, + 223, + 141, + 147, + 255, + 223, + 141, + 147, + 255, + 223, + 141, + 147, + 255, + 224, + 141, + 148, + 255, + 222, + 140, + 150, + 255, + 208, + 143, + 149, + 255, + 47, + 34, + 61, + 255, + 19, + 16, + 36, + 255, + 14, + 12, + 34, + 255, + 12, + 10, + 32, + 255, + 13, + 11, + 33, + 255, + 13, + 11, + 33, + 255, + 13, + 12, + 30, + 255, + 14, + 12, + 33, + 255, + 15, + 13, + 35, + 255, + 15, + 13, + 37, + 255, + 15, + 13, + 35, + 255, + 16, + 15, + 37, + 255, + 15, + 16, + 37, + 255, + 15, + 17, + 38, + 255, + 16, + 15, + 46, + 255, + 17, + 17, + 45, + 255, + 17, + 17, + 42, + 255, + 18, + 18, + 42, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 46, + 255, + 19, + 19, + 45, + 255, + 19, + 19, + 45, + 255, + 20, + 21, + 49, + 255, + 21, + 22, + 50, + 255, + 23, + 24, + 52, + 255, + 25, + 26, + 54, + 255, + 26, + 27, + 58, + 255, + 28, + 31, + 58, + 255, + 37, + 42, + 66, + 255, + 74, + 80, + 102, + 255, + 79, + 81, + 106, + 255, + 74, + 78, + 106, + 255, + 47, + 50, + 91, + 255, + 44, + 47, + 99, + 255, + 43, + 46, + 97, + 255, + 45, + 48, + 99, + 255, + 46, + 49, + 100, + 255, + 47, + 50, + 101, + 255, + 48, + 52, + 100, + 255, + 49, + 53, + 101, + 255, + 49, + 53, + 101, + 255, + 50, + 54, + 102, + 255, + 48, + 54, + 104, + 255, + 47, + 53, + 103, + 255, + 47, + 54, + 106, + 255, + 46, + 53, + 105, + 255, + 44, + 47, + 90, + 255, + 41, + 44, + 87, + 255, + 43, + 46, + 89, + 255, + 44, + 47, + 90, + 255, + 45, + 46, + 92, + 255, + 46, + 47, + 93, + 255, + 48, + 49, + 95, + 255, + 49, + 50, + 96, + 255, + 46, + 50, + 97, + 255, + 47, + 51, + 98, + 255, + 47, + 51, + 98, + 255, + 49, + 53, + 100, + 255, + 51, + 51, + 101, + 255, + 52, + 52, + 102, + 255, + 53, + 53, + 103, + 255, + 54, + 54, + 104, + 255, + 53, + 55, + 103, + 255, + 53, + 55, + 103, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 56, + 58, + 106, + 255, + 58, + 60, + 108, + 255, + 60, + 62, + 110, + 255, + 68, + 70, + 118, + 255, + 78, + 80, + 122, + 255, + 98, + 98, + 134, + 255, + 123, + 121, + 143, + 255, + 201, + 197, + 206, + 255, + 205, + 198, + 196, + 255, + 195, + 187, + 182, + 255, + 198, + 188, + 189, + 255, + 197, + 185, + 197, + 255, + 196, + 188, + 184, + 255, + 194, + 186, + 184, + 255, + 192, + 183, + 184, + 255, + 190, + 181, + 184, + 255, + 191, + 176, + 180, + 255, + 167, + 154, + 163, + 255, + 189, + 180, + 185, + 255, + 182, + 175, + 173, + 255, + 190, + 171, + 175, + 255, + 178, + 160, + 164, + 255, + 183, + 168, + 171, + 255, + 181, + 169, + 171, + 255, + 182, + 166, + 167, + 255, + 180, + 166, + 166, + 255, + 179, + 166, + 166, + 255, + 178, + 166, + 166, + 255, + 176, + 166, + 165, + 255, + 176, + 166, + 165, + 255, + 174, + 166, + 164, + 255, + 172, + 167, + 164, + 255, + 173, + 165, + 163, + 255, + 172, + 164, + 164, + 255, + 172, + 163, + 166, + 255, + 171, + 162, + 165, + 255, + 173, + 164, + 166, + 255, + 164, + 137, + 147, + 255, + 163, + 123, + 139, + 255, + 163, + 122, + 136, + 255, + 100, + 82, + 111, + 255, + 67, + 63, + 97, + 255, + 51, + 51, + 89, + 255, + 20, + 21, + 42, + 255, + 10, + 10, + 22, + 255, + 5, + 5, + 7, + 255, + 3, + 2, + 6, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 2, + 2, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 2, + 3, + 255, + 0, + 1, + 9, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 20, + 255, + 1, + 2, + 20, + 255, + 1, + 2, + 20, + 255, + 1, + 2, + 20, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 2, + 3, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 13, + 255, + 2, + 1, + 19, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 10, + 255, + 2, + 1, + 19, + 255, + 2, + 1, + 19, + 255, + 2, + 1, + 19, + 255, + 2, + 1, + 19, + 255, + 1, + 1, + 24, + 255, + 2, + 1, + 31, + 255, + 1, + 0, + 31, + 255, + 1, + 1, + 27, + 255, + 1, + 0, + 30, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 27, + 255, + 3, + 1, + 22, + 255, + 2, + 0, + 21, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 20, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 26, + 255, + 4, + 2, + 24, + 255, + 3, + 2, + 16, + 255, + 2, + 1, + 19, + 255, + 4, + 1, + 30, + 255, + 2, + 2, + 36, + 255, + 3, + 3, + 32, + 255, + 6, + 3, + 29, + 255, + 7, + 3, + 26, + 255, + 7, + 10, + 29, + 255, + 17, + 20, + 39, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 22, + 21, + 42, + 255, + 22, + 23, + 41, + 255, + 26, + 28, + 42, + 255, + 34, + 37, + 46, + 255, + 34, + 37, + 45, + 255, + 36, + 36, + 44, + 255, + 38, + 38, + 47, + 255, + 36, + 38, + 49, + 255, + 34, + 38, + 49, + 255, + 34, + 36, + 51, + 255, + 34, + 36, + 51, + 255, + 33, + 35, + 50, + 255, + 34, + 36, + 51, + 255, + 33, + 36, + 51, + 255, + 34, + 37, + 52, + 255, + 35, + 38, + 53, + 255, + 37, + 40, + 55, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 38, + 44, + 60, + 255, + 41, + 44, + 61, + 255, + 40, + 46, + 63, + 255, + 39, + 54, + 69, + 255, + 37, + 61, + 81, + 255, + 26, + 82, + 125, + 255, + 28, + 123, + 171, + 255, + 21, + 108, + 171, + 255, + 38, + 115, + 175, + 255, + 19, + 69, + 138, + 255, + 26, + 63, + 136, + 255, + 25, + 61, + 135, + 255, + 15, + 57, + 124, + 255, + 18, + 59, + 122, + 255, + 16, + 60, + 123, + 255, + 29, + 82, + 149, + 255, + 44, + 100, + 142, + 255, + 29, + 111, + 159, + 255, + 14, + 124, + 184, + 255, + 7, + 128, + 199, + 255, + 6, + 139, + 204, + 255, + 2, + 152, + 222, + 255, + 10, + 179, + 225, + 255, + 0, + 176, + 215, + 255, + 8, + 200, + 228, + 255, + 15, + 198, + 230, + 255, + 39, + 211, + 249, + 255, + 105, + 240, + 255, + 255, + 131, + 224, + 255, + 255, + 52, + 153, + 242, + 255, + 64, + 141, + 254, + 255, + 93, + 189, + 255, + 255, + 71, + 148, + 244, + 255, + 75, + 126, + 253, + 255, + 76, + 126, + 231, + 255, + 84, + 114, + 252, + 255, + 99, + 133, + 247, + 255, + 68, + 95, + 202, + 255, + 66, + 85, + 178, + 255, + 51, + 68, + 148, + 255, + 43, + 52, + 123, + 255, + 36, + 39, + 99, + 255, + 30, + 31, + 84, + 255, + 24, + 27, + 78, + 255, + 23, + 25, + 64, + 255, + 24, + 24, + 59, + 255, + 25, + 24, + 58, + 255, + 26, + 22, + 61, + 255, + 21, + 24, + 57, + 255, + 23, + 26, + 59, + 255, + 21, + 24, + 57, + 255, + 23, + 26, + 59, + 255, + 25, + 26, + 57, + 255, + 24, + 25, + 56, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 23, + 26, + 59, + 255, + 25, + 28, + 61, + 255, + 26, + 29, + 62, + 255, + 27, + 30, + 63, + 255, + 31, + 31, + 65, + 255, + 35, + 38, + 81, + 255, + 40, + 44, + 100, + 255, + 48, + 53, + 117, + 255, + 46, + 62, + 129, + 255, + 68, + 88, + 160, + 255, + 61, + 86, + 167, + 255, + 73, + 100, + 187, + 255, + 74, + 117, + 206, + 255, + 54, + 144, + 206, + 255, + 54, + 133, + 193, + 255, + 67, + 97, + 176, + 255, + 65, + 79, + 149, + 255, + 53, + 62, + 129, + 255, + 46, + 51, + 110, + 255, + 42, + 43, + 99, + 255, + 38, + 38, + 90, + 255, + 38, + 38, + 90, + 255, + 38, + 38, + 90, + 255, + 38, + 38, + 90, + 255, + 36, + 37, + 81, + 255, + 40, + 42, + 81, + 255, + 45, + 47, + 81, + 255, + 62, + 63, + 94, + 255, + 92, + 90, + 110, + 255, + 187, + 182, + 183, + 255, + 180, + 174, + 169, + 255, + 177, + 172, + 175, + 255, + 179, + 181, + 189, + 255, + 177, + 182, + 185, + 255, + 172, + 172, + 171, + 255, + 175, + 167, + 164, + 255, + 173, + 169, + 166, + 255, + 173, + 169, + 166, + 255, + 176, + 168, + 166, + 255, + 173, + 157, + 158, + 255, + 170, + 140, + 146, + 255, + 167, + 133, + 140, + 255, + 171, + 133, + 141, + 255, + 171, + 130, + 139, + 255, + 170, + 131, + 140, + 255, + 170, + 131, + 140, + 255, + 170, + 131, + 140, + 255, + 169, + 130, + 139, + 255, + 164, + 134, + 136, + 255, + 163, + 143, + 142, + 255, + 178, + 157, + 156, + 255, + 182, + 150, + 153, + 255, + 177, + 126, + 133, + 255, + 179, + 124, + 132, + 255, + 182, + 123, + 133, + 255, + 185, + 123, + 134, + 255, + 182, + 124, + 136, + 255, + 184, + 125, + 137, + 255, + 187, + 125, + 138, + 255, + 188, + 126, + 139, + 255, + 190, + 127, + 138, + 255, + 191, + 128, + 139, + 255, + 191, + 128, + 139, + 255, + 194, + 131, + 142, + 255, + 197, + 135, + 146, + 255, + 197, + 155, + 159, + 255, + 194, + 193, + 183, + 255, + 203, + 190, + 184, + 255, + 200, + 193, + 183, + 255, + 202, + 195, + 185, + 255, + 203, + 196, + 186, + 255, + 203, + 196, + 186, + 255, + 204, + 198, + 186, + 255, + 208, + 197, + 183, + 255, + 203, + 200, + 194, + 255, + 211, + 220, + 225, + 255, + 211, + 219, + 223, + 255, + 207, + 209, + 207, + 255, + 207, + 199, + 189, + 255, + 214, + 199, + 184, + 255, + 212, + 202, + 190, + 255, + 213, + 205, + 192, + 255, + 213, + 205, + 192, + 255, + 213, + 207, + 193, + 255, + 213, + 206, + 195, + 255, + 211, + 208, + 193, + 255, + 213, + 162, + 161, + 255, + 225, + 144, + 153, + 255, + 223, + 140, + 148, + 255, + 222, + 139, + 147, + 255, + 223, + 140, + 148, + 255, + 223, + 140, + 148, + 255, + 223, + 141, + 147, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 223, + 141, + 147, + 255, + 225, + 138, + 144, + 255, + 220, + 143, + 146, + 255, + 67, + 43, + 69, + 255, + 25, + 18, + 43, + 255, + 13, + 11, + 33, + 255, + 12, + 11, + 33, + 255, + 11, + 13, + 34, + 255, + 12, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 14, + 15, + 36, + 255, + 15, + 16, + 35, + 255, + 15, + 15, + 38, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 44, + 255, + 16, + 16, + 42, + 255, + 19, + 18, + 50, + 255, + 18, + 17, + 48, + 255, + 19, + 19, + 44, + 255, + 19, + 19, + 47, + 255, + 20, + 20, + 48, + 255, + 20, + 20, + 48, + 255, + 22, + 22, + 50, + 255, + 22, + 24, + 49, + 255, + 24, + 25, + 53, + 255, + 26, + 27, + 56, + 255, + 29, + 27, + 57, + 255, + 28, + 26, + 58, + 255, + 31, + 30, + 62, + 255, + 37, + 38, + 69, + 255, + 68, + 72, + 101, + 255, + 70, + 78, + 102, + 255, + 54, + 59, + 98, + 255, + 47, + 51, + 99, + 255, + 45, + 48, + 99, + 255, + 44, + 48, + 96, + 255, + 45, + 49, + 97, + 255, + 46, + 50, + 98, + 255, + 48, + 52, + 100, + 255, + 49, + 53, + 100, + 255, + 50, + 54, + 101, + 255, + 51, + 55, + 102, + 255, + 52, + 56, + 103, + 255, + 50, + 56, + 104, + 255, + 49, + 55, + 105, + 255, + 50, + 56, + 107, + 255, + 52, + 58, + 110, + 255, + 45, + 49, + 96, + 255, + 45, + 47, + 95, + 255, + 46, + 49, + 94, + 255, + 47, + 48, + 92, + 255, + 46, + 48, + 96, + 255, + 47, + 49, + 97, + 255, + 48, + 50, + 98, + 255, + 49, + 51, + 99, + 255, + 50, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 53, + 54, + 102, + 255, + 54, + 55, + 103, + 255, + 54, + 55, + 103, + 255, + 55, + 56, + 104, + 255, + 54, + 56, + 104, + 255, + 56, + 58, + 107, + 255, + 57, + 59, + 109, + 255, + 59, + 61, + 111, + 255, + 64, + 67, + 111, + 255, + 67, + 69, + 116, + 255, + 73, + 77, + 117, + 255, + 87, + 93, + 123, + 255, + 106, + 108, + 130, + 255, + 185, + 186, + 189, + 255, + 202, + 197, + 193, + 255, + 205, + 195, + 197, + 255, + 200, + 191, + 192, + 255, + 199, + 190, + 191, + 255, + 199, + 190, + 191, + 255, + 198, + 189, + 190, + 255, + 195, + 188, + 187, + 255, + 195, + 187, + 185, + 255, + 193, + 184, + 183, + 255, + 195, + 185, + 184, + 255, + 182, + 171, + 179, + 255, + 175, + 164, + 168, + 255, + 190, + 180, + 180, + 255, + 188, + 179, + 174, + 255, + 188, + 176, + 178, + 255, + 188, + 169, + 173, + 255, + 184, + 163, + 168, + 255, + 186, + 171, + 174, + 255, + 182, + 170, + 172, + 255, + 181, + 169, + 171, + 255, + 180, + 168, + 170, + 255, + 179, + 167, + 169, + 255, + 178, + 170, + 168, + 255, + 177, + 169, + 169, + 255, + 176, + 167, + 170, + 255, + 174, + 165, + 168, + 255, + 174, + 165, + 168, + 255, + 173, + 164, + 167, + 255, + 172, + 163, + 166, + 255, + 171, + 162, + 165, + 255, + 170, + 164, + 166, + 255, + 165, + 138, + 147, + 255, + 169, + 128, + 144, + 255, + 166, + 123, + 142, + 255, + 120, + 93, + 118, + 255, + 74, + 68, + 106, + 255, + 58, + 54, + 88, + 255, + 27, + 29, + 51, + 255, + 17, + 19, + 35, + 255, + 7, + 7, + 15, + 255, + 4, + 3, + 9, + 255, + 2, + 2, + 4, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 6, + 255, + 0, + 2, + 16, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 23, + 255, + 3, + 4, + 25, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 0, + 0, + 26, + 255, + 1, + 0, + 20, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 13, + 255, + 2, + 1, + 19, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 10, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 21, + 255, + 0, + 0, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 26, + 255, + 0, + 0, + 23, + 255, + 0, + 0, + 22, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 17, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 22, + 255, + 2, + 0, + 20, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 13, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 20, + 255, + 3, + 4, + 22, + 255, + 13, + 12, + 29, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 22, + 21, + 42, + 255, + 22, + 23, + 42, + 255, + 23, + 25, + 41, + 255, + 26, + 28, + 40, + 255, + 35, + 38, + 48, + 255, + 37, + 37, + 46, + 255, + 34, + 36, + 47, + 255, + 32, + 36, + 48, + 255, + 30, + 35, + 47, + 255, + 32, + 35, + 50, + 255, + 32, + 35, + 50, + 255, + 32, + 35, + 50, + 255, + 33, + 36, + 51, + 255, + 34, + 37, + 52, + 255, + 35, + 38, + 53, + 255, + 35, + 38, + 53, + 255, + 37, + 40, + 55, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 38, + 44, + 59, + 255, + 41, + 44, + 62, + 255, + 40, + 45, + 65, + 255, + 39, + 53, + 72, + 255, + 40, + 58, + 88, + 255, + 37, + 100, + 142, + 255, + 26, + 105, + 154, + 255, + 30, + 78, + 142, + 255, + 17, + 75, + 143, + 255, + 48, + 92, + 165, + 255, + 41, + 76, + 152, + 255, + 22, + 57, + 133, + 255, + 23, + 58, + 124, + 255, + 23, + 56, + 119, + 255, + 27, + 61, + 124, + 255, + 33, + 76, + 137, + 255, + 128, + 180, + 221, + 255, + 35, + 111, + 163, + 255, + 16, + 113, + 176, + 255, + 12, + 120, + 190, + 255, + 8, + 132, + 202, + 255, + 4, + 148, + 221, + 255, + 10, + 181, + 227, + 255, + 1, + 179, + 219, + 255, + 14, + 206, + 233, + 255, + 22, + 217, + 238, + 255, + 17, + 241, + 251, + 255, + 49, + 229, + 245, + 255, + 61, + 183, + 249, + 255, + 67, + 177, + 245, + 255, + 106, + 194, + 255, + 255, + 74, + 145, + 253, + 255, + 74, + 128, + 243, + 255, + 77, + 111, + 244, + 255, + 74, + 114, + 229, + 255, + 82, + 108, + 237, + 255, + 73, + 105, + 222, + 255, + 83, + 113, + 237, + 255, + 76, + 103, + 211, + 255, + 64, + 88, + 171, + 255, + 53, + 70, + 150, + 255, + 43, + 51, + 118, + 255, + 35, + 38, + 95, + 255, + 29, + 32, + 85, + 255, + 26, + 28, + 70, + 255, + 25, + 25, + 61, + 255, + 26, + 25, + 59, + 255, + 27, + 23, + 62, + 255, + 24, + 24, + 58, + 255, + 24, + 24, + 58, + 255, + 23, + 23, + 57, + 255, + 31, + 31, + 65, + 255, + 26, + 27, + 58, + 255, + 25, + 26, + 57, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 27, + 27, + 61, + 255, + 28, + 28, + 62, + 255, + 29, + 29, + 63, + 255, + 30, + 30, + 64, + 255, + 31, + 31, + 67, + 255, + 34, + 36, + 78, + 255, + 36, + 39, + 90, + 255, + 41, + 44, + 102, + 255, + 41, + 48, + 110, + 255, + 53, + 62, + 129, + 255, + 57, + 70, + 145, + 255, + 61, + 75, + 155, + 255, + 73, + 82, + 169, + 255, + 71, + 90, + 168, + 255, + 65, + 81, + 156, + 255, + 69, + 74, + 151, + 255, + 53, + 63, + 127, + 255, + 47, + 54, + 115, + 255, + 42, + 46, + 102, + 255, + 40, + 42, + 94, + 255, + 39, + 39, + 89, + 255, + 41, + 41, + 91, + 255, + 43, + 43, + 93, + 255, + 45, + 45, + 95, + 255, + 45, + 46, + 101, + 255, + 51, + 51, + 96, + 255, + 66, + 66, + 95, + 255, + 96, + 96, + 113, + 255, + 184, + 182, + 186, + 255, + 183, + 178, + 172, + 255, + 180, + 175, + 170, + 255, + 180, + 178, + 183, + 255, + 183, + 184, + 190, + 255, + 173, + 174, + 176, + 255, + 173, + 172, + 171, + 255, + 174, + 169, + 165, + 255, + 173, + 169, + 166, + 255, + 178, + 167, + 166, + 255, + 172, + 147, + 151, + 255, + 168, + 134, + 141, + 255, + 170, + 128, + 138, + 255, + 170, + 127, + 137, + 255, + 171, + 125, + 136, + 255, + 173, + 124, + 136, + 255, + 171, + 124, + 135, + 255, + 171, + 124, + 135, + 255, + 172, + 125, + 136, + 255, + 173, + 126, + 137, + 255, + 170, + 124, + 134, + 255, + 169, + 129, + 137, + 255, + 172, + 131, + 139, + 255, + 174, + 127, + 137, + 255, + 176, + 125, + 134, + 255, + 178, + 125, + 135, + 255, + 178, + 122, + 133, + 255, + 181, + 122, + 134, + 255, + 180, + 124, + 135, + 255, + 182, + 124, + 136, + 255, + 183, + 124, + 136, + 255, + 185, + 124, + 137, + 255, + 188, + 126, + 137, + 255, + 189, + 127, + 138, + 255, + 189, + 127, + 138, + 255, + 192, + 130, + 141, + 255, + 193, + 136, + 145, + 255, + 197, + 167, + 167, + 255, + 194, + 190, + 181, + 255, + 198, + 189, + 182, + 255, + 199, + 192, + 182, + 255, + 201, + 194, + 184, + 255, + 201, + 194, + 184, + 255, + 201, + 194, + 184, + 255, + 200, + 195, + 183, + 255, + 207, + 194, + 179, + 255, + 209, + 197, + 185, + 255, + 209, + 203, + 196, + 255, + 211, + 218, + 219, + 255, + 217, + 219, + 216, + 255, + 208, + 204, + 195, + 255, + 208, + 199, + 187, + 255, + 209, + 199, + 187, + 255, + 210, + 202, + 189, + 255, + 212, + 204, + 191, + 255, + 212, + 206, + 192, + 255, + 212, + 207, + 195, + 255, + 217, + 205, + 193, + 255, + 211, + 155, + 156, + 255, + 221, + 141, + 150, + 255, + 221, + 138, + 146, + 255, + 223, + 140, + 148, + 255, + 223, + 140, + 148, + 255, + 223, + 140, + 148, + 255, + 223, + 141, + 147, + 255, + 224, + 141, + 148, + 255, + 223, + 141, + 147, + 255, + 224, + 141, + 148, + 255, + 221, + 144, + 146, + 255, + 228, + 138, + 145, + 255, + 168, + 118, + 138, + 255, + 35, + 30, + 52, + 255, + 18, + 14, + 37, + 255, + 13, + 11, + 33, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 13, + 14, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 14, + 15, + 36, + 255, + 15, + 15, + 42, + 255, + 15, + 15, + 41, + 255, + 15, + 15, + 40, + 255, + 16, + 16, + 41, + 255, + 19, + 19, + 46, + 255, + 19, + 19, + 47, + 255, + 19, + 19, + 47, + 255, + 18, + 18, + 45, + 255, + 20, + 20, + 48, + 255, + 21, + 21, + 49, + 255, + 22, + 22, + 50, + 255, + 24, + 24, + 52, + 255, + 28, + 28, + 53, + 255, + 34, + 31, + 56, + 255, + 35, + 35, + 62, + 255, + 31, + 33, + 64, + 255, + 34, + 32, + 63, + 255, + 34, + 33, + 65, + 255, + 36, + 37, + 68, + 255, + 41, + 44, + 76, + 255, + 73, + 80, + 110, + 255, + 48, + 53, + 94, + 255, + 45, + 49, + 97, + 255, + 45, + 49, + 96, + 255, + 45, + 49, + 97, + 255, + 46, + 50, + 98, + 255, + 49, + 53, + 101, + 255, + 51, + 55, + 103, + 255, + 51, + 55, + 103, + 255, + 52, + 56, + 104, + 255, + 54, + 58, + 106, + 255, + 55, + 59, + 107, + 255, + 52, + 58, + 106, + 255, + 52, + 58, + 108, + 255, + 52, + 58, + 109, + 255, + 56, + 62, + 114, + 255, + 51, + 55, + 103, + 255, + 48, + 50, + 98, + 255, + 48, + 50, + 97, + 255, + 49, + 50, + 96, + 255, + 49, + 51, + 99, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 53, + 55, + 103, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 56, + 58, + 106, + 255, + 57, + 59, + 107, + 255, + 58, + 60, + 108, + 255, + 59, + 61, + 109, + 255, + 61, + 64, + 110, + 255, + 63, + 66, + 111, + 255, + 68, + 71, + 115, + 255, + 72, + 77, + 123, + 255, + 86, + 87, + 126, + 255, + 106, + 104, + 132, + 255, + 151, + 146, + 166, + 255, + 210, + 201, + 207, + 255, + 207, + 200, + 198, + 255, + 206, + 199, + 196, + 255, + 202, + 195, + 197, + 255, + 203, + 194, + 195, + 255, + 202, + 193, + 194, + 255, + 201, + 192, + 193, + 255, + 200, + 191, + 192, + 255, + 197, + 192, + 189, + 255, + 198, + 189, + 189, + 255, + 198, + 186, + 188, + 255, + 189, + 175, + 180, + 255, + 162, + 151, + 156, + 255, + 192, + 182, + 184, + 255, + 192, + 182, + 182, + 255, + 190, + 180, + 179, + 255, + 189, + 177, + 179, + 255, + 190, + 175, + 178, + 255, + 184, + 166, + 170, + 255, + 187, + 171, + 174, + 255, + 186, + 174, + 176, + 255, + 185, + 173, + 175, + 255, + 183, + 171, + 173, + 255, + 182, + 170, + 172, + 255, + 180, + 172, + 170, + 255, + 179, + 171, + 171, + 255, + 178, + 169, + 172, + 255, + 176, + 167, + 170, + 255, + 176, + 167, + 171, + 255, + 175, + 166, + 170, + 255, + 175, + 166, + 170, + 255, + 174, + 165, + 169, + 255, + 172, + 166, + 168, + 255, + 166, + 139, + 150, + 255, + 170, + 128, + 146, + 255, + 167, + 124, + 144, + 255, + 144, + 115, + 138, + 255, + 85, + 77, + 116, + 255, + 63, + 57, + 93, + 255, + 26, + 28, + 51, + 255, + 26, + 28, + 50, + 255, + 8, + 10, + 22, + 255, + 7, + 8, + 14, + 255, + 3, + 3, + 5, + 255, + 1, + 1, + 3, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 3, + 255, + 1, + 1, + 4, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 21, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 28, + 255, + 2, + 0, + 21, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 14, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 8, + 255, + 3, + 1, + 12, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 17, + 255, + 1, + 2, + 22, + 255, + 1, + 1, + 26, + 255, + 0, + 1, + 23, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 17, + 255, + 2, + 1, + 18, + 255, + 1, + 0, + 17, + 255, + 0, + 1, + 14, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 17, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 9, + 255, + 1, + 1, + 12, + 255, + 0, + 2, + 14, + 255, + 4, + 6, + 21, + 255, + 14, + 17, + 34, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 21, + 20, + 41, + 255, + 21, + 22, + 43, + 255, + 23, + 24, + 42, + 255, + 26, + 28, + 42, + 255, + 29, + 31, + 44, + 255, + 33, + 35, + 46, + 255, + 32, + 36, + 48, + 255, + 29, + 35, + 48, + 255, + 29, + 36, + 49, + 255, + 30, + 36, + 50, + 255, + 30, + 36, + 50, + 255, + 31, + 37, + 51, + 255, + 32, + 38, + 52, + 255, + 34, + 37, + 52, + 255, + 35, + 38, + 53, + 255, + 36, + 39, + 54, + 255, + 37, + 40, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 38, + 44, + 58, + 255, + 39, + 45, + 59, + 255, + 38, + 44, + 58, + 255, + 43, + 46, + 64, + 255, + 42, + 47, + 69, + 255, + 42, + 55, + 80, + 255, + 43, + 65, + 107, + 255, + 41, + 96, + 146, + 255, + 33, + 84, + 146, + 255, + 41, + 80, + 148, + 255, + 39, + 79, + 154, + 255, + 41, + 76, + 152, + 255, + 39, + 72, + 149, + 255, + 35, + 67, + 144, + 255, + 30, + 61, + 130, + 255, + 30, + 57, + 128, + 255, + 32, + 60, + 127, + 255, + 38, + 74, + 133, + 255, + 131, + 177, + 219, + 255, + 35, + 100, + 157, + 255, + 19, + 102, + 169, + 255, + 20, + 112, + 180, + 255, + 12, + 125, + 201, + 255, + 9, + 143, + 222, + 255, + 11, + 168, + 221, + 255, + 10, + 177, + 222, + 255, + 11, + 195, + 237, + 255, + 34, + 216, + 239, + 255, + 42, + 214, + 227, + 255, + 46, + 211, + 241, + 255, + 49, + 186, + 249, + 255, + 68, + 177, + 242, + 255, + 66, + 153, + 243, + 255, + 74, + 134, + 248, + 255, + 77, + 124, + 247, + 255, + 83, + 113, + 245, + 255, + 76, + 111, + 238, + 255, + 81, + 106, + 232, + 255, + 86, + 105, + 224, + 255, + 77, + 119, + 231, + 255, + 52, + 115, + 207, + 255, + 55, + 124, + 197, + 255, + 69, + 94, + 185, + 255, + 48, + 63, + 139, + 255, + 40, + 44, + 107, + 255, + 32, + 34, + 91, + 255, + 29, + 30, + 78, + 255, + 27, + 27, + 65, + 255, + 26, + 25, + 59, + 255, + 27, + 24, + 61, + 255, + 26, + 25, + 59, + 255, + 26, + 25, + 59, + 255, + 27, + 26, + 60, + 255, + 28, + 27, + 61, + 255, + 26, + 27, + 58, + 255, + 26, + 27, + 58, + 255, + 27, + 28, + 59, + 255, + 28, + 29, + 60, + 255, + 29, + 28, + 62, + 255, + 31, + 30, + 64, + 255, + 31, + 30, + 64, + 255, + 32, + 31, + 65, + 255, + 31, + 32, + 69, + 255, + 32, + 34, + 75, + 255, + 36, + 37, + 83, + 255, + 40, + 41, + 89, + 255, + 42, + 43, + 99, + 255, + 47, + 50, + 110, + 255, + 51, + 55, + 120, + 255, + 54, + 60, + 129, + 255, + 49, + 68, + 134, + 255, + 55, + 67, + 136, + 255, + 53, + 65, + 131, + 255, + 44, + 61, + 121, + 255, + 50, + 55, + 111, + 255, + 45, + 49, + 103, + 255, + 43, + 45, + 95, + 255, + 41, + 42, + 90, + 255, + 40, + 41, + 89, + 255, + 45, + 46, + 94, + 255, + 41, + 42, + 90, + 255, + 42, + 43, + 91, + 255, + 48, + 49, + 102, + 255, + 61, + 61, + 105, + 255, + 90, + 88, + 110, + 255, + 184, + 181, + 182, + 255, + 181, + 178, + 176, + 255, + 183, + 177, + 171, + 255, + 179, + 175, + 173, + 255, + 184, + 184, + 189, + 255, + 180, + 178, + 180, + 255, + 176, + 171, + 173, + 255, + 175, + 171, + 170, + 255, + 173, + 172, + 168, + 255, + 176, + 168, + 166, + 255, + 170, + 145, + 149, + 255, + 173, + 133, + 142, + 255, + 175, + 126, + 138, + 255, + 173, + 124, + 136, + 255, + 172, + 123, + 135, + 255, + 173, + 123, + 135, + 255, + 173, + 123, + 135, + 255, + 172, + 122, + 134, + 255, + 172, + 122, + 134, + 255, + 172, + 122, + 134, + 255, + 172, + 122, + 134, + 255, + 174, + 122, + 135, + 255, + 173, + 122, + 135, + 255, + 175, + 123, + 136, + 255, + 175, + 123, + 136, + 255, + 174, + 122, + 134, + 255, + 176, + 123, + 135, + 255, + 177, + 123, + 136, + 255, + 178, + 123, + 136, + 255, + 178, + 124, + 134, + 255, + 181, + 125, + 136, + 255, + 182, + 124, + 136, + 255, + 184, + 125, + 137, + 255, + 186, + 126, + 136, + 255, + 187, + 127, + 137, + 255, + 188, + 128, + 138, + 255, + 189, + 129, + 139, + 255, + 193, + 142, + 149, + 255, + 194, + 182, + 176, + 255, + 193, + 187, + 179, + 255, + 193, + 190, + 181, + 255, + 196, + 189, + 179, + 255, + 198, + 191, + 181, + 255, + 199, + 192, + 182, + 255, + 200, + 193, + 183, + 255, + 201, + 193, + 180, + 255, + 203, + 194, + 180, + 255, + 205, + 194, + 182, + 255, + 204, + 194, + 183, + 255, + 205, + 194, + 190, + 255, + 206, + 193, + 186, + 255, + 210, + 194, + 186, + 255, + 211, + 194, + 184, + 255, + 209, + 199, + 187, + 255, + 209, + 201, + 188, + 255, + 210, + 202, + 189, + 255, + 210, + 204, + 190, + 255, + 212, + 205, + 194, + 255, + 222, + 200, + 192, + 255, + 217, + 152, + 156, + 255, + 219, + 141, + 149, + 255, + 220, + 139, + 146, + 255, + 220, + 139, + 146, + 255, + 221, + 140, + 147, + 255, + 222, + 141, + 148, + 255, + 222, + 139, + 146, + 255, + 223, + 141, + 147, + 255, + 224, + 141, + 148, + 255, + 224, + 141, + 148, + 255, + 220, + 144, + 147, + 255, + 229, + 139, + 146, + 255, + 216, + 143, + 152, + 255, + 57, + 37, + 62, + 255, + 26, + 21, + 44, + 255, + 16, + 12, + 35, + 255, + 15, + 13, + 35, + 255, + 14, + 13, + 35, + 255, + 13, + 14, + 35, + 255, + 14, + 15, + 36, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 15, + 15, + 43, + 255, + 16, + 16, + 44, + 255, + 17, + 17, + 44, + 255, + 19, + 19, + 46, + 255, + 20, + 19, + 49, + 255, + 19, + 19, + 45, + 255, + 18, + 18, + 44, + 255, + 19, + 18, + 48, + 255, + 21, + 21, + 49, + 255, + 23, + 23, + 51, + 255, + 24, + 24, + 52, + 255, + 28, + 28, + 56, + 255, + 35, + 32, + 67, + 255, + 56, + 44, + 72, + 255, + 62, + 47, + 76, + 255, + 60, + 49, + 82, + 255, + 45, + 43, + 71, + 255, + 41, + 40, + 70, + 255, + 37, + 37, + 71, + 255, + 39, + 42, + 76, + 255, + 49, + 54, + 93, + 255, + 46, + 50, + 95, + 255, + 46, + 50, + 97, + 255, + 47, + 52, + 95, + 255, + 48, + 52, + 100, + 255, + 49, + 53, + 101, + 255, + 50, + 54, + 102, + 255, + 52, + 56, + 104, + 255, + 53, + 56, + 107, + 255, + 54, + 57, + 108, + 255, + 54, + 57, + 108, + 255, + 55, + 58, + 109, + 255, + 53, + 59, + 107, + 255, + 53, + 59, + 109, + 255, + 53, + 59, + 110, + 255, + 54, + 60, + 112, + 255, + 56, + 59, + 110, + 255, + 49, + 51, + 101, + 255, + 50, + 52, + 100, + 255, + 51, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 52, + 54, + 102, + 255, + 53, + 55, + 103, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 55, + 57, + 105, + 255, + 56, + 58, + 106, + 255, + 57, + 61, + 108, + 255, + 58, + 62, + 109, + 255, + 59, + 63, + 110, + 255, + 61, + 65, + 112, + 255, + 63, + 66, + 112, + 255, + 67, + 70, + 114, + 255, + 73, + 77, + 116, + 255, + 80, + 84, + 122, + 255, + 96, + 98, + 129, + 255, + 119, + 119, + 138, + 255, + 207, + 201, + 211, + 255, + 206, + 196, + 202, + 255, + 210, + 200, + 199, + 255, + 208, + 200, + 197, + 255, + 207, + 199, + 197, + 255, + 204, + 198, + 199, + 255, + 205, + 196, + 197, + 255, + 204, + 195, + 196, + 255, + 202, + 193, + 194, + 255, + 201, + 192, + 193, + 255, + 199, + 194, + 191, + 255, + 201, + 191, + 192, + 255, + 204, + 187, + 194, + 255, + 183, + 164, + 174, + 255, + 203, + 193, + 195, + 255, + 195, + 185, + 186, + 255, + 195, + 185, + 186, + 255, + 193, + 183, + 184, + 255, + 193, + 181, + 183, + 255, + 191, + 181, + 182, + 255, + 188, + 176, + 178, + 255, + 190, + 172, + 176, + 255, + 187, + 177, + 178, + 255, + 186, + 176, + 177, + 255, + 185, + 175, + 176, + 255, + 184, + 174, + 175, + 255, + 182, + 174, + 172, + 255, + 181, + 173, + 173, + 255, + 180, + 171, + 174, + 255, + 179, + 170, + 173, + 255, + 178, + 169, + 175, + 255, + 177, + 168, + 174, + 255, + 177, + 168, + 174, + 255, + 175, + 166, + 172, + 255, + 173, + 167, + 171, + 255, + 168, + 140, + 153, + 255, + 171, + 129, + 149, + 255, + 168, + 124, + 146, + 255, + 159, + 128, + 150, + 255, + 81, + 72, + 110, + 255, + 67, + 59, + 98, + 255, + 22, + 27, + 50, + 255, + 38, + 41, + 66, + 255, + 19, + 21, + 37, + 255, + 9, + 12, + 18, + 255, + 4, + 4, + 6, + 255, + 2, + 2, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 4, + 255, + 1, + 0, + 5, + 255, + 1, + 2, + 16, + 255, + 2, + 2, + 27, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 2, + 0, + 21, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 14, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 9, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 0, + 1, + 6, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 8, + 255, + 1, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 1, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 18, + 255, + 0, + 1, + 14, + 255, + 0, + 0, + 17, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 20, + 255, + 0, + 2, + 18, + 255, + 0, + 1, + 16, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 15, + 255, + 0, + 2, + 12, + 255, + 0, + 0, + 19, + 255, + 0, + 1, + 19, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 15, + 255, + 2, + 1, + 16, + 255, + 3, + 2, + 10, + 255, + 3, + 2, + 16, + 255, + 3, + 6, + 24, + 255, + 15, + 19, + 39, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 21, + 20, + 41, + 255, + 21, + 22, + 44, + 255, + 23, + 24, + 43, + 255, + 23, + 25, + 41, + 255, + 24, + 26, + 39, + 255, + 31, + 35, + 46, + 255, + 30, + 35, + 47, + 255, + 29, + 36, + 49, + 255, + 28, + 36, + 50, + 255, + 29, + 37, + 50, + 255, + 29, + 37, + 50, + 255, + 30, + 38, + 51, + 255, + 31, + 39, + 52, + 255, + 34, + 37, + 52, + 255, + 35, + 38, + 53, + 255, + 36, + 39, + 54, + 255, + 37, + 40, + 55, + 255, + 37, + 43, + 57, + 255, + 36, + 42, + 56, + 255, + 38, + 44, + 58, + 255, + 39, + 45, + 59, + 255, + 39, + 45, + 59, + 255, + 43, + 46, + 66, + 255, + 43, + 48, + 72, + 255, + 46, + 59, + 86, + 255, + 40, + 62, + 109, + 255, + 38, + 79, + 140, + 255, + 46, + 78, + 155, + 255, + 44, + 103, + 172, + 255, + 62, + 90, + 171, + 255, + 58, + 89, + 169, + 255, + 55, + 86, + 166, + 255, + 47, + 78, + 158, + 255, + 39, + 73, + 146, + 255, + 36, + 63, + 141, + 255, + 35, + 63, + 137, + 255, + 41, + 77, + 137, + 255, + 64, + 105, + 149, + 255, + 40, + 98, + 160, + 255, + 20, + 94, + 163, + 255, + 22, + 104, + 169, + 255, + 12, + 120, + 199, + 255, + 12, + 137, + 219, + 255, + 7, + 150, + 208, + 255, + 13, + 162, + 214, + 255, + 15, + 194, + 224, + 255, + 50, + 210, + 217, + 255, + 178, + 252, + 255, + 255, + 94, + 214, + 238, + 255, + 68, + 205, + 246, + 255, + 144, + 251, + 255, + 255, + 74, + 161, + 255, + 255, + 73, + 135, + 236, + 255, + 72, + 130, + 248, + 255, + 80, + 118, + 245, + 255, + 82, + 118, + 255, + 255, + 83, + 108, + 237, + 255, + 86, + 107, + 247, + 255, + 79, + 118, + 231, + 255, + 80, + 123, + 227, + 255, + 81, + 115, + 229, + 255, + 74, + 105, + 204, + 255, + 53, + 70, + 152, + 255, + 47, + 53, + 121, + 255, + 38, + 40, + 100, + 255, + 32, + 32, + 82, + 255, + 28, + 27, + 68, + 255, + 28, + 26, + 62, + 255, + 29, + 26, + 63, + 255, + 29, + 26, + 61, + 255, + 29, + 26, + 61, + 255, + 29, + 26, + 61, + 255, + 30, + 27, + 62, + 255, + 29, + 30, + 61, + 255, + 29, + 30, + 61, + 255, + 29, + 30, + 61, + 255, + 30, + 31, + 62, + 255, + 32, + 29, + 64, + 255, + 33, + 30, + 65, + 255, + 34, + 31, + 66, + 255, + 35, + 32, + 67, + 255, + 31, + 33, + 71, + 255, + 35, + 35, + 75, + 255, + 38, + 37, + 80, + 255, + 41, + 38, + 82, + 255, + 38, + 41, + 91, + 255, + 42, + 45, + 98, + 255, + 46, + 48, + 106, + 255, + 47, + 51, + 112, + 255, + 51, + 53, + 113, + 255, + 53, + 52, + 118, + 255, + 52, + 50, + 116, + 255, + 50, + 48, + 106, + 255, + 46, + 48, + 99, + 255, + 43, + 45, + 93, + 255, + 43, + 44, + 91, + 255, + 42, + 43, + 88, + 255, + 45, + 46, + 92, + 255, + 45, + 46, + 92, + 255, + 45, + 46, + 92, + 255, + 46, + 47, + 93, + 255, + 50, + 53, + 95, + 255, + 67, + 66, + 104, + 255, + 108, + 104, + 120, + 255, + 181, + 177, + 169, + 255, + 185, + 179, + 181, + 255, + 184, + 176, + 176, + 255, + 179, + 176, + 177, + 255, + 179, + 182, + 184, + 255, + 177, + 174, + 174, + 255, + 178, + 171, + 171, + 255, + 177, + 171, + 170, + 255, + 173, + 174, + 169, + 255, + 168, + 152, + 153, + 255, + 170, + 136, + 143, + 255, + 176, + 127, + 139, + 255, + 175, + 125, + 137, + 255, + 173, + 123, + 135, + 255, + 170, + 122, + 134, + 255, + 171, + 123, + 135, + 255, + 170, + 124, + 135, + 255, + 169, + 121, + 133, + 255, + 169, + 121, + 133, + 255, + 169, + 121, + 133, + 255, + 169, + 121, + 133, + 255, + 171, + 123, + 137, + 255, + 172, + 122, + 137, + 255, + 172, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 174, + 120, + 134, + 255, + 174, + 122, + 135, + 255, + 175, + 123, + 136, + 255, + 174, + 123, + 136, + 255, + 177, + 124, + 134, + 255, + 177, + 122, + 133, + 255, + 181, + 125, + 136, + 255, + 183, + 125, + 137, + 255, + 184, + 124, + 134, + 255, + 185, + 125, + 135, + 255, + 185, + 125, + 135, + 255, + 189, + 129, + 139, + 255, + 189, + 141, + 147, + 255, + 191, + 188, + 179, + 255, + 192, + 185, + 177, + 255, + 188, + 190, + 179, + 255, + 195, + 188, + 178, + 255, + 194, + 187, + 177, + 255, + 197, + 190, + 180, + 255, + 199, + 192, + 182, + 255, + 201, + 192, + 178, + 255, + 200, + 193, + 183, + 255, + 199, + 193, + 186, + 255, + 200, + 194, + 187, + 255, + 200, + 196, + 176, + 255, + 201, + 197, + 177, + 255, + 202, + 198, + 180, + 255, + 204, + 198, + 181, + 255, + 208, + 198, + 186, + 255, + 208, + 200, + 187, + 255, + 209, + 201, + 188, + 255, + 209, + 203, + 189, + 255, + 212, + 206, + 194, + 255, + 218, + 190, + 184, + 255, + 218, + 147, + 153, + 255, + 216, + 140, + 148, + 255, + 219, + 140, + 146, + 255, + 219, + 140, + 146, + 255, + 219, + 140, + 146, + 255, + 220, + 141, + 147, + 255, + 222, + 139, + 146, + 255, + 223, + 141, + 147, + 255, + 223, + 141, + 147, + 255, + 223, + 141, + 147, + 255, + 224, + 142, + 148, + 255, + 223, + 143, + 146, + 255, + 224, + 144, + 144, + 255, + 81, + 42, + 72, + 255, + 30, + 23, + 47, + 255, + 19, + 14, + 37, + 255, + 16, + 12, + 35, + 255, + 15, + 13, + 35, + 255, + 14, + 15, + 36, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 15, + 16, + 37, + 255, + 16, + 17, + 39, + 255, + 17, + 17, + 44, + 255, + 18, + 17, + 49, + 255, + 22, + 20, + 56, + 255, + 19, + 18, + 49, + 255, + 19, + 19, + 44, + 255, + 20, + 20, + 46, + 255, + 21, + 20, + 52, + 255, + 22, + 22, + 50, + 255, + 24, + 24, + 52, + 255, + 27, + 27, + 55, + 255, + 36, + 36, + 64, + 255, + 58, + 59, + 79, + 255, + 192, + 175, + 182, + 255, + 221, + 195, + 197, + 255, + 144, + 120, + 126, + 255, + 70, + 69, + 95, + 255, + 54, + 53, + 83, + 255, + 45, + 45, + 80, + 255, + 41, + 43, + 80, + 255, + 54, + 59, + 102, + 255, + 43, + 47, + 94, + 255, + 48, + 52, + 99, + 255, + 49, + 54, + 95, + 255, + 49, + 53, + 101, + 255, + 50, + 54, + 102, + 255, + 52, + 56, + 104, + 255, + 54, + 58, + 106, + 255, + 54, + 57, + 109, + 255, + 55, + 58, + 110, + 255, + 57, + 60, + 112, + 255, + 58, + 61, + 113, + 255, + 56, + 62, + 110, + 255, + 56, + 62, + 112, + 255, + 55, + 61, + 112, + 255, + 56, + 62, + 114, + 255, + 60, + 63, + 116, + 255, + 54, + 56, + 107, + 255, + 52, + 54, + 103, + 255, + 53, + 53, + 103, + 255, + 53, + 55, + 103, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 56, + 58, + 106, + 255, + 58, + 60, + 108, + 255, + 59, + 61, + 109, + 255, + 59, + 61, + 109, + 255, + 60, + 62, + 110, + 255, + 60, + 64, + 111, + 255, + 61, + 65, + 112, + 255, + 64, + 68, + 115, + 255, + 66, + 70, + 117, + 255, + 70, + 73, + 118, + 255, + 79, + 82, + 124, + 255, + 88, + 92, + 129, + 255, + 108, + 113, + 146, + 255, + 151, + 149, + 163, + 255, + 210, + 208, + 210, + 255, + 211, + 206, + 201, + 255, + 210, + 202, + 197, + 255, + 206, + 203, + 203, + 255, + 206, + 202, + 203, + 255, + 207, + 201, + 202, + 255, + 207, + 200, + 198, + 255, + 207, + 198, + 199, + 255, + 206, + 197, + 198, + 255, + 205, + 196, + 197, + 255, + 204, + 195, + 196, + 255, + 201, + 196, + 193, + 255, + 203, + 192, + 196, + 255, + 188, + 169, + 179, + 255, + 184, + 160, + 174, + 255, + 197, + 187, + 188, + 255, + 199, + 189, + 190, + 255, + 197, + 187, + 189, + 255, + 195, + 184, + 188, + 255, + 197, + 184, + 186, + 255, + 192, + 185, + 185, + 255, + 192, + 180, + 182, + 255, + 189, + 171, + 175, + 255, + 189, + 180, + 181, + 255, + 187, + 178, + 179, + 255, + 187, + 178, + 179, + 255, + 186, + 177, + 178, + 255, + 185, + 177, + 175, + 255, + 184, + 176, + 176, + 255, + 182, + 173, + 176, + 255, + 181, + 172, + 175, + 255, + 181, + 171, + 179, + 255, + 180, + 170, + 178, + 255, + 179, + 169, + 177, + 255, + 177, + 167, + 175, + 255, + 173, + 166, + 173, + 255, + 169, + 141, + 156, + 255, + 172, + 130, + 151, + 255, + 170, + 126, + 149, + 255, + 161, + 129, + 149, + 255, + 86, + 76, + 113, + 255, + 71, + 60, + 100, + 255, + 24, + 25, + 55, + 255, + 25, + 27, + 53, + 255, + 26, + 29, + 46, + 255, + 12, + 16, + 29, + 255, + 5, + 4, + 9, + 255, + 3, + 2, + 7, + 255, + 2, + 2, + 4, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 1, + 4, + 255, + 0, + 1, + 10, + 255, + 0, + 1, + 22, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 2, + 2, + 26, + 255, + 2, + 2, + 26, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 0, + 2, + 25, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 17, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 1, + 7, + 255, + 0, + 1, + 5, + 255, + 0, + 1, + 5, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 13, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 19, + 255, + 2, + 0, + 23, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 14, + 255, + 1, + 0, + 18, + 255, + 2, + 1, + 20, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 13, + 255, + 2, + 1, + 17, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 19, + 255, + 1, + 0, + 30, + 255, + 3, + 2, + 35, + 255, + 2, + 1, + 32, + 255, + 1, + 1, + 27, + 255, + 3, + 3, + 28, + 255, + 6, + 7, + 29, + 255, + 19, + 20, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 21, + 20, + 41, + 255, + 22, + 20, + 42, + 255, + 24, + 22, + 44, + 255, + 22, + 23, + 44, + 255, + 23, + 25, + 46, + 255, + 29, + 32, + 47, + 255, + 31, + 34, + 49, + 255, + 31, + 34, + 49, + 255, + 31, + 34, + 49, + 255, + 29, + 35, + 49, + 255, + 31, + 37, + 51, + 255, + 32, + 38, + 52, + 255, + 32, + 38, + 52, + 255, + 32, + 38, + 52, + 255, + 33, + 39, + 53, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 39, + 45, + 59, + 255, + 38, + 45, + 63, + 255, + 41, + 46, + 65, + 255, + 42, + 50, + 72, + 255, + 45, + 60, + 91, + 255, + 49, + 71, + 127, + 255, + 48, + 77, + 152, + 255, + 51, + 89, + 171, + 255, + 58, + 109, + 188, + 255, + 69, + 139, + 207, + 255, + 45, + 110, + 182, + 255, + 53, + 112, + 187, + 255, + 53, + 93, + 177, + 255, + 44, + 96, + 168, + 255, + 36, + 72, + 148, + 255, + 42, + 73, + 145, + 255, + 41, + 81, + 141, + 255, + 58, + 100, + 148, + 255, + 35, + 84, + 145, + 255, + 25, + 86, + 157, + 255, + 27, + 95, + 168, + 255, + 26, + 112, + 188, + 255, + 18, + 131, + 218, + 255, + 16, + 137, + 209, + 255, + 21, + 151, + 214, + 255, + 31, + 195, + 231, + 255, + 39, + 215, + 237, + 255, + 77, + 214, + 224, + 255, + 75, + 224, + 248, + 255, + 55, + 219, + 245, + 255, + 55, + 194, + 236, + 255, + 67, + 165, + 246, + 255, + 72, + 140, + 255, + 255, + 75, + 128, + 250, + 255, + 77, + 124, + 249, + 255, + 75, + 114, + 244, + 255, + 84, + 117, + 250, + 255, + 85, + 110, + 245, + 255, + 83, + 116, + 252, + 255, + 96, + 137, + 246, + 255, + 87, + 126, + 248, + 255, + 80, + 117, + 222, + 255, + 60, + 82, + 169, + 255, + 48, + 56, + 127, + 255, + 41, + 43, + 107, + 255, + 33, + 35, + 86, + 255, + 29, + 31, + 72, + 255, + 29, + 29, + 64, + 255, + 29, + 27, + 63, + 255, + 30, + 28, + 60, + 255, + 30, + 28, + 60, + 255, + 30, + 28, + 60, + 255, + 31, + 29, + 61, + 255, + 32, + 29, + 64, + 255, + 33, + 30, + 65, + 255, + 32, + 29, + 64, + 255, + 33, + 30, + 65, + 255, + 34, + 31, + 68, + 255, + 34, + 31, + 68, + 255, + 36, + 33, + 70, + 255, + 36, + 33, + 70, + 255, + 34, + 34, + 70, + 255, + 36, + 36, + 73, + 255, + 38, + 37, + 77, + 255, + 39, + 38, + 78, + 255, + 39, + 40, + 87, + 255, + 42, + 43, + 91, + 255, + 43, + 43, + 94, + 255, + 45, + 45, + 97, + 255, + 45, + 46, + 102, + 255, + 47, + 48, + 104, + 255, + 45, + 46, + 100, + 255, + 44, + 46, + 98, + 255, + 44, + 45, + 91, + 255, + 42, + 43, + 89, + 255, + 42, + 43, + 89, + 255, + 46, + 47, + 93, + 255, + 43, + 46, + 88, + 255, + 47, + 49, + 97, + 255, + 45, + 45, + 96, + 255, + 48, + 46, + 95, + 255, + 50, + 51, + 95, + 255, + 64, + 67, + 109, + 255, + 125, + 126, + 147, + 255, + 182, + 180, + 174, + 255, + 185, + 180, + 175, + 255, + 183, + 178, + 174, + 255, + 183, + 178, + 174, + 255, + 181, + 176, + 173, + 255, + 178, + 174, + 173, + 255, + 177, + 173, + 172, + 255, + 178, + 171, + 171, + 255, + 176, + 164, + 166, + 255, + 175, + 139, + 149, + 255, + 175, + 130, + 143, + 255, + 175, + 127, + 141, + 255, + 172, + 125, + 139, + 255, + 172, + 124, + 138, + 255, + 171, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 170, + 122, + 136, + 255, + 172, + 121, + 136, + 255, + 172, + 121, + 136, + 255, + 171, + 120, + 135, + 255, + 171, + 120, + 135, + 255, + 169, + 122, + 132, + 255, + 169, + 122, + 132, + 255, + 170, + 123, + 133, + 255, + 170, + 123, + 133, + 255, + 174, + 122, + 135, + 255, + 173, + 122, + 135, + 255, + 172, + 124, + 136, + 255, + 178, + 132, + 143, + 255, + 166, + 124, + 135, + 255, + 183, + 123, + 134, + 255, + 177, + 125, + 132, + 255, + 181, + 123, + 136, + 255, + 181, + 125, + 136, + 255, + 182, + 126, + 137, + 255, + 183, + 133, + 142, + 255, + 166, + 126, + 132, + 255, + 186, + 166, + 163, + 255, + 188, + 184, + 175, + 255, + 186, + 186, + 176, + 255, + 192, + 186, + 178, + 255, + 194, + 187, + 179, + 255, + 193, + 186, + 178, + 255, + 196, + 188, + 181, + 255, + 197, + 190, + 182, + 255, + 196, + 192, + 181, + 255, + 198, + 194, + 183, + 255, + 198, + 192, + 182, + 255, + 200, + 193, + 183, + 255, + 202, + 196, + 184, + 255, + 203, + 197, + 185, + 255, + 203, + 197, + 185, + 255, + 204, + 198, + 186, + 255, + 205, + 199, + 185, + 255, + 206, + 200, + 186, + 255, + 208, + 202, + 188, + 255, + 209, + 203, + 189, + 255, + 206, + 201, + 187, + 255, + 209, + 171, + 166, + 255, + 214, + 146, + 151, + 255, + 218, + 139, + 145, + 255, + 219, + 138, + 147, + 255, + 220, + 139, + 148, + 255, + 221, + 140, + 149, + 255, + 221, + 140, + 149, + 255, + 220, + 138, + 148, + 255, + 220, + 138, + 148, + 255, + 221, + 139, + 149, + 255, + 222, + 140, + 150, + 255, + 225, + 139, + 150, + 255, + 222, + 141, + 145, + 255, + 218, + 139, + 150, + 255, + 164, + 111, + 129, + 255, + 42, + 33, + 60, + 255, + 21, + 19, + 42, + 255, + 14, + 15, + 36, + 255, + 16, + 14, + 36, + 255, + 16, + 17, + 38, + 255, + 16, + 16, + 40, + 255, + 15, + 15, + 41, + 255, + 16, + 16, + 42, + 255, + 17, + 18, + 40, + 255, + 18, + 16, + 53, + 255, + 23, + 21, + 61, + 255, + 19, + 18, + 50, + 255, + 18, + 19, + 47, + 255, + 19, + 20, + 48, + 255, + 22, + 23, + 52, + 255, + 20, + 21, + 52, + 255, + 23, + 22, + 54, + 255, + 25, + 24, + 55, + 255, + 33, + 32, + 62, + 255, + 49, + 48, + 78, + 255, + 96, + 83, + 101, + 255, + 211, + 203, + 201, + 255, + 217, + 212, + 200, + 255, + 219, + 215, + 206, + 255, + 220, + 195, + 201, + 255, + 89, + 83, + 103, + 255, + 62, + 62, + 94, + 255, + 54, + 47, + 82, + 255, + 44, + 46, + 86, + 255, + 49, + 51, + 99, + 255, + 50, + 53, + 105, + 255, + 50, + 53, + 104, + 255, + 51, + 55, + 103, + 255, + 52, + 56, + 104, + 255, + 53, + 57, + 105, + 255, + 55, + 59, + 107, + 255, + 57, + 59, + 110, + 255, + 58, + 60, + 111, + 255, + 59, + 61, + 112, + 255, + 60, + 62, + 113, + 255, + 55, + 63, + 110, + 255, + 55, + 63, + 112, + 255, + 56, + 64, + 114, + 255, + 58, + 65, + 117, + 255, + 62, + 68, + 119, + 255, + 54, + 59, + 109, + 255, + 55, + 57, + 106, + 255, + 55, + 57, + 105, + 255, + 55, + 57, + 106, + 255, + 56, + 58, + 107, + 255, + 57, + 59, + 108, + 255, + 58, + 60, + 109, + 255, + 59, + 62, + 113, + 255, + 60, + 64, + 112, + 255, + 60, + 64, + 111, + 255, + 62, + 66, + 112, + 255, + 65, + 66, + 114, + 255, + 67, + 67, + 119, + 255, + 71, + 73, + 121, + 255, + 75, + 78, + 119, + 255, + 87, + 89, + 129, + 255, + 102, + 101, + 136, + 255, + 128, + 126, + 145, + 255, + 219, + 216, + 220, + 255, + 217, + 212, + 209, + 255, + 211, + 206, + 203, + 255, + 211, + 206, + 203, + 255, + 210, + 205, + 202, + 255, + 211, + 202, + 203, + 255, + 210, + 201, + 202, + 255, + 210, + 201, + 202, + 255, + 209, + 200, + 201, + 255, + 208, + 202, + 202, + 255, + 207, + 201, + 201, + 255, + 204, + 200, + 199, + 255, + 202, + 199, + 198, + 255, + 204, + 197, + 199, + 255, + 195, + 175, + 185, + 255, + 178, + 159, + 170, + 255, + 208, + 200, + 203, + 255, + 201, + 191, + 192, + 255, + 200, + 190, + 191, + 255, + 200, + 190, + 191, + 255, + 199, + 189, + 190, + 255, + 198, + 188, + 187, + 255, + 196, + 186, + 185, + 255, + 193, + 183, + 182, + 255, + 190, + 180, + 179, + 255, + 190, + 181, + 184, + 255, + 189, + 180, + 183, + 255, + 189, + 180, + 183, + 255, + 187, + 178, + 181, + 255, + 188, + 177, + 183, + 255, + 186, + 177, + 182, + 255, + 183, + 177, + 181, + 255, + 181, + 176, + 180, + 255, + 181, + 175, + 179, + 255, + 180, + 174, + 178, + 255, + 179, + 173, + 177, + 255, + 177, + 171, + 175, + 255, + 176, + 165, + 174, + 255, + 172, + 139, + 156, + 255, + 175, + 130, + 151, + 255, + 171, + 128, + 148, + 255, + 152, + 118, + 142, + 255, + 87, + 77, + 110, + 255, + 71, + 62, + 105, + 255, + 23, + 24, + 53, + 255, + 24, + 25, + 52, + 255, + 26, + 29, + 48, + 255, + 25, + 28, + 46, + 255, + 9, + 9, + 17, + 255, + 4, + 5, + 10, + 255, + 2, + 3, + 6, + 255, + 0, + 1, + 2, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 0, + 0, + 7, + 255, + 0, + 2, + 14, + 255, + 3, + 4, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 0, + 24, + 255, + 3, + 3, + 27, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 0, + 2, + 25, + 255, + 0, + 0, + 20, + 255, + 0, + 0, + 17, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 15, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 10, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 15, + 255, + 3, + 1, + 22, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 17, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 15, + 255, + 2, + 1, + 18, + 255, + 1, + 0, + 13, + 255, + 0, + 0, + 11, + 255, + 1, + 0, + 15, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 28, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 19, + 255, + 0, + 0, + 21, + 255, + 1, + 2, + 22, + 255, + 6, + 7, + 27, + 255, + 10, + 11, + 31, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 21, + 41, + 255, + 21, + 20, + 41, + 255, + 22, + 20, + 42, + 255, + 22, + 23, + 44, + 255, + 20, + 22, + 43, + 255, + 22, + 24, + 45, + 255, + 25, + 28, + 45, + 255, + 31, + 34, + 51, + 255, + 31, + 34, + 51, + 255, + 31, + 34, + 51, + 255, + 30, + 36, + 50, + 255, + 32, + 38, + 52, + 255, + 32, + 38, + 52, + 255, + 32, + 38, + 52, + 255, + 33, + 39, + 53, + 255, + 34, + 40, + 54, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 39, + 45, + 59, + 255, + 39, + 46, + 64, + 255, + 42, + 47, + 68, + 255, + 44, + 51, + 78, + 255, + 47, + 61, + 98, + 255, + 52, + 71, + 136, + 255, + 54, + 83, + 162, + 255, + 53, + 93, + 178, + 255, + 62, + 118, + 196, + 255, + 66, + 168, + 206, + 255, + 41, + 141, + 183, + 255, + 51, + 152, + 198, + 255, + 38, + 158, + 200, + 255, + 43, + 121, + 184, + 255, + 44, + 100, + 174, + 255, + 46, + 88, + 163, + 255, + 44, + 81, + 145, + 255, + 55, + 96, + 149, + 255, + 33, + 78, + 142, + 255, + 25, + 79, + 150, + 255, + 28, + 88, + 159, + 255, + 33, + 103, + 181, + 255, + 28, + 124, + 212, + 255, + 26, + 131, + 207, + 255, + 25, + 143, + 215, + 255, + 37, + 189, + 229, + 255, + 24, + 226, + 237, + 255, + 47, + 239, + 226, + 255, + 95, + 255, + 255, + 255, + 65, + 223, + 241, + 255, + 57, + 197, + 232, + 255, + 69, + 173, + 250, + 255, + 71, + 143, + 255, + 255, + 78, + 129, + 251, + 255, + 80, + 122, + 248, + 255, + 87, + 121, + 251, + 255, + 84, + 117, + 248, + 255, + 85, + 117, + 245, + 255, + 80, + 127, + 242, + 255, + 154, + 209, + 255, + 255, + 102, + 154, + 244, + 255, + 82, + 126, + 232, + 255, + 62, + 87, + 178, + 255, + 53, + 61, + 136, + 255, + 43, + 45, + 112, + 255, + 35, + 36, + 89, + 255, + 31, + 32, + 75, + 255, + 31, + 31, + 67, + 255, + 32, + 30, + 67, + 255, + 31, + 29, + 65, + 255, + 31, + 29, + 65, + 255, + 32, + 30, + 66, + 255, + 33, + 31, + 67, + 255, + 33, + 31, + 69, + 255, + 34, + 32, + 70, + 255, + 34, + 32, + 70, + 255, + 35, + 33, + 71, + 255, + 36, + 34, + 73, + 255, + 36, + 34, + 73, + 255, + 37, + 35, + 74, + 255, + 37, + 35, + 74, + 255, + 36, + 36, + 73, + 255, + 37, + 36, + 76, + 255, + 39, + 38, + 79, + 255, + 40, + 39, + 81, + 255, + 39, + 41, + 81, + 255, + 39, + 40, + 83, + 255, + 41, + 42, + 86, + 255, + 43, + 44, + 90, + 255, + 47, + 48, + 102, + 255, + 44, + 45, + 98, + 255, + 44, + 46, + 96, + 255, + 43, + 45, + 95, + 255, + 44, + 47, + 92, + 255, + 44, + 47, + 92, + 255, + 45, + 48, + 93, + 255, + 49, + 52, + 97, + 255, + 52, + 55, + 99, + 255, + 44, + 46, + 95, + 255, + 44, + 44, + 94, + 255, + 46, + 44, + 90, + 255, + 49, + 49, + 92, + 255, + 56, + 59, + 101, + 255, + 87, + 90, + 116, + 255, + 157, + 156, + 163, + 255, + 186, + 180, + 180, + 255, + 184, + 179, + 176, + 255, + 183, + 178, + 175, + 255, + 182, + 177, + 173, + 255, + 181, + 177, + 176, + 255, + 178, + 177, + 175, + 255, + 184, + 174, + 175, + 255, + 172, + 150, + 155, + 255, + 175, + 135, + 146, + 255, + 175, + 128, + 142, + 255, + 176, + 127, + 141, + 255, + 172, + 126, + 139, + 255, + 173, + 125, + 139, + 255, + 172, + 124, + 138, + 255, + 172, + 124, + 138, + 255, + 171, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 171, + 123, + 137, + 255, + 169, + 121, + 133, + 255, + 169, + 121, + 133, + 255, + 170, + 122, + 134, + 255, + 170, + 122, + 134, + 255, + 173, + 122, + 135, + 255, + 173, + 123, + 135, + 255, + 171, + 122, + 134, + 255, + 173, + 125, + 137, + 255, + 141, + 104, + 114, + 255, + 182, + 126, + 137, + 255, + 175, + 125, + 133, + 255, + 179, + 124, + 138, + 255, + 182, + 124, + 138, + 255, + 179, + 127, + 139, + 255, + 159, + 118, + 126, + 255, + 175, + 141, + 147, + 255, + 188, + 179, + 174, + 255, + 185, + 182, + 175, + 255, + 187, + 183, + 176, + 255, + 193, + 182, + 178, + 255, + 188, + 187, + 177, + 255, + 192, + 186, + 178, + 255, + 189, + 179, + 172, + 255, + 196, + 181, + 176, + 255, + 196, + 188, + 178, + 255, + 197, + 190, + 180, + 255, + 198, + 191, + 181, + 255, + 198, + 193, + 182, + 255, + 200, + 193, + 183, + 255, + 201, + 194, + 184, + 255, + 201, + 194, + 184, + 255, + 202, + 195, + 185, + 255, + 204, + 198, + 185, + 255, + 205, + 199, + 186, + 255, + 206, + 200, + 187, + 255, + 207, + 201, + 188, + 255, + 206, + 200, + 186, + 255, + 203, + 161, + 157, + 255, + 214, + 143, + 149, + 255, + 215, + 138, + 144, + 255, + 217, + 137, + 146, + 255, + 218, + 138, + 147, + 255, + 218, + 138, + 147, + 255, + 218, + 138, + 147, + 255, + 220, + 139, + 148, + 255, + 220, + 139, + 148, + 255, + 220, + 139, + 148, + 255, + 221, + 140, + 149, + 255, + 220, + 141, + 154, + 255, + 220, + 142, + 148, + 255, + 224, + 140, + 148, + 255, + 220, + 154, + 163, + 255, + 54, + 38, + 64, + 255, + 24, + 20, + 45, + 255, + 16, + 16, + 41, + 255, + 18, + 14, + 38, + 255, + 16, + 17, + 38, + 255, + 16, + 16, + 40, + 255, + 16, + 16, + 42, + 255, + 17, + 17, + 43, + 255, + 18, + 17, + 48, + 255, + 23, + 21, + 57, + 255, + 18, + 17, + 49, + 255, + 18, + 18, + 42, + 255, + 19, + 20, + 47, + 255, + 20, + 21, + 52, + 255, + 23, + 23, + 57, + 255, + 22, + 23, + 54, + 255, + 25, + 24, + 55, + 255, + 29, + 28, + 60, + 255, + 38, + 38, + 66, + 255, + 65, + 65, + 89, + 255, + 203, + 192, + 191, + 255, + 230, + 221, + 212, + 255, + 221, + 214, + 202, + 255, + 218, + 212, + 205, + 255, + 224, + 213, + 203, + 255, + 225, + 211, + 203, + 255, + 106, + 97, + 111, + 255, + 64, + 65, + 102, + 255, + 53, + 56, + 91, + 255, + 57, + 60, + 104, + 255, + 52, + 55, + 106, + 255, + 52, + 56, + 104, + 255, + 54, + 58, + 106, + 255, + 55, + 59, + 107, + 255, + 55, + 59, + 107, + 255, + 57, + 61, + 109, + 255, + 58, + 61, + 112, + 255, + 59, + 62, + 113, + 255, + 60, + 63, + 114, + 255, + 61, + 64, + 115, + 255, + 58, + 66, + 113, + 255, + 57, + 65, + 114, + 255, + 58, + 66, + 116, + 255, + 60, + 67, + 119, + 255, + 65, + 71, + 122, + 255, + 56, + 61, + 111, + 255, + 57, + 59, + 108, + 255, + 57, + 59, + 107, + 255, + 58, + 60, + 109, + 255, + 59, + 61, + 110, + 255, + 61, + 63, + 112, + 255, + 62, + 64, + 113, + 255, + 62, + 64, + 113, + 255, + 63, + 65, + 113, + 255, + 65, + 68, + 114, + 255, + 67, + 70, + 115, + 255, + 71, + 72, + 116, + 255, + 75, + 76, + 124, + 255, + 83, + 83, + 129, + 255, + 95, + 95, + 136, + 255, + 111, + 114, + 140, + 255, + 148, + 146, + 165, + 255, + 215, + 208, + 213, + 255, + 215, + 206, + 200, + 255, + 217, + 209, + 207, + 255, + 213, + 205, + 203, + 255, + 215, + 207, + 205, + 255, + 214, + 206, + 204, + 255, + 214, + 205, + 206, + 255, + 213, + 204, + 205, + 255, + 212, + 203, + 204, + 255, + 211, + 202, + 203, + 255, + 209, + 203, + 203, + 255, + 207, + 203, + 202, + 255, + 207, + 201, + 201, + 255, + 208, + 199, + 200, + 255, + 210, + 186, + 195, + 255, + 194, + 171, + 184, + 255, + 204, + 187, + 195, + 255, + 204, + 197, + 197, + 255, + 205, + 195, + 196, + 255, + 204, + 194, + 195, + 255, + 202, + 192, + 193, + 255, + 201, + 191, + 192, + 255, + 200, + 190, + 191, + 255, + 198, + 188, + 189, + 255, + 197, + 187, + 188, + 255, + 196, + 186, + 187, + 255, + 194, + 185, + 188, + 255, + 193, + 184, + 187, + 255, + 193, + 184, + 187, + 255, + 191, + 182, + 185, + 255, + 190, + 179, + 185, + 255, + 188, + 179, + 184, + 255, + 186, + 180, + 184, + 255, + 184, + 179, + 183, + 255, + 183, + 177, + 181, + 255, + 182, + 176, + 180, + 255, + 182, + 176, + 180, + 255, + 180, + 174, + 178, + 255, + 175, + 159, + 170, + 255, + 175, + 139, + 157, + 255, + 177, + 131, + 152, + 255, + 174, + 129, + 150, + 255, + 148, + 118, + 144, + 255, + 86, + 79, + 113, + 255, + 72, + 63, + 107, + 255, + 21, + 22, + 50, + 255, + 21, + 22, + 49, + 255, + 26, + 28, + 51, + 255, + 26, + 28, + 51, + 255, + 11, + 12, + 24, + 255, + 5, + 7, + 14, + 255, + 3, + 5, + 9, + 255, + 0, + 3, + 2, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 2, + 255, + 0, + 0, + 3, + 255, + 1, + 0, + 6, + 255, + 0, + 1, + 14, + 255, + 1, + 3, + 18, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 2, + 2, + 26, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 1, + 1, + 29, + 255, + 0, + 2, + 25, + 255, + 0, + 1, + 21, + 255, + 0, + 0, + 17, + 255, + 1, + 0, + 15, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 15, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 14, + 255, + 2, + 1, + 17, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 15, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 12, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 10, + 255, + 2, + 1, + 19, + 255, + 1, + 0, + 19, + 255, + 3, + 2, + 20, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 14, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 13, + 255, + 2, + 0, + 20, + 255, + 1, + 0, + 16, + 255, + 0, + 0, + 9, + 255, + 0, + 0, + 11, + 255, + 2, + 0, + 21, + 255, + 1, + 0, + 30, + 255, + 0, + 1, + 22, + 255, + 0, + 2, + 16, + 255, + 0, + 2, + 15, + 255, + 0, + 1, + 15, + 255, + 0, + 2, + 18, + 255, + 2, + 3, + 21, + 255, + 7, + 8, + 26, + 255, + 16, + 19, + 38, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 16, + 21, + 40, + 255, + 19, + 22, + 41, + 255, + 20, + 21, + 41, + 255, + 22, + 21, + 42, + 255, + 22, + 23, + 44, + 255, + 21, + 23, + 44, + 255, + 19, + 24, + 44, + 255, + 20, + 25, + 45, + 255, + 24, + 27, + 44, + 255, + 28, + 31, + 48, + 255, + 31, + 34, + 51, + 255, + 32, + 35, + 52, + 255, + 31, + 37, + 51, + 255, + 32, + 38, + 52, + 255, + 33, + 39, + 53, + 255, + 34, + 40, + 54, + 255, + 34, + 40, + 54, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 37, + 43, + 57, + 255, + 38, + 44, + 58, + 255, + 38, + 44, + 58, + 255, + 40, + 46, + 60, + 255, + 40, + 47, + 66, + 255, + 44, + 49, + 72, + 255, + 46, + 52, + 84, + 255, + 49, + 62, + 106, + 255, + 54, + 71, + 142, + 255, + 56, + 86, + 167, + 255, + 55, + 99, + 180, + 255, + 66, + 127, + 197, + 255, + 75, + 161, + 201, + 255, + 86, + 169, + 204, + 255, + 67, + 152, + 191, + 255, + 90, + 201, + 227, + 255, + 52, + 146, + 201, + 255, + 46, + 117, + 191, + 255, + 46, + 99, + 177, + 255, + 45, + 81, + 148, + 255, + 70, + 110, + 168, + 255, + 31, + 72, + 139, + 255, + 28, + 73, + 145, + 255, + 32, + 80, + 151, + 255, + 33, + 91, + 167, + 255, + 32, + 112, + 199, + 255, + 30, + 123, + 202, + 255, + 26, + 134, + 215, + 255, + 28, + 180, + 229, + 255, + 39, + 206, + 234, + 255, + 154, + 254, + 255, + 255, + 96, + 229, + 248, + 255, + 64, + 201, + 237, + 255, + 92, + 222, + 255, + 255, + 68, + 170, + 243, + 255, + 74, + 144, + 249, + 255, + 76, + 133, + 250, + 255, + 82, + 123, + 248, + 255, + 84, + 119, + 247, + 255, + 81, + 119, + 247, + 255, + 86, + 118, + 251, + 255, + 84, + 131, + 246, + 255, + 84, + 130, + 244, + 255, + 142, + 178, + 255, + 255, + 82, + 119, + 226, + 255, + 59, + 80, + 171, + 255, + 52, + 60, + 134, + 255, + 43, + 46, + 113, + 255, + 37, + 38, + 93, + 255, + 32, + 33, + 78, + 255, + 33, + 33, + 71, + 255, + 33, + 31, + 70, + 255, + 32, + 31, + 71, + 255, + 32, + 31, + 71, + 255, + 34, + 33, + 73, + 255, + 36, + 35, + 75, + 255, + 37, + 36, + 78, + 255, + 37, + 36, + 78, + 255, + 37, + 36, + 78, + 255, + 37, + 36, + 78, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 38, + 37, + 77, + 255, + 39, + 38, + 78, + 255, + 39, + 38, + 79, + 255, + 40, + 39, + 82, + 255, + 40, + 39, + 83, + 255, + 39, + 41, + 80, + 255, + 40, + 42, + 83, + 255, + 42, + 43, + 87, + 255, + 43, + 44, + 89, + 255, + 50, + 52, + 102, + 255, + 51, + 53, + 101, + 255, + 44, + 46, + 93, + 255, + 44, + 47, + 92, + 255, + 45, + 49, + 94, + 255, + 45, + 49, + 94, + 255, + 51, + 55, + 100, + 255, + 46, + 50, + 95, + 255, + 51, + 54, + 100, + 255, + 46, + 48, + 97, + 255, + 44, + 45, + 93, + 255, + 46, + 45, + 88, + 255, + 48, + 48, + 90, + 255, + 52, + 57, + 98, + 255, + 68, + 73, + 106, + 255, + 103, + 103, + 127, + 255, + 195, + 189, + 192, + 255, + 192, + 186, + 187, + 255, + 185, + 180, + 177, + 255, + 183, + 178, + 174, + 255, + 182, + 176, + 176, + 255, + 178, + 177, + 175, + 255, + 184, + 169, + 172, + 255, + 177, + 143, + 152, + 255, + 178, + 133, + 146, + 255, + 178, + 128, + 143, + 255, + 176, + 127, + 141, + 255, + 172, + 127, + 140, + 255, + 173, + 125, + 139, + 255, + 172, + 124, + 138, + 255, + 172, + 124, + 138, + 255, + 171, + 123, + 137, + 255, + 171, + 124, + 138, + 255, + 170, + 123, + 137, + 255, + 170, + 123, + 137, + 255, + 169, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 134, + 255, + 171, + 122, + 134, + 255, + 173, + 123, + 135, + 255, + 175, + 123, + 136, + 255, + 142, + 112, + 122, + 255, + 173, + 121, + 133, + 255, + 173, + 125, + 134, + 255, + 178, + 123, + 137, + 255, + 178, + 126, + 139, + 255, + 178, + 140, + 148, + 255, + 150, + 125, + 129, + 255, + 190, + 171, + 173, + 255, + 181, + 177, + 173, + 255, + 183, + 180, + 175, + 255, + 185, + 180, + 176, + 255, + 189, + 181, + 178, + 255, + 187, + 184, + 175, + 255, + 191, + 185, + 177, + 255, + 192, + 182, + 175, + 255, + 184, + 171, + 165, + 255, + 195, + 183, + 175, + 255, + 198, + 188, + 179, + 255, + 197, + 190, + 180, + 255, + 198, + 194, + 183, + 255, + 200, + 193, + 185, + 255, + 200, + 193, + 185, + 255, + 201, + 194, + 186, + 255, + 202, + 195, + 187, + 255, + 202, + 195, + 185, + 255, + 204, + 197, + 187, + 255, + 205, + 198, + 188, + 255, + 206, + 199, + 189, + 255, + 208, + 199, + 186, + 255, + 204, + 156, + 154, + 255, + 214, + 141, + 148, + 255, + 212, + 140, + 144, + 255, + 215, + 138, + 146, + 255, + 215, + 138, + 146, + 255, + 216, + 139, + 147, + 255, + 216, + 139, + 147, + 255, + 219, + 139, + 148, + 255, + 219, + 139, + 148, + 255, + 220, + 140, + 149, + 255, + 220, + 140, + 149, + 255, + 219, + 140, + 150, + 255, + 218, + 142, + 148, + 255, + 228, + 141, + 150, + 255, + 217, + 142, + 148, + 255, + 73, + 46, + 71, + 255, + 25, + 18, + 46, + 255, + 17, + 18, + 46, + 255, + 19, + 15, + 39, + 255, + 17, + 18, + 39, + 255, + 17, + 17, + 41, + 255, + 17, + 17, + 43, + 255, + 19, + 19, + 45, + 255, + 22, + 21, + 53, + 255, + 19, + 18, + 49, + 255, + 19, + 19, + 46, + 255, + 20, + 20, + 44, + 255, + 20, + 21, + 48, + 255, + 21, + 21, + 57, + 255, + 24, + 24, + 61, + 255, + 24, + 25, + 55, + 255, + 28, + 27, + 57, + 255, + 33, + 32, + 66, + 255, + 49, + 49, + 76, + 255, + 82, + 84, + 99, + 255, + 224, + 211, + 202, + 255, + 230, + 219, + 208, + 255, + 220, + 212, + 201, + 255, + 221, + 212, + 205, + 255, + 220, + 213, + 200, + 255, + 226, + 211, + 195, + 255, + 225, + 213, + 210, + 255, + 100, + 98, + 113, + 255, + 70, + 74, + 102, + 255, + 63, + 67, + 106, + 255, + 55, + 59, + 107, + 255, + 55, + 59, + 107, + 255, + 54, + 58, + 106, + 255, + 55, + 59, + 107, + 255, + 56, + 60, + 108, + 255, + 58, + 62, + 110, + 255, + 59, + 64, + 114, + 255, + 59, + 64, + 114, + 255, + 60, + 65, + 115, + 255, + 61, + 66, + 116, + 255, + 60, + 68, + 115, + 255, + 60, + 68, + 117, + 255, + 60, + 68, + 118, + 255, + 62, + 69, + 121, + 255, + 65, + 71, + 122, + 255, + 57, + 62, + 112, + 255, + 59, + 61, + 110, + 255, + 59, + 61, + 109, + 255, + 60, + 62, + 111, + 255, + 61, + 63, + 112, + 255, + 62, + 64, + 113, + 255, + 64, + 66, + 115, + 255, + 65, + 67, + 115, + 255, + 67, + 70, + 116, + 255, + 71, + 74, + 118, + 255, + 74, + 77, + 120, + 255, + 78, + 82, + 121, + 255, + 88, + 89, + 128, + 255, + 103, + 102, + 134, + 255, + 126, + 125, + 149, + 255, + 198, + 194, + 204, + 255, + 215, + 209, + 210, + 255, + 220, + 211, + 207, + 255, + 222, + 210, + 205, + 255, + 218, + 208, + 207, + 255, + 217, + 207, + 206, + 255, + 218, + 208, + 207, + 255, + 217, + 207, + 206, + 255, + 215, + 206, + 207, + 255, + 214, + 205, + 206, + 255, + 214, + 205, + 206, + 255, + 214, + 205, + 206, + 255, + 212, + 205, + 205, + 255, + 208, + 205, + 204, + 255, + 209, + 202, + 202, + 255, + 217, + 201, + 204, + 255, + 200, + 171, + 184, + 255, + 178, + 162, + 173, + 255, + 211, + 202, + 206, + 255, + 210, + 199, + 198, + 255, + 206, + 196, + 197, + 255, + 205, + 195, + 196, + 255, + 205, + 195, + 196, + 255, + 204, + 194, + 195, + 255, + 200, + 191, + 194, + 255, + 199, + 190, + 193, + 255, + 199, + 190, + 193, + 255, + 198, + 189, + 192, + 255, + 196, + 187, + 190, + 255, + 195, + 186, + 189, + 255, + 194, + 185, + 188, + 255, + 193, + 184, + 187, + 255, + 192, + 181, + 187, + 255, + 190, + 181, + 186, + 255, + 187, + 181, + 185, + 255, + 185, + 180, + 184, + 255, + 186, + 180, + 184, + 255, + 184, + 178, + 182, + 255, + 183, + 177, + 181, + 255, + 181, + 175, + 179, + 255, + 176, + 154, + 167, + 255, + 179, + 139, + 158, + 255, + 181, + 132, + 154, + 255, + 177, + 131, + 152, + 255, + 133, + 107, + 136, + 255, + 88, + 82, + 119, + 255, + 75, + 66, + 111, + 255, + 25, + 26, + 54, + 255, + 25, + 26, + 54, + 255, + 25, + 27, + 52, + 255, + 23, + 25, + 50, + 255, + 26, + 28, + 43, + 255, + 11, + 14, + 23, + 255, + 6, + 10, + 13, + 255, + 0, + 4, + 3, + 255, + 2, + 2, + 4, + 255, + 1, + 0, + 4, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 6, + 255, + 2, + 4, + 19, + 255, + 1, + 2, + 20, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 2, + 2, + 26, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 3, + 3, + 27, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 30, + 255, + 0, + 2, + 25, + 255, + 0, + 1, + 21, + 255, + 1, + 1, + 18, + 255, + 2, + 1, + 16, + 255, + 2, + 1, + 17, + 255, + 2, + 1, + 16, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 12, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 19, + 255, + 2, + 0, + 22, + 255, + 2, + 0, + 22, + 255, + 2, + 1, + 19, + 255, + 2, + 1, + 19, + 255, + 1, + 0, + 18, + 255, + 1, + 0, + 18, + 255, + 2, + 1, + 19, + 255, + 2, + 1, + 17, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 9, + 255, + 1, + 1, + 11, + 255, + 0, + 1, + 5, + 255, + 0, + 1, + 6, + 255, + 0, + 0, + 8, + 255, + 0, + 0, + 8, + 255, + 1, + 0, + 18, + 255, + 3, + 1, + 23, + 255, + 1, + 0, + 19, + 255, + 1, + 1, + 12, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 11, + 255, + 4, + 3, + 17, + 255, + 3, + 1, + 22, + 255, + 0, + 0, + 13, + 255, + 0, + 1, + 7, + 255, + 0, + 0, + 11, + 255, + 2, + 0, + 24, + 255, + 2, + 2, + 28, + 255, + 0, + 1, + 16, + 255, + 0, + 0, + 12, + 255, + 0, + 0, + 15, + 255, + 0, + 1, + 12, + 255, + 0, + 2, + 15, + 255, + 2, + 4, + 19, + 255, + 4, + 5, + 23, + 255, + 7, + 10, + 29, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 17, + 22, + 41, + 255, + 20, + 23, + 42, + 255, + 23, + 24, + 44, + 255, + 25, + 24, + 45, + 255, + 23, + 25, + 46, + 255, + 23, + 27, + 47, + 255, + 22, + 27, + 47, + 255, + 22, + 29, + 48, + 255, + 26, + 29, + 48, + 255, + 30, + 33, + 52, + 255, + 31, + 34, + 53, + 255, + 35, + 38, + 57, + 255, + 34, + 40, + 54, + 255, + 35, + 41, + 55, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 35, + 41, + 55, + 255, + 36, + 42, + 56, + 255, + 37, + 43, + 57, + 255, + 39, + 45, + 59, + 255, + 38, + 44, + 58, + 255, + 39, + 45, + 59, + 255, + 40, + 46, + 60, + 255, + 41, + 47, + 61, + 255, + 41, + 48, + 67, + 255, + 45, + 49, + 75, + 255, + 47, + 53, + 87, + 255, + 53, + 65, + 114, + 255, + 62, + 79, + 148, + 255, + 59, + 90, + 166, + 255, + 58, + 104, + 179, + 255, + 75, + 142, + 202, + 255, + 89, + 161, + 186, + 255, + 141, + 206, + 222, + 255, + 98, + 165, + 181, + 255, + 157, + 229, + 232, + 255, + 61, + 155, + 210, + 255, + 55, + 129, + 206, + 255, + 54, + 111, + 193, + 255, + 43, + 80, + 149, + 255, + 91, + 129, + 191, + 255, + 34, + 73, + 141, + 255, + 29, + 69, + 140, + 255, + 31, + 73, + 141, + 255, + 30, + 83, + 159, + 255, + 30, + 105, + 189, + 255, + 43, + 131, + 211, + 255, + 33, + 141, + 224, + 255, + 36, + 169, + 234, + 255, + 73, + 226, + 255, + 255, + 105, + 245, + 253, + 255, + 62, + 195, + 217, + 255, + 46, + 187, + 242, + 255, + 52, + 197, + 245, + 255, + 86, + 207, + 255, + 255, + 59, + 150, + 233, + 255, + 75, + 139, + 253, + 255, + 82, + 128, + 250, + 255, + 83, + 124, + 249, + 255, + 81, + 128, + 252, + 255, + 73, + 130, + 234, + 255, + 114, + 183, + 255, + 255, + 69, + 124, + 241, + 255, + 70, + 107, + 212, + 255, + 78, + 101, + 209, + 255, + 65, + 79, + 168, + 255, + 51, + 57, + 127, + 255, + 41, + 47, + 108, + 255, + 39, + 40, + 96, + 255, + 33, + 34, + 79, + 255, + 35, + 34, + 74, + 255, + 35, + 33, + 73, + 255, + 32, + 34, + 75, + 255, + 35, + 37, + 78, + 255, + 36, + 38, + 79, + 255, + 38, + 40, + 81, + 255, + 38, + 39, + 83, + 255, + 38, + 39, + 83, + 255, + 38, + 39, + 83, + 255, + 38, + 39, + 83, + 255, + 39, + 41, + 80, + 255, + 39, + 41, + 80, + 255, + 39, + 41, + 80, + 255, + 39, + 41, + 80, + 255, + 41, + 40, + 80, + 255, + 41, + 40, + 82, + 255, + 42, + 41, + 85, + 255, + 42, + 40, + 86, + 255, + 41, + 42, + 86, + 255, + 42, + 43, + 88, + 255, + 42, + 43, + 90, + 255, + 43, + 44, + 91, + 255, + 45, + 47, + 95, + 255, + 45, + 48, + 94, + 255, + 44, + 47, + 91, + 255, + 47, + 50, + 93, + 255, + 62, + 66, + 111, + 255, + 49, + 53, + 98, + 255, + 53, + 57, + 102, + 255, + 52, + 56, + 101, + 255, + 48, + 50, + 99, + 255, + 47, + 49, + 100, + 255, + 46, + 47, + 94, + 255, + 47, + 46, + 87, + 255, + 50, + 49, + 91, + 255, + 50, + 55, + 97, + 255, + 59, + 64, + 103, + 255, + 89, + 92, + 126, + 255, + 178, + 171, + 178, + 255, + 186, + 180, + 182, + 255, + 186, + 180, + 179, + 255, + 184, + 179, + 173, + 255, + 184, + 177, + 177, + 255, + 178, + 178, + 176, + 255, + 177, + 159, + 163, + 255, + 180, + 137, + 149, + 255, + 179, + 131, + 145, + 255, + 181, + 129, + 144, + 255, + 177, + 128, + 142, + 255, + 173, + 128, + 141, + 255, + 174, + 126, + 140, + 255, + 173, + 125, + 139, + 255, + 172, + 124, + 138, + 255, + 171, + 123, + 137, + 255, + 171, + 125, + 138, + 255, + 170, + 124, + 137, + 255, + 170, + 124, + 137, + 255, + 169, + 123, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 169, + 123, + 134, + 255, + 170, + 122, + 134, + 255, + 172, + 120, + 133, + 255, + 174, + 120, + 134, + 255, + 178, + 152, + 161, + 255, + 173, + 124, + 135, + 255, + 171, + 125, + 135, + 255, + 178, + 123, + 139, + 255, + 172, + 126, + 139, + 255, + 148, + 123, + 129, + 255, + 175, + 166, + 167, + 255, + 174, + 170, + 169, + 255, + 181, + 176, + 173, + 255, + 182, + 177, + 174, + 255, + 183, + 179, + 176, + 255, + 183, + 182, + 178, + 255, + 189, + 180, + 173, + 255, + 191, + 182, + 175, + 255, + 191, + 184, + 176, + 255, + 193, + 187, + 179, + 255, + 186, + 171, + 164, + 255, + 190, + 179, + 170, + 255, + 194, + 187, + 177, + 255, + 193, + 190, + 179, + 255, + 198, + 191, + 183, + 255, + 198, + 191, + 183, + 255, + 200, + 193, + 185, + 255, + 201, + 194, + 186, + 255, + 201, + 194, + 184, + 255, + 203, + 196, + 186, + 255, + 203, + 196, + 186, + 255, + 204, + 197, + 187, + 255, + 208, + 197, + 185, + 255, + 202, + 149, + 149, + 255, + 214, + 140, + 147, + 255, + 208, + 139, + 142, + 255, + 214, + 139, + 146, + 255, + 214, + 139, + 146, + 255, + 214, + 139, + 146, + 255, + 214, + 139, + 146, + 255, + 216, + 139, + 147, + 255, + 216, + 139, + 147, + 255, + 216, + 139, + 147, + 255, + 216, + 139, + 147, + 255, + 222, + 140, + 145, + 255, + 217, + 142, + 147, + 255, + 223, + 137, + 148, + 255, + 220, + 143, + 151, + 255, + 83, + 49, + 73, + 255, + 36, + 28, + 58, + 255, + 19, + 20, + 50, + 255, + 20, + 15, + 39, + 255, + 18, + 19, + 40, + 255, + 18, + 18, + 42, + 255, + 19, + 19, + 45, + 255, + 21, + 21, + 47, + 255, + 19, + 19, + 47, + 255, + 19, + 19, + 45, + 255, + 20, + 20, + 47, + 255, + 21, + 21, + 49, + 255, + 21, + 22, + 49, + 255, + 25, + 24, + 65, + 255, + 25, + 24, + 64, + 255, + 25, + 26, + 55, + 255, + 29, + 28, + 58, + 255, + 36, + 34, + 70, + 255, + 57, + 57, + 83, + 255, + 120, + 122, + 133, + 255, + 226, + 213, + 207, + 255, + 223, + 209, + 205, + 255, + 223, + 212, + 206, + 255, + 223, + 215, + 204, + 255, + 224, + 212, + 207, + 255, + 220, + 214, + 206, + 255, + 219, + 212, + 201, + 255, + 224, + 212, + 199, + 255, + 93, + 97, + 122, + 255, + 69, + 73, + 110, + 255, + 62, + 66, + 112, + 255, + 58, + 62, + 110, + 255, + 57, + 61, + 109, + 255, + 58, + 62, + 110, + 255, + 58, + 62, + 110, + 255, + 60, + 64, + 112, + 255, + 58, + 64, + 114, + 255, + 60, + 66, + 116, + 255, + 61, + 67, + 117, + 255, + 62, + 68, + 118, + 255, + 62, + 70, + 117, + 255, + 62, + 70, + 119, + 255, + 63, + 71, + 121, + 255, + 65, + 72, + 124, + 255, + 68, + 74, + 125, + 255, + 60, + 65, + 115, + 255, + 62, + 64, + 113, + 255, + 62, + 64, + 112, + 255, + 63, + 65, + 114, + 255, + 64, + 66, + 115, + 255, + 65, + 67, + 116, + 255, + 67, + 69, + 118, + 255, + 71, + 72, + 119, + 255, + 73, + 74, + 120, + 255, + 78, + 79, + 123, + 255, + 82, + 84, + 125, + 255, + 92, + 96, + 133, + 255, + 111, + 113, + 145, + 255, + 130, + 130, + 147, + 255, + 220, + 218, + 222, + 255, + 233, + 220, + 220, + 255, + 225, + 215, + 209, + 255, + 220, + 212, + 209, + 255, + 220, + 211, + 216, + 255, + 222, + 211, + 210, + 255, + 221, + 210, + 209, + 255, + 221, + 210, + 209, + 255, + 220, + 209, + 208, + 255, + 218, + 209, + 210, + 255, + 217, + 208, + 209, + 255, + 215, + 206, + 207, + 255, + 215, + 206, + 207, + 255, + 215, + 206, + 207, + 255, + 208, + 208, + 206, + 255, + 215, + 206, + 207, + 255, + 204, + 181, + 187, + 255, + 192, + 170, + 183, + 255, + 212, + 206, + 214, + 255, + 206, + 202, + 204, + 255, + 212, + 198, + 196, + 255, + 209, + 199, + 200, + 255, + 208, + 198, + 199, + 255, + 207, + 197, + 198, + 255, + 206, + 196, + 197, + 255, + 202, + 196, + 198, + 255, + 201, + 195, + 197, + 255, + 199, + 193, + 195, + 255, + 198, + 192, + 194, + 255, + 199, + 190, + 193, + 255, + 198, + 189, + 192, + 255, + 197, + 188, + 191, + 255, + 196, + 187, + 190, + 255, + 196, + 185, + 191, + 255, + 194, + 185, + 190, + 255, + 189, + 183, + 187, + 255, + 187, + 182, + 186, + 255, + 187, + 181, + 185, + 255, + 185, + 179, + 183, + 255, + 185, + 179, + 183, + 255, + 183, + 177, + 181, + 255, + 176, + 149, + 164, + 255, + 181, + 138, + 158, + 255, + 183, + 134, + 156, + 255, + 179, + 133, + 154, + 255, + 121, + 97, + 128, + 255, + 86, + 83, + 120, + 255, + 76, + 67, + 112, + 255, + 26, + 27, + 57, + 255, + 25, + 26, + 56, + 255, + 24, + 25, + 53, + 255, + 23, + 25, + 50, + 255, + 25, + 27, + 51, + 255, + 16, + 17, + 36, + 255, + 10, + 11, + 24, + 255, + 4, + 5, + 10, + 255, + 1, + 5, + 7, + 255, + 0, + 3, + 4, + 255, + 0, + 2, + 8, + 255, + 0, + 2, + 15, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 26, + 255, + 2, + 2, + 27, + 255, + 2, + 1, + 26, + 255, + 3, + 2, + 27, + 255, + 3, + 2, + 27, + 255, + 3, + 2, + 27, + 255, + 4, + 3, + 29, + 255, + 4, + 3, + 29, + 255, + 4, + 3, + 29, + 255, + 3, + 2, + 28, + 255, + 3, + 3, + 23, + 255, + 3, + 3, + 22, + 255, + 3, + 3, + 21, + 255, + 2, + 2, + 18, + 255, + 3, + 2, + 16, + 255, + 2, + 1, + 15, + 255, + 2, + 1, + 15, + 255, + 2, + 1, + 15, + 255, + 0, + 3, + 22, + 255, + 0, + 2, + 23, + 255, + 0, + 2, + 24, + 255, + 0, + 2, + 26, + 255, + 0, + 0, + 24, + 255, + 0, + 1, + 23, + 255, + 0, + 0, + 20, + 255, + 0, + 1, + 20, + 255, + 0, + 1, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 20, + 255, + 0, + 0, + 18, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 11, + 255, + 0, + 0, + 10, + 255, + 0, + 0, + 9, + 255, + 1, + 1, + 13, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 10, + 255, + 2, + 2, + 10, + 255, + 2, + 2, + 10, + 255, + 2, + 2, + 10, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 14, + 255, + 2, + 2, + 14, + 255, + 2, + 1, + 17, + 255, + 3, + 1, + 22, + 255, + 3, + 1, + 21, + 255, + 1, + 0, + 15, + 255, + 2, + 3, + 8, + 255, + 2, + 2, + 10, + 255, + 1, + 1, + 11, + 255, + 2, + 2, + 14, + 255, + 3, + 1, + 22, + 255, + 1, + 0, + 17, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 11, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 17, + 255, + 3, + 2, + 18, + 255, + 6, + 5, + 21, + 255, + 8, + 11, + 30, + 255, + 18, + 21, + 40, + 255, + 18, + 21, + 40, + 255, + 20, + 23, + 42, + 255, + 23, + 24, + 44, + 255, + 25, + 26, + 46, + 255, + 27, + 28, + 48, + 255, + 28, + 29, + 49, + 255, + 25, + 30, + 50, + 255, + 26, + 31, + 51, + 255, + 27, + 32, + 52, + 255, + 28, + 33, + 53, + 255, + 32, + 34, + 57, + 255, + 33, + 35, + 57, + 255, + 36, + 39, + 58, + 255, + 39, + 42, + 60, + 255, + 38, + 46, + 60, + 255, + 39, + 47, + 61, + 255, + 39, + 47, + 61, + 255, + 39, + 47, + 61, + 255, + 40, + 48, + 59, + 255, + 41, + 49, + 62, + 255, + 39, + 47, + 61, + 255, + 39, + 46, + 62, + 255, + 40, + 46, + 60, + 255, + 40, + 46, + 62, + 255, + 40, + 46, + 62, + 255, + 41, + 46, + 65, + 255, + 43, + 48, + 68, + 255, + 46, + 52, + 77, + 255, + 46, + 56, + 91, + 255, + 52, + 71, + 119, + 255, + 60, + 85, + 160, + 255, + 54, + 95, + 168, + 255, + 52, + 116, + 185, + 255, + 80, + 148, + 185, + 255, + 92, + 170, + 192, + 255, + 175, + 222, + 221, + 255, + 103, + 167, + 204, + 255, + 165, + 227, + 223, + 255, + 73, + 155, + 213, + 255, + 50, + 122, + 204, + 255, + 55, + 112, + 199, + 255, + 43, + 82, + 151, + 255, + 51, + 87, + 153, + 255, + 31, + 65, + 128, + 255, + 27, + 65, + 131, + 255, + 25, + 68, + 138, + 255, + 26, + 75, + 141, + 255, + 30, + 90, + 161, + 255, + 39, + 112, + 192, + 255, + 37, + 117, + 201, + 255, + 35, + 142, + 230, + 255, + 42, + 167, + 231, + 255, + 43, + 188, + 243, + 255, + 39, + 194, + 251, + 255, + 45, + 179, + 234, + 255, + 70, + 181, + 252, + 255, + 70, + 198, + 254, + 255, + 72, + 156, + 255, + 255, + 66, + 179, + 251, + 255, + 76, + 137, + 243, + 255, + 77, + 140, + 246, + 255, + 95, + 160, + 252, + 255, + 85, + 138, + 253, + 255, + 63, + 129, + 229, + 255, + 75, + 128, + 226, + 255, + 78, + 106, + 213, + 255, + 68, + 84, + 180, + 255, + 54, + 66, + 150, + 255, + 48, + 54, + 124, + 255, + 43, + 45, + 105, + 255, + 42, + 39, + 93, + 255, + 37, + 35, + 83, + 255, + 36, + 35, + 76, + 255, + 36, + 36, + 73, + 255, + 37, + 35, + 80, + 255, + 41, + 42, + 83, + 255, + 39, + 43, + 89, + 255, + 41, + 45, + 99, + 255, + 43, + 46, + 97, + 255, + 42, + 46, + 94, + 255, + 42, + 46, + 95, + 255, + 42, + 45, + 96, + 255, + 38, + 45, + 95, + 255, + 42, + 43, + 91, + 255, + 44, + 44, + 88, + 255, + 42, + 45, + 86, + 255, + 42, + 43, + 87, + 255, + 42, + 43, + 87, + 255, + 42, + 43, + 87, + 255, + 42, + 43, + 87, + 255, + 42, + 45, + 88, + 255, + 43, + 46, + 89, + 255, + 43, + 46, + 89, + 255, + 44, + 47, + 90, + 255, + 46, + 48, + 96, + 255, + 46, + 48, + 96, + 255, + 47, + 49, + 97, + 255, + 51, + 53, + 101, + 255, + 51, + 54, + 98, + 255, + 48, + 51, + 95, + 255, + 51, + 54, + 98, + 255, + 51, + 54, + 98, + 255, + 48, + 50, + 99, + 255, + 47, + 49, + 98, + 255, + 47, + 49, + 98, + 255, + 47, + 49, + 98, + 255, + 48, + 51, + 94, + 255, + 51, + 54, + 99, + 255, + 61, + 63, + 103, + 255, + 86, + 86, + 121, + 255, + 187, + 185, + 197, + 255, + 188, + 180, + 176, + 255, + 188, + 179, + 183, + 255, + 183, + 179, + 179, + 255, + 180, + 182, + 179, + 255, + 183, + 179, + 178, + 255, + 174, + 150, + 156, + 255, + 178, + 136, + 148, + 255, + 179, + 131, + 147, + 255, + 177, + 129, + 145, + 255, + 176, + 128, + 144, + 255, + 175, + 127, + 143, + 255, + 175, + 127, + 143, + 255, + 174, + 126, + 142, + 255, + 173, + 125, + 141, + 255, + 172, + 124, + 140, + 255, + 171, + 124, + 140, + 255, + 170, + 123, + 139, + 255, + 169, + 122, + 138, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 169, + 122, + 138, + 255, + 169, + 122, + 138, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 170, + 122, + 136, + 255, + 171, + 123, + 137, + 255, + 182, + 158, + 164, + 255, + 171, + 126, + 139, + 255, + 170, + 120, + 135, + 255, + 171, + 127, + 140, + 255, + 176, + 146, + 154, + 255, + 177, + 163, + 164, + 255, + 176, + 172, + 169, + 255, + 177, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 181, + 178, + 173, + 255, + 181, + 178, + 173, + 255, + 182, + 179, + 174, + 255, + 185, + 181, + 172, + 255, + 186, + 182, + 173, + 255, + 187, + 183, + 174, + 255, + 188, + 184, + 175, + 255, + 190, + 182, + 177, + 255, + 187, + 164, + 164, + 255, + 186, + 166, + 165, + 255, + 193, + 187, + 181, + 255, + 193, + 188, + 182, + 255, + 192, + 188, + 179, + 255, + 195, + 191, + 180, + 255, + 197, + 192, + 179, + 255, + 199, + 192, + 184, + 255, + 201, + 194, + 186, + 255, + 202, + 195, + 187, + 255, + 204, + 197, + 189, + 255, + 210, + 196, + 185, + 255, + 209, + 150, + 154, + 255, + 208, + 140, + 147, + 255, + 213, + 136, + 146, + 255, + 212, + 137, + 144, + 255, + 213, + 138, + 145, + 255, + 213, + 138, + 145, + 255, + 214, + 139, + 146, + 255, + 217, + 137, + 148, + 255, + 217, + 137, + 148, + 255, + 217, + 137, + 148, + 255, + 218, + 138, + 149, + 255, + 218, + 138, + 147, + 255, + 218, + 138, + 147, + 255, + 220, + 141, + 147, + 255, + 221, + 142, + 147, + 255, + 108, + 63, + 82, + 255, + 44, + 33, + 65, + 255, + 24, + 18, + 45, + 255, + 20, + 17, + 43, + 255, + 20, + 17, + 44, + 255, + 20, + 19, + 46, + 255, + 20, + 19, + 49, + 255, + 18, + 19, + 49, + 255, + 19, + 19, + 43, + 255, + 20, + 20, + 46, + 255, + 21, + 21, + 48, + 255, + 23, + 23, + 51, + 255, + 20, + 23, + 54, + 255, + 26, + 25, + 67, + 255, + 26, + 25, + 56, + 255, + 29, + 26, + 64, + 255, + 32, + 30, + 59, + 255, + 41, + 41, + 79, + 255, + 74, + 73, + 95, + 255, + 214, + 210, + 206, + 255, + 222, + 212, + 203, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 226, + 220, + 216, + 255, + 86, + 88, + 114, + 255, + 70, + 77, + 120, + 255, + 60, + 67, + 109, + 255, + 57, + 63, + 112, + 255, + 58, + 64, + 114, + 255, + 57, + 63, + 115, + 255, + 58, + 63, + 117, + 255, + 61, + 67, + 115, + 255, + 63, + 69, + 117, + 255, + 63, + 69, + 117, + 255, + 64, + 70, + 118, + 255, + 61, + 71, + 120, + 255, + 62, + 72, + 121, + 255, + 62, + 72, + 121, + 255, + 64, + 74, + 123, + 255, + 70, + 78, + 128, + 255, + 62, + 68, + 118, + 255, + 63, + 68, + 116, + 255, + 64, + 68, + 115, + 255, + 65, + 67, + 115, + 255, + 67, + 69, + 118, + 255, + 68, + 70, + 119, + 255, + 71, + 73, + 123, + 255, + 74, + 76, + 122, + 255, + 80, + 81, + 125, + 255, + 87, + 88, + 128, + 255, + 100, + 100, + 138, + 255, + 120, + 123, + 151, + 255, + 159, + 158, + 172, + 255, + 225, + 221, + 221, + 255, + 226, + 216, + 214, + 255, + 222, + 214, + 211, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 221, + 213, + 210, + 255, + 222, + 212, + 211, + 255, + 222, + 212, + 211, + 255, + 222, + 212, + 211, + 255, + 221, + 211, + 210, + 255, + 219, + 210, + 211, + 255, + 217, + 208, + 209, + 255, + 218, + 209, + 210, + 255, + 217, + 208, + 209, + 255, + 217, + 207, + 208, + 255, + 216, + 208, + 205, + 255, + 217, + 198, + 203, + 255, + 208, + 176, + 195, + 255, + 193, + 182, + 190, + 255, + 211, + 202, + 206, + 255, + 211, + 205, + 206, + 255, + 209, + 205, + 204, + 255, + 208, + 204, + 205, + 255, + 207, + 203, + 204, + 255, + 205, + 201, + 202, + 255, + 204, + 200, + 201, + 255, + 207, + 198, + 201, + 255, + 205, + 196, + 200, + 255, + 203, + 194, + 200, + 255, + 202, + 192, + 200, + 255, + 202, + 191, + 197, + 255, + 200, + 189, + 195, + 255, + 200, + 189, + 195, + 255, + 199, + 188, + 194, + 255, + 194, + 188, + 192, + 255, + 193, + 187, + 191, + 255, + 193, + 187, + 191, + 255, + 191, + 185, + 189, + 255, + 192, + 182, + 188, + 255, + 185, + 183, + 187, + 255, + 184, + 180, + 186, + 255, + 183, + 169, + 179, + 255, + 183, + 148, + 168, + 255, + 181, + 139, + 161, + 255, + 181, + 133, + 157, + 255, + 179, + 134, + 157, + 255, + 120, + 99, + 131, + 255, + 94, + 85, + 123, + 255, + 76, + 75, + 115, + 255, + 31, + 32, + 60, + 255, + 30, + 32, + 57, + 255, + 29, + 31, + 55, + 255, + 29, + 31, + 55, + 255, + 25, + 27, + 49, + 255, + 25, + 26, + 45, + 255, + 16, + 17, + 30, + 255, + 11, + 11, + 19, + 255, + 4, + 7, + 12, + 255, + 2, + 5, + 10, + 255, + 0, + 3, + 11, + 255, + 1, + 3, + 19, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 2, + 2, + 26, + 255, + 4, + 5, + 25, + 255, + 5, + 6, + 26, + 255, + 6, + 7, + 27, + 255, + 6, + 7, + 27, + 255, + 6, + 6, + 30, + 255, + 6, + 6, + 30, + 255, + 7, + 7, + 31, + 255, + 6, + 6, + 30, + 255, + 7, + 7, + 31, + 255, + 7, + 8, + 29, + 255, + 6, + 7, + 27, + 255, + 5, + 6, + 25, + 255, + 8, + 7, + 23, + 255, + 7, + 6, + 22, + 255, + 5, + 4, + 20, + 255, + 5, + 4, + 20, + 255, + 2, + 5, + 25, + 255, + 2, + 4, + 29, + 255, + 2, + 3, + 34, + 255, + 2, + 2, + 38, + 255, + 1, + 1, + 28, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 25, + 255, + 0, + 1, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 24, + 255, + 1, + 2, + 22, + 255, + 0, + 1, + 20, + 255, + 1, + 0, + 17, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 14, + 255, + 1, + 1, + 12, + 255, + 2, + 2, + 12, + 255, + 3, + 3, + 13, + 255, + 4, + 4, + 14, + 255, + 4, + 4, + 14, + 255, + 5, + 5, + 13, + 255, + 5, + 5, + 13, + 255, + 5, + 5, + 13, + 255, + 5, + 5, + 13, + 255, + 5, + 5, + 15, + 255, + 5, + 5, + 15, + 255, + 5, + 5, + 15, + 255, + 5, + 5, + 15, + 255, + 7, + 7, + 19, + 255, + 5, + 4, + 19, + 255, + 6, + 5, + 19, + 255, + 6, + 6, + 18, + 255, + 5, + 5, + 14, + 255, + 2, + 2, + 11, + 255, + 2, + 2, + 12, + 255, + 0, + 0, + 10, + 255, + 3, + 2, + 20, + 255, + 1, + 0, + 17, + 255, + 1, + 0, + 15, + 255, + 1, + 1, + 13, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 17, + 255, + 4, + 3, + 19, + 255, + 7, + 6, + 22, + 255, + 10, + 13, + 32, + 255, + 19, + 22, + 41, + 255, + 19, + 22, + 41, + 255, + 24, + 27, + 46, + 255, + 26, + 29, + 48, + 255, + 31, + 34, + 53, + 255, + 33, + 36, + 55, + 255, + 36, + 39, + 58, + 255, + 37, + 42, + 61, + 255, + 38, + 43, + 62, + 255, + 40, + 45, + 64, + 255, + 41, + 46, + 65, + 255, + 42, + 47, + 68, + 255, + 44, + 49, + 68, + 255, + 46, + 52, + 69, + 255, + 48, + 54, + 70, + 255, + 50, + 56, + 69, + 255, + 51, + 57, + 70, + 255, + 49, + 55, + 68, + 255, + 49, + 55, + 68, + 255, + 48, + 55, + 65, + 255, + 47, + 53, + 65, + 255, + 47, + 53, + 66, + 255, + 44, + 50, + 65, + 255, + 44, + 50, + 63, + 255, + 44, + 50, + 64, + 255, + 43, + 49, + 64, + 255, + 44, + 50, + 66, + 255, + 45, + 50, + 70, + 255, + 49, + 55, + 80, + 255, + 48, + 58, + 93, + 255, + 57, + 76, + 124, + 255, + 58, + 89, + 163, + 255, + 63, + 105, + 178, + 255, + 52, + 123, + 189, + 255, + 66, + 157, + 184, + 255, + 89, + 162, + 189, + 255, + 158, + 225, + 226, + 255, + 96, + 168, + 211, + 255, + 144, + 226, + 229, + 255, + 66, + 156, + 216, + 255, + 54, + 128, + 208, + 255, + 62, + 117, + 203, + 255, + 48, + 83, + 158, + 255, + 36, + 70, + 139, + 255, + 36, + 67, + 132, + 255, + 27, + 59, + 126, + 255, + 22, + 59, + 129, + 255, + 29, + 65, + 131, + 255, + 28, + 73, + 144, + 255, + 32, + 87, + 163, + 255, + 38, + 99, + 179, + 255, + 54, + 123, + 209, + 255, + 54, + 138, + 226, + 255, + 54, + 159, + 240, + 255, + 48, + 165, + 236, + 255, + 73, + 225, + 253, + 255, + 68, + 175, + 246, + 255, + 67, + 160, + 249, + 255, + 77, + 140, + 251, + 255, + 72, + 155, + 250, + 255, + 79, + 123, + 244, + 255, + 79, + 135, + 249, + 255, + 75, + 125, + 231, + 255, + 76, + 125, + 238, + 255, + 106, + 181, + 255, + 255, + 53, + 113, + 198, + 255, + 69, + 94, + 187, + 255, + 57, + 70, + 156, + 255, + 49, + 58, + 135, + 255, + 46, + 50, + 116, + 255, + 42, + 43, + 101, + 255, + 41, + 38, + 91, + 255, + 39, + 37, + 86, + 255, + 37, + 36, + 80, + 255, + 40, + 39, + 80, + 255, + 39, + 41, + 88, + 255, + 44, + 49, + 95, + 255, + 54, + 64, + 111, + 255, + 50, + 63, + 113, + 255, + 51, + 60, + 112, + 255, + 48, + 55, + 110, + 255, + 47, + 54, + 109, + 255, + 46, + 51, + 105, + 255, + 51, + 60, + 110, + 255, + 49, + 51, + 100, + 255, + 48, + 50, + 96, + 255, + 46, + 52, + 94, + 255, + 46, + 49, + 93, + 255, + 43, + 46, + 90, + 255, + 44, + 47, + 91, + 255, + 44, + 47, + 91, + 255, + 44, + 47, + 91, + 255, + 45, + 48, + 92, + 255, + 46, + 49, + 93, + 255, + 47, + 50, + 94, + 255, + 47, + 49, + 97, + 255, + 47, + 49, + 97, + 255, + 49, + 51, + 99, + 255, + 49, + 51, + 99, + 255, + 55, + 58, + 103, + 255, + 50, + 53, + 98, + 255, + 48, + 51, + 96, + 255, + 48, + 51, + 96, + 255, + 49, + 51, + 100, + 255, + 50, + 52, + 101, + 255, + 49, + 51, + 100, + 255, + 49, + 51, + 100, + 255, + 49, + 52, + 96, + 255, + 53, + 55, + 102, + 255, + 60, + 62, + 104, + 255, + 81, + 81, + 117, + 255, + 130, + 129, + 145, + 255, + 193, + 189, + 187, + 255, + 183, + 172, + 177, + 255, + 177, + 166, + 165, + 255, + 183, + 167, + 172, + 255, + 189, + 165, + 173, + 255, + 178, + 142, + 154, + 255, + 181, + 134, + 150, + 255, + 180, + 132, + 148, + 255, + 178, + 130, + 146, + 255, + 178, + 130, + 146, + 255, + 177, + 129, + 145, + 255, + 176, + 128, + 144, + 255, + 175, + 127, + 143, + 255, + 175, + 127, + 143, + 255, + 174, + 126, + 142, + 255, + 172, + 125, + 142, + 255, + 171, + 124, + 141, + 255, + 172, + 125, + 142, + 255, + 170, + 123, + 140, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 169, + 122, + 138, + 255, + 169, + 122, + 138, + 255, + 169, + 122, + 136, + 255, + 169, + 122, + 136, + 255, + 169, + 122, + 136, + 255, + 170, + 123, + 137, + 255, + 170, + 141, + 151, + 255, + 164, + 123, + 137, + 255, + 167, + 126, + 140, + 255, + 175, + 140, + 152, + 255, + 159, + 150, + 151, + 255, + 171, + 166, + 164, + 255, + 174, + 170, + 167, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 179, + 176, + 171, + 255, + 180, + 177, + 172, + 255, + 181, + 178, + 173, + 255, + 183, + 178, + 172, + 255, + 184, + 179, + 173, + 255, + 186, + 181, + 175, + 255, + 187, + 182, + 176, + 255, + 189, + 180, + 175, + 255, + 186, + 183, + 176, + 255, + 182, + 171, + 167, + 255, + 179, + 156, + 156, + 255, + 199, + 184, + 181, + 255, + 193, + 184, + 178, + 255, + 192, + 188, + 179, + 255, + 191, + 190, + 180, + 255, + 197, + 190, + 182, + 255, + 199, + 192, + 184, + 255, + 199, + 192, + 184, + 255, + 201, + 194, + 186, + 255, + 209, + 197, + 186, + 255, + 207, + 150, + 155, + 255, + 207, + 139, + 147, + 255, + 210, + 135, + 146, + 255, + 210, + 136, + 144, + 255, + 211, + 137, + 145, + 255, + 211, + 137, + 145, + 255, + 212, + 138, + 146, + 255, + 215, + 138, + 148, + 255, + 215, + 138, + 148, + 255, + 215, + 138, + 148, + 255, + 216, + 139, + 149, + 255, + 216, + 139, + 147, + 255, + 216, + 139, + 147, + 255, + 217, + 140, + 146, + 255, + 218, + 142, + 146, + 255, + 157, + 108, + 126, + 255, + 50, + 38, + 70, + 255, + 27, + 21, + 48, + 255, + 21, + 19, + 47, + 255, + 20, + 17, + 44, + 255, + 20, + 19, + 46, + 255, + 19, + 18, + 48, + 255, + 19, + 20, + 50, + 255, + 20, + 20, + 46, + 255, + 21, + 21, + 48, + 255, + 22, + 22, + 50, + 255, + 24, + 23, + 53, + 255, + 22, + 25, + 58, + 255, + 31, + 30, + 73, + 255, + 27, + 26, + 56, + 255, + 31, + 28, + 64, + 255, + 34, + 33, + 63, + 255, + 49, + 49, + 83, + 255, + 89, + 86, + 104, + 255, + 219, + 211, + 206, + 255, + 222, + 212, + 203, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 222, + 215, + 208, + 255, + 117, + 115, + 133, + 255, + 82, + 86, + 122, + 255, + 64, + 71, + 113, + 255, + 62, + 68, + 116, + 255, + 60, + 66, + 115, + 255, + 60, + 66, + 116, + 255, + 61, + 67, + 119, + 255, + 63, + 69, + 117, + 255, + 65, + 71, + 119, + 255, + 66, + 72, + 120, + 255, + 67, + 73, + 121, + 255, + 64, + 74, + 123, + 255, + 65, + 75, + 124, + 255, + 65, + 75, + 124, + 255, + 67, + 77, + 126, + 255, + 72, + 80, + 130, + 255, + 64, + 70, + 120, + 255, + 65, + 70, + 118, + 255, + 66, + 70, + 117, + 255, + 68, + 70, + 119, + 255, + 70, + 72, + 120, + 255, + 73, + 76, + 122, + 255, + 76, + 79, + 124, + 255, + 80, + 85, + 131, + 255, + 91, + 95, + 134, + 255, + 105, + 108, + 140, + 255, + 128, + 130, + 155, + 255, + 201, + 196, + 202, + 255, + 222, + 215, + 213, + 255, + 224, + 214, + 208, + 255, + 227, + 214, + 212, + 255, + 224, + 216, + 213, + 255, + 223, + 215, + 212, + 255, + 223, + 215, + 212, + 255, + 223, + 215, + 212, + 255, + 224, + 214, + 213, + 255, + 224, + 214, + 213, + 255, + 223, + 213, + 212, + 255, + 222, + 212, + 211, + 255, + 221, + 212, + 213, + 255, + 221, + 212, + 213, + 255, + 221, + 212, + 213, + 255, + 220, + 211, + 212, + 255, + 218, + 212, + 212, + 255, + 221, + 206, + 210, + 255, + 205, + 182, + 193, + 255, + 198, + 169, + 187, + 255, + 221, + 210, + 214, + 255, + 218, + 209, + 211, + 255, + 213, + 207, + 207, + 255, + 211, + 207, + 206, + 255, + 211, + 205, + 207, + 255, + 210, + 204, + 206, + 255, + 209, + 203, + 205, + 255, + 208, + 202, + 204, + 255, + 209, + 200, + 203, + 255, + 207, + 198, + 202, + 255, + 206, + 197, + 203, + 255, + 205, + 195, + 203, + 255, + 204, + 195, + 200, + 255, + 202, + 193, + 198, + 255, + 201, + 192, + 197, + 255, + 200, + 191, + 196, + 255, + 197, + 191, + 195, + 255, + 196, + 190, + 194, + 255, + 195, + 189, + 193, + 255, + 193, + 187, + 191, + 255, + 194, + 185, + 190, + 255, + 187, + 185, + 189, + 255, + 188, + 180, + 187, + 255, + 181, + 159, + 172, + 255, + 183, + 147, + 167, + 255, + 183, + 139, + 162, + 255, + 181, + 136, + 159, + 255, + 178, + 136, + 158, + 255, + 123, + 105, + 138, + 255, + 101, + 93, + 131, + 255, + 84, + 83, + 122, + 255, + 42, + 44, + 68, + 255, + 41, + 43, + 66, + 255, + 40, + 43, + 63, + 255, + 38, + 41, + 60, + 255, + 34, + 37, + 56, + 255, + 29, + 31, + 47, + 255, + 27, + 28, + 41, + 255, + 18, + 18, + 28, + 255, + 11, + 14, + 23, + 255, + 7, + 10, + 18, + 255, + 3, + 5, + 17, + 255, + 2, + 3, + 23, + 255, + 2, + 3, + 24, + 255, + 2, + 3, + 24, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 23, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 24, + 255, + 4, + 5, + 26, + 255, + 6, + 8, + 31, + 255, + 8, + 10, + 33, + 255, + 9, + 11, + 34, + 255, + 11, + 13, + 36, + 255, + 12, + 13, + 42, + 255, + 13, + 14, + 43, + 255, + 13, + 14, + 43, + 255, + 13, + 14, + 43, + 255, + 14, + 15, + 42, + 255, + 14, + 16, + 41, + 255, + 12, + 14, + 37, + 255, + 13, + 15, + 38, + 255, + 14, + 15, + 34, + 255, + 13, + 14, + 33, + 255, + 12, + 13, + 32, + 255, + 9, + 10, + 29, + 255, + 8, + 10, + 32, + 255, + 4, + 5, + 32, + 255, + 3, + 4, + 36, + 255, + 3, + 3, + 39, + 255, + 3, + 2, + 34, + 255, + 2, + 1, + 31, + 255, + 2, + 2, + 29, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 26, + 255, + 2, + 3, + 25, + 255, + 1, + 2, + 23, + 255, + 3, + 1, + 21, + 255, + 3, + 2, + 20, + 255, + 2, + 1, + 19, + 255, + 4, + 3, + 19, + 255, + 3, + 5, + 19, + 255, + 5, + 7, + 21, + 255, + 8, + 10, + 24, + 255, + 9, + 11, + 25, + 255, + 9, + 11, + 25, + 255, + 10, + 12, + 26, + 255, + 11, + 13, + 27, + 255, + 11, + 13, + 27, + 255, + 11, + 13, + 27, + 255, + 11, + 13, + 27, + 255, + 12, + 14, + 28, + 255, + 12, + 14, + 28, + 255, + 12, + 14, + 28, + 255, + 12, + 14, + 26, + 255, + 9, + 11, + 24, + 255, + 9, + 11, + 26, + 255, + 9, + 8, + 22, + 255, + 6, + 6, + 18, + 255, + 5, + 5, + 15, + 255, + 1, + 1, + 11, + 255, + 2, + 1, + 18, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 1, + 0, + 16, + 255, + 2, + 1, + 17, + 255, + 4, + 3, + 19, + 255, + 5, + 4, + 20, + 255, + 8, + 7, + 23, + 255, + 11, + 14, + 33, + 255, + 19, + 22, + 41, + 255, + 26, + 29, + 48, + 255, + 31, + 34, + 53, + 255, + 37, + 42, + 61, + 255, + 41, + 46, + 65, + 255, + 46, + 51, + 70, + 255, + 49, + 54, + 73, + 255, + 54, + 60, + 76, + 255, + 58, + 64, + 80, + 255, + 67, + 73, + 89, + 255, + 69, + 75, + 91, + 255, + 71, + 78, + 96, + 255, + 72, + 79, + 96, + 255, + 74, + 82, + 96, + 255, + 76, + 84, + 97, + 255, + 78, + 82, + 91, + 255, + 75, + 79, + 88, + 255, + 70, + 74, + 83, + 255, + 66, + 70, + 79, + 255, + 66, + 70, + 79, + 255, + 63, + 67, + 78, + 255, + 58, + 62, + 74, + 255, + 55, + 58, + 73, + 255, + 51, + 58, + 68, + 255, + 48, + 55, + 66, + 255, + 49, + 55, + 68, + 255, + 48, + 54, + 69, + 255, + 47, + 52, + 72, + 255, + 50, + 56, + 81, + 255, + 49, + 59, + 94, + 255, + 57, + 76, + 124, + 255, + 55, + 88, + 156, + 255, + 58, + 97, + 170, + 255, + 51, + 123, + 191, + 255, + 46, + 156, + 183, + 255, + 58, + 159, + 189, + 255, + 92, + 210, + 212, + 255, + 63, + 164, + 216, + 255, + 81, + 206, + 219, + 255, + 59, + 153, + 214, + 255, + 58, + 129, + 209, + 255, + 65, + 119, + 205, + 255, + 45, + 87, + 163, + 255, + 39, + 70, + 142, + 255, + 35, + 61, + 129, + 255, + 30, + 55, + 122, + 255, + 26, + 54, + 125, + 255, + 29, + 57, + 122, + 255, + 31, + 64, + 131, + 255, + 34, + 73, + 142, + 255, + 39, + 82, + 153, + 255, + 56, + 110, + 182, + 255, + 53, + 118, + 191, + 255, + 59, + 138, + 206, + 255, + 65, + 153, + 217, + 255, + 62, + 172, + 230, + 255, + 85, + 163, + 234, + 255, + 75, + 149, + 239, + 255, + 64, + 157, + 236, + 255, + 67, + 133, + 228, + 255, + 91, + 115, + 231, + 255, + 49, + 131, + 224, + 255, + 75, + 122, + 219, + 255, + 81, + 108, + 211, + 255, + 57, + 96, + 181, + 255, + 62, + 89, + 168, + 255, + 62, + 68, + 152, + 255, + 53, + 61, + 134, + 255, + 46, + 52, + 119, + 255, + 44, + 47, + 107, + 255, + 41, + 42, + 97, + 255, + 41, + 38, + 90, + 255, + 39, + 37, + 87, + 255, + 40, + 38, + 86, + 255, + 42, + 40, + 86, + 255, + 44, + 49, + 98, + 255, + 47, + 59, + 109, + 255, + 59, + 77, + 125, + 255, + 70, + 94, + 138, + 255, + 56, + 79, + 132, + 255, + 56, + 75, + 137, + 255, + 54, + 70, + 132, + 255, + 49, + 64, + 119, + 255, + 41, + 54, + 105, + 255, + 49, + 55, + 105, + 255, + 64, + 70, + 116, + 255, + 62, + 72, + 114, + 255, + 51, + 55, + 100, + 255, + 46, + 50, + 95, + 255, + 46, + 50, + 95, + 255, + 46, + 50, + 95, + 255, + 47, + 50, + 95, + 255, + 47, + 50, + 95, + 255, + 48, + 51, + 96, + 255, + 48, + 51, + 96, + 255, + 49, + 51, + 99, + 255, + 49, + 51, + 99, + 255, + 49, + 51, + 99, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 101, + 255, + 50, + 52, + 101, + 255, + 50, + 52, + 101, + 255, + 51, + 53, + 102, + 255, + 51, + 54, + 100, + 255, + 53, + 55, + 104, + 255, + 58, + 59, + 103, + 255, + 73, + 73, + 111, + 255, + 95, + 96, + 125, + 255, + 191, + 190, + 196, + 255, + 194, + 182, + 193, + 255, + 196, + 175, + 180, + 255, + 179, + 145, + 158, + 255, + 183, + 142, + 157, + 255, + 184, + 138, + 155, + 255, + 181, + 135, + 152, + 255, + 180, + 132, + 148, + 255, + 179, + 131, + 147, + 255, + 179, + 131, + 147, + 255, + 178, + 130, + 146, + 255, + 176, + 128, + 144, + 255, + 175, + 127, + 143, + 255, + 175, + 127, + 143, + 255, + 174, + 126, + 142, + 255, + 172, + 125, + 144, + 255, + 171, + 124, + 143, + 255, + 171, + 124, + 143, + 255, + 171, + 124, + 143, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 169, + 124, + 137, + 255, + 169, + 124, + 137, + 255, + 167, + 122, + 135, + 255, + 168, + 123, + 136, + 255, + 169, + 142, + 152, + 255, + 150, + 121, + 132, + 255, + 165, + 143, + 152, + 255, + 152, + 135, + 142, + 255, + 171, + 171, + 169, + 255, + 173, + 168, + 166, + 255, + 174, + 170, + 167, + 255, + 174, + 172, + 167, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 181, + 176, + 172, + 255, + 182, + 177, + 173, + 255, + 184, + 179, + 175, + 255, + 185, + 180, + 176, + 255, + 187, + 181, + 175, + 255, + 182, + 183, + 175, + 255, + 187, + 181, + 175, + 255, + 193, + 175, + 173, + 255, + 176, + 160, + 155, + 255, + 172, + 158, + 155, + 255, + 198, + 189, + 185, + 255, + 195, + 188, + 184, + 255, + 196, + 189, + 181, + 255, + 198, + 191, + 183, + 255, + 198, + 191, + 183, + 255, + 199, + 192, + 184, + 255, + 203, + 193, + 184, + 255, + 203, + 148, + 154, + 255, + 204, + 138, + 148, + 255, + 207, + 134, + 146, + 255, + 207, + 135, + 145, + 255, + 208, + 136, + 146, + 255, + 208, + 136, + 146, + 255, + 209, + 137, + 147, + 255, + 212, + 136, + 146, + 255, + 213, + 137, + 147, + 255, + 214, + 138, + 148, + 255, + 214, + 138, + 148, + 255, + 214, + 139, + 146, + 255, + 215, + 140, + 147, + 255, + 215, + 140, + 145, + 255, + 216, + 141, + 145, + 255, + 188, + 135, + 152, + 255, + 52, + 37, + 69, + 255, + 29, + 23, + 51, + 255, + 21, + 19, + 50, + 255, + 22, + 19, + 46, + 255, + 20, + 19, + 46, + 255, + 20, + 19, + 49, + 255, + 20, + 21, + 51, + 255, + 21, + 21, + 48, + 255, + 23, + 23, + 51, + 255, + 24, + 23, + 53, + 255, + 25, + 24, + 56, + 255, + 24, + 27, + 62, + 255, + 31, + 30, + 73, + 255, + 29, + 28, + 58, + 255, + 33, + 30, + 63, + 255, + 38, + 39, + 68, + 255, + 60, + 60, + 88, + 255, + 121, + 115, + 127, + 255, + 222, + 211, + 203, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 225, + 217, + 207, + 255, + 228, + 221, + 227, + 255, + 101, + 100, + 126, + 255, + 73, + 79, + 120, + 255, + 64, + 71, + 116, + 255, + 62, + 69, + 115, + 255, + 62, + 68, + 117, + 255, + 63, + 69, + 119, + 255, + 64, + 70, + 118, + 255, + 66, + 72, + 120, + 255, + 68, + 74, + 122, + 255, + 69, + 75, + 123, + 255, + 66, + 76, + 125, + 255, + 67, + 77, + 126, + 255, + 67, + 77, + 126, + 255, + 68, + 78, + 127, + 255, + 72, + 80, + 130, + 255, + 67, + 73, + 123, + 255, + 67, + 72, + 120, + 255, + 69, + 73, + 120, + 255, + 72, + 74, + 123, + 255, + 75, + 78, + 124, + 255, + 79, + 82, + 125, + 255, + 86, + 89, + 131, + 255, + 96, + 100, + 140, + 255, + 112, + 114, + 143, + 255, + 133, + 132, + 147, + 255, + 222, + 220, + 225, + 255, + 228, + 217, + 215, + 255, + 227, + 216, + 210, + 255, + 226, + 217, + 211, + 255, + 226, + 216, + 216, + 255, + 224, + 216, + 213, + 255, + 224, + 216, + 213, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 216, + 215, + 255, + 226, + 216, + 215, + 255, + 223, + 213, + 212, + 255, + 225, + 215, + 214, + 255, + 223, + 214, + 215, + 255, + 222, + 213, + 214, + 255, + 222, + 213, + 214, + 255, + 222, + 213, + 214, + 255, + 219, + 212, + 212, + 255, + 215, + 192, + 203, + 255, + 210, + 186, + 200, + 255, + 215, + 200, + 211, + 255, + 220, + 210, + 209, + 255, + 218, + 210, + 209, + 255, + 215, + 209, + 209, + 255, + 213, + 209, + 209, + 255, + 214, + 205, + 208, + 255, + 213, + 204, + 207, + 255, + 213, + 204, + 207, + 255, + 212, + 203, + 206, + 255, + 211, + 202, + 205, + 255, + 210, + 201, + 205, + 255, + 208, + 199, + 205, + 255, + 207, + 197, + 205, + 255, + 205, + 199, + 203, + 255, + 203, + 197, + 201, + 255, + 201, + 195, + 199, + 255, + 200, + 194, + 198, + 255, + 199, + 193, + 197, + 255, + 197, + 191, + 195, + 255, + 196, + 190, + 194, + 255, + 194, + 188, + 192, + 255, + 194, + 186, + 191, + 255, + 190, + 185, + 190, + 255, + 196, + 179, + 189, + 255, + 186, + 155, + 171, + 255, + 186, + 147, + 168, + 255, + 185, + 140, + 163, + 255, + 182, + 138, + 161, + 255, + 173, + 133, + 154, + 255, + 125, + 110, + 139, + 255, + 108, + 101, + 134, + 255, + 102, + 101, + 133, + 255, + 63, + 65, + 86, + 255, + 62, + 64, + 85, + 255, + 60, + 63, + 80, + 255, + 59, + 62, + 79, + 255, + 54, + 57, + 75, + 255, + 49, + 51, + 67, + 255, + 45, + 46, + 60, + 255, + 33, + 33, + 45, + 255, + 22, + 24, + 36, + 255, + 14, + 16, + 27, + 255, + 10, + 12, + 27, + 255, + 6, + 7, + 29, + 255, + 6, + 7, + 28, + 255, + 3, + 4, + 25, + 255, + 2, + 3, + 24, + 255, + 2, + 3, + 24, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 22, + 255, + 1, + 2, + 22, + 255, + 3, + 4, + 24, + 255, + 8, + 9, + 29, + 255, + 11, + 15, + 43, + 255, + 19, + 23, + 51, + 255, + 24, + 28, + 56, + 255, + 24, + 28, + 56, + 255, + 27, + 30, + 64, + 255, + 28, + 31, + 65, + 255, + 28, + 31, + 65, + 255, + 28, + 31, + 65, + 255, + 28, + 32, + 60, + 255, + 28, + 32, + 59, + 255, + 27, + 31, + 56, + 255, + 28, + 32, + 57, + 255, + 30, + 32, + 53, + 255, + 29, + 31, + 52, + 255, + 27, + 29, + 50, + 255, + 25, + 27, + 48, + 255, + 18, + 20, + 45, + 255, + 10, + 12, + 37, + 255, + 7, + 9, + 34, + 255, + 4, + 5, + 32, + 255, + 4, + 3, + 37, + 255, + 3, + 2, + 34, + 255, + 3, + 2, + 32, + 255, + 2, + 2, + 30, + 255, + 2, + 2, + 29, + 255, + 1, + 1, + 27, + 255, + 2, + 2, + 26, + 255, + 1, + 2, + 24, + 255, + 5, + 3, + 26, + 255, + 5, + 3, + 25, + 255, + 6, + 4, + 24, + 255, + 8, + 7, + 25, + 255, + 11, + 13, + 34, + 255, + 19, + 21, + 42, + 255, + 23, + 25, + 46, + 255, + 24, + 26, + 47, + 255, + 25, + 27, + 48, + 255, + 26, + 28, + 49, + 255, + 26, + 28, + 49, + 255, + 26, + 28, + 49, + 255, + 26, + 28, + 49, + 255, + 26, + 28, + 49, + 255, + 25, + 27, + 48, + 255, + 25, + 27, + 48, + 255, + 25, + 28, + 47, + 255, + 25, + 29, + 42, + 255, + 25, + 28, + 44, + 255, + 25, + 27, + 49, + 255, + 27, + 26, + 42, + 255, + 21, + 20, + 35, + 255, + 8, + 8, + 18, + 255, + 4, + 4, + 14, + 255, + 1, + 0, + 15, + 255, + 2, + 1, + 17, + 255, + 3, + 2, + 18, + 255, + 3, + 2, + 19, + 255, + 5, + 4, + 20, + 255, + 7, + 6, + 22, + 255, + 10, + 9, + 25, + 255, + 15, + 14, + 30, + 255, + 17, + 20, + 39, + 255, + 28, + 31, + 50, + 255, + 39, + 42, + 61, + 255, + 52, + 55, + 74, + 255, + 61, + 68, + 86, + 255, + 73, + 80, + 98, + 255, + 82, + 89, + 107, + 255, + 77, + 84, + 102, + 255, + 78, + 84, + 99, + 255, + 81, + 87, + 102, + 255, + 82, + 88, + 103, + 255, + 82, + 88, + 103, + 255, + 81, + 90, + 106, + 255, + 82, + 91, + 106, + 255, + 82, + 91, + 104, + 255, + 84, + 94, + 105, + 255, + 93, + 96, + 103, + 255, + 99, + 102, + 109, + 255, + 99, + 102, + 109, + 255, + 104, + 107, + 114, + 255, + 106, + 109, + 118, + 255, + 97, + 99, + 110, + 255, + 83, + 85, + 97, + 255, + 73, + 75, + 88, + 255, + 64, + 71, + 80, + 255, + 59, + 66, + 76, + 255, + 56, + 62, + 75, + 255, + 52, + 58, + 72, + 255, + 51, + 56, + 76, + 255, + 52, + 58, + 83, + 255, + 52, + 62, + 97, + 255, + 60, + 79, + 127, + 255, + 59, + 89, + 148, + 255, + 61, + 95, + 167, + 255, + 50, + 118, + 191, + 255, + 36, + 153, + 188, + 255, + 50, + 159, + 198, + 255, + 38, + 178, + 189, + 255, + 53, + 158, + 223, + 255, + 58, + 190, + 219, + 255, + 52, + 141, + 206, + 255, + 59, + 127, + 207, + 255, + 102, + 158, + 242, + 255, + 52, + 102, + 179, + 255, + 43, + 71, + 146, + 255, + 39, + 61, + 130, + 255, + 34, + 54, + 123, + 255, + 28, + 51, + 121, + 255, + 24, + 52, + 115, + 255, + 27, + 57, + 120, + 255, + 30, + 64, + 127, + 255, + 32, + 68, + 133, + 255, + 50, + 87, + 151, + 255, + 74, + 119, + 164, + 255, + 91, + 142, + 187, + 255, + 94, + 147, + 201, + 255, + 116, + 170, + 214, + 255, + 203, + 255, + 255, + 255, + 65, + 144, + 204, + 255, + 46, + 187, + 242, + 255, + 68, + 114, + 206, + 255, + 75, + 100, + 200, + 255, + 80, + 178, + 250, + 255, + 55, + 120, + 199, + 255, + 53, + 84, + 164, + 255, + 62, + 77, + 152, + 255, + 57, + 65, + 138, + 255, + 49, + 61, + 133, + 255, + 46, + 51, + 116, + 255, + 44, + 48, + 109, + 255, + 42, + 44, + 100, + 255, + 40, + 41, + 94, + 255, + 41, + 39, + 89, + 255, + 42, + 40, + 90, + 255, + 43, + 41, + 91, + 255, + 47, + 45, + 94, + 255, + 44, + 53, + 103, + 255, + 51, + 65, + 119, + 255, + 67, + 92, + 140, + 255, + 116, + 147, + 187, + 255, + 74, + 111, + 163, + 255, + 65, + 96, + 160, + 255, + 52, + 79, + 142, + 255, + 46, + 70, + 124, + 255, + 53, + 68, + 119, + 255, + 51, + 60, + 110, + 255, + 59, + 67, + 113, + 255, + 55, + 67, + 109, + 255, + 52, + 56, + 103, + 255, + 48, + 52, + 99, + 255, + 48, + 52, + 99, + 255, + 48, + 52, + 99, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 50, + 52, + 100, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 53, + 55, + 103, + 255, + 51, + 53, + 102, + 255, + 51, + 53, + 102, + 255, + 51, + 53, + 102, + 255, + 51, + 53, + 102, + 255, + 52, + 54, + 103, + 255, + 52, + 54, + 103, + 255, + 52, + 54, + 103, + 255, + 53, + 55, + 104, + 255, + 53, + 55, + 103, + 255, + 55, + 57, + 106, + 255, + 59, + 60, + 105, + 255, + 66, + 66, + 104, + 255, + 76, + 76, + 119, + 255, + 97, + 97, + 114, + 255, + 135, + 121, + 139, + 255, + 167, + 139, + 152, + 255, + 180, + 140, + 156, + 255, + 186, + 139, + 157, + 255, + 186, + 139, + 157, + 255, + 184, + 143, + 159, + 255, + 184, + 136, + 152, + 255, + 180, + 132, + 148, + 255, + 180, + 132, + 148, + 255, + 179, + 131, + 147, + 255, + 178, + 130, + 146, + 255, + 177, + 129, + 145, + 255, + 176, + 128, + 144, + 255, + 175, + 127, + 143, + 255, + 174, + 127, + 147, + 255, + 173, + 126, + 146, + 255, + 173, + 126, + 146, + 255, + 173, + 126, + 146, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 170, + 123, + 139, + 255, + 168, + 124, + 137, + 255, + 168, + 124, + 137, + 255, + 166, + 122, + 135, + 255, + 167, + 123, + 136, + 255, + 163, + 142, + 151, + 255, + 144, + 128, + 136, + 255, + 137, + 132, + 136, + 255, + 171, + 170, + 173, + 255, + 171, + 168, + 167, + 255, + 176, + 167, + 167, + 255, + 175, + 168, + 166, + 255, + 171, + 172, + 166, + 255, + 175, + 172, + 167, + 255, + 176, + 173, + 168, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 179, + 174, + 171, + 255, + 180, + 175, + 172, + 255, + 183, + 178, + 175, + 255, + 184, + 179, + 176, + 255, + 183, + 178, + 172, + 255, + 187, + 179, + 174, + 255, + 186, + 180, + 174, + 255, + 185, + 185, + 177, + 255, + 199, + 186, + 180, + 255, + 173, + 159, + 156, + 255, + 148, + 132, + 133, + 255, + 170, + 152, + 155, + 255, + 191, + 184, + 176, + 255, + 195, + 188, + 180, + 255, + 196, + 189, + 181, + 255, + 197, + 190, + 182, + 255, + 200, + 190, + 181, + 255, + 198, + 143, + 149, + 255, + 201, + 135, + 145, + 255, + 204, + 132, + 144, + 255, + 206, + 134, + 145, + 255, + 207, + 135, + 146, + 255, + 207, + 135, + 146, + 255, + 208, + 136, + 147, + 255, + 210, + 136, + 145, + 255, + 211, + 137, + 146, + 255, + 212, + 138, + 147, + 255, + 212, + 138, + 147, + 255, + 213, + 139, + 146, + 255, + 214, + 140, + 147, + 255, + 213, + 140, + 144, + 255, + 214, + 141, + 144, + 255, + 193, + 138, + 153, + 255, + 66, + 49, + 82, + 255, + 42, + 36, + 65, + 255, + 26, + 23, + 57, + 255, + 25, + 22, + 49, + 255, + 23, + 22, + 49, + 255, + 21, + 20, + 50, + 255, + 21, + 22, + 52, + 255, + 24, + 24, + 52, + 255, + 26, + 25, + 55, + 255, + 26, + 25, + 57, + 255, + 27, + 26, + 58, + 255, + 25, + 27, + 65, + 255, + 27, + 25, + 70, + 255, + 30, + 30, + 58, + 255, + 34, + 32, + 63, + 255, + 41, + 42, + 72, + 255, + 70, + 70, + 94, + 255, + 195, + 188, + 195, + 255, + 225, + 211, + 201, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 226, + 216, + 205, + 255, + 222, + 212, + 210, + 255, + 118, + 115, + 135, + 255, + 90, + 97, + 135, + 255, + 71, + 78, + 122, + 255, + 67, + 74, + 119, + 255, + 64, + 70, + 118, + 255, + 65, + 71, + 120, + 255, + 67, + 73, + 121, + 255, + 69, + 75, + 123, + 255, + 71, + 77, + 125, + 255, + 71, + 77, + 125, + 255, + 68, + 78, + 127, + 255, + 69, + 79, + 128, + 255, + 70, + 80, + 129, + 255, + 71, + 81, + 130, + 255, + 74, + 82, + 132, + 255, + 68, + 74, + 124, + 255, + 71, + 76, + 124, + 255, + 73, + 77, + 124, + 255, + 77, + 79, + 129, + 255, + 82, + 85, + 130, + 255, + 88, + 91, + 133, + 255, + 102, + 106, + 143, + 255, + 121, + 121, + 155, + 255, + 154, + 151, + 169, + 255, + 228, + 222, + 222, + 255, + 228, + 220, + 209, + 255, + 230, + 215, + 220, + 255, + 226, + 216, + 215, + 255, + 224, + 217, + 216, + 255, + 222, + 217, + 220, + 255, + 226, + 218, + 215, + 255, + 226, + 218, + 215, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 216, + 215, + 255, + 226, + 216, + 215, + 255, + 226, + 216, + 215, + 255, + 226, + 216, + 215, + 255, + 225, + 216, + 217, + 255, + 224, + 215, + 216, + 255, + 225, + 216, + 217, + 255, + 225, + 216, + 217, + 255, + 228, + 213, + 215, + 255, + 216, + 185, + 202, + 255, + 199, + 178, + 193, + 255, + 216, + 215, + 220, + 255, + 222, + 213, + 208, + 255, + 220, + 212, + 210, + 255, + 217, + 211, + 211, + 255, + 215, + 211, + 212, + 255, + 218, + 207, + 211, + 255, + 217, + 206, + 210, + 255, + 216, + 205, + 209, + 255, + 215, + 204, + 208, + 255, + 213, + 204, + 207, + 255, + 212, + 203, + 207, + 255, + 211, + 202, + 208, + 255, + 210, + 200, + 208, + 255, + 206, + 201, + 205, + 255, + 204, + 199, + 203, + 255, + 203, + 198, + 202, + 255, + 202, + 197, + 201, + 255, + 202, + 196, + 200, + 255, + 200, + 194, + 198, + 255, + 199, + 193, + 197, + 255, + 197, + 191, + 195, + 255, + 196, + 189, + 194, + 255, + 194, + 187, + 193, + 255, + 190, + 170, + 181, + 255, + 192, + 155, + 173, + 255, + 187, + 146, + 168, + 255, + 187, + 142, + 165, + 255, + 184, + 140, + 163, + 255, + 171, + 133, + 154, + 255, + 137, + 125, + 146, + 255, + 133, + 128, + 152, + 255, + 140, + 139, + 162, + 255, + 97, + 100, + 107, + 255, + 97, + 100, + 109, + 255, + 97, + 99, + 110, + 255, + 96, + 98, + 110, + 255, + 96, + 98, + 110, + 255, + 95, + 97, + 109, + 255, + 93, + 95, + 107, + 255, + 63, + 65, + 77, + 255, + 35, + 38, + 56, + 255, + 25, + 27, + 49, + 255, + 18, + 20, + 41, + 255, + 15, + 15, + 33, + 255, + 8, + 12, + 30, + 255, + 5, + 8, + 26, + 255, + 4, + 5, + 25, + 255, + 5, + 3, + 24, + 255, + 2, + 2, + 26, + 255, + 2, + 2, + 26, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 25, + 255, + 0, + 1, + 22, + 255, + 1, + 2, + 23, + 255, + 5, + 6, + 27, + 255, + 11, + 12, + 33, + 255, + 21, + 25, + 54, + 255, + 46, + 50, + 86, + 255, + 36, + 40, + 80, + 255, + 48, + 53, + 91, + 255, + 46, + 51, + 90, + 255, + 46, + 51, + 89, + 255, + 45, + 51, + 87, + 255, + 46, + 52, + 86, + 255, + 45, + 51, + 85, + 255, + 45, + 51, + 85, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 48, + 55, + 85, + 255, + 44, + 52, + 73, + 255, + 41, + 48, + 74, + 255, + 52, + 58, + 95, + 255, + 26, + 31, + 61, + 255, + 14, + 16, + 44, + 255, + 12, + 10, + 37, + 255, + 10, + 6, + 31, + 255, + 5, + 7, + 32, + 255, + 4, + 4, + 38, + 255, + 1, + 1, + 37, + 255, + 1, + 1, + 34, + 255, + 1, + 0, + 31, + 255, + 2, + 2, + 30, + 255, + 1, + 1, + 26, + 255, + 2, + 3, + 24, + 255, + 6, + 11, + 33, + 255, + 3, + 6, + 28, + 255, + 5, + 6, + 27, + 255, + 14, + 12, + 34, + 255, + 18, + 21, + 52, + 255, + 46, + 49, + 80, + 255, + 42, + 45, + 76, + 255, + 44, + 47, + 78, + 255, + 43, + 46, + 77, + 255, + 45, + 48, + 79, + 255, + 46, + 49, + 80, + 255, + 46, + 49, + 80, + 255, + 45, + 50, + 82, + 255, + 45, + 50, + 81, + 255, + 45, + 50, + 79, + 255, + 41, + 47, + 73, + 255, + 43, + 48, + 80, + 255, + 43, + 48, + 78, + 255, + 48, + 53, + 82, + 255, + 42, + 47, + 76, + 255, + 51, + 60, + 84, + 255, + 42, + 47, + 67, + 255, + 8, + 10, + 23, + 255, + 4, + 4, + 12, + 255, + 2, + 2, + 12, + 255, + 2, + 1, + 15, + 255, + 3, + 2, + 18, + 255, + 5, + 4, + 22, + 255, + 8, + 7, + 25, + 255, + 10, + 11, + 30, + 255, + 13, + 15, + 36, + 255, + 20, + 24, + 44, + 255, + 28, + 33, + 53, + 255, + 39, + 44, + 66, + 255, + 81, + 86, + 105, + 255, + 79, + 86, + 97, + 255, + 78, + 86, + 99, + 255, + 78, + 86, + 99, + 255, + 79, + 87, + 102, + 255, + 79, + 86, + 102, + 255, + 80, + 87, + 105, + 255, + 81, + 88, + 106, + 255, + 81, + 88, + 106, + 255, + 82, + 89, + 107, + 255, + 83, + 88, + 107, + 255, + 83, + 89, + 105, + 255, + 84, + 90, + 105, + 255, + 86, + 92, + 106, + 255, + 88, + 95, + 103, + 255, + 98, + 103, + 110, + 255, + 101, + 104, + 111, + 255, + 105, + 107, + 112, + 255, + 104, + 107, + 112, + 255, + 104, + 107, + 112, + 255, + 105, + 108, + 113, + 255, + 107, + 110, + 115, + 255, + 94, + 102, + 105, + 255, + 75, + 82, + 89, + 255, + 70, + 77, + 87, + 255, + 63, + 69, + 84, + 255, + 58, + 65, + 84, + 255, + 58, + 64, + 89, + 255, + 58, + 66, + 99, + 255, + 63, + 79, + 127, + 255, + 60, + 85, + 150, + 255, + 58, + 91, + 162, + 255, + 57, + 111, + 181, + 255, + 39, + 140, + 194, + 255, + 26, + 161, + 191, + 255, + 27, + 169, + 199, + 255, + 34, + 174, + 198, + 255, + 32, + 159, + 204, + 255, + 53, + 139, + 208, + 255, + 59, + 128, + 209, + 255, + 64, + 123, + 197, + 255, + 56, + 104, + 186, + 255, + 47, + 75, + 149, + 255, + 36, + 64, + 128, + 255, + 40, + 63, + 124, + 255, + 33, + 51, + 114, + 255, + 28, + 48, + 109, + 255, + 28, + 49, + 112, + 255, + 28, + 52, + 114, + 255, + 31, + 56, + 120, + 255, + 44, + 69, + 134, + 255, + 62, + 96, + 150, + 255, + 86, + 116, + 148, + 255, + 209, + 232, + 247, + 255, + 186, + 221, + 252, + 255, + 92, + 138, + 191, + 255, + 64, + 112, + 182, + 255, + 61, + 101, + 177, + 255, + 56, + 92, + 168, + 255, + 53, + 85, + 160, + 255, + 57, + 82, + 157, + 255, + 55, + 76, + 152, + 255, + 53, + 67, + 138, + 255, + 48, + 60, + 127, + 255, + 49, + 56, + 121, + 255, + 46, + 50, + 113, + 255, + 43, + 48, + 106, + 255, + 42, + 45, + 100, + 255, + 43, + 43, + 96, + 255, + 42, + 41, + 91, + 255, + 39, + 40, + 84, + 255, + 39, + 43, + 89, + 255, + 38, + 46, + 95, + 255, + 42, + 51, + 101, + 255, + 51, + 60, + 119, + 255, + 53, + 74, + 138, + 255, + 53, + 94, + 168, + 255, + 86, + 117, + 181, + 255, + 201, + 240, + 255, + 255, + 69, + 138, + 213, + 255, + 60, + 94, + 176, + 255, + 48, + 86, + 141, + 255, + 56, + 67, + 123, + 255, + 49, + 59, + 112, + 255, + 52, + 58, + 109, + 255, + 53, + 57, + 105, + 255, + 53, + 55, + 103, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 51, + 53, + 101, + 255, + 52, + 54, + 102, + 255, + 52, + 54, + 102, + 255, + 52, + 54, + 102, + 255, + 54, + 55, + 101, + 255, + 54, + 55, + 101, + 255, + 55, + 56, + 102, + 255, + 55, + 56, + 102, + 255, + 55, + 56, + 102, + 255, + 55, + 56, + 102, + 255, + 55, + 56, + 102, + 255, + 55, + 56, + 102, + 255, + 54, + 56, + 104, + 255, + 54, + 56, + 104, + 255, + 54, + 56, + 104, + 255, + 54, + 56, + 104, + 255, + 56, + 58, + 106, + 255, + 56, + 58, + 106, + 255, + 57, + 59, + 107, + 255, + 60, + 62, + 110, + 255, + 65, + 66, + 112, + 255, + 76, + 75, + 118, + 255, + 87, + 83, + 123, + 255, + 98, + 93, + 131, + 255, + 123, + 110, + 140, + 255, + 127, + 123, + 145, + 255, + 182, + 182, + 199, + 255, + 187, + 186, + 201, + 255, + 162, + 155, + 173, + 255, + 155, + 132, + 149, + 255, + 177, + 139, + 155, + 255, + 178, + 133, + 147, + 255, + 180, + 130, + 151, + 255, + 177, + 130, + 147, + 255, + 175, + 130, + 145, + 255, + 176, + 127, + 148, + 255, + 176, + 127, + 146, + 255, + 175, + 126, + 145, + 255, + 175, + 126, + 145, + 255, + 174, + 125, + 144, + 255, + 173, + 124, + 143, + 255, + 171, + 122, + 141, + 255, + 171, + 122, + 141, + 255, + 171, + 122, + 141, + 255, + 168, + 124, + 141, + 255, + 170, + 121, + 140, + 255, + 169, + 123, + 141, + 255, + 166, + 125, + 141, + 255, + 175, + 152, + 160, + 255, + 110, + 105, + 119, + 255, + 174, + 162, + 176, + 255, + 172, + 167, + 165, + 255, + 172, + 165, + 164, + 255, + 172, + 166, + 165, + 255, + 173, + 168, + 166, + 255, + 173, + 169, + 168, + 255, + 174, + 170, + 167, + 255, + 175, + 171, + 168, + 255, + 175, + 171, + 168, + 255, + 176, + 172, + 169, + 255, + 177, + 174, + 169, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 180, + 177, + 172, + 255, + 182, + 177, + 171, + 255, + 183, + 178, + 172, + 255, + 185, + 180, + 174, + 255, + 187, + 182, + 176, + 255, + 185, + 183, + 178, + 255, + 188, + 180, + 177, + 255, + 190, + 176, + 175, + 255, + 180, + 161, + 162, + 255, + 150, + 131, + 134, + 255, + 150, + 131, + 134, + 255, + 178, + 156, + 157, + 255, + 190, + 168, + 169, + 255, + 182, + 150, + 153, + 255, + 193, + 139, + 146, + 255, + 201, + 134, + 141, + 255, + 201, + 136, + 140, + 255, + 200, + 135, + 140, + 255, + 202, + 135, + 141, + 255, + 206, + 135, + 142, + 255, + 208, + 136, + 143, + 255, + 206, + 136, + 145, + 255, + 210, + 136, + 145, + 255, + 213, + 136, + 144, + 255, + 215, + 135, + 144, + 255, + 215, + 138, + 145, + 255, + 213, + 142, + 149, + 255, + 209, + 145, + 154, + 255, + 183, + 123, + 134, + 255, + 140, + 91, + 102, + 255, + 190, + 148, + 167, + 255, + 69, + 47, + 74, + 255, + 46, + 42, + 74, + 255, + 29, + 26, + 54, + 255, + 28, + 25, + 53, + 255, + 24, + 23, + 53, + 255, + 22, + 23, + 53, + 255, + 24, + 23, + 55, + 255, + 25, + 24, + 56, + 255, + 27, + 26, + 57, + 255, + 29, + 28, + 59, + 255, + 31, + 33, + 75, + 255, + 28, + 27, + 68, + 255, + 31, + 29, + 66, + 255, + 37, + 34, + 69, + 255, + 47, + 46, + 80, + 255, + 81, + 80, + 104, + 255, + 226, + 212, + 210, + 255, + 222, + 214, + 205, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 226, + 213, + 208, + 255, + 227, + 215, + 211, + 255, + 207, + 204, + 205, + 255, + 107, + 108, + 143, + 255, + 77, + 86, + 126, + 255, + 71, + 78, + 120, + 255, + 68, + 75, + 120, + 255, + 67, + 73, + 122, + 255, + 71, + 75, + 120, + 255, + 72, + 77, + 124, + 255, + 71, + 79, + 126, + 255, + 70, + 78, + 127, + 255, + 69, + 80, + 126, + 255, + 70, + 81, + 127, + 255, + 70, + 81, + 127, + 255, + 72, + 83, + 129, + 255, + 73, + 81, + 129, + 255, + 72, + 79, + 126, + 255, + 74, + 79, + 126, + 255, + 79, + 83, + 130, + 255, + 85, + 88, + 131, + 255, + 94, + 95, + 139, + 255, + 106, + 109, + 144, + 255, + 131, + 134, + 159, + 255, + 177, + 173, + 182, + 255, + 222, + 214, + 211, + 255, + 228, + 219, + 214, + 255, + 225, + 219, + 221, + 255, + 226, + 218, + 215, + 255, + 230, + 216, + 215, + 255, + 228, + 215, + 214, + 255, + 225, + 217, + 214, + 255, + 227, + 216, + 214, + 255, + 226, + 216, + 214, + 255, + 227, + 217, + 215, + 255, + 226, + 218, + 215, + 255, + 228, + 218, + 219, + 255, + 228, + 218, + 219, + 255, + 228, + 218, + 219, + 255, + 227, + 217, + 218, + 255, + 226, + 219, + 219, + 255, + 227, + 218, + 219, + 255, + 225, + 218, + 218, + 255, + 224, + 218, + 218, + 255, + 217, + 192, + 202, + 255, + 208, + 186, + 199, + 255, + 226, + 212, + 220, + 255, + 223, + 215, + 214, + 255, + 222, + 213, + 214, + 255, + 222, + 213, + 214, + 255, + 221, + 212, + 213, + 255, + 220, + 211, + 212, + 255, + 220, + 212, + 210, + 255, + 219, + 211, + 211, + 255, + 217, + 208, + 211, + 255, + 216, + 207, + 210, + 255, + 215, + 206, + 209, + 255, + 214, + 205, + 209, + 255, + 213, + 204, + 210, + 255, + 212, + 202, + 210, + 255, + 210, + 201, + 206, + 255, + 208, + 199, + 204, + 255, + 208, + 199, + 204, + 255, + 207, + 198, + 203, + 255, + 203, + 197, + 201, + 255, + 202, + 196, + 200, + 255, + 201, + 195, + 199, + 255, + 199, + 193, + 197, + 255, + 196, + 191, + 196, + 255, + 199, + 183, + 193, + 255, + 194, + 163, + 179, + 255, + 193, + 152, + 174, + 255, + 189, + 148, + 170, + 255, + 190, + 143, + 167, + 255, + 185, + 144, + 166, + 255, + 167, + 139, + 156, + 255, + 172, + 165, + 180, + 255, + 185, + 179, + 190, + 255, + 180, + 175, + 181, + 255, + 94, + 97, + 104, + 255, + 93, + 96, + 105, + 255, + 94, + 96, + 107, + 255, + 94, + 96, + 108, + 255, + 96, + 98, + 110, + 255, + 98, + 100, + 112, + 255, + 97, + 99, + 111, + 255, + 96, + 98, + 110, + 255, + 53, + 58, + 77, + 255, + 40, + 45, + 72, + 255, + 29, + 34, + 63, + 255, + 21, + 28, + 54, + 255, + 16, + 21, + 44, + 255, + 10, + 13, + 37, + 255, + 8, + 10, + 33, + 255, + 5, + 5, + 29, + 255, + 4, + 5, + 26, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 22, + 255, + 0, + 1, + 19, + 255, + 1, + 2, + 20, + 255, + 5, + 6, + 24, + 255, + 11, + 12, + 30, + 255, + 16, + 20, + 46, + 255, + 37, + 42, + 75, + 255, + 45, + 49, + 87, + 255, + 45, + 50, + 88, + 255, + 45, + 50, + 88, + 255, + 45, + 51, + 87, + 255, + 44, + 50, + 84, + 255, + 45, + 51, + 84, + 255, + 45, + 51, + 85, + 255, + 45, + 51, + 85, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 50, + 57, + 87, + 255, + 44, + 51, + 77, + 255, + 49, + 56, + 84, + 255, + 53, + 59, + 96, + 255, + 49, + 54, + 84, + 255, + 21, + 25, + 52, + 255, + 15, + 15, + 41, + 255, + 13, + 10, + 35, + 255, + 8, + 11, + 31, + 255, + 5, + 6, + 34, + 255, + 1, + 2, + 32, + 255, + 1, + 2, + 31, + 255, + 1, + 0, + 31, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 24, + 255, + 2, + 3, + 23, + 255, + 1, + 5, + 25, + 255, + 5, + 7, + 28, + 255, + 11, + 12, + 35, + 255, + 22, + 22, + 46, + 255, + 44, + 47, + 78, + 255, + 45, + 48, + 79, + 255, + 43, + 46, + 77, + 255, + 43, + 46, + 77, + 255, + 42, + 45, + 76, + 255, + 42, + 45, + 76, + 255, + 43, + 46, + 77, + 255, + 46, + 49, + 80, + 255, + 45, + 50, + 81, + 255, + 45, + 50, + 80, + 255, + 46, + 51, + 81, + 255, + 47, + 52, + 81, + 255, + 44, + 49, + 81, + 255, + 46, + 51, + 81, + 255, + 44, + 49, + 78, + 255, + 48, + 53, + 82, + 255, + 46, + 51, + 74, + 255, + 15, + 19, + 37, + 255, + 8, + 10, + 22, + 255, + 2, + 3, + 12, + 255, + 3, + 3, + 13, + 255, + 3, + 2, + 16, + 255, + 6, + 5, + 21, + 255, + 11, + 10, + 28, + 255, + 12, + 13, + 34, + 255, + 20, + 22, + 44, + 255, + 26, + 30, + 52, + 255, + 47, + 51, + 76, + 255, + 57, + 63, + 88, + 255, + 54, + 59, + 87, + 255, + 56, + 62, + 87, + 255, + 66, + 72, + 95, + 255, + 74, + 81, + 100, + 255, + 75, + 82, + 99, + 255, + 79, + 86, + 103, + 255, + 79, + 86, + 102, + 255, + 80, + 87, + 103, + 255, + 81, + 88, + 104, + 255, + 81, + 88, + 104, + 255, + 82, + 89, + 105, + 255, + 83, + 88, + 107, + 255, + 83, + 89, + 105, + 255, + 84, + 90, + 105, + 255, + 86, + 92, + 106, + 255, + 87, + 94, + 104, + 255, + 95, + 99, + 108, + 255, + 102, + 105, + 112, + 255, + 106, + 108, + 115, + 255, + 104, + 107, + 112, + 255, + 104, + 107, + 112, + 255, + 103, + 106, + 111, + 255, + 108, + 111, + 116, + 255, + 103, + 108, + 112, + 255, + 108, + 113, + 119, + 255, + 106, + 110, + 120, + 255, + 80, + 84, + 95, + 255, + 71, + 77, + 92, + 255, + 67, + 72, + 92, + 255, + 64, + 71, + 101, + 255, + 64, + 80, + 124, + 255, + 59, + 85, + 146, + 255, + 59, + 89, + 160, + 255, + 60, + 105, + 177, + 255, + 49, + 127, + 190, + 255, + 50, + 170, + 210, + 255, + 33, + 179, + 211, + 255, + 26, + 175, + 197, + 255, + 43, + 162, + 208, + 255, + 46, + 155, + 207, + 255, + 61, + 132, + 215, + 255, + 65, + 122, + 202, + 255, + 62, + 124, + 200, + 255, + 50, + 80, + 160, + 255, + 40, + 65, + 131, + 255, + 33, + 53, + 108, + 255, + 43, + 63, + 115, + 255, + 36, + 50, + 107, + 255, + 32, + 45, + 104, + 255, + 32, + 47, + 107, + 255, + 32, + 48, + 109, + 255, + 41, + 56, + 112, + 255, + 46, + 70, + 125, + 255, + 64, + 89, + 138, + 255, + 93, + 116, + 158, + 255, + 78, + 99, + 144, + 255, + 70, + 94, + 151, + 255, + 61, + 83, + 147, + 255, + 54, + 69, + 134, + 255, + 48, + 70, + 135, + 255, + 46, + 64, + 128, + 255, + 46, + 60, + 123, + 255, + 46, + 56, + 119, + 255, + 45, + 54, + 113, + 255, + 44, + 52, + 109, + 255, + 43, + 48, + 104, + 255, + 42, + 46, + 100, + 255, + 42, + 45, + 99, + 255, + 42, + 43, + 96, + 255, + 42, + 44, + 94, + 255, + 43, + 45, + 93, + 255, + 42, + 43, + 89, + 255, + 41, + 45, + 92, + 255, + 41, + 48, + 99, + 255, + 46, + 55, + 107, + 255, + 48, + 65, + 128, + 255, + 55, + 89, + 167, + 255, + 63, + 121, + 221, + 255, + 77, + 128, + 224, + 255, + 112, + 169, + 216, + 255, + 64, + 128, + 217, + 255, + 59, + 93, + 183, + 255, + 62, + 91, + 164, + 255, + 57, + 68, + 124, + 255, + 52, + 60, + 114, + 255, + 52, + 56, + 108, + 255, + 53, + 55, + 104, + 255, + 53, + 55, + 103, + 255, + 53, + 55, + 103, + 255, + 53, + 55, + 103, + 255, + 53, + 55, + 103, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 56, + 58, + 106, + 255, + 56, + 58, + 106, + 255, + 56, + 58, + 106, + 255, + 56, + 58, + 106, + 255, + 57, + 59, + 107, + 255, + 57, + 59, + 107, + 255, + 56, + 58, + 106, + 255, + 56, + 58, + 106, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 63, + 64, + 111, + 255, + 67, + 67, + 112, + 255, + 72, + 72, + 114, + 255, + 80, + 80, + 121, + 255, + 81, + 93, + 126, + 255, + 110, + 126, + 152, + 255, + 180, + 196, + 210, + 255, + 181, + 192, + 197, + 255, + 136, + 149, + 173, + 255, + 155, + 180, + 199, + 255, + 151, + 164, + 181, + 255, + 145, + 133, + 153, + 255, + 176, + 133, + 155, + 255, + 178, + 131, + 147, + 255, + 181, + 129, + 145, + 255, + 181, + 126, + 147, + 255, + 176, + 129, + 148, + 255, + 175, + 128, + 147, + 255, + 174, + 127, + 146, + 255, + 173, + 126, + 145, + 255, + 173, + 126, + 144, + 255, + 172, + 125, + 143, + 255, + 172, + 125, + 143, + 255, + 170, + 123, + 141, + 255, + 168, + 124, + 141, + 255, + 169, + 122, + 140, + 255, + 168, + 124, + 141, + 255, + 164, + 126, + 141, + 255, + 177, + 160, + 168, + 255, + 104, + 105, + 124, + 255, + 104, + 96, + 120, + 255, + 136, + 134, + 145, + 255, + 169, + 167, + 165, + 255, + 170, + 166, + 165, + 255, + 171, + 167, + 166, + 255, + 173, + 167, + 167, + 255, + 173, + 169, + 166, + 255, + 174, + 170, + 167, + 255, + 174, + 170, + 167, + 255, + 175, + 171, + 168, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 181, + 176, + 172, + 255, + 182, + 177, + 173, + 255, + 182, + 177, + 173, + 255, + 184, + 179, + 175, + 255, + 186, + 181, + 177, + 255, + 184, + 180, + 176, + 255, + 187, + 182, + 178, + 255, + 185, + 181, + 177, + 255, + 196, + 184, + 178, + 255, + 187, + 169, + 167, + 255, + 177, + 152, + 156, + 255, + 151, + 121, + 129, + 255, + 149, + 115, + 123, + 255, + 180, + 130, + 141, + 255, + 191, + 131, + 142, + 255, + 196, + 136, + 146, + 255, + 198, + 134, + 142, + 255, + 198, + 135, + 143, + 255, + 200, + 137, + 145, + 255, + 200, + 137, + 145, + 255, + 200, + 138, + 150, + 255, + 201, + 139, + 151, + 255, + 204, + 144, + 153, + 255, + 195, + 137, + 144, + 255, + 166, + 107, + 125, + 255, + 152, + 92, + 108, + 255, + 196, + 135, + 149, + 255, + 203, + 142, + 156, + 255, + 215, + 142, + 155, + 255, + 218, + 138, + 145, + 255, + 186, + 131, + 148, + 255, + 78, + 60, + 95, + 255, + 41, + 35, + 70, + 255, + 29, + 29, + 63, + 255, + 26, + 25, + 57, + 255, + 26, + 24, + 52, + 255, + 26, + 25, + 57, + 255, + 27, + 26, + 58, + 255, + 28, + 27, + 61, + 255, + 30, + 29, + 63, + 255, + 34, + 36, + 78, + 255, + 32, + 31, + 72, + 255, + 33, + 31, + 68, + 255, + 40, + 37, + 72, + 255, + 53, + 52, + 86, + 255, + 91, + 91, + 111, + 255, + 221, + 208, + 202, + 255, + 222, + 213, + 205, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 227, + 214, + 209, + 255, + 226, + 212, + 209, + 255, + 224, + 217, + 215, + 255, + 116, + 116, + 137, + 255, + 89, + 96, + 130, + 255, + 78, + 84, + 125, + 255, + 72, + 79, + 124, + 255, + 71, + 78, + 124, + 255, + 72, + 78, + 122, + 255, + 73, + 80, + 126, + 255, + 73, + 81, + 128, + 255, + 71, + 80, + 129, + 255, + 70, + 81, + 127, + 255, + 71, + 82, + 128, + 255, + 73, + 84, + 130, + 255, + 75, + 86, + 132, + 255, + 76, + 83, + 130, + 255, + 76, + 83, + 129, + 255, + 80, + 86, + 129, + 255, + 87, + 90, + 132, + 255, + 99, + 99, + 141, + 255, + 115, + 115, + 149, + 255, + 137, + 135, + 154, + 255, + 212, + 212, + 221, + 255, + 227, + 221, + 222, + 255, + 226, + 219, + 211, + 255, + 229, + 220, + 212, + 255, + 229, + 220, + 215, + 255, + 230, + 218, + 214, + 255, + 230, + 215, + 212, + 255, + 229, + 215, + 212, + 255, + 228, + 216, + 212, + 255, + 227, + 216, + 214, + 255, + 229, + 219, + 217, + 255, + 228, + 218, + 216, + 255, + 227, + 219, + 216, + 255, + 228, + 219, + 220, + 255, + 228, + 219, + 220, + 255, + 228, + 219, + 220, + 255, + 227, + 218, + 219, + 255, + 228, + 219, + 220, + 255, + 226, + 220, + 220, + 255, + 226, + 219, + 219, + 255, + 223, + 213, + 214, + 255, + 220, + 192, + 205, + 255, + 207, + 190, + 200, + 255, + 223, + 215, + 219, + 255, + 221, + 218, + 217, + 255, + 225, + 216, + 217, + 255, + 225, + 216, + 217, + 255, + 224, + 215, + 216, + 255, + 223, + 214, + 215, + 255, + 222, + 214, + 212, + 255, + 221, + 213, + 213, + 255, + 220, + 211, + 214, + 255, + 219, + 210, + 213, + 255, + 218, + 209, + 212, + 255, + 217, + 208, + 212, + 255, + 215, + 206, + 212, + 255, + 214, + 204, + 212, + 255, + 213, + 204, + 209, + 255, + 211, + 202, + 207, + 255, + 210, + 201, + 206, + 255, + 209, + 200, + 205, + 255, + 206, + 200, + 204, + 255, + 205, + 199, + 203, + 255, + 203, + 197, + 201, + 255, + 201, + 195, + 199, + 255, + 201, + 191, + 198, + 255, + 198, + 175, + 187, + 255, + 195, + 159, + 177, + 255, + 193, + 152, + 174, + 255, + 190, + 149, + 171, + 255, + 190, + 145, + 168, + 255, + 184, + 148, + 168, + 255, + 181, + 160, + 175, + 255, + 187, + 181, + 193, + 255, + 182, + 176, + 186, + 255, + 183, + 178, + 185, + 255, + 100, + 103, + 110, + 255, + 94, + 97, + 106, + 255, + 95, + 97, + 108, + 255, + 95, + 97, + 109, + 255, + 96, + 98, + 110, + 255, + 96, + 98, + 110, + 255, + 94, + 96, + 108, + 255, + 94, + 96, + 108, + 255, + 89, + 92, + 107, + 255, + 53, + 57, + 83, + 255, + 44, + 49, + 82, + 255, + 31, + 38, + 71, + 255, + 35, + 40, + 71, + 255, + 20, + 24, + 54, + 255, + 13, + 16, + 43, + 255, + 8, + 10, + 35, + 255, + 5, + 6, + 26, + 255, + 2, + 3, + 23, + 255, + 2, + 3, + 23, + 255, + 0, + 1, + 21, + 255, + 0, + 2, + 16, + 255, + 1, + 3, + 17, + 255, + 4, + 6, + 20, + 255, + 10, + 12, + 26, + 255, + 14, + 19, + 39, + 255, + 38, + 43, + 73, + 255, + 44, + 48, + 85, + 255, + 44, + 49, + 87, + 255, + 44, + 50, + 86, + 255, + 44, + 50, + 84, + 255, + 44, + 50, + 82, + 255, + 45, + 52, + 82, + 255, + 46, + 52, + 86, + 255, + 46, + 52, + 86, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 46, + 53, + 82, + 255, + 47, + 54, + 84, + 255, + 51, + 57, + 90, + 255, + 53, + 59, + 94, + 255, + 58, + 66, + 95, + 255, + 26, + 32, + 58, + 255, + 16, + 18, + 43, + 255, + 13, + 13, + 37, + 255, + 9, + 11, + 32, + 255, + 5, + 6, + 34, + 255, + 1, + 2, + 33, + 255, + 3, + 4, + 34, + 255, + 2, + 2, + 30, + 255, + 1, + 1, + 26, + 255, + 1, + 2, + 23, + 255, + 2, + 3, + 22, + 255, + 6, + 7, + 25, + 255, + 10, + 11, + 32, + 255, + 21, + 23, + 47, + 255, + 36, + 39, + 65, + 255, + 40, + 43, + 74, + 255, + 44, + 47, + 78, + 255, + 42, + 45, + 76, + 255, + 41, + 44, + 75, + 255, + 42, + 45, + 76, + 255, + 44, + 47, + 78, + 255, + 47, + 50, + 81, + 255, + 44, + 47, + 78, + 255, + 44, + 49, + 78, + 255, + 45, + 50, + 80, + 255, + 46, + 51, + 81, + 255, + 46, + 51, + 83, + 255, + 46, + 51, + 83, + 255, + 44, + 49, + 79, + 255, + 46, + 51, + 80, + 255, + 44, + 49, + 78, + 255, + 28, + 29, + 48, + 255, + 13, + 15, + 31, + 255, + 6, + 8, + 20, + 255, + 2, + 5, + 14, + 255, + 4, + 4, + 14, + 255, + 7, + 6, + 20, + 255, + 12, + 11, + 27, + 255, + 17, + 16, + 34, + 255, + 23, + 25, + 49, + 255, + 34, + 37, + 62, + 255, + 56, + 61, + 86, + 255, + 56, + 61, + 89, + 255, + 55, + 62, + 90, + 255, + 52, + 59, + 85, + 255, + 56, + 63, + 90, + 255, + 62, + 68, + 101, + 255, + 65, + 71, + 96, + 255, + 68, + 74, + 97, + 255, + 73, + 80, + 99, + 255, + 76, + 83, + 100, + 255, + 79, + 85, + 100, + 255, + 80, + 86, + 101, + 255, + 82, + 88, + 103, + 255, + 81, + 87, + 102, + 255, + 84, + 89, + 108, + 255, + 83, + 89, + 105, + 255, + 84, + 90, + 105, + 255, + 86, + 92, + 106, + 255, + 87, + 93, + 105, + 255, + 94, + 98, + 109, + 255, + 100, + 103, + 112, + 255, + 105, + 106, + 115, + 255, + 104, + 107, + 112, + 255, + 105, + 108, + 113, + 255, + 105, + 108, + 113, + 255, + 106, + 109, + 114, + 255, + 106, + 109, + 116, + 255, + 106, + 109, + 116, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 118, + 255, + 95, + 99, + 109, + 255, + 81, + 84, + 100, + 255, + 76, + 83, + 107, + 255, + 69, + 84, + 123, + 255, + 66, + 89, + 147, + 255, + 63, + 92, + 160, + 255, + 58, + 100, + 173, + 255, + 59, + 125, + 193, + 255, + 50, + 166, + 208, + 255, + 39, + 169, + 203, + 255, + 53, + 184, + 206, + 255, + 55, + 166, + 204, + 255, + 88, + 195, + 222, + 255, + 69, + 145, + 219, + 255, + 63, + 124, + 204, + 255, + 93, + 148, + 228, + 255, + 52, + 85, + 163, + 255, + 45, + 64, + 131, + 255, + 43, + 57, + 112, + 255, + 64, + 82, + 131, + 255, + 45, + 57, + 108, + 255, + 31, + 42, + 95, + 255, + 34, + 44, + 98, + 255, + 33, + 42, + 98, + 255, + 38, + 45, + 99, + 255, + 41, + 53, + 108, + 255, + 42, + 57, + 113, + 255, + 48, + 65, + 119, + 255, + 51, + 70, + 120, + 255, + 47, + 66, + 117, + 255, + 45, + 64, + 115, + 255, + 43, + 59, + 109, + 255, + 45, + 53, + 108, + 255, + 43, + 50, + 104, + 255, + 45, + 49, + 102, + 255, + 45, + 48, + 100, + 255, + 43, + 46, + 96, + 255, + 42, + 44, + 94, + 255, + 41, + 43, + 93, + 255, + 40, + 42, + 91, + 255, + 42, + 43, + 91, + 255, + 44, + 46, + 94, + 255, + 77, + 81, + 128, + 255, + 45, + 49, + 96, + 255, + 44, + 45, + 92, + 255, + 44, + 47, + 97, + 255, + 43, + 50, + 102, + 255, + 48, + 57, + 110, + 255, + 52, + 69, + 131, + 255, + 59, + 93, + 172, + 255, + 60, + 119, + 222, + 255, + 67, + 119, + 219, + 255, + 70, + 128, + 210, + 255, + 62, + 104, + 202, + 255, + 58, + 86, + 158, + 255, + 56, + 77, + 131, + 255, + 58, + 66, + 123, + 255, + 53, + 58, + 113, + 255, + 55, + 57, + 109, + 255, + 55, + 55, + 105, + 255, + 54, + 56, + 104, + 255, + 55, + 57, + 105, + 255, + 57, + 59, + 107, + 255, + 58, + 60, + 108, + 255, + 56, + 58, + 106, + 255, + 57, + 59, + 107, + 255, + 57, + 59, + 107, + 255, + 58, + 60, + 108, + 255, + 57, + 61, + 109, + 255, + 58, + 62, + 110, + 255, + 59, + 63, + 111, + 255, + 59, + 63, + 111, + 255, + 59, + 63, + 111, + 255, + 60, + 64, + 112, + 255, + 59, + 63, + 111, + 255, + 59, + 63, + 111, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 60, + 62, + 110, + 255, + 61, + 63, + 111, + 255, + 62, + 66, + 112, + 255, + 66, + 70, + 116, + 255, + 75, + 81, + 126, + 255, + 172, + 185, + 225, + 255, + 102, + 117, + 154, + 255, + 130, + 143, + 166, + 255, + 180, + 188, + 198, + 255, + 128, + 150, + 170, + 255, + 101, + 149, + 172, + 255, + 91, + 142, + 169, + 255, + 134, + 171, + 198, + 255, + 101, + 126, + 150, + 255, + 175, + 134, + 166, + 255, + 183, + 126, + 151, + 255, + 167, + 137, + 149, + 255, + 175, + 129, + 149, + 255, + 174, + 128, + 148, + 255, + 174, + 128, + 148, + 255, + 173, + 127, + 147, + 255, + 173, + 127, + 145, + 255, + 172, + 126, + 144, + 255, + 171, + 125, + 143, + 255, + 170, + 124, + 142, + 255, + 169, + 123, + 141, + 255, + 171, + 124, + 142, + 255, + 167, + 127, + 143, + 255, + 163, + 131, + 144, + 255, + 174, + 164, + 173, + 255, + 88, + 94, + 120, + 255, + 80, + 78, + 115, + 255, + 75, + 79, + 108, + 255, + 92, + 91, + 107, + 255, + 165, + 162, + 172, + 255, + 168, + 163, + 166, + 255, + 173, + 167, + 166, + 255, + 171, + 167, + 164, + 255, + 172, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 173, + 169, + 166, + 255, + 175, + 172, + 167, + 255, + 176, + 173, + 168, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 179, + 174, + 171, + 255, + 180, + 175, + 172, + 255, + 181, + 176, + 173, + 255, + 182, + 177, + 174, + 255, + 184, + 179, + 175, + 255, + 184, + 180, + 176, + 255, + 183, + 181, + 176, + 255, + 183, + 182, + 177, + 255, + 182, + 185, + 174, + 255, + 186, + 185, + 176, + 255, + 190, + 182, + 178, + 255, + 195, + 184, + 182, + 255, + 198, + 176, + 178, + 255, + 180, + 151, + 155, + 255, + 180, + 144, + 150, + 255, + 183, + 145, + 152, + 255, + 174, + 127, + 143, + 255, + 162, + 112, + 129, + 255, + 160, + 107, + 125, + 255, + 162, + 106, + 125, + 255, + 171, + 117, + 127, + 255, + 184, + 130, + 139, + 255, + 197, + 143, + 151, + 255, + 194, + 140, + 147, + 255, + 206, + 142, + 151, + 255, + 206, + 138, + 146, + 255, + 210, + 137, + 144, + 255, + 214, + 139, + 144, + 255, + 208, + 141, + 149, + 255, + 218, + 139, + 140, + 255, + 206, + 141, + 148, + 255, + 118, + 81, + 100, + 255, + 74, + 55, + 86, + 255, + 43, + 36, + 71, + 255, + 31, + 30, + 63, + 255, + 33, + 29, + 55, + 255, + 28, + 27, + 58, + 255, + 29, + 28, + 62, + 255, + 30, + 28, + 66, + 255, + 31, + 29, + 68, + 255, + 33, + 35, + 77, + 255, + 33, + 32, + 73, + 255, + 35, + 33, + 70, + 255, + 42, + 39, + 74, + 255, + 58, + 57, + 91, + 255, + 98, + 99, + 113, + 255, + 226, + 213, + 204, + 255, + 224, + 215, + 209, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 227, + 217, + 208, + 255, + 224, + 214, + 205, + 255, + 226, + 214, + 209, + 255, + 227, + 213, + 211, + 255, + 224, + 217, + 206, + 255, + 192, + 189, + 196, + 255, + 103, + 106, + 133, + 255, + 85, + 88, + 129, + 255, + 77, + 83, + 128, + 255, + 73, + 82, + 122, + 255, + 72, + 80, + 124, + 255, + 73, + 81, + 127, + 255, + 71, + 82, + 128, + 255, + 70, + 82, + 130, + 255, + 73, + 84, + 130, + 255, + 74, + 85, + 131, + 255, + 75, + 86, + 132, + 255, + 77, + 88, + 134, + 255, + 81, + 86, + 133, + 255, + 82, + 88, + 131, + 255, + 91, + 95, + 133, + 255, + 102, + 105, + 140, + 255, + 117, + 117, + 146, + 255, + 146, + 145, + 161, + 255, + 236, + 231, + 234, + 255, + 235, + 227, + 225, + 255, + 229, + 220, + 215, + 255, + 228, + 221, + 214, + 255, + 228, + 219, + 213, + 255, + 231, + 217, + 214, + 255, + 231, + 219, + 216, + 255, + 227, + 218, + 214, + 255, + 232, + 223, + 219, + 255, + 230, + 216, + 214, + 255, + 229, + 218, + 216, + 255, + 229, + 219, + 217, + 255, + 229, + 219, + 217, + 255, + 230, + 222, + 219, + 255, + 228, + 222, + 222, + 255, + 228, + 222, + 222, + 255, + 228, + 222, + 222, + 255, + 228, + 222, + 222, + 255, + 229, + 220, + 221, + 255, + 226, + 222, + 221, + 255, + 228, + 219, + 220, + 255, + 222, + 203, + 207, + 255, + 213, + 191, + 203, + 255, + 231, + 222, + 226, + 255, + 223, + 219, + 220, + 255, + 227, + 219, + 223, + 255, + 227, + 218, + 219, + 255, + 227, + 218, + 219, + 255, + 225, + 216, + 217, + 255, + 225, + 216, + 217, + 255, + 224, + 216, + 214, + 255, + 223, + 215, + 215, + 255, + 222, + 213, + 216, + 255, + 221, + 212, + 215, + 255, + 220, + 211, + 214, + 255, + 219, + 210, + 214, + 255, + 217, + 208, + 214, + 255, + 216, + 206, + 214, + 255, + 215, + 206, + 211, + 255, + 214, + 205, + 210, + 255, + 213, + 204, + 209, + 255, + 211, + 202, + 207, + 255, + 207, + 201, + 205, + 255, + 206, + 200, + 204, + 255, + 205, + 199, + 203, + 255, + 203, + 197, + 201, + 255, + 206, + 189, + 198, + 255, + 201, + 167, + 183, + 255, + 200, + 158, + 178, + 255, + 194, + 153, + 175, + 255, + 193, + 150, + 172, + 255, + 192, + 150, + 172, + 255, + 184, + 156, + 173, + 255, + 189, + 179, + 190, + 255, + 187, + 181, + 191, + 255, + 185, + 179, + 189, + 255, + 183, + 178, + 185, + 255, + 92, + 95, + 102, + 255, + 102, + 105, + 114, + 255, + 95, + 97, + 108, + 255, + 95, + 97, + 109, + 255, + 94, + 96, + 108, + 255, + 94, + 96, + 108, + 255, + 95, + 97, + 109, + 255, + 95, + 97, + 109, + 255, + 100, + 97, + 107, + 255, + 74, + 72, + 95, + 255, + 54, + 56, + 88, + 255, + 41, + 46, + 80, + 255, + 42, + 48, + 85, + 255, + 36, + 40, + 75, + 255, + 24, + 28, + 57, + 255, + 15, + 18, + 44, + 255, + 11, + 12, + 30, + 255, + 5, + 6, + 24, + 255, + 3, + 4, + 22, + 255, + 1, + 2, + 20, + 255, + 0, + 1, + 13, + 255, + 0, + 1, + 13, + 255, + 3, + 5, + 17, + 255, + 7, + 9, + 21, + 255, + 9, + 15, + 32, + 255, + 22, + 27, + 55, + 255, + 43, + 47, + 84, + 255, + 43, + 48, + 86, + 255, + 44, + 50, + 84, + 255, + 44, + 50, + 83, + 255, + 44, + 51, + 81, + 255, + 45, + 52, + 81, + 255, + 47, + 53, + 87, + 255, + 47, + 53, + 87, + 255, + 46, + 52, + 86, + 255, + 49, + 55, + 89, + 255, + 49, + 56, + 87, + 255, + 52, + 58, + 91, + 255, + 53, + 59, + 94, + 255, + 54, + 60, + 95, + 255, + 56, + 65, + 94, + 255, + 33, + 39, + 65, + 255, + 19, + 22, + 47, + 255, + 13, + 13, + 37, + 255, + 7, + 9, + 35, + 255, + 5, + 5, + 40, + 255, + 1, + 1, + 38, + 255, + 3, + 3, + 37, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 25, + 255, + 1, + 2, + 22, + 255, + 5, + 6, + 24, + 255, + 11, + 10, + 28, + 255, + 18, + 19, + 40, + 255, + 29, + 32, + 57, + 255, + 56, + 60, + 87, + 255, + 46, + 49, + 80, + 255, + 45, + 48, + 79, + 255, + 42, + 45, + 76, + 255, + 41, + 44, + 75, + 255, + 43, + 46, + 77, + 255, + 45, + 48, + 79, + 255, + 45, + 48, + 79, + 255, + 44, + 47, + 78, + 255, + 43, + 49, + 75, + 255, + 44, + 49, + 78, + 255, + 46, + 51, + 83, + 255, + 46, + 51, + 84, + 255, + 47, + 52, + 84, + 255, + 47, + 52, + 82, + 255, + 45, + 50, + 79, + 255, + 31, + 36, + 65, + 255, + 19, + 18, + 35, + 255, + 9, + 9, + 24, + 255, + 5, + 7, + 19, + 255, + 4, + 7, + 16, + 255, + 8, + 8, + 18, + 255, + 11, + 11, + 23, + 255, + 20, + 19, + 35, + 255, + 32, + 31, + 49, + 255, + 51, + 55, + 81, + 255, + 55, + 59, + 86, + 255, + 54, + 59, + 88, + 255, + 55, + 62, + 91, + 255, + 54, + 62, + 86, + 255, + 53, + 61, + 82, + 255, + 57, + 65, + 89, + 255, + 61, + 67, + 100, + 255, + 62, + 67, + 97, + 255, + 65, + 71, + 98, + 255, + 68, + 75, + 95, + 255, + 73, + 80, + 98, + 255, + 85, + 88, + 103, + 255, + 86, + 89, + 104, + 255, + 88, + 91, + 106, + 255, + 88, + 91, + 106, + 255, + 85, + 90, + 109, + 255, + 84, + 90, + 106, + 255, + 84, + 90, + 105, + 255, + 86, + 92, + 106, + 255, + 87, + 93, + 106, + 255, + 94, + 98, + 110, + 255, + 98, + 100, + 112, + 255, + 105, + 106, + 116, + 255, + 104, + 107, + 112, + 255, + 105, + 108, + 113, + 255, + 105, + 108, + 113, + 255, + 106, + 109, + 114, + 255, + 107, + 109, + 116, + 255, + 107, + 109, + 115, + 255, + 107, + 109, + 114, + 255, + 109, + 111, + 115, + 255, + 107, + 110, + 117, + 255, + 106, + 110, + 122, + 255, + 93, + 98, + 119, + 255, + 79, + 93, + 128, + 255, + 73, + 94, + 149, + 255, + 64, + 95, + 160, + 255, + 55, + 102, + 171, + 255, + 58, + 125, + 193, + 255, + 57, + 173, + 212, + 255, + 55, + 159, + 196, + 255, + 102, + 201, + 225, + 255, + 75, + 176, + 207, + 255, + 130, + 216, + 225, + 255, + 67, + 147, + 209, + 255, + 64, + 130, + 208, + 255, + 60, + 97, + 184, + 255, + 48, + 84, + 155, + 255, + 44, + 62, + 126, + 255, + 43, + 54, + 111, + 255, + 40, + 57, + 109, + 255, + 73, + 89, + 133, + 255, + 55, + 69, + 116, + 255, + 39, + 50, + 99, + 255, + 36, + 45, + 96, + 255, + 34, + 43, + 99, + 255, + 38, + 45, + 98, + 255, + 37, + 46, + 96, + 255, + 39, + 48, + 98, + 255, + 46, + 47, + 101, + 255, + 44, + 46, + 96, + 255, + 42, + 47, + 96, + 255, + 39, + 46, + 96, + 255, + 41, + 44, + 96, + 255, + 40, + 43, + 93, + 255, + 40, + 42, + 90, + 255, + 38, + 40, + 88, + 255, + 42, + 40, + 89, + 255, + 41, + 40, + 89, + 255, + 40, + 39, + 89, + 255, + 40, + 40, + 90, + 255, + 42, + 42, + 86, + 255, + 45, + 47, + 93, + 255, + 42, + 46, + 91, + 255, + 44, + 51, + 97, + 255, + 48, + 48, + 98, + 255, + 48, + 51, + 102, + 255, + 46, + 53, + 106, + 255, + 50, + 58, + 113, + 255, + 57, + 66, + 124, + 255, + 55, + 81, + 150, + 255, + 52, + 99, + 186, + 255, + 60, + 101, + 182, + 255, + 48, + 99, + 163, + 255, + 63, + 84, + 167, + 255, + 60, + 78, + 144, + 255, + 59, + 68, + 134, + 255, + 58, + 64, + 122, + 255, + 56, + 60, + 115, + 255, + 59, + 59, + 112, + 255, + 59, + 58, + 108, + 255, + 57, + 59, + 107, + 255, + 58, + 60, + 108, + 255, + 58, + 60, + 108, + 255, + 59, + 61, + 109, + 255, + 60, + 62, + 110, + 255, + 61, + 63, + 111, + 255, + 60, + 62, + 110, + 255, + 61, + 63, + 111, + 255, + 61, + 64, + 115, + 255, + 62, + 65, + 116, + 255, + 63, + 66, + 117, + 255, + 65, + 68, + 119, + 255, + 68, + 71, + 122, + 255, + 63, + 66, + 117, + 255, + 62, + 65, + 116, + 255, + 62, + 65, + 116, + 255, + 63, + 65, + 113, + 255, + 63, + 65, + 113, + 255, + 63, + 65, + 113, + 255, + 63, + 65, + 113, + 255, + 63, + 65, + 113, + 255, + 63, + 65, + 113, + 255, + 62, + 64, + 112, + 255, + 62, + 64, + 112, + 255, + 64, + 66, + 115, + 255, + 63, + 67, + 115, + 255, + 63, + 71, + 119, + 255, + 69, + 78, + 127, + 255, + 79, + 100, + 137, + 255, + 97, + 122, + 161, + 255, + 117, + 143, + 170, + 255, + 136, + 161, + 172, + 255, + 165, + 184, + 197, + 255, + 125, + 163, + 193, + 255, + 92, + 151, + 187, + 255, + 70, + 139, + 171, + 255, + 70, + 130, + 171, + 255, + 96, + 130, + 157, + 255, + 152, + 136, + 157, + 255, + 186, + 125, + 150, + 255, + 175, + 130, + 151, + 255, + 174, + 129, + 150, + 255, + 174, + 129, + 150, + 255, + 173, + 128, + 149, + 255, + 172, + 128, + 145, + 255, + 171, + 127, + 144, + 255, + 170, + 126, + 143, + 255, + 169, + 125, + 142, + 255, + 171, + 124, + 142, + 255, + 171, + 125, + 143, + 255, + 166, + 128, + 143, + 255, + 166, + 137, + 149, + 255, + 157, + 152, + 162, + 255, + 79, + 90, + 120, + 255, + 71, + 72, + 118, + 255, + 55, + 61, + 103, + 255, + 64, + 62, + 98, + 255, + 86, + 82, + 106, + 255, + 121, + 117, + 124, + 255, + 172, + 165, + 162, + 255, + 169, + 165, + 162, + 255, + 170, + 166, + 163, + 255, + 171, + 167, + 164, + 255, + 172, + 168, + 165, + 255, + 173, + 170, + 165, + 255, + 174, + 171, + 166, + 255, + 175, + 172, + 167, + 255, + 176, + 173, + 168, + 255, + 177, + 171, + 171, + 255, + 178, + 172, + 172, + 255, + 179, + 173, + 173, + 255, + 180, + 174, + 174, + 255, + 181, + 176, + 172, + 255, + 183, + 176, + 173, + 255, + 185, + 177, + 174, + 255, + 187, + 178, + 175, + 255, + 189, + 179, + 177, + 255, + 190, + 181, + 176, + 255, + 191, + 181, + 173, + 255, + 188, + 178, + 168, + 255, + 187, + 181, + 174, + 255, + 196, + 189, + 182, + 255, + 195, + 184, + 180, + 255, + 196, + 181, + 178, + 255, + 195, + 173, + 168, + 255, + 189, + 158, + 156, + 255, + 190, + 148, + 150, + 255, + 193, + 145, + 149, + 255, + 194, + 141, + 148, + 255, + 201, + 144, + 151, + 255, + 201, + 140, + 147, + 255, + 209, + 145, + 151, + 255, + 201, + 138, + 148, + 255, + 207, + 143, + 153, + 255, + 209, + 142, + 153, + 255, + 210, + 141, + 153, + 255, + 210, + 140, + 151, + 255, + 215, + 139, + 151, + 255, + 215, + 136, + 147, + 255, + 215, + 137, + 144, + 255, + 133, + 97, + 119, + 255, + 76, + 61, + 93, + 255, + 46, + 42, + 75, + 255, + 37, + 33, + 60, + 255, + 32, + 31, + 62, + 255, + 30, + 29, + 63, + 255, + 33, + 31, + 70, + 255, + 33, + 30, + 73, + 255, + 34, + 36, + 78, + 255, + 35, + 34, + 75, + 255, + 37, + 35, + 72, + 255, + 43, + 40, + 75, + 255, + 58, + 57, + 91, + 255, + 101, + 102, + 114, + 255, + 222, + 210, + 198, + 255, + 220, + 211, + 205, + 255, + 223, + 213, + 204, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 222, + 212, + 203, + 255, + 209, + 199, + 190, + 255, + 225, + 214, + 209, + 255, + 228, + 213, + 211, + 255, + 227, + 218, + 202, + 255, + 217, + 214, + 208, + 255, + 120, + 121, + 143, + 255, + 99, + 101, + 140, + 255, + 84, + 90, + 134, + 255, + 77, + 87, + 125, + 255, + 77, + 86, + 129, + 255, + 75, + 85, + 130, + 255, + 73, + 85, + 131, + 255, + 73, + 85, + 133, + 255, + 76, + 87, + 133, + 255, + 77, + 88, + 134, + 255, + 79, + 90, + 136, + 255, + 81, + 92, + 138, + 255, + 87, + 91, + 138, + 255, + 94, + 97, + 139, + 255, + 106, + 109, + 144, + 255, + 124, + 127, + 159, + 255, + 150, + 150, + 168, + 255, + 233, + 230, + 234, + 255, + 227, + 218, + 214, + 255, + 235, + 223, + 219, + 255, + 230, + 219, + 216, + 255, + 227, + 220, + 218, + 255, + 230, + 220, + 219, + 255, + 235, + 218, + 219, + 255, + 231, + 223, + 226, + 255, + 235, + 234, + 234, + 255, + 229, + 226, + 227, + 255, + 230, + 221, + 224, + 255, + 230, + 219, + 217, + 255, + 230, + 220, + 218, + 255, + 230, + 220, + 218, + 255, + 231, + 223, + 220, + 255, + 228, + 224, + 223, + 255, + 228, + 224, + 223, + 255, + 228, + 224, + 223, + 255, + 228, + 224, + 223, + 255, + 231, + 221, + 222, + 255, + 226, + 223, + 222, + 255, + 231, + 221, + 222, + 255, + 222, + 197, + 203, + 255, + 213, + 200, + 211, + 255, + 223, + 222, + 221, + 255, + 225, + 222, + 221, + 255, + 232, + 216, + 225, + 255, + 228, + 219, + 220, + 255, + 228, + 219, + 220, + 255, + 228, + 219, + 220, + 255, + 228, + 219, + 220, + 255, + 227, + 219, + 217, + 255, + 226, + 218, + 218, + 255, + 224, + 215, + 218, + 255, + 223, + 214, + 217, + 255, + 222, + 213, + 216, + 255, + 221, + 212, + 216, + 255, + 220, + 211, + 217, + 255, + 219, + 209, + 217, + 255, + 218, + 209, + 214, + 255, + 217, + 208, + 213, + 255, + 215, + 206, + 211, + 255, + 213, + 204, + 209, + 255, + 210, + 204, + 208, + 255, + 209, + 203, + 207, + 255, + 208, + 202, + 206, + 255, + 206, + 200, + 204, + 255, + 201, + 179, + 190, + 255, + 204, + 164, + 182, + 255, + 204, + 158, + 179, + 255, + 195, + 154, + 176, + 255, + 196, + 152, + 175, + 255, + 194, + 152, + 174, + 255, + 183, + 159, + 175, + 255, + 192, + 188, + 197, + 255, + 188, + 183, + 190, + 255, + 186, + 181, + 188, + 255, + 186, + 180, + 190, + 255, + 93, + 96, + 103, + 255, + 96, + 99, + 106, + 255, + 100, + 103, + 108, + 255, + 94, + 98, + 101, + 255, + 97, + 97, + 109, + 255, + 95, + 96, + 108, + 255, + 95, + 97, + 109, + 255, + 95, + 99, + 110, + 255, + 96, + 100, + 111, + 255, + 95, + 99, + 111, + 255, + 62, + 67, + 88, + 255, + 50, + 55, + 86, + 255, + 42, + 46, + 82, + 255, + 38, + 41, + 83, + 255, + 38, + 41, + 84, + 255, + 28, + 32, + 71, + 255, + 16, + 18, + 42, + 255, + 9, + 11, + 32, + 255, + 5, + 7, + 23, + 255, + 3, + 2, + 17, + 255, + 1, + 1, + 10, + 255, + 1, + 1, + 12, + 255, + 3, + 2, + 16, + 255, + 7, + 6, + 22, + 255, + 10, + 9, + 23, + 255, + 22, + 22, + 48, + 255, + 43, + 46, + 80, + 255, + 44, + 50, + 85, + 255, + 44, + 48, + 83, + 255, + 44, + 48, + 83, + 255, + 42, + 46, + 81, + 255, + 51, + 55, + 90, + 255, + 44, + 50, + 84, + 255, + 44, + 50, + 84, + 255, + 48, + 54, + 88, + 255, + 50, + 56, + 90, + 255, + 52, + 58, + 92, + 255, + 50, + 56, + 90, + 255, + 53, + 59, + 93, + 255, + 55, + 61, + 95, + 255, + 61, + 66, + 96, + 255, + 50, + 55, + 84, + 255, + 22, + 26, + 53, + 255, + 13, + 14, + 41, + 255, + 9, + 11, + 34, + 255, + 5, + 6, + 33, + 255, + 3, + 4, + 35, + 255, + 2, + 2, + 38, + 255, + 2, + 2, + 28, + 255, + 2, + 3, + 22, + 255, + 3, + 5, + 18, + 255, + 7, + 9, + 24, + 255, + 14, + 15, + 33, + 255, + 25, + 28, + 47, + 255, + 56, + 61, + 81, + 255, + 52, + 57, + 78, + 255, + 50, + 54, + 81, + 255, + 44, + 48, + 76, + 255, + 44, + 47, + 78, + 255, + 44, + 47, + 78, + 255, + 42, + 47, + 77, + 255, + 43, + 48, + 78, + 255, + 44, + 49, + 79, + 255, + 43, + 48, + 78, + 255, + 44, + 47, + 80, + 255, + 44, + 47, + 80, + 255, + 46, + 49, + 82, + 255, + 48, + 51, + 84, + 255, + 45, + 53, + 84, + 255, + 44, + 50, + 84, + 255, + 43, + 49, + 76, + 255, + 16, + 22, + 39, + 255, + 11, + 14, + 29, + 255, + 6, + 9, + 24, + 255, + 7, + 7, + 19, + 255, + 10, + 8, + 19, + 255, + 14, + 13, + 27, + 255, + 19, + 21, + 36, + 255, + 34, + 36, + 59, + 255, + 54, + 57, + 84, + 255, + 53, + 58, + 87, + 255, + 54, + 59, + 88, + 255, + 53, + 58, + 87, + 255, + 55, + 60, + 89, + 255, + 54, + 59, + 88, + 255, + 55, + 60, + 89, + 255, + 57, + 62, + 91, + 255, + 59, + 64, + 93, + 255, + 63, + 70, + 98, + 255, + 62, + 69, + 96, + 255, + 74, + 82, + 105, + 255, + 71, + 79, + 102, + 255, + 81, + 88, + 104, + 255, + 85, + 91, + 105, + 255, + 87, + 91, + 103, + 255, + 84, + 86, + 99, + 255, + 86, + 89, + 104, + 255, + 87, + 90, + 105, + 255, + 88, + 91, + 106, + 255, + 87, + 90, + 105, + 255, + 87, + 95, + 106, + 255, + 90, + 97, + 107, + 255, + 96, + 100, + 109, + 255, + 101, + 104, + 113, + 255, + 104, + 108, + 111, + 255, + 106, + 110, + 113, + 255, + 106, + 110, + 113, + 255, + 106, + 110, + 113, + 255, + 106, + 109, + 116, + 255, + 106, + 109, + 116, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 110, + 110, + 119, + 255, + 109, + 113, + 116, + 255, + 107, + 113, + 120, + 255, + 97, + 101, + 127, + 255, + 85, + 104, + 151, + 255, + 66, + 90, + 161, + 255, + 66, + 97, + 169, + 255, + 56, + 124, + 194, + 255, + 58, + 172, + 200, + 255, + 70, + 161, + 199, + 255, + 78, + 170, + 194, + 255, + 91, + 168, + 195, + 255, + 141, + 216, + 220, + 255, + 75, + 156, + 193, + 255, + 57, + 135, + 218, + 255, + 64, + 99, + 175, + 255, + 98, + 129, + 193, + 255, + 44, + 66, + 125, + 255, + 40, + 51, + 105, + 255, + 40, + 44, + 96, + 255, + 40, + 49, + 97, + 255, + 78, + 88, + 129, + 255, + 49, + 58, + 99, + 255, + 52, + 61, + 104, + 255, + 41, + 45, + 92, + 255, + 39, + 43, + 90, + 255, + 37, + 42, + 89, + 255, + 37, + 42, + 89, + 255, + 40, + 43, + 88, + 255, + 39, + 42, + 87, + 255, + 38, + 41, + 86, + 255, + 38, + 41, + 86, + 255, + 40, + 39, + 83, + 255, + 40, + 39, + 83, + 255, + 40, + 39, + 83, + 255, + 40, + 39, + 83, + 255, + 38, + 40, + 81, + 255, + 39, + 40, + 84, + 255, + 40, + 41, + 86, + 255, + 41, + 42, + 88, + 255, + 44, + 43, + 86, + 255, + 44, + 45, + 89, + 255, + 45, + 47, + 93, + 255, + 47, + 49, + 96, + 255, + 52, + 54, + 103, + 255, + 82, + 85, + 136, + 255, + 52, + 56, + 110, + 255, + 54, + 59, + 115, + 255, + 51, + 63, + 127, + 255, + 57, + 72, + 137, + 255, + 57, + 76, + 145, + 255, + 58, + 79, + 150, + 255, + 58, + 81, + 143, + 255, + 56, + 76, + 136, + 255, + 56, + 72, + 130, + 255, + 54, + 68, + 124, + 255, + 60, + 63, + 115, + 255, + 59, + 62, + 113, + 255, + 59, + 63, + 111, + 255, + 59, + 63, + 110, + 255, + 59, + 63, + 111, + 255, + 59, + 63, + 111, + 255, + 60, + 64, + 112, + 255, + 61, + 65, + 113, + 255, + 69, + 71, + 120, + 255, + 61, + 63, + 112, + 255, + 63, + 65, + 114, + 255, + 64, + 66, + 115, + 255, + 66, + 67, + 116, + 255, + 64, + 67, + 118, + 255, + 65, + 70, + 121, + 255, + 65, + 72, + 124, + 255, + 67, + 70, + 125, + 255, + 66, + 69, + 122, + 255, + 65, + 68, + 120, + 255, + 65, + 68, + 119, + 255, + 67, + 69, + 120, + 255, + 66, + 68, + 118, + 255, + 66, + 68, + 117, + 255, + 65, + 67, + 115, + 255, + 65, + 67, + 115, + 255, + 64, + 66, + 114, + 255, + 65, + 67, + 115, + 255, + 65, + 67, + 115, + 255, + 64, + 68, + 116, + 255, + 65, + 69, + 117, + 255, + 65, + 69, + 117, + 255, + 71, + 75, + 123, + 255, + 72, + 86, + 130, + 255, + 93, + 110, + 144, + 255, + 180, + 201, + 223, + 255, + 128, + 151, + 167, + 255, + 121, + 149, + 168, + 255, + 145, + 183, + 202, + 255, + 128, + 185, + 206, + 255, + 71, + 144, + 170, + 255, + 72, + 133, + 169, + 255, + 74, + 130, + 178, + 255, + 103, + 131, + 167, + 255, + 168, + 136, + 158, + 255, + 179, + 131, + 153, + 255, + 176, + 130, + 151, + 255, + 173, + 129, + 150, + 255, + 172, + 129, + 149, + 255, + 171, + 128, + 148, + 255, + 170, + 127, + 147, + 255, + 170, + 127, + 147, + 255, + 170, + 127, + 147, + 255, + 167, + 127, + 142, + 255, + 168, + 128, + 145, + 255, + 163, + 134, + 148, + 255, + 175, + 158, + 166, + 255, + 109, + 109, + 127, + 255, + 82, + 87, + 123, + 255, + 65, + 72, + 117, + 255, + 49, + 55, + 99, + 255, + 51, + 50, + 90, + 255, + 56, + 56, + 91, + 255, + 66, + 66, + 94, + 255, + 88, + 86, + 110, + 255, + 145, + 141, + 147, + 255, + 166, + 165, + 161, + 255, + 169, + 167, + 161, + 255, + 172, + 169, + 168, + 255, + 171, + 168, + 168, + 255, + 169, + 171, + 167, + 255, + 172, + 171, + 168, + 255, + 177, + 169, + 167, + 255, + 175, + 171, + 168, + 255, + 176, + 172, + 169, + 255, + 177, + 173, + 170, + 255, + 178, + 174, + 171, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 181, + 178, + 173, + 255, + 182, + 179, + 174, + 255, + 186, + 178, + 175, + 255, + 187, + 179, + 176, + 255, + 187, + 179, + 176, + 255, + 188, + 180, + 177, + 255, + 190, + 183, + 175, + 255, + 192, + 185, + 177, + 255, + 191, + 184, + 176, + 255, + 193, + 186, + 178, + 255, + 190, + 187, + 178, + 255, + 195, + 189, + 181, + 255, + 196, + 186, + 179, + 255, + 202, + 189, + 183, + 255, + 204, + 187, + 183, + 255, + 203, + 181, + 178, + 255, + 201, + 172, + 172, + 255, + 198, + 165, + 166, + 255, + 198, + 158, + 159, + 255, + 201, + 156, + 159, + 255, + 204, + 155, + 159, + 255, + 203, + 150, + 156, + 255, + 207, + 148, + 150, + 255, + 210, + 141, + 150, + 255, + 213, + 140, + 152, + 255, + 211, + 140, + 153, + 255, + 210, + 142, + 149, + 255, + 153, + 112, + 135, + 255, + 75, + 58, + 91, + 255, + 47, + 39, + 72, + 255, + 39, + 35, + 69, + 255, + 36, + 32, + 73, + 255, + 36, + 35, + 77, + 255, + 32, + 34, + 73, + 255, + 31, + 33, + 74, + 255, + 33, + 33, + 73, + 255, + 38, + 36, + 73, + 255, + 44, + 40, + 77, + 255, + 58, + 57, + 89, + 255, + 98, + 99, + 118, + 255, + 212, + 209, + 199, + 255, + 228, + 214, + 205, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 207, + 255, + 226, + 213, + 207, + 255, + 224, + 213, + 209, + 255, + 219, + 214, + 210, + 255, + 223, + 218, + 214, + 255, + 222, + 215, + 209, + 255, + 225, + 216, + 209, + 255, + 226, + 216, + 208, + 255, + 173, + 167, + 177, + 255, + 92, + 101, + 128, + 255, + 92, + 95, + 137, + 255, + 83, + 96, + 132, + 255, + 79, + 90, + 134, + 255, + 77, + 88, + 133, + 255, + 78, + 89, + 134, + 255, + 80, + 89, + 133, + 255, + 81, + 90, + 132, + 255, + 84, + 90, + 140, + 255, + 87, + 92, + 141, + 255, + 92, + 96, + 142, + 255, + 97, + 102, + 140, + 255, + 109, + 112, + 148, + 255, + 133, + 132, + 156, + 255, + 174, + 174, + 184, + 255, + 230, + 225, + 222, + 255, + 229, + 222, + 219, + 255, + 230, + 221, + 215, + 255, + 230, + 219, + 213, + 255, + 229, + 219, + 218, + 255, + 229, + 220, + 215, + 255, + 229, + 222, + 219, + 255, + 234, + 230, + 234, + 255, + 235, + 237, + 241, + 255, + 235, + 228, + 230, + 255, + 230, + 220, + 220, + 255, + 230, + 222, + 217, + 255, + 231, + 221, + 222, + 255, + 231, + 222, + 223, + 255, + 229, + 223, + 223, + 255, + 229, + 225, + 224, + 255, + 230, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 230, + 223, + 228, + 255, + 229, + 220, + 221, + 255, + 227, + 213, + 219, + 255, + 215, + 195, + 210, + 255, + 233, + 227, + 229, + 255, + 228, + 222, + 224, + 255, + 228, + 222, + 224, + 255, + 228, + 222, + 224, + 255, + 227, + 221, + 223, + 255, + 227, + 221, + 223, + 255, + 226, + 220, + 222, + 255, + 226, + 220, + 222, + 255, + 228, + 219, + 222, + 255, + 227, + 218, + 221, + 255, + 226, + 217, + 220, + 255, + 225, + 216, + 219, + 255, + 223, + 214, + 219, + 255, + 222, + 213, + 218, + 255, + 222, + 213, + 218, + 255, + 220, + 211, + 216, + 255, + 219, + 210, + 215, + 255, + 218, + 209, + 214, + 255, + 216, + 207, + 212, + 255, + 215, + 206, + 211, + 255, + 213, + 205, + 210, + 255, + 209, + 204, + 209, + 255, + 208, + 201, + 208, + 255, + 204, + 194, + 203, + 255, + 207, + 172, + 192, + 255, + 205, + 163, + 185, + 255, + 203, + 158, + 181, + 255, + 200, + 156, + 179, + 255, + 198, + 154, + 179, + 255, + 195, + 157, + 180, + 255, + 186, + 165, + 180, + 255, + 191, + 187, + 194, + 255, + 189, + 186, + 193, + 255, + 187, + 184, + 191, + 255, + 185, + 182, + 189, + 255, + 93, + 96, + 105, + 255, + 93, + 96, + 104, + 255, + 97, + 100, + 106, + 255, + 103, + 106, + 111, + 255, + 98, + 98, + 110, + 255, + 96, + 97, + 109, + 255, + 95, + 97, + 109, + 255, + 95, + 99, + 110, + 255, + 96, + 98, + 110, + 255, + 94, + 98, + 109, + 255, + 77, + 81, + 99, + 255, + 57, + 61, + 88, + 255, + 49, + 54, + 84, + 255, + 41, + 45, + 82, + 255, + 36, + 39, + 80, + 255, + 38, + 42, + 79, + 255, + 31, + 33, + 70, + 255, + 13, + 15, + 43, + 255, + 9, + 12, + 28, + 255, + 4, + 7, + 15, + 255, + 3, + 3, + 14, + 255, + 2, + 2, + 14, + 255, + 1, + 1, + 13, + 255, + 6, + 5, + 19, + 255, + 10, + 10, + 22, + 255, + 16, + 17, + 37, + 255, + 33, + 37, + 66, + 255, + 42, + 48, + 82, + 255, + 43, + 47, + 82, + 255, + 43, + 47, + 82, + 255, + 48, + 52, + 87, + 255, + 44, + 48, + 83, + 255, + 44, + 50, + 84, + 255, + 44, + 50, + 84, + 255, + 48, + 54, + 88, + 255, + 48, + 54, + 88, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 53, + 59, + 93, + 255, + 55, + 61, + 95, + 255, + 57, + 62, + 94, + 255, + 60, + 65, + 95, + 255, + 27, + 31, + 59, + 255, + 15, + 16, + 44, + 255, + 10, + 11, + 38, + 255, + 3, + 4, + 33, + 255, + 3, + 4, + 35, + 255, + 2, + 3, + 35, + 255, + 3, + 3, + 28, + 255, + 3, + 5, + 21, + 255, + 5, + 7, + 22, + 255, + 12, + 13, + 32, + 255, + 22, + 25, + 44, + 255, + 40, + 44, + 64, + 255, + 49, + 54, + 75, + 255, + 52, + 58, + 80, + 255, + 54, + 58, + 83, + 255, + 49, + 53, + 80, + 255, + 46, + 50, + 78, + 255, + 43, + 47, + 76, + 255, + 44, + 49, + 79, + 255, + 43, + 48, + 78, + 255, + 44, + 49, + 79, + 255, + 45, + 50, + 80, + 255, + 45, + 50, + 82, + 255, + 45, + 50, + 82, + 255, + 43, + 48, + 80, + 255, + 43, + 48, + 80, + 255, + 42, + 48, + 80, + 255, + 41, + 46, + 76, + 255, + 22, + 27, + 51, + 255, + 13, + 17, + 36, + 255, + 8, + 10, + 25, + 255, + 6, + 8, + 23, + 255, + 7, + 9, + 23, + 255, + 14, + 13, + 27, + 255, + 21, + 22, + 39, + 255, + 32, + 35, + 54, + 255, + 51, + 54, + 79, + 255, + 56, + 60, + 88, + 255, + 51, + 56, + 85, + 255, + 51, + 56, + 85, + 255, + 52, + 57, + 86, + 255, + 54, + 59, + 88, + 255, + 55, + 60, + 89, + 255, + 56, + 61, + 90, + 255, + 57, + 62, + 91, + 255, + 60, + 65, + 94, + 255, + 61, + 68, + 96, + 255, + 63, + 70, + 97, + 255, + 76, + 84, + 107, + 255, + 72, + 80, + 103, + 255, + 74, + 81, + 98, + 255, + 84, + 90, + 106, + 255, + 87, + 90, + 105, + 255, + 86, + 88, + 101, + 255, + 84, + 87, + 102, + 255, + 85, + 88, + 103, + 255, + 86, + 89, + 104, + 255, + 89, + 92, + 107, + 255, + 88, + 96, + 109, + 255, + 89, + 95, + 107, + 255, + 95, + 99, + 110, + 255, + 97, + 99, + 110, + 255, + 104, + 107, + 112, + 255, + 106, + 109, + 114, + 255, + 106, + 109, + 114, + 255, + 106, + 109, + 114, + 255, + 106, + 109, + 116, + 255, + 106, + 109, + 116, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 119, + 255, + 109, + 112, + 117, + 255, + 110, + 113, + 121, + 255, + 113, + 114, + 134, + 255, + 103, + 118, + 158, + 255, + 72, + 94, + 159, + 255, + 68, + 95, + 164, + 255, + 59, + 118, + 187, + 255, + 59, + 143, + 185, + 255, + 108, + 186, + 198, + 255, + 82, + 162, + 191, + 255, + 133, + 204, + 205, + 255, + 82, + 166, + 192, + 255, + 74, + 194, + 216, + 255, + 56, + 135, + 196, + 255, + 48, + 92, + 171, + 255, + 47, + 72, + 136, + 255, + 98, + 117, + 176, + 255, + 39, + 49, + 102, + 255, + 36, + 39, + 89, + 255, + 36, + 37, + 84, + 255, + 38, + 43, + 82, + 255, + 51, + 62, + 99, + 255, + 142, + 156, + 194, + 255, + 46, + 58, + 97, + 255, + 44, + 52, + 93, + 255, + 45, + 47, + 90, + 255, + 44, + 44, + 89, + 255, + 39, + 42, + 84, + 255, + 38, + 41, + 83, + 255, + 37, + 40, + 82, + 255, + 37, + 40, + 82, + 255, + 40, + 39, + 82, + 255, + 40, + 39, + 82, + 255, + 41, + 40, + 83, + 255, + 41, + 40, + 83, + 255, + 39, + 41, + 82, + 255, + 40, + 41, + 85, + 255, + 41, + 42, + 87, + 255, + 42, + 43, + 89, + 255, + 43, + 44, + 88, + 255, + 45, + 46, + 92, + 255, + 46, + 50, + 96, + 255, + 48, + 52, + 100, + 255, + 50, + 52, + 102, + 255, + 58, + 61, + 113, + 255, + 54, + 58, + 114, + 255, + 56, + 61, + 119, + 255, + 58, + 64, + 124, + 255, + 60, + 67, + 129, + 255, + 60, + 70, + 133, + 255, + 59, + 70, + 135, + 255, + 60, + 71, + 134, + 255, + 59, + 69, + 130, + 255, + 61, + 69, + 127, + 255, + 60, + 66, + 123, + 255, + 61, + 64, + 116, + 255, + 60, + 63, + 114, + 255, + 61, + 65, + 113, + 255, + 61, + 65, + 112, + 255, + 63, + 65, + 114, + 255, + 63, + 65, + 114, + 255, + 64, + 66, + 115, + 255, + 65, + 67, + 116, + 255, + 66, + 68, + 117, + 255, + 66, + 68, + 117, + 255, + 67, + 69, + 118, + 255, + 68, + 70, + 119, + 255, + 66, + 69, + 120, + 255, + 68, + 73, + 124, + 255, + 69, + 75, + 128, + 255, + 67, + 72, + 127, + 255, + 69, + 72, + 127, + 255, + 68, + 71, + 124, + 255, + 69, + 72, + 124, + 255, + 69, + 72, + 123, + 255, + 71, + 72, + 126, + 255, + 74, + 76, + 127, + 255, + 70, + 72, + 122, + 255, + 69, + 71, + 120, + 255, + 69, + 71, + 119, + 255, + 68, + 70, + 118, + 255, + 68, + 70, + 118, + 255, + 68, + 70, + 118, + 255, + 66, + 70, + 118, + 255, + 67, + 71, + 119, + 255, + 70, + 74, + 122, + 255, + 72, + 76, + 124, + 255, + 73, + 80, + 126, + 255, + 86, + 95, + 135, + 255, + 107, + 119, + 149, + 255, + 172, + 187, + 210, + 255, + 154, + 180, + 196, + 255, + 120, + 153, + 170, + 255, + 99, + 147, + 170, + 255, + 123, + 183, + 212, + 255, + 115, + 183, + 213, + 255, + 71, + 135, + 180, + 255, + 85, + 128, + 168, + 255, + 129, + 123, + 153, + 255, + 177, + 135, + 155, + 255, + 175, + 130, + 151, + 255, + 176, + 129, + 151, + 255, + 177, + 128, + 150, + 255, + 172, + 129, + 149, + 255, + 171, + 128, + 148, + 255, + 171, + 128, + 148, + 255, + 171, + 128, + 148, + 255, + 170, + 127, + 149, + 255, + 165, + 134, + 149, + 255, + 160, + 144, + 154, + 255, + 168, + 164, + 172, + 255, + 104, + 107, + 132, + 255, + 74, + 81, + 118, + 255, + 65, + 72, + 117, + 255, + 54, + 59, + 104, + 255, + 47, + 48, + 93, + 255, + 47, + 47, + 89, + 255, + 50, + 50, + 87, + 255, + 62, + 60, + 96, + 255, + 79, + 75, + 108, + 255, + 96, + 91, + 113, + 255, + 152, + 143, + 154, + 255, + 173, + 162, + 166, + 255, + 173, + 165, + 163, + 255, + 171, + 167, + 164, + 255, + 170, + 169, + 167, + 255, + 171, + 168, + 167, + 255, + 174, + 170, + 167, + 255, + 175, + 171, + 168, + 255, + 176, + 172, + 169, + 255, + 177, + 173, + 170, + 255, + 177, + 174, + 169, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 180, + 177, + 172, + 255, + 183, + 178, + 174, + 255, + 184, + 179, + 175, + 255, + 184, + 179, + 175, + 255, + 185, + 180, + 176, + 255, + 188, + 181, + 173, + 255, + 190, + 183, + 175, + 255, + 189, + 182, + 174, + 255, + 191, + 184, + 176, + 255, + 188, + 185, + 176, + 255, + 191, + 186, + 178, + 255, + 193, + 184, + 177, + 255, + 196, + 187, + 180, + 255, + 196, + 192, + 183, + 255, + 194, + 191, + 182, + 255, + 193, + 189, + 180, + 255, + 195, + 192, + 183, + 255, + 198, + 191, + 181, + 255, + 200, + 191, + 182, + 255, + 205, + 194, + 185, + 255, + 204, + 191, + 183, + 255, + 204, + 170, + 167, + 255, + 203, + 154, + 158, + 255, + 212, + 146, + 156, + 255, + 216, + 141, + 154, + 255, + 214, + 139, + 153, + 255, + 211, + 137, + 146, + 255, + 177, + 125, + 143, + 255, + 85, + 58, + 90, + 255, + 55, + 48, + 81, + 255, + 40, + 39, + 78, + 255, + 33, + 35, + 76, + 255, + 36, + 38, + 76, + 255, + 33, + 33, + 73, + 255, + 36, + 36, + 74, + 255, + 39, + 37, + 76, + 255, + 43, + 41, + 79, + 255, + 56, + 56, + 91, + 255, + 90, + 90, + 116, + 255, + 221, + 219, + 214, + 255, + 221, + 209, + 202, + 255, + 221, + 211, + 202, + 255, + 222, + 212, + 203, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 205, + 255, + 224, + 214, + 207, + 255, + 226, + 213, + 207, + 255, + 225, + 214, + 210, + 255, + 225, + 221, + 217, + 255, + 226, + 221, + 217, + 255, + 223, + 216, + 210, + 255, + 227, + 218, + 211, + 255, + 228, + 218, + 210, + 255, + 218, + 213, + 210, + 255, + 127, + 132, + 145, + 255, + 106, + 107, + 141, + 255, + 85, + 103, + 140, + 255, + 87, + 104, + 139, + 255, + 88, + 100, + 138, + 255, + 89, + 98, + 142, + 255, + 88, + 97, + 147, + 255, + 88, + 96, + 137, + 255, + 90, + 97, + 143, + 255, + 96, + 101, + 145, + 255, + 104, + 108, + 146, + 255, + 114, + 120, + 153, + 255, + 138, + 140, + 165, + 255, + 202, + 199, + 210, + 255, + 228, + 221, + 222, + 255, + 227, + 220, + 217, + 255, + 231, + 223, + 220, + 255, + 231, + 222, + 218, + 255, + 230, + 221, + 217, + 255, + 229, + 223, + 217, + 255, + 226, + 227, + 222, + 255, + 233, + 237, + 238, + 255, + 232, + 237, + 242, + 255, + 232, + 230, + 232, + 255, + 231, + 222, + 224, + 255, + 231, + 221, + 221, + 255, + 230, + 223, + 221, + 255, + 231, + 222, + 223, + 255, + 231, + 224, + 224, + 255, + 230, + 226, + 225, + 255, + 231, + 227, + 226, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 227, + 255, + 233, + 223, + 226, + 255, + 217, + 203, + 210, + 255, + 220, + 207, + 217, + 255, + 229, + 223, + 225, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 229, + 223, + 225, + 255, + 229, + 223, + 225, + 255, + 229, + 220, + 223, + 255, + 228, + 219, + 222, + 255, + 228, + 219, + 222, + 255, + 227, + 218, + 221, + 255, + 226, + 217, + 222, + 255, + 225, + 216, + 221, + 255, + 224, + 215, + 220, + 255, + 222, + 213, + 218, + 255, + 221, + 212, + 217, + 255, + 220, + 211, + 216, + 255, + 218, + 209, + 214, + 255, + 217, + 208, + 213, + 255, + 215, + 206, + 211, + 255, + 209, + 205, + 210, + 255, + 213, + 203, + 211, + 255, + 203, + 184, + 196, + 255, + 208, + 169, + 190, + 255, + 207, + 162, + 185, + 255, + 205, + 158, + 182, + 255, + 201, + 157, + 180, + 255, + 199, + 156, + 181, + 255, + 195, + 163, + 184, + 255, + 199, + 183, + 196, + 255, + 191, + 187, + 194, + 255, + 191, + 188, + 195, + 255, + 189, + 186, + 193, + 255, + 187, + 184, + 191, + 255, + 93, + 95, + 107, + 255, + 93, + 96, + 106, + 255, + 93, + 96, + 103, + 255, + 95, + 98, + 105, + 255, + 104, + 104, + 114, + 255, + 98, + 100, + 109, + 255, + 96, + 99, + 108, + 255, + 95, + 99, + 108, + 255, + 98, + 98, + 108, + 255, + 96, + 99, + 107, + 255, + 93, + 97, + 109, + 255, + 65, + 68, + 88, + 255, + 54, + 60, + 83, + 255, + 45, + 50, + 82, + 255, + 39, + 43, + 81, + 255, + 38, + 42, + 79, + 255, + 35, + 38, + 81, + 255, + 26, + 29, + 63, + 255, + 13, + 16, + 38, + 255, + 6, + 10, + 22, + 255, + 4, + 3, + 17, + 255, + 2, + 2, + 14, + 255, + 1, + 1, + 13, + 255, + 4, + 4, + 14, + 255, + 7, + 7, + 19, + 255, + 13, + 15, + 29, + 255, + 23, + 28, + 51, + 255, + 43, + 49, + 82, + 255, + 43, + 47, + 82, + 255, + 43, + 47, + 82, + 255, + 44, + 48, + 83, + 255, + 43, + 47, + 82, + 255, + 44, + 50, + 84, + 255, + 45, + 51, + 85, + 255, + 51, + 57, + 91, + 255, + 48, + 54, + 88, + 255, + 50, + 56, + 90, + 255, + 52, + 58, + 92, + 255, + 53, + 59, + 93, + 255, + 54, + 60, + 94, + 255, + 57, + 62, + 94, + 255, + 58, + 63, + 95, + 255, + 30, + 33, + 64, + 255, + 19, + 20, + 50, + 255, + 9, + 10, + 39, + 255, + 5, + 6, + 35, + 255, + 3, + 4, + 34, + 255, + 2, + 3, + 33, + 255, + 3, + 4, + 25, + 255, + 4, + 6, + 22, + 255, + 10, + 11, + 28, + 255, + 18, + 19, + 40, + 255, + 27, + 32, + 52, + 255, + 52, + 57, + 78, + 255, + 51, + 59, + 81, + 255, + 50, + 58, + 81, + 255, + 56, + 61, + 84, + 255, + 51, + 55, + 80, + 255, + 48, + 52, + 79, + 255, + 45, + 49, + 77, + 255, + 44, + 49, + 79, + 255, + 43, + 48, + 78, + 255, + 44, + 49, + 79, + 255, + 44, + 49, + 79, + 255, + 44, + 50, + 82, + 255, + 46, + 52, + 84, + 255, + 44, + 50, + 82, + 255, + 45, + 51, + 83, + 255, + 44, + 49, + 82, + 255, + 25, + 29, + 55, + 255, + 18, + 20, + 42, + 255, + 10, + 11, + 32, + 255, + 10, + 9, + 25, + 255, + 8, + 8, + 24, + 255, + 11, + 12, + 30, + 255, + 21, + 24, + 42, + 255, + 44, + 46, + 69, + 255, + 47, + 50, + 75, + 255, + 52, + 56, + 83, + 255, + 51, + 56, + 84, + 255, + 52, + 57, + 86, + 255, + 53, + 58, + 87, + 255, + 53, + 58, + 87, + 255, + 57, + 62, + 91, + 255, + 56, + 61, + 90, + 255, + 56, + 61, + 90, + 255, + 57, + 62, + 91, + 255, + 58, + 63, + 92, + 255, + 60, + 67, + 95, + 255, + 62, + 69, + 96, + 255, + 69, + 77, + 100, + 255, + 70, + 78, + 101, + 255, + 74, + 81, + 99, + 255, + 80, + 85, + 104, + 255, + 87, + 90, + 107, + 255, + 89, + 91, + 106, + 255, + 86, + 89, + 104, + 255, + 85, + 88, + 103, + 255, + 86, + 89, + 104, + 255, + 87, + 90, + 105, + 255, + 87, + 95, + 110, + 255, + 89, + 95, + 109, + 255, + 93, + 97, + 109, + 255, + 97, + 99, + 111, + 255, + 101, + 104, + 111, + 255, + 105, + 108, + 115, + 255, + 106, + 109, + 116, + 255, + 106, + 109, + 116, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 119, + 255, + 110, + 112, + 119, + 255, + 112, + 112, + 121, + 255, + 114, + 112, + 125, + 255, + 94, + 103, + 135, + 255, + 75, + 95, + 153, + 255, + 70, + 92, + 156, + 255, + 62, + 108, + 177, + 255, + 62, + 137, + 195, + 255, + 123, + 212, + 224, + 255, + 61, + 167, + 188, + 255, + 106, + 209, + 214, + 255, + 51, + 157, + 197, + 255, + 55, + 173, + 209, + 255, + 53, + 134, + 187, + 255, + 39, + 88, + 155, + 255, + 46, + 65, + 130, + 255, + 38, + 51, + 110, + 255, + 37, + 44, + 96, + 255, + 33, + 35, + 83, + 255, + 36, + 35, + 78, + 255, + 38, + 41, + 77, + 255, + 44, + 51, + 85, + 255, + 47, + 57, + 93, + 255, + 134, + 146, + 177, + 255, + 58, + 67, + 101, + 255, + 47, + 51, + 90, + 255, + 59, + 59, + 102, + 255, + 48, + 50, + 90, + 255, + 45, + 47, + 87, + 255, + 44, + 46, + 86, + 255, + 42, + 44, + 84, + 255, + 45, + 44, + 85, + 255, + 44, + 43, + 84, + 255, + 44, + 43, + 84, + 255, + 43, + 42, + 83, + 255, + 41, + 43, + 84, + 255, + 41, + 42, + 86, + 255, + 43, + 44, + 89, + 255, + 44, + 45, + 91, + 255, + 45, + 47, + 93, + 255, + 47, + 51, + 97, + 255, + 48, + 53, + 101, + 255, + 50, + 56, + 105, + 255, + 55, + 56, + 109, + 255, + 57, + 60, + 114, + 255, + 59, + 63, + 121, + 255, + 61, + 65, + 126, + 255, + 61, + 65, + 125, + 255, + 63, + 67, + 128, + 255, + 63, + 67, + 128, + 255, + 64, + 68, + 129, + 255, + 63, + 67, + 129, + 255, + 63, + 68, + 127, + 255, + 62, + 67, + 123, + 255, + 61, + 66, + 119, + 255, + 63, + 66, + 118, + 255, + 64, + 67, + 118, + 255, + 62, + 66, + 114, + 255, + 64, + 68, + 115, + 255, + 66, + 68, + 117, + 255, + 66, + 68, + 117, + 255, + 66, + 68, + 117, + 255, + 67, + 69, + 118, + 255, + 69, + 71, + 120, + 255, + 70, + 72, + 121, + 255, + 69, + 71, + 120, + 255, + 70, + 72, + 121, + 255, + 65, + 74, + 124, + 255, + 75, + 82, + 135, + 255, + 74, + 79, + 135, + 255, + 71, + 76, + 132, + 255, + 72, + 75, + 130, + 255, + 71, + 74, + 127, + 255, + 71, + 74, + 126, + 255, + 71, + 74, + 125, + 255, + 74, + 75, + 131, + 255, + 74, + 75, + 129, + 255, + 72, + 74, + 125, + 255, + 72, + 74, + 125, + 255, + 71, + 73, + 121, + 255, + 70, + 72, + 120, + 255, + 71, + 73, + 121, + 255, + 71, + 73, + 121, + 255, + 68, + 72, + 120, + 255, + 68, + 72, + 120, + 255, + 69, + 73, + 121, + 255, + 77, + 81, + 129, + 255, + 75, + 79, + 127, + 255, + 81, + 86, + 128, + 255, + 90, + 98, + 134, + 255, + 104, + 115, + 146, + 255, + 171, + 192, + 212, + 255, + 168, + 194, + 211, + 255, + 132, + 169, + 188, + 255, + 110, + 156, + 180, + 255, + 83, + 138, + 162, + 255, + 92, + 141, + 180, + 255, + 108, + 141, + 177, + 255, + 127, + 116, + 148, + 255, + 177, + 134, + 154, + 255, + 177, + 132, + 153, + 255, + 177, + 130, + 152, + 255, + 177, + 129, + 151, + 255, + 173, + 130, + 150, + 255, + 172, + 129, + 149, + 255, + 172, + 129, + 149, + 255, + 172, + 129, + 149, + 255, + 169, + 132, + 151, + 255, + 161, + 141, + 151, + 255, + 171, + 166, + 178, + 255, + 112, + 114, + 133, + 255, + 89, + 95, + 129, + 255, + 73, + 82, + 121, + 255, + 67, + 76, + 118, + 255, + 60, + 64, + 110, + 255, + 47, + 50, + 94, + 255, + 43, + 44, + 88, + 255, + 45, + 45, + 87, + 255, + 48, + 47, + 87, + 255, + 52, + 50, + 95, + 255, + 64, + 59, + 98, + 255, + 80, + 73, + 100, + 255, + 103, + 96, + 114, + 255, + 155, + 145, + 156, + 255, + 172, + 162, + 170, + 255, + 171, + 165, + 167, + 255, + 168, + 167, + 165, + 255, + 173, + 169, + 166, + 255, + 174, + 170, + 167, + 255, + 174, + 170, + 167, + 255, + 175, + 171, + 168, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 178, + 175, + 170, + 255, + 179, + 176, + 171, + 255, + 180, + 177, + 172, + 255, + 181, + 178, + 173, + 255, + 182, + 179, + 174, + 255, + 183, + 180, + 175, + 255, + 187, + 180, + 174, + 255, + 188, + 181, + 175, + 255, + 188, + 181, + 175, + 255, + 190, + 183, + 177, + 255, + 190, + 186, + 177, + 255, + 191, + 187, + 178, + 255, + 191, + 186, + 178, + 255, + 194, + 188, + 180, + 255, + 197, + 187, + 180, + 255, + 197, + 188, + 181, + 255, + 196, + 189, + 181, + 255, + 197, + 191, + 183, + 255, + 198, + 191, + 181, + 255, + 201, + 191, + 182, + 255, + 202, + 192, + 183, + 255, + 203, + 193, + 184, + 255, + 205, + 194, + 188, + 255, + 210, + 189, + 186, + 255, + 203, + 164, + 165, + 255, + 208, + 155, + 159, + 255, + 211, + 145, + 157, + 255, + 217, + 141, + 143, + 255, + 213, + 142, + 149, + 255, + 197, + 141, + 161, + 255, + 94, + 61, + 86, + 255, + 60, + 45, + 77, + 255, + 46, + 44, + 82, + 255, + 46, + 45, + 85, + 255, + 39, + 37, + 74, + 255, + 38, + 36, + 75, + 255, + 38, + 37, + 77, + 255, + 42, + 43, + 82, + 255, + 51, + 53, + 91, + 255, + 80, + 82, + 115, + 255, + 179, + 177, + 179, + 255, + 217, + 206, + 201, + 255, + 221, + 211, + 202, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 225, + 215, + 208, + 255, + 227, + 214, + 208, + 255, + 225, + 214, + 210, + 255, + 225, + 221, + 217, + 255, + 210, + 205, + 201, + 255, + 224, + 217, + 211, + 255, + 225, + 216, + 209, + 255, + 227, + 217, + 209, + 255, + 227, + 220, + 210, + 255, + 188, + 189, + 191, + 255, + 117, + 127, + 154, + 255, + 142, + 183, + 222, + 255, + 126, + 166, + 201, + 255, + 106, + 128, + 158, + 255, + 108, + 120, + 152, + 255, + 98, + 108, + 145, + 255, + 100, + 107, + 145, + 255, + 102, + 108, + 149, + 255, + 110, + 114, + 151, + 255, + 121, + 125, + 155, + 255, + 150, + 148, + 170, + 255, + 216, + 212, + 221, + 255, + 228, + 222, + 222, + 255, + 230, + 222, + 218, + 255, + 231, + 221, + 219, + 255, + 231, + 221, + 220, + 255, + 230, + 222, + 221, + 255, + 229, + 222, + 222, + 255, + 229, + 226, + 226, + 255, + 232, + 238, + 238, + 255, + 233, + 240, + 243, + 255, + 231, + 231, + 234, + 255, + 231, + 225, + 226, + 255, + 234, + 222, + 224, + 255, + 232, + 222, + 223, + 255, + 231, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 230, + 226, + 225, + 255, + 230, + 227, + 226, + 255, + 229, + 228, + 226, + 255, + 232, + 226, + 226, + 255, + 232, + 226, + 226, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 230, + 226, + 225, + 255, + 232, + 218, + 226, + 255, + 212, + 199, + 208, + 255, + 230, + 225, + 229, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 221, + 224, + 255, + 229, + 220, + 223, + 255, + 229, + 220, + 223, + 255, + 228, + 219, + 222, + 255, + 228, + 219, + 224, + 255, + 227, + 218, + 223, + 255, + 225, + 216, + 221, + 255, + 223, + 214, + 219, + 255, + 222, + 213, + 218, + 255, + 221, + 212, + 217, + 255, + 220, + 211, + 216, + 255, + 218, + 209, + 214, + 255, + 217, + 208, + 213, + 255, + 210, + 208, + 212, + 255, + 215, + 201, + 210, + 255, + 211, + 178, + 195, + 255, + 210, + 168, + 190, + 255, + 208, + 161, + 185, + 255, + 207, + 159, + 183, + 255, + 201, + 159, + 181, + 255, + 200, + 159, + 183, + 255, + 192, + 166, + 185, + 255, + 204, + 194, + 205, + 255, + 195, + 192, + 199, + 255, + 192, + 189, + 196, + 255, + 190, + 187, + 194, + 255, + 189, + 186, + 193, + 255, + 92, + 94, + 107, + 255, + 92, + 94, + 106, + 255, + 93, + 96, + 105, + 255, + 92, + 95, + 103, + 255, + 100, + 100, + 108, + 255, + 107, + 109, + 116, + 255, + 99, + 102, + 109, + 255, + 95, + 100, + 106, + 255, + 97, + 95, + 106, + 255, + 96, + 97, + 103, + 255, + 95, + 98, + 108, + 255, + 84, + 87, + 104, + 255, + 63, + 70, + 89, + 255, + 52, + 57, + 85, + 255, + 41, + 45, + 81, + 255, + 38, + 42, + 79, + 255, + 37, + 42, + 84, + 255, + 37, + 41, + 77, + 255, + 20, + 24, + 51, + 255, + 10, + 14, + 34, + 255, + 7, + 6, + 22, + 255, + 3, + 2, + 16, + 255, + 1, + 1, + 11, + 255, + 4, + 4, + 13, + 255, + 5, + 5, + 17, + 255, + 8, + 11, + 21, + 255, + 16, + 22, + 39, + 255, + 41, + 48, + 78, + 255, + 43, + 47, + 82, + 255, + 43, + 47, + 82, + 255, + 43, + 47, + 82, + 255, + 45, + 49, + 84, + 255, + 44, + 50, + 84, + 255, + 45, + 51, + 85, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 55, + 60, + 94, + 255, + 55, + 60, + 92, + 255, + 39, + 42, + 74, + 255, + 20, + 21, + 52, + 255, + 10, + 11, + 41, + 255, + 6, + 7, + 37, + 255, + 3, + 4, + 33, + 255, + 2, + 3, + 31, + 255, + 4, + 5, + 25, + 255, + 8, + 10, + 26, + 255, + 14, + 15, + 33, + 255, + 27, + 27, + 51, + 255, + 56, + 61, + 82, + 255, + 52, + 58, + 80, + 255, + 55, + 63, + 86, + 255, + 50, + 60, + 85, + 255, + 53, + 58, + 80, + 255, + 54, + 58, + 83, + 255, + 50, + 54, + 79, + 255, + 48, + 52, + 79, + 255, + 44, + 49, + 79, + 255, + 43, + 48, + 78, + 255, + 45, + 50, + 80, + 255, + 45, + 50, + 80, + 255, + 43, + 49, + 81, + 255, + 44, + 50, + 82, + 255, + 44, + 50, + 82, + 255, + 46, + 52, + 84, + 255, + 39, + 42, + 76, + 255, + 19, + 22, + 45, + 255, + 12, + 13, + 33, + 255, + 8, + 9, + 30, + 255, + 11, + 9, + 24, + 255, + 13, + 12, + 29, + 255, + 21, + 24, + 42, + 255, + 41, + 45, + 65, + 255, + 48, + 52, + 79, + 255, + 50, + 54, + 81, + 255, + 50, + 55, + 83, + 255, + 52, + 59, + 87, + 255, + 51, + 56, + 85, + 255, + 52, + 57, + 86, + 255, + 53, + 58, + 87, + 255, + 54, + 59, + 88, + 255, + 57, + 62, + 91, + 255, + 59, + 64, + 93, + 255, + 57, + 62, + 91, + 255, + 57, + 62, + 91, + 255, + 57, + 64, + 92, + 255, + 60, + 67, + 94, + 255, + 66, + 74, + 97, + 255, + 72, + 80, + 103, + 255, + 82, + 89, + 108, + 255, + 81, + 86, + 106, + 255, + 83, + 86, + 103, + 255, + 88, + 89, + 107, + 255, + 88, + 91, + 106, + 255, + 88, + 91, + 106, + 255, + 84, + 87, + 102, + 255, + 90, + 93, + 108, + 255, + 84, + 91, + 107, + 255, + 87, + 93, + 108, + 255, + 91, + 94, + 109, + 255, + 95, + 97, + 110, + 255, + 97, + 100, + 109, + 255, + 105, + 108, + 117, + 255, + 106, + 109, + 118, + 255, + 106, + 109, + 118, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 117, + 255, + 110, + 111, + 120, + 255, + 113, + 111, + 122, + 255, + 115, + 112, + 122, + 255, + 102, + 108, + 134, + 255, + 72, + 91, + 144, + 255, + 71, + 91, + 151, + 255, + 61, + 98, + 168, + 255, + 55, + 114, + 191, + 255, + 59, + 145, + 187, + 255, + 66, + 185, + 200, + 255, + 32, + 151, + 191, + 255, + 52, + 154, + 203, + 255, + 48, + 109, + 182, + 255, + 44, + 100, + 167, + 255, + 48, + 68, + 128, + 255, + 41, + 56, + 121, + 255, + 35, + 46, + 105, + 255, + 32, + 38, + 89, + 255, + 31, + 34, + 80, + 255, + 32, + 35, + 75, + 255, + 38, + 41, + 75, + 255, + 44, + 45, + 79, + 255, + 51, + 52, + 89, + 255, + 69, + 75, + 102, + 255, + 76, + 83, + 114, + 255, + 115, + 122, + 158, + 255, + 65, + 72, + 110, + 255, + 64, + 64, + 102, + 255, + 59, + 59, + 97, + 255, + 55, + 55, + 93, + 255, + 53, + 53, + 91, + 255, + 52, + 51, + 91, + 255, + 51, + 50, + 90, + 255, + 50, + 49, + 89, + 255, + 49, + 48, + 88, + 255, + 45, + 47, + 88, + 255, + 45, + 46, + 90, + 255, + 46, + 47, + 92, + 255, + 49, + 50, + 96, + 255, + 49, + 51, + 98, + 255, + 50, + 54, + 102, + 255, + 52, + 58, + 107, + 255, + 53, + 60, + 110, + 255, + 61, + 62, + 116, + 255, + 65, + 67, + 124, + 255, + 66, + 69, + 129, + 255, + 68, + 72, + 134, + 255, + 68, + 73, + 137, + 255, + 68, + 73, + 137, + 255, + 67, + 71, + 134, + 255, + 66, + 70, + 132, + 255, + 66, + 71, + 130, + 255, + 65, + 70, + 127, + 255, + 64, + 71, + 123, + 255, + 65, + 73, + 122, + 255, + 67, + 70, + 122, + 255, + 71, + 74, + 125, + 255, + 66, + 70, + 118, + 255, + 68, + 72, + 119, + 255, + 70, + 70, + 120, + 255, + 70, + 70, + 120, + 255, + 71, + 71, + 121, + 255, + 72, + 72, + 122, + 255, + 70, + 72, + 121, + 255, + 71, + 73, + 122, + 255, + 72, + 74, + 123, + 255, + 73, + 75, + 124, + 255, + 70, + 82, + 132, + 255, + 76, + 85, + 137, + 255, + 73, + 78, + 134, + 255, + 74, + 77, + 135, + 255, + 75, + 78, + 133, + 255, + 74, + 77, + 130, + 255, + 74, + 77, + 129, + 255, + 76, + 79, + 130, + 255, + 76, + 77, + 133, + 255, + 76, + 77, + 133, + 255, + 75, + 76, + 130, + 255, + 74, + 76, + 127, + 255, + 75, + 77, + 125, + 255, + 74, + 76, + 124, + 255, + 73, + 75, + 123, + 255, + 73, + 75, + 123, + 255, + 72, + 76, + 124, + 255, + 72, + 76, + 124, + 255, + 71, + 75, + 123, + 255, + 71, + 75, + 123, + 255, + 72, + 77, + 126, + 255, + 74, + 82, + 126, + 255, + 78, + 89, + 127, + 255, + 88, + 101, + 136, + 255, + 99, + 116, + 144, + 255, + 132, + 152, + 172, + 255, + 166, + 195, + 210, + 255, + 158, + 196, + 210, + 255, + 153, + 188, + 210, + 255, + 96, + 122, + 154, + 255, + 109, + 117, + 146, + 255, + 178, + 145, + 171, + 255, + 182, + 133, + 155, + 255, + 179, + 133, + 154, + 255, + 177, + 133, + 154, + 255, + 175, + 133, + 153, + 255, + 174, + 131, + 151, + 255, + 173, + 130, + 150, + 255, + 174, + 131, + 151, + 255, + 174, + 131, + 151, + 255, + 165, + 139, + 149, + 255, + 171, + 162, + 165, + 255, + 147, + 147, + 162, + 255, + 104, + 103, + 137, + 255, + 80, + 86, + 128, + 255, + 71, + 82, + 122, + 255, + 67, + 77, + 119, + 255, + 65, + 67, + 115, + 255, + 50, + 55, + 94, + 255, + 43, + 47, + 86, + 255, + 43, + 45, + 84, + 255, + 44, + 45, + 84, + 255, + 46, + 46, + 82, + 255, + 46, + 46, + 88, + 255, + 51, + 53, + 92, + 255, + 59, + 63, + 93, + 255, + 78, + 72, + 99, + 255, + 109, + 96, + 117, + 255, + 153, + 140, + 148, + 255, + 172, + 164, + 163, + 255, + 170, + 166, + 163, + 255, + 171, + 167, + 164, + 255, + 173, + 169, + 166, + 255, + 174, + 170, + 167, + 255, + 175, + 172, + 167, + 255, + 176, + 173, + 168, + 255, + 176, + 173, + 168, + 255, + 177, + 174, + 169, + 255, + 178, + 176, + 171, + 255, + 179, + 177, + 172, + 255, + 178, + 176, + 171, + 255, + 179, + 177, + 172, + 255, + 185, + 177, + 174, + 255, + 186, + 178, + 175, + 255, + 186, + 178, + 175, + 255, + 188, + 180, + 177, + 255, + 187, + 183, + 174, + 255, + 187, + 184, + 175, + 255, + 189, + 186, + 177, + 255, + 191, + 188, + 179, + 255, + 189, + 189, + 179, + 255, + 191, + 189, + 180, + 255, + 192, + 188, + 179, + 255, + 195, + 189, + 181, + 255, + 198, + 189, + 180, + 255, + 199, + 190, + 181, + 255, + 199, + 192, + 182, + 255, + 200, + 193, + 183, + 255, + 198, + 194, + 189, + 255, + 200, + 197, + 189, + 255, + 208, + 195, + 188, + 255, + 207, + 182, + 177, + 255, + 207, + 159, + 163, + 255, + 205, + 149, + 154, + 255, + 210, + 142, + 149, + 255, + 220, + 143, + 151, + 255, + 215, + 154, + 169, + 255, + 102, + 69, + 95, + 255, + 66, + 54, + 92, + 255, + 50, + 43, + 88, + 255, + 43, + 39, + 76, + 255, + 40, + 38, + 76, + 255, + 39, + 40, + 79, + 255, + 42, + 44, + 85, + 255, + 49, + 51, + 90, + 255, + 70, + 72, + 111, + 255, + 112, + 111, + 118, + 255, + 223, + 214, + 209, + 255, + 221, + 211, + 202, + 255, + 222, + 212, + 203, + 255, + 223, + 213, + 204, + 255, + 224, + 214, + 205, + 255, + 225, + 215, + 208, + 255, + 227, + 214, + 208, + 255, + 224, + 213, + 209, + 255, + 223, + 218, + 214, + 255, + 199, + 194, + 190, + 255, + 226, + 219, + 213, + 255, + 225, + 216, + 209, + 255, + 227, + 217, + 209, + 255, + 227, + 217, + 206, + 255, + 218, + 219, + 216, + 255, + 123, + 143, + 167, + 255, + 96, + 161, + 201, + 255, + 70, + 131, + 175, + 255, + 101, + 135, + 163, + 255, + 214, + 229, + 248, + 255, + 122, + 133, + 152, + 255, + 120, + 126, + 162, + 255, + 120, + 124, + 162, + 255, + 129, + 132, + 165, + 255, + 150, + 154, + 180, + 255, + 237, + 227, + 237, + 255, + 232, + 224, + 223, + 255, + 230, + 225, + 219, + 255, + 229, + 225, + 222, + 255, + 234, + 223, + 221, + 255, + 233, + 223, + 222, + 255, + 231, + 224, + 225, + 255, + 232, + 227, + 230, + 255, + 237, + 236, + 243, + 255, + 232, + 238, + 245, + 255, + 231, + 232, + 236, + 255, + 235, + 224, + 223, + 255, + 233, + 224, + 225, + 255, + 234, + 222, + 224, + 255, + 233, + 222, + 225, + 255, + 230, + 225, + 227, + 255, + 230, + 226, + 225, + 255, + 231, + 227, + 226, + 255, + 229, + 228, + 226, + 255, + 228, + 228, + 226, + 255, + 232, + 226, + 226, + 255, + 232, + 226, + 226, + 255, + 233, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 232, + 229, + 227, + 255, + 227, + 212, + 222, + 255, + 225, + 214, + 222, + 255, + 225, + 226, + 226, + 255, + 232, + 226, + 228, + 255, + 232, + 226, + 228, + 255, + 232, + 226, + 228, + 255, + 232, + 226, + 228, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 227, + 255, + 233, + 224, + 227, + 255, + 232, + 223, + 226, + 255, + 230, + 221, + 224, + 255, + 229, + 220, + 223, + 255, + 229, + 220, + 225, + 255, + 228, + 219, + 224, + 255, + 228, + 219, + 224, + 255, + 226, + 217, + 222, + 255, + 224, + 215, + 220, + 255, + 223, + 214, + 219, + 255, + 223, + 214, + 219, + 255, + 221, + 212, + 217, + 255, + 218, + 208, + 214, + 255, + 211, + 209, + 213, + 255, + 214, + 195, + 206, + 255, + 216, + 174, + 194, + 255, + 212, + 167, + 190, + 255, + 213, + 163, + 188, + 255, + 209, + 161, + 185, + 255, + 203, + 161, + 183, + 255, + 202, + 163, + 186, + 255, + 192, + 171, + 188, + 255, + 203, + 196, + 206, + 255, + 198, + 195, + 202, + 255, + 194, + 191, + 198, + 255, + 192, + 189, + 196, + 255, + 192, + 189, + 196, + 255, + 93, + 96, + 105, + 255, + 91, + 94, + 103, + 255, + 91, + 94, + 103, + 255, + 91, + 94, + 103, + 255, + 95, + 95, + 105, + 255, + 98, + 98, + 106, + 255, + 104, + 105, + 110, + 255, + 99, + 100, + 104, + 255, + 98, + 98, + 106, + 255, + 95, + 95, + 105, + 255, + 96, + 96, + 108, + 255, + 94, + 93, + 107, + 255, + 76, + 80, + 101, + 255, + 56, + 60, + 88, + 255, + 44, + 48, + 83, + 255, + 39, + 45, + 77, + 255, + 37, + 42, + 76, + 255, + 38, + 42, + 79, + 255, + 37, + 40, + 72, + 255, + 15, + 17, + 41, + 255, + 5, + 8, + 25, + 255, + 2, + 5, + 15, + 255, + 1, + 3, + 10, + 255, + 3, + 3, + 13, + 255, + 2, + 5, + 14, + 255, + 6, + 9, + 18, + 255, + 15, + 18, + 35, + 255, + 32, + 36, + 64, + 255, + 43, + 47, + 82, + 255, + 43, + 47, + 82, + 255, + 43, + 48, + 81, + 255, + 44, + 49, + 81, + 255, + 44, + 50, + 82, + 255, + 45, + 51, + 85, + 255, + 46, + 52, + 88, + 255, + 49, + 54, + 92, + 255, + 51, + 57, + 93, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 51, + 57, + 89, + 255, + 54, + 59, + 91, + 255, + 43, + 48, + 78, + 255, + 24, + 28, + 57, + 255, + 10, + 14, + 43, + 255, + 7, + 8, + 36, + 255, + 5, + 5, + 30, + 255, + 5, + 4, + 26, + 255, + 8, + 7, + 23, + 255, + 12, + 13, + 32, + 255, + 23, + 25, + 48, + 255, + 44, + 47, + 72, + 255, + 53, + 57, + 84, + 255, + 55, + 59, + 86, + 255, + 56, + 60, + 87, + 255, + 55, + 59, + 86, + 255, + 55, + 60, + 82, + 255, + 51, + 56, + 78, + 255, + 51, + 56, + 78, + 255, + 48, + 53, + 75, + 255, + 45, + 50, + 80, + 255, + 44, + 49, + 79, + 255, + 45, + 50, + 80, + 255, + 45, + 50, + 80, + 255, + 45, + 49, + 84, + 255, + 44, + 49, + 80, + 255, + 39, + 43, + 79, + 255, + 46, + 49, + 92, + 255, + 21, + 22, + 53, + 255, + 14, + 15, + 42, + 255, + 9, + 12, + 31, + 255, + 8, + 11, + 27, + 255, + 12, + 13, + 31, + 255, + 17, + 20, + 38, + 255, + 32, + 37, + 58, + 255, + 44, + 49, + 74, + 255, + 50, + 55, + 85, + 255, + 52, + 57, + 86, + 255, + 51, + 57, + 83, + 255, + 52, + 58, + 83, + 255, + 52, + 58, + 84, + 255, + 52, + 58, + 84, + 255, + 53, + 59, + 85, + 255, + 55, + 61, + 87, + 255, + 56, + 63, + 89, + 255, + 56, + 63, + 89, + 255, + 62, + 69, + 95, + 255, + 56, + 63, + 89, + 255, + 58, + 63, + 92, + 255, + 59, + 64, + 93, + 255, + 62, + 67, + 96, + 255, + 68, + 73, + 102, + 255, + 86, + 93, + 109, + 255, + 84, + 90, + 103, + 255, + 84, + 87, + 102, + 255, + 84, + 85, + 106, + 255, + 83, + 86, + 103, + 255, + 88, + 91, + 107, + 255, + 94, + 98, + 110, + 255, + 91, + 95, + 106, + 255, + 86, + 92, + 107, + 255, + 86, + 92, + 107, + 255, + 88, + 94, + 109, + 255, + 90, + 96, + 111, + 255, + 94, + 98, + 107, + 255, + 100, + 105, + 112, + 255, + 104, + 109, + 115, + 255, + 106, + 111, + 115, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 111, + 114, + 121, + 255, + 112, + 118, + 134, + 255, + 84, + 94, + 137, + 255, + 70, + 88, + 146, + 255, + 61, + 89, + 152, + 255, + 61, + 95, + 166, + 255, + 52, + 121, + 185, + 255, + 51, + 165, + 201, + 255, + 47, + 124, + 178, + 255, + 39, + 112, + 169, + 255, + 44, + 86, + 151, + 255, + 46, + 72, + 139, + 255, + 36, + 54, + 120, + 255, + 38, + 47, + 108, + 255, + 33, + 41, + 96, + 255, + 34, + 36, + 85, + 255, + 34, + 35, + 79, + 255, + 35, + 39, + 78, + 255, + 43, + 46, + 81, + 255, + 53, + 54, + 84, + 255, + 64, + 64, + 92, + 255, + 91, + 93, + 116, + 255, + 120, + 124, + 136, + 255, + 111, + 114, + 129, + 255, + 96, + 98, + 121, + 255, + 83, + 84, + 111, + 255, + 79, + 80, + 109, + 255, + 74, + 75, + 105, + 255, + 66, + 67, + 98, + 255, + 70, + 67, + 102, + 255, + 68, + 66, + 103, + 255, + 59, + 58, + 98, + 255, + 56, + 58, + 99, + 255, + 49, + 52, + 94, + 255, + 48, + 51, + 94, + 255, + 49, + 52, + 97, + 255, + 51, + 53, + 100, + 255, + 60, + 64, + 112, + 255, + 59, + 62, + 113, + 255, + 60, + 63, + 115, + 255, + 64, + 67, + 119, + 255, + 69, + 71, + 127, + 255, + 74, + 75, + 138, + 255, + 76, + 78, + 143, + 255, + 77, + 81, + 144, + 255, + 73, + 81, + 144, + 255, + 74, + 81, + 144, + 255, + 73, + 79, + 141, + 255, + 71, + 77, + 139, + 255, + 70, + 75, + 133, + 255, + 70, + 74, + 129, + 255, + 74, + 75, + 129, + 255, + 81, + 83, + 134, + 255, + 69, + 73, + 121, + 255, + 72, + 76, + 124, + 255, + 69, + 73, + 121, + 255, + 72, + 76, + 124, + 255, + 72, + 76, + 124, + 255, + 72, + 76, + 124, + 255, + 72, + 76, + 124, + 255, + 72, + 76, + 124, + 255, + 74, + 78, + 123, + 255, + 74, + 78, + 125, + 255, + 74, + 78, + 126, + 255, + 75, + 78, + 129, + 255, + 75, + 82, + 134, + 255, + 74, + 81, + 133, + 255, + 75, + 82, + 134, + 255, + 75, + 82, + 134, + 255, + 76, + 82, + 134, + 255, + 75, + 81, + 133, + 255, + 78, + 84, + 136, + 255, + 76, + 82, + 134, + 255, + 78, + 81, + 136, + 255, + 77, + 80, + 135, + 255, + 77, + 80, + 133, + 255, + 76, + 79, + 130, + 255, + 77, + 81, + 128, + 255, + 79, + 83, + 130, + 255, + 77, + 81, + 128, + 255, + 76, + 80, + 127, + 255, + 75, + 79, + 126, + 255, + 74, + 78, + 125, + 255, + 74, + 78, + 125, + 255, + 74, + 78, + 125, + 255, + 74, + 78, + 125, + 255, + 76, + 80, + 127, + 255, + 77, + 81, + 128, + 255, + 82, + 86, + 133, + 255, + 85, + 94, + 134, + 255, + 95, + 110, + 142, + 255, + 102, + 122, + 147, + 255, + 166, + 190, + 209, + 255, + 162, + 193, + 215, + 255, + 86, + 113, + 148, + 255, + 106, + 110, + 146, + 255, + 147, + 124, + 152, + 255, + 181, + 135, + 154, + 255, + 179, + 136, + 156, + 255, + 179, + 134, + 157, + 255, + 179, + 132, + 156, + 255, + 174, + 134, + 153, + 255, + 175, + 133, + 154, + 255, + 173, + 137, + 158, + 255, + 167, + 140, + 156, + 255, + 174, + 166, + 169, + 255, + 167, + 163, + 178, + 255, + 105, + 107, + 136, + 255, + 84, + 91, + 128, + 255, + 77, + 84, + 126, + 255, + 74, + 81, + 124, + 255, + 70, + 77, + 121, + 255, + 66, + 73, + 119, + 255, + 51, + 54, + 99, + 255, + 45, + 48, + 91, + 255, + 44, + 47, + 88, + 255, + 42, + 45, + 86, + 255, + 42, + 44, + 85, + 255, + 43, + 45, + 85, + 255, + 42, + 44, + 82, + 255, + 44, + 46, + 84, + 255, + 52, + 53, + 91, + 255, + 65, + 61, + 94, + 255, + 82, + 73, + 100, + 255, + 104, + 92, + 114, + 255, + 145, + 132, + 140, + 255, + 172, + 161, + 164, + 255, + 174, + 167, + 165, + 255, + 174, + 169, + 165, + 255, + 170, + 169, + 166, + 255, + 172, + 171, + 168, + 255, + 175, + 171, + 169, + 255, + 176, + 172, + 170, + 255, + 177, + 173, + 170, + 255, + 178, + 174, + 171, + 255, + 178, + 174, + 171, + 255, + 179, + 175, + 172, + 255, + 181, + 176, + 172, + 255, + 182, + 177, + 173, + 255, + 183, + 178, + 174, + 255, + 184, + 179, + 175, + 255, + 186, + 181, + 177, + 255, + 187, + 182, + 178, + 255, + 188, + 183, + 179, + 255, + 189, + 184, + 180, + 255, + 193, + 185, + 182, + 255, + 193, + 185, + 182, + 255, + 194, + 186, + 183, + 255, + 195, + 187, + 184, + 255, + 197, + 188, + 181, + 255, + 198, + 189, + 182, + 255, + 199, + 190, + 183, + 255, + 201, + 192, + 185, + 255, + 200, + 193, + 185, + 255, + 201, + 194, + 186, + 255, + 202, + 195, + 187, + 255, + 203, + 196, + 188, + 255, + 209, + 194, + 189, + 255, + 202, + 160, + 164, + 255, + 211, + 149, + 160, + 255, + 210, + 143, + 155, + 255, + 214, + 142, + 155, + 255, + 205, + 157, + 166, + 255, + 101, + 76, + 100, + 255, + 67, + 51, + 94, + 255, + 48, + 46, + 85, + 255, + 45, + 42, + 80, + 255, + 42, + 42, + 79, + 255, + 44, + 45, + 84, + 255, + 48, + 50, + 88, + 255, + 63, + 67, + 103, + 255, + 100, + 99, + 130, + 255, + 221, + 219, + 215, + 255, + 221, + 210, + 204, + 255, + 222, + 212, + 205, + 255, + 221, + 212, + 204, + 255, + 222, + 214, + 204, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 223, + 214, + 209, + 255, + 226, + 217, + 212, + 255, + 220, + 214, + 216, + 255, + 217, + 210, + 209, + 255, + 227, + 218, + 213, + 255, + 227, + 216, + 210, + 255, + 225, + 215, + 214, + 255, + 227, + 218, + 209, + 255, + 203, + 212, + 218, + 255, + 127, + 158, + 188, + 255, + 96, + 163, + 207, + 255, + 93, + 143, + 185, + 255, + 116, + 139, + 162, + 255, + 226, + 227, + 229, + 255, + 157, + 159, + 173, + 255, + 141, + 145, + 171, + 255, + 158, + 160, + 180, + 255, + 231, + 229, + 231, + 255, + 229, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 232, + 224, + 222, + 255, + 233, + 223, + 222, + 255, + 230, + 223, + 222, + 255, + 232, + 224, + 220, + 255, + 231, + 228, + 228, + 255, + 233, + 238, + 242, + 255, + 238, + 239, + 245, + 255, + 235, + 233, + 238, + 255, + 233, + 227, + 228, + 255, + 232, + 224, + 223, + 255, + 230, + 224, + 224, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 227, + 226, + 255, + 232, + 228, + 225, + 255, + 232, + 228, + 225, + 255, + 232, + 228, + 225, + 255, + 232, + 228, + 225, + 255, + 232, + 226, + 228, + 255, + 216, + 210, + 212, + 255, + 234, + 228, + 230, + 255, + 234, + 228, + 230, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 231, + 227, + 228, + 255, + 231, + 227, + 228, + 255, + 231, + 227, + 228, + 255, + 231, + 227, + 228, + 255, + 232, + 226, + 228, + 255, + 231, + 225, + 227, + 255, + 230, + 224, + 226, + 255, + 229, + 223, + 225, + 255, + 229, + 223, + 227, + 255, + 227, + 221, + 225, + 255, + 226, + 220, + 224, + 255, + 225, + 219, + 223, + 255, + 226, + 216, + 224, + 255, + 224, + 214, + 222, + 255, + 223, + 213, + 221, + 255, + 221, + 211, + 219, + 255, + 222, + 208, + 214, + 255, + 218, + 207, + 214, + 255, + 214, + 188, + 205, + 255, + 218, + 174, + 199, + 255, + 213, + 169, + 194, + 255, + 210, + 164, + 190, + 255, + 211, + 161, + 188, + 255, + 210, + 160, + 187, + 255, + 204, + 162, + 186, + 255, + 193, + 173, + 190, + 255, + 201, + 194, + 204, + 255, + 198, + 193, + 200, + 255, + 199, + 192, + 200, + 255, + 197, + 190, + 198, + 255, + 196, + 189, + 197, + 255, + 94, + 97, + 106, + 255, + 90, + 93, + 102, + 255, + 89, + 92, + 101, + 255, + 90, + 93, + 102, + 255, + 94, + 94, + 104, + 255, + 96, + 96, + 104, + 255, + 95, + 96, + 101, + 255, + 101, + 102, + 106, + 255, + 105, + 105, + 113, + 255, + 95, + 95, + 103, + 255, + 96, + 96, + 106, + 255, + 94, + 94, + 106, + 255, + 93, + 96, + 111, + 255, + 67, + 70, + 94, + 255, + 50, + 53, + 84, + 255, + 42, + 47, + 77, + 255, + 39, + 44, + 77, + 255, + 37, + 41, + 78, + 255, + 37, + 40, + 74, + 255, + 20, + 21, + 49, + 255, + 10, + 13, + 31, + 255, + 4, + 6, + 18, + 255, + 2, + 3, + 12, + 255, + 1, + 1, + 12, + 255, + 3, + 3, + 14, + 255, + 4, + 5, + 15, + 255, + 11, + 13, + 28, + 255, + 21, + 23, + 48, + 255, + 43, + 48, + 79, + 255, + 43, + 48, + 80, + 255, + 42, + 47, + 79, + 255, + 43, + 47, + 81, + 255, + 44, + 50, + 82, + 255, + 45, + 51, + 85, + 255, + 48, + 54, + 90, + 255, + 51, + 56, + 94, + 255, + 51, + 57, + 93, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 51, + 57, + 91, + 255, + 54, + 59, + 92, + 255, + 57, + 62, + 94, + 255, + 29, + 32, + 63, + 255, + 13, + 17, + 46, + 255, + 8, + 9, + 37, + 255, + 6, + 6, + 31, + 255, + 6, + 5, + 27, + 255, + 9, + 10, + 28, + 255, + 18, + 20, + 41, + 255, + 30, + 33, + 57, + 255, + 55, + 59, + 85, + 255, + 52, + 56, + 83, + 255, + 55, + 59, + 86, + 255, + 56, + 60, + 87, + 255, + 55, + 59, + 86, + 255, + 54, + 58, + 83, + 255, + 55, + 59, + 84, + 255, + 55, + 59, + 84, + 255, + 52, + 56, + 81, + 255, + 47, + 52, + 82, + 255, + 45, + 50, + 80, + 255, + 44, + 49, + 79, + 255, + 44, + 49, + 79, + 255, + 45, + 49, + 84, + 255, + 44, + 49, + 81, + 255, + 52, + 56, + 90, + 255, + 22, + 26, + 63, + 255, + 17, + 18, + 48, + 255, + 10, + 12, + 37, + 255, + 7, + 9, + 31, + 255, + 10, + 13, + 30, + 255, + 17, + 20, + 35, + 255, + 27, + 30, + 49, + 255, + 52, + 56, + 86, + 255, + 60, + 64, + 99, + 255, + 56, + 61, + 93, + 255, + 52, + 57, + 87, + 255, + 53, + 58, + 86, + 255, + 52, + 58, + 84, + 255, + 53, + 59, + 85, + 255, + 51, + 57, + 83, + 255, + 53, + 59, + 85, + 255, + 55, + 61, + 87, + 255, + 55, + 61, + 87, + 255, + 57, + 63, + 89, + 255, + 57, + 63, + 89, + 255, + 60, + 66, + 92, + 255, + 60, + 65, + 94, + 255, + 58, + 63, + 92, + 255, + 60, + 65, + 94, + 255, + 63, + 68, + 97, + 255, + 67, + 73, + 97, + 255, + 79, + 84, + 104, + 255, + 88, + 92, + 105, + 255, + 87, + 89, + 102, + 255, + 82, + 85, + 102, + 255, + 83, + 86, + 103, + 255, + 88, + 91, + 106, + 255, + 93, + 96, + 111, + 255, + 95, + 101, + 113, + 255, + 89, + 95, + 107, + 255, + 87, + 93, + 105, + 255, + 88, + 94, + 106, + 255, + 92, + 96, + 107, + 255, + 97, + 101, + 110, + 255, + 100, + 105, + 112, + 255, + 106, + 111, + 117, + 255, + 107, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 111, + 114, + 121, + 255, + 107, + 111, + 124, + 255, + 100, + 108, + 144, + 255, + 75, + 89, + 137, + 255, + 59, + 80, + 137, + 255, + 51, + 79, + 149, + 255, + 56, + 87, + 160, + 255, + 41, + 98, + 152, + 255, + 38, + 89, + 153, + 255, + 40, + 77, + 139, + 255, + 42, + 61, + 126, + 255, + 42, + 53, + 118, + 255, + 36, + 46, + 108, + 255, + 34, + 42, + 99, + 255, + 32, + 38, + 91, + 255, + 33, + 38, + 85, + 255, + 38, + 41, + 84, + 255, + 42, + 46, + 81, + 255, + 52, + 55, + 86, + 255, + 66, + 67, + 94, + 255, + 80, + 80, + 104, + 255, + 125, + 127, + 142, + 255, + 125, + 128, + 136, + 255, + 121, + 124, + 133, + 255, + 124, + 126, + 141, + 255, + 123, + 124, + 141, + 255, + 123, + 124, + 142, + 255, + 112, + 113, + 133, + 255, + 97, + 98, + 119, + 255, + 92, + 91, + 116, + 255, + 91, + 91, + 119, + 255, + 96, + 96, + 130, + 255, + 89, + 92, + 127, + 255, + 57, + 60, + 103, + 255, + 52, + 55, + 100, + 255, + 53, + 55, + 102, + 255, + 53, + 55, + 104, + 255, + 89, + 93, + 141, + 255, + 62, + 67, + 117, + 255, + 65, + 69, + 123, + 255, + 71, + 76, + 132, + 255, + 75, + 81, + 140, + 255, + 83, + 86, + 153, + 255, + 89, + 90, + 161, + 255, + 92, + 92, + 160, + 255, + 90, + 92, + 161, + 255, + 87, + 90, + 157, + 255, + 82, + 88, + 150, + 255, + 77, + 85, + 144, + 255, + 76, + 82, + 140, + 255, + 74, + 79, + 134, + 255, + 74, + 78, + 131, + 255, + 71, + 74, + 125, + 255, + 72, + 76, + 124, + 255, + 79, + 83, + 131, + 255, + 85, + 89, + 137, + 255, + 78, + 82, + 130, + 255, + 75, + 80, + 128, + 255, + 75, + 80, + 128, + 255, + 75, + 80, + 128, + 255, + 75, + 80, + 128, + 255, + 76, + 82, + 126, + 255, + 76, + 82, + 128, + 255, + 77, + 82, + 130, + 255, + 78, + 83, + 133, + 255, + 75, + 82, + 134, + 255, + 76, + 83, + 135, + 255, + 77, + 84, + 136, + 255, + 77, + 84, + 136, + 255, + 77, + 84, + 136, + 255, + 79, + 86, + 138, + 255, + 79, + 86, + 138, + 255, + 79, + 86, + 138, + 255, + 81, + 84, + 139, + 255, + 80, + 83, + 136, + 255, + 80, + 83, + 134, + 255, + 79, + 83, + 132, + 255, + 76, + 80, + 127, + 255, + 94, + 98, + 145, + 255, + 81, + 85, + 132, + 255, + 80, + 84, + 131, + 255, + 78, + 82, + 129, + 255, + 77, + 81, + 128, + 255, + 76, + 80, + 127, + 255, + 76, + 80, + 127, + 255, + 77, + 81, + 128, + 255, + 76, + 80, + 127, + 255, + 77, + 81, + 128, + 255, + 79, + 83, + 130, + 255, + 79, + 87, + 134, + 255, + 80, + 92, + 133, + 255, + 90, + 104, + 141, + 255, + 95, + 112, + 145, + 255, + 98, + 115, + 151, + 255, + 97, + 116, + 158, + 255, + 91, + 97, + 138, + 255, + 118, + 107, + 141, + 255, + 180, + 141, + 168, + 255, + 184, + 136, + 160, + 255, + 183, + 134, + 157, + 255, + 180, + 133, + 157, + 255, + 175, + 135, + 155, + 255, + 174, + 140, + 155, + 255, + 168, + 147, + 155, + 255, + 176, + 165, + 171, + 255, + 173, + 170, + 181, + 255, + 114, + 114, + 133, + 255, + 93, + 98, + 130, + 255, + 84, + 91, + 130, + 255, + 76, + 83, + 125, + 255, + 76, + 83, + 126, + 255, + 74, + 81, + 125, + 255, + 72, + 79, + 125, + 255, + 54, + 56, + 103, + 255, + 48, + 51, + 95, + 255, + 45, + 48, + 91, + 255, + 43, + 46, + 87, + 255, + 44, + 45, + 89, + 255, + 42, + 44, + 85, + 255, + 42, + 44, + 84, + 255, + 43, + 45, + 84, + 255, + 45, + 44, + 84, + 255, + 48, + 49, + 87, + 255, + 57, + 58, + 94, + 255, + 67, + 68, + 104, + 255, + 90, + 83, + 109, + 255, + 109, + 100, + 121, + 255, + 138, + 126, + 139, + 255, + 170, + 156, + 165, + 255, + 173, + 167, + 161, + 255, + 174, + 169, + 164, + 255, + 173, + 170, + 165, + 255, + 172, + 171, + 166, + 255, + 174, + 170, + 167, + 255, + 175, + 171, + 168, + 255, + 176, + 172, + 169, + 255, + 177, + 173, + 170, + 255, + 178, + 173, + 169, + 255, + 179, + 174, + 170, + 255, + 182, + 177, + 173, + 255, + 183, + 178, + 174, + 255, + 183, + 178, + 174, + 255, + 184, + 179, + 175, + 255, + 186, + 181, + 177, + 255, + 187, + 182, + 178, + 255, + 190, + 182, + 179, + 255, + 190, + 182, + 179, + 255, + 191, + 183, + 180, + 255, + 192, + 184, + 181, + 255, + 194, + 187, + 179, + 255, + 195, + 188, + 180, + 255, + 197, + 190, + 182, + 255, + 199, + 192, + 184, + 255, + 200, + 193, + 185, + 255, + 201, + 194, + 186, + 255, + 201, + 194, + 186, + 255, + 202, + 195, + 187, + 255, + 203, + 193, + 186, + 255, + 206, + 196, + 189, + 255, + 204, + 170, + 171, + 255, + 212, + 150, + 161, + 255, + 212, + 144, + 151, + 255, + 219, + 146, + 158, + 255, + 203, + 150, + 170, + 255, + 98, + 75, + 99, + 255, + 62, + 56, + 92, + 255, + 48, + 47, + 87, + 255, + 46, + 45, + 88, + 255, + 47, + 44, + 88, + 255, + 48, + 49, + 89, + 255, + 58, + 62, + 98, + 255, + 83, + 84, + 119, + 255, + 142, + 141, + 148, + 255, + 218, + 211, + 203, + 255, + 219, + 212, + 202, + 255, + 221, + 212, + 206, + 255, + 222, + 212, + 210, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 224, + 215, + 210, + 255, + 224, + 215, + 210, + 255, + 224, + 217, + 217, + 255, + 211, + 203, + 202, + 255, + 224, + 215, + 210, + 255, + 225, + 216, + 210, + 255, + 226, + 218, + 216, + 255, + 230, + 219, + 209, + 255, + 231, + 227, + 226, + 255, + 159, + 169, + 180, + 255, + 110, + 153, + 192, + 255, + 99, + 165, + 206, + 255, + 129, + 182, + 215, + 255, + 150, + 172, + 193, + 255, + 224, + 222, + 225, + 255, + 175, + 172, + 181, + 255, + 234, + 229, + 233, + 255, + 231, + 225, + 218, + 255, + 229, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 232, + 224, + 222, + 255, + 233, + 223, + 222, + 255, + 234, + 224, + 223, + 255, + 233, + 226, + 225, + 255, + 234, + 235, + 236, + 255, + 233, + 240, + 243, + 255, + 236, + 234, + 239, + 255, + 231, + 228, + 231, + 255, + 231, + 225, + 226, + 255, + 233, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 232, + 226, + 226, + 255, + 232, + 226, + 226, + 255, + 233, + 227, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 234, + 228, + 230, + 255, + 224, + 218, + 220, + 255, + 232, + 226, + 228, + 255, + 234, + 228, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 232, + 228, + 229, + 255, + 233, + 227, + 229, + 255, + 232, + 226, + 228, + 255, + 231, + 225, + 227, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 228, + 255, + 228, + 222, + 226, + 255, + 228, + 222, + 226, + 255, + 227, + 221, + 225, + 255, + 229, + 219, + 227, + 255, + 227, + 217, + 225, + 255, + 224, + 214, + 222, + 255, + 222, + 212, + 220, + 255, + 223, + 212, + 217, + 255, + 223, + 209, + 217, + 255, + 215, + 185, + 203, + 255, + 219, + 174, + 199, + 255, + 216, + 169, + 195, + 255, + 213, + 165, + 191, + 255, + 212, + 162, + 189, + 255, + 211, + 161, + 188, + 255, + 207, + 165, + 189, + 255, + 195, + 175, + 192, + 255, + 201, + 195, + 205, + 255, + 201, + 196, + 203, + 255, + 200, + 193, + 201, + 255, + 198, + 191, + 199, + 255, + 197, + 190, + 198, + 255, + 89, + 92, + 101, + 255, + 92, + 95, + 104, + 255, + 89, + 92, + 101, + 255, + 91, + 94, + 103, + 255, + 94, + 94, + 104, + 255, + 94, + 94, + 102, + 255, + 94, + 95, + 100, + 255, + 95, + 96, + 100, + 255, + 95, + 96, + 101, + 255, + 99, + 100, + 106, + 255, + 103, + 103, + 111, + 255, + 96, + 96, + 106, + 255, + 92, + 95, + 102, + 255, + 83, + 85, + 101, + 255, + 57, + 60, + 87, + 255, + 47, + 51, + 79, + 255, + 40, + 45, + 78, + 255, + 37, + 41, + 79, + 255, + 38, + 40, + 78, + 255, + 32, + 33, + 64, + 255, + 12, + 15, + 34, + 255, + 4, + 6, + 20, + 255, + 2, + 3, + 14, + 255, + 2, + 1, + 15, + 255, + 4, + 2, + 15, + 255, + 5, + 5, + 15, + 255, + 9, + 10, + 23, + 255, + 19, + 20, + 41, + 255, + 38, + 44, + 70, + 255, + 41, + 46, + 75, + 255, + 41, + 46, + 78, + 255, + 43, + 47, + 82, + 255, + 45, + 51, + 83, + 255, + 47, + 53, + 87, + 255, + 48, + 54, + 90, + 255, + 50, + 55, + 93, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 56, + 91, + 255, + 52, + 57, + 90, + 255, + 33, + 36, + 69, + 255, + 17, + 21, + 50, + 255, + 11, + 12, + 40, + 255, + 9, + 9, + 34, + 255, + 10, + 9, + 31, + 255, + 15, + 18, + 37, + 255, + 26, + 30, + 51, + 255, + 56, + 61, + 85, + 255, + 49, + 55, + 81, + 255, + 52, + 56, + 83, + 255, + 53, + 57, + 84, + 255, + 55, + 59, + 86, + 255, + 55, + 59, + 86, + 255, + 54, + 58, + 84, + 255, + 56, + 60, + 86, + 255, + 56, + 60, + 86, + 255, + 55, + 59, + 85, + 255, + 53, + 58, + 88, + 255, + 46, + 51, + 81, + 255, + 45, + 50, + 80, + 255, + 44, + 49, + 79, + 255, + 39, + 44, + 76, + 255, + 50, + 54, + 89, + 255, + 32, + 37, + 70, + 255, + 17, + 22, + 50, + 255, + 11, + 13, + 39, + 255, + 8, + 10, + 35, + 255, + 9, + 11, + 33, + 255, + 14, + 16, + 37, + 255, + 23, + 28, + 49, + 255, + 40, + 44, + 69, + 255, + 55, + 61, + 95, + 255, + 54, + 59, + 99, + 255, + 55, + 60, + 92, + 255, + 53, + 58, + 90, + 255, + 53, + 58, + 88, + 255, + 53, + 58, + 87, + 255, + 52, + 58, + 84, + 255, + 52, + 58, + 84, + 255, + 53, + 59, + 85, + 255, + 53, + 59, + 85, + 255, + 56, + 62, + 88, + 255, + 56, + 62, + 88, + 255, + 57, + 63, + 89, + 255, + 56, + 62, + 88, + 255, + 57, + 62, + 91, + 255, + 65, + 70, + 99, + 255, + 58, + 63, + 92, + 255, + 61, + 66, + 95, + 255, + 62, + 68, + 94, + 255, + 61, + 65, + 89, + 255, + 76, + 79, + 95, + 255, + 91, + 94, + 103, + 255, + 83, + 86, + 103, + 255, + 82, + 85, + 102, + 255, + 88, + 91, + 109, + 255, + 82, + 85, + 104, + 255, + 81, + 87, + 102, + 255, + 93, + 99, + 114, + 255, + 92, + 98, + 113, + 255, + 91, + 97, + 112, + 255, + 90, + 94, + 106, + 255, + 97, + 101, + 112, + 255, + 99, + 103, + 113, + 255, + 105, + 110, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 110, + 113, + 120, + 255, + 110, + 113, + 120, + 255, + 112, + 114, + 123, + 255, + 100, + 106, + 131, + 255, + 67, + 76, + 115, + 255, + 61, + 75, + 127, + 255, + 53, + 69, + 129, + 255, + 51, + 64, + 132, + 255, + 48, + 67, + 124, + 255, + 37, + 62, + 127, + 255, + 35, + 57, + 115, + 255, + 32, + 50, + 106, + 255, + 32, + 47, + 101, + 255, + 28, + 42, + 94, + 255, + 33, + 39, + 90, + 255, + 36, + 42, + 91, + 255, + 38, + 45, + 89, + 255, + 45, + 51, + 92, + 255, + 56, + 61, + 90, + 255, + 69, + 73, + 99, + 255, + 83, + 86, + 106, + 255, + 115, + 116, + 134, + 255, + 124, + 124, + 134, + 255, + 125, + 125, + 134, + 255, + 125, + 125, + 134, + 255, + 125, + 125, + 135, + 255, + 126, + 126, + 136, + 255, + 127, + 127, + 139, + 255, + 128, + 127, + 141, + 255, + 128, + 127, + 142, + 255, + 127, + 129, + 138, + 255, + 124, + 126, + 140, + 255, + 129, + 131, + 153, + 255, + 77, + 81, + 107, + 255, + 58, + 61, + 106, + 255, + 54, + 56, + 103, + 255, + 53, + 55, + 104, + 255, + 57, + 59, + 109, + 255, + 60, + 64, + 112, + 255, + 65, + 70, + 121, + 255, + 73, + 81, + 137, + 255, + 74, + 84, + 142, + 255, + 85, + 95, + 164, + 255, + 96, + 105, + 181, + 255, + 99, + 109, + 188, + 255, + 100, + 111, + 187, + 255, + 100, + 109, + 186, + 255, + 96, + 104, + 178, + 255, + 90, + 99, + 167, + 255, + 87, + 95, + 160, + 255, + 87, + 95, + 152, + 255, + 73, + 80, + 134, + 255, + 75, + 81, + 133, + 255, + 74, + 78, + 129, + 255, + 74, + 78, + 126, + 255, + 76, + 80, + 128, + 255, + 75, + 79, + 127, + 255, + 78, + 82, + 130, + 255, + 79, + 87, + 134, + 255, + 85, + 93, + 140, + 255, + 78, + 86, + 133, + 255, + 77, + 85, + 132, + 255, + 80, + 89, + 132, + 255, + 80, + 88, + 134, + 255, + 79, + 87, + 134, + 255, + 80, + 88, + 137, + 255, + 80, + 87, + 139, + 255, + 81, + 88, + 140, + 255, + 79, + 86, + 138, + 255, + 80, + 87, + 139, + 255, + 79, + 88, + 139, + 255, + 84, + 93, + 144, + 255, + 80, + 89, + 140, + 255, + 81, + 90, + 141, + 255, + 83, + 86, + 139, + 255, + 83, + 86, + 137, + 255, + 83, + 87, + 135, + 255, + 82, + 86, + 133, + 255, + 83, + 87, + 134, + 255, + 85, + 89, + 136, + 255, + 106, + 110, + 157, + 255, + 82, + 86, + 133, + 255, + 81, + 85, + 132, + 255, + 79, + 83, + 130, + 255, + 80, + 84, + 131, + 255, + 79, + 83, + 130, + 255, + 78, + 82, + 129, + 255, + 78, + 82, + 129, + 255, + 78, + 82, + 129, + 255, + 78, + 82, + 129, + 255, + 77, + 83, + 133, + 255, + 79, + 86, + 133, + 255, + 80, + 87, + 132, + 255, + 81, + 90, + 132, + 255, + 84, + 93, + 136, + 255, + 84, + 95, + 141, + 255, + 88, + 93, + 136, + 255, + 99, + 96, + 133, + 255, + 136, + 111, + 143, + 255, + 181, + 135, + 162, + 255, + 185, + 134, + 157, + 255, + 178, + 137, + 160, + 255, + 178, + 145, + 165, + 255, + 170, + 152, + 159, + 255, + 174, + 169, + 175, + 255, + 166, + 164, + 178, + 255, + 119, + 120, + 142, + 255, + 106, + 108, + 137, + 255, + 92, + 98, + 134, + 255, + 84, + 92, + 132, + 255, + 80, + 87, + 129, + 255, + 77, + 84, + 127, + 255, + 75, + 82, + 126, + 255, + 73, + 80, + 126, + 255, + 56, + 58, + 106, + 255, + 50, + 52, + 99, + 255, + 47, + 50, + 94, + 255, + 45, + 48, + 91, + 255, + 45, + 46, + 91, + 255, + 44, + 45, + 89, + 255, + 43, + 45, + 86, + 255, + 43, + 45, + 85, + 255, + 44, + 46, + 88, + 255, + 47, + 49, + 90, + 255, + 51, + 54, + 95, + 255, + 64, + 69, + 109, + 255, + 77, + 78, + 115, + 255, + 84, + 82, + 114, + 255, + 100, + 93, + 119, + 255, + 107, + 98, + 119, + 255, + 128, + 122, + 132, + 255, + 160, + 153, + 160, + 255, + 172, + 164, + 167, + 255, + 174, + 166, + 166, + 255, + 174, + 170, + 167, + 255, + 174, + 170, + 167, + 255, + 174, + 170, + 167, + 255, + 176, + 172, + 169, + 255, + 176, + 171, + 167, + 255, + 177, + 172, + 168, + 255, + 178, + 173, + 169, + 255, + 179, + 174, + 170, + 255, + 181, + 176, + 172, + 255, + 183, + 178, + 174, + 255, + 184, + 179, + 175, + 255, + 185, + 180, + 176, + 255, + 188, + 180, + 177, + 255, + 188, + 180, + 177, + 255, + 190, + 182, + 179, + 255, + 191, + 183, + 180, + 255, + 190, + 185, + 179, + 255, + 192, + 187, + 181, + 255, + 194, + 189, + 183, + 255, + 195, + 190, + 184, + 255, + 198, + 191, + 185, + 255, + 199, + 192, + 186, + 255, + 200, + 193, + 187, + 255, + 201, + 194, + 188, + 255, + 201, + 193, + 188, + 255, + 197, + 198, + 190, + 255, + 208, + 196, + 192, + 255, + 203, + 168, + 172, + 255, + 207, + 154, + 158, + 255, + 217, + 144, + 156, + 255, + 210, + 141, + 156, + 255, + 182, + 134, + 146, + 255, + 98, + 75, + 105, + 255, + 64, + 55, + 94, + 255, + 50, + 47, + 91, + 255, + 51, + 47, + 89, + 255, + 50, + 50, + 93, + 255, + 55, + 60, + 97, + 255, + 70, + 73, + 114, + 255, + 110, + 111, + 131, + 255, + 215, + 211, + 210, + 255, + 220, + 216, + 206, + 255, + 221, + 213, + 203, + 255, + 223, + 212, + 211, + 255, + 223, + 214, + 209, + 255, + 223, + 214, + 209, + 255, + 223, + 214, + 209, + 255, + 224, + 215, + 210, + 255, + 225, + 215, + 213, + 255, + 228, + 219, + 216, + 255, + 208, + 200, + 197, + 255, + 223, + 217, + 213, + 255, + 226, + 220, + 214, + 255, + 231, + 219, + 214, + 255, + 229, + 220, + 215, + 255, + 227, + 223, + 221, + 255, + 145, + 161, + 179, + 255, + 115, + 162, + 196, + 255, + 118, + 165, + 201, + 255, + 169, + 192, + 219, + 255, + 182, + 179, + 190, + 255, + 231, + 223, + 230, + 255, + 230, + 221, + 226, + 255, + 230, + 222, + 226, + 255, + 229, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 232, + 224, + 222, + 255, + 233, + 223, + 222, + 255, + 232, + 225, + 223, + 255, + 232, + 232, + 233, + 255, + 236, + 240, + 243, + 255, + 234, + 236, + 240, + 255, + 234, + 228, + 229, + 255, + 232, + 226, + 227, + 255, + 232, + 226, + 226, + 255, + 233, + 226, + 226, + 255, + 232, + 226, + 226, + 255, + 232, + 226, + 226, + 255, + 233, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 233, + 229, + 228, + 255, + 233, + 229, + 228, + 255, + 233, + 229, + 228, + 255, + 233, + 229, + 228, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 225, + 219, + 221, + 255, + 234, + 228, + 230, + 255, + 234, + 228, + 230, + 255, + 234, + 228, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 232, + 228, + 229, + 255, + 233, + 227, + 229, + 255, + 233, + 227, + 229, + 255, + 232, + 226, + 228, + 255, + 231, + 225, + 227, + 255, + 231, + 225, + 229, + 255, + 230, + 224, + 228, + 255, + 229, + 223, + 227, + 255, + 227, + 221, + 225, + 255, + 228, + 218, + 226, + 255, + 227, + 217, + 225, + 255, + 224, + 214, + 222, + 255, + 223, + 213, + 221, + 255, + 223, + 214, + 218, + 255, + 226, + 207, + 217, + 255, + 219, + 184, + 204, + 255, + 222, + 175, + 201, + 255, + 221, + 168, + 196, + 255, + 217, + 165, + 193, + 255, + 215, + 165, + 192, + 255, + 213, + 164, + 191, + 255, + 210, + 168, + 192, + 255, + 197, + 177, + 194, + 255, + 203, + 196, + 206, + 255, + 202, + 197, + 204, + 255, + 201, + 194, + 202, + 255, + 199, + 192, + 200, + 255, + 198, + 191, + 199, + 255, + 89, + 92, + 101, + 255, + 92, + 95, + 104, + 255, + 90, + 93, + 102, + 255, + 92, + 95, + 104, + 255, + 94, + 94, + 104, + 255, + 94, + 94, + 102, + 255, + 94, + 95, + 100, + 255, + 92, + 93, + 97, + 255, + 92, + 93, + 97, + 255, + 93, + 94, + 99, + 255, + 93, + 93, + 101, + 255, + 95, + 95, + 103, + 255, + 100, + 101, + 102, + 255, + 98, + 100, + 112, + 255, + 65, + 67, + 92, + 255, + 51, + 52, + 80, + 255, + 41, + 46, + 78, + 255, + 38, + 42, + 80, + 255, + 39, + 41, + 80, + 255, + 42, + 42, + 78, + 255, + 17, + 19, + 41, + 255, + 7, + 9, + 23, + 255, + 4, + 5, + 17, + 255, + 3, + 2, + 16, + 255, + 4, + 0, + 15, + 255, + 5, + 3, + 14, + 255, + 7, + 7, + 18, + 255, + 13, + 14, + 32, + 255, + 37, + 43, + 67, + 255, + 43, + 48, + 76, + 255, + 41, + 46, + 78, + 255, + 43, + 47, + 83, + 255, + 47, + 53, + 85, + 255, + 47, + 53, + 87, + 255, + 48, + 54, + 90, + 255, + 50, + 55, + 93, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 51, + 56, + 94, + 255, + 54, + 58, + 95, + 255, + 54, + 58, + 93, + 255, + 47, + 50, + 85, + 255, + 22, + 26, + 55, + 255, + 14, + 15, + 43, + 255, + 11, + 11, + 36, + 255, + 15, + 14, + 36, + 255, + 22, + 27, + 47, + 255, + 39, + 44, + 66, + 255, + 47, + 53, + 78, + 255, + 55, + 62, + 89, + 255, + 55, + 59, + 86, + 255, + 54, + 58, + 85, + 255, + 54, + 58, + 85, + 255, + 54, + 58, + 85, + 255, + 55, + 59, + 86, + 255, + 56, + 60, + 87, + 255, + 59, + 63, + 90, + 255, + 57, + 61, + 88, + 255, + 54, + 59, + 89, + 255, + 47, + 52, + 82, + 255, + 43, + 48, + 78, + 255, + 42, + 47, + 77, + 255, + 48, + 53, + 85, + 255, + 36, + 40, + 76, + 255, + 17, + 22, + 53, + 255, + 9, + 15, + 38, + 255, + 9, + 11, + 36, + 255, + 8, + 10, + 34, + 255, + 12, + 14, + 37, + 255, + 21, + 23, + 46, + 255, + 40, + 44, + 74, + 255, + 53, + 58, + 90, + 255, + 52, + 58, + 92, + 255, + 52, + 60, + 96, + 255, + 55, + 59, + 94, + 255, + 53, + 58, + 91, + 255, + 53, + 58, + 89, + 255, + 53, + 58, + 88, + 255, + 54, + 60, + 86, + 255, + 54, + 60, + 86, + 255, + 53, + 59, + 85, + 255, + 53, + 59, + 85, + 255, + 54, + 58, + 85, + 255, + 56, + 60, + 87, + 255, + 57, + 61, + 88, + 255, + 56, + 60, + 87, + 255, + 55, + 60, + 89, + 255, + 55, + 60, + 89, + 255, + 54, + 59, + 88, + 255, + 61, + 66, + 95, + 255, + 53, + 59, + 81, + 255, + 42, + 46, + 71, + 255, + 44, + 46, + 68, + 255, + 48, + 50, + 63, + 255, + 46, + 49, + 64, + 255, + 49, + 52, + 70, + 255, + 54, + 56, + 77, + 255, + 58, + 60, + 83, + 255, + 68, + 73, + 94, + 255, + 79, + 84, + 105, + 255, + 78, + 83, + 104, + 255, + 83, + 88, + 109, + 255, + 93, + 97, + 110, + 255, + 95, + 99, + 111, + 255, + 98, + 102, + 113, + 255, + 104, + 108, + 117, + 255, + 107, + 110, + 117, + 255, + 108, + 111, + 118, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 110, + 113, + 120, + 255, + 110, + 113, + 120, + 255, + 113, + 113, + 120, + 255, + 112, + 115, + 132, + 255, + 113, + 119, + 150, + 255, + 68, + 77, + 124, + 255, + 58, + 64, + 115, + 255, + 39, + 60, + 114, + 255, + 40, + 56, + 105, + 255, + 34, + 48, + 109, + 255, + 38, + 43, + 100, + 255, + 35, + 40, + 95, + 255, + 37, + 40, + 93, + 255, + 38, + 37, + 88, + 255, + 35, + 40, + 87, + 255, + 39, + 46, + 91, + 255, + 48, + 55, + 97, + 255, + 58, + 67, + 106, + 255, + 83, + 89, + 114, + 255, + 101, + 106, + 127, + 255, + 105, + 108, + 124, + 255, + 110, + 112, + 126, + 255, + 122, + 122, + 134, + 255, + 126, + 125, + 139, + 255, + 125, + 125, + 137, + 255, + 127, + 127, + 139, + 255, + 127, + 127, + 137, + 255, + 128, + 128, + 140, + 255, + 128, + 127, + 141, + 255, + 128, + 127, + 142, + 255, + 123, + 122, + 147, + 255, + 93, + 92, + 123, + 255, + 82, + 81, + 122, + 255, + 64, + 65, + 110, + 255, + 57, + 59, + 106, + 255, + 55, + 57, + 106, + 255, + 56, + 58, + 108, + 255, + 59, + 61, + 112, + 255, + 61, + 65, + 113, + 255, + 67, + 73, + 124, + 255, + 71, + 82, + 139, + 255, + 81, + 93, + 154, + 255, + 99, + 109, + 190, + 255, + 109, + 123, + 211, + 255, + 110, + 132, + 219, + 255, + 107, + 135, + 217, + 255, + 109, + 131, + 215, + 255, + 105, + 122, + 202, + 255, + 102, + 112, + 189, + 255, + 95, + 100, + 174, + 255, + 84, + 93, + 150, + 255, + 83, + 91, + 145, + 255, + 78, + 85, + 137, + 255, + 77, + 83, + 133, + 255, + 77, + 81, + 129, + 255, + 78, + 82, + 130, + 255, + 77, + 81, + 129, + 255, + 81, + 85, + 133, + 255, + 81, + 89, + 136, + 255, + 81, + 89, + 136, + 255, + 74, + 82, + 129, + 255, + 91, + 99, + 146, + 255, + 86, + 95, + 138, + 255, + 86, + 94, + 140, + 255, + 84, + 92, + 139, + 255, + 85, + 93, + 142, + 255, + 86, + 93, + 145, + 255, + 84, + 91, + 143, + 255, + 85, + 92, + 144, + 255, + 83, + 90, + 142, + 255, + 83, + 93, + 144, + 255, + 83, + 93, + 144, + 255, + 84, + 94, + 145, + 255, + 83, + 93, + 144, + 255, + 87, + 90, + 141, + 255, + 87, + 91, + 140, + 255, + 85, + 89, + 136, + 255, + 84, + 88, + 135, + 255, + 86, + 90, + 137, + 255, + 101, + 105, + 152, + 255, + 81, + 85, + 132, + 255, + 82, + 86, + 133, + 255, + 85, + 89, + 136, + 255, + 83, + 87, + 134, + 255, + 82, + 86, + 133, + 255, + 81, + 85, + 132, + 255, + 80, + 84, + 131, + 255, + 80, + 84, + 131, + 255, + 80, + 84, + 131, + 255, + 80, + 84, + 131, + 255, + 78, + 85, + 131, + 255, + 78, + 83, + 130, + 255, + 79, + 84, + 131, + 255, + 81, + 85, + 130, + 255, + 76, + 86, + 128, + 255, + 78, + 87, + 129, + 255, + 100, + 103, + 143, + 255, + 98, + 95, + 131, + 255, + 119, + 107, + 142, + 255, + 180, + 140, + 166, + 255, + 183, + 137, + 158, + 255, + 176, + 144, + 164, + 255, + 179, + 157, + 171, + 255, + 179, + 171, + 176, + 255, + 162, + 161, + 175, + 255, + 129, + 125, + 156, + 255, + 109, + 113, + 142, + 255, + 98, + 104, + 137, + 255, + 91, + 98, + 136, + 255, + 88, + 97, + 138, + 255, + 85, + 92, + 134, + 255, + 80, + 87, + 130, + 255, + 78, + 85, + 129, + 255, + 75, + 82, + 128, + 255, + 60, + 62, + 111, + 255, + 52, + 54, + 102, + 255, + 50, + 53, + 98, + 255, + 48, + 51, + 96, + 255, + 47, + 48, + 94, + 255, + 46, + 47, + 91, + 255, + 45, + 46, + 90, + 255, + 45, + 47, + 88, + 255, + 47, + 50, + 94, + 255, + 55, + 57, + 99, + 255, + 71, + 72, + 110, + 255, + 76, + 74, + 111, + 255, + 71, + 77, + 111, + 255, + 73, + 79, + 112, + 255, + 78, + 82, + 112, + 255, + 81, + 85, + 113, + 255, + 94, + 90, + 122, + 255, + 104, + 94, + 119, + 255, + 125, + 110, + 124, + 255, + 162, + 144, + 151, + 255, + 170, + 166, + 163, + 255, + 172, + 168, + 165, + 255, + 172, + 168, + 165, + 255, + 173, + 169, + 166, + 255, + 175, + 170, + 166, + 255, + 176, + 171, + 167, + 255, + 176, + 171, + 167, + 255, + 177, + 172, + 168, + 255, + 178, + 173, + 169, + 255, + 180, + 175, + 171, + 255, + 182, + 177, + 173, + 255, + 183, + 178, + 174, + 255, + 186, + 178, + 175, + 255, + 186, + 178, + 175, + 255, + 188, + 180, + 177, + 255, + 189, + 181, + 178, + 255, + 186, + 183, + 178, + 255, + 188, + 185, + 180, + 255, + 191, + 188, + 183, + 255, + 192, + 189, + 184, + 255, + 197, + 189, + 186, + 255, + 198, + 190, + 187, + 255, + 199, + 191, + 188, + 255, + 200, + 192, + 189, + 255, + 202, + 193, + 190, + 255, + 201, + 193, + 190, + 255, + 202, + 194, + 191, + 255, + 203, + 197, + 193, + 255, + 206, + 168, + 172, + 255, + 206, + 153, + 162, + 255, + 209, + 143, + 154, + 255, + 213, + 142, + 152, + 255, + 162, + 118, + 142, + 255, + 90, + 70, + 107, + 255, + 62, + 58, + 98, + 255, + 54, + 52, + 88, + 255, + 54, + 52, + 97, + 255, + 53, + 58, + 96, + 255, + 64, + 68, + 112, + 255, + 93, + 97, + 125, + 255, + 163, + 160, + 168, + 255, + 217, + 213, + 204, + 255, + 220, + 212, + 199, + 255, + 222, + 211, + 205, + 255, + 222, + 213, + 208, + 255, + 222, + 213, + 208, + 255, + 223, + 214, + 209, + 255, + 224, + 215, + 210, + 255, + 225, + 214, + 212, + 255, + 225, + 215, + 213, + 255, + 230, + 223, + 221, + 255, + 212, + 208, + 205, + 255, + 228, + 221, + 213, + 255, + 227, + 217, + 216, + 255, + 227, + 220, + 218, + 255, + 224, + 222, + 217, + 255, + 220, + 219, + 217, + 255, + 153, + 166, + 193, + 255, + 148, + 164, + 196, + 255, + 168, + 178, + 194, + 255, + 227, + 228, + 230, + 255, + 227, + 221, + 214, + 255, + 230, + 224, + 216, + 255, + 228, + 226, + 222, + 255, + 229, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 232, + 224, + 222, + 255, + 233, + 223, + 222, + 255, + 228, + 229, + 224, + 255, + 236, + 241, + 244, + 255, + 235, + 235, + 243, + 255, + 233, + 226, + 232, + 255, + 234, + 226, + 225, + 255, + 234, + 226, + 226, + 255, + 234, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 234, + 228, + 228, + 255, + 234, + 228, + 228, + 255, + 234, + 230, + 229, + 255, + 234, + 230, + 229, + 255, + 234, + 230, + 229, + 255, + 234, + 230, + 229, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 233, + 229, + 230, + 255, + 223, + 217, + 219, + 255, + 234, + 228, + 230, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 234, + 230, + 231, + 255, + 233, + 229, + 230, + 255, + 233, + 227, + 229, + 255, + 233, + 227, + 229, + 255, + 234, + 228, + 230, + 255, + 233, + 227, + 229, + 255, + 232, + 226, + 230, + 255, + 231, + 225, + 229, + 255, + 230, + 224, + 228, + 255, + 228, + 222, + 226, + 255, + 229, + 219, + 227, + 255, + 228, + 218, + 226, + 255, + 227, + 217, + 225, + 255, + 226, + 216, + 224, + 255, + 224, + 216, + 220, + 255, + 224, + 202, + 213, + 255, + 222, + 183, + 204, + 255, + 222, + 175, + 201, + 255, + 224, + 168, + 197, + 255, + 219, + 166, + 194, + 255, + 217, + 166, + 193, + 255, + 214, + 166, + 192, + 255, + 211, + 169, + 193, + 255, + 201, + 181, + 198, + 255, + 205, + 199, + 209, + 255, + 205, + 200, + 207, + 255, + 203, + 196, + 204, + 255, + 201, + 194, + 202, + 255, + 199, + 192, + 200, + 255, + 63, + 65, + 80, + 255, + 78, + 80, + 93, + 255, + 95, + 97, + 110, + 255, + 91, + 93, + 105, + 255, + 94, + 94, + 104, + 255, + 94, + 94, + 102, + 255, + 93, + 94, + 100, + 255, + 91, + 92, + 96, + 255, + 89, + 90, + 95, + 255, + 89, + 90, + 95, + 255, + 88, + 89, + 94, + 255, + 90, + 91, + 96, + 255, + 92, + 93, + 97, + 255, + 90, + 91, + 94, + 255, + 79, + 79, + 91, + 255, + 60, + 58, + 79, + 255, + 45, + 47, + 78, + 255, + 40, + 43, + 78, + 255, + 39, + 43, + 79, + 255, + 41, + 48, + 78, + 255, + 16, + 19, + 38, + 255, + 6, + 8, + 21, + 255, + 3, + 4, + 14, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 13, + 255, + 2, + 2, + 14, + 255, + 5, + 5, + 17, + 255, + 12, + 12, + 24, + 255, + 24, + 26, + 50, + 255, + 38, + 41, + 72, + 255, + 42, + 47, + 79, + 255, + 43, + 50, + 78, + 255, + 45, + 51, + 85, + 255, + 47, + 53, + 87, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 52, + 57, + 96, + 255, + 54, + 58, + 96, + 255, + 55, + 59, + 96, + 255, + 55, + 58, + 93, + 255, + 27, + 27, + 55, + 255, + 18, + 19, + 41, + 255, + 16, + 17, + 38, + 255, + 21, + 21, + 46, + 255, + 27, + 33, + 55, + 255, + 55, + 61, + 86, + 255, + 51, + 56, + 86, + 255, + 54, + 58, + 92, + 255, + 56, + 60, + 89, + 255, + 55, + 59, + 88, + 255, + 54, + 58, + 87, + 255, + 54, + 58, + 87, + 255, + 54, + 58, + 85, + 255, + 55, + 59, + 86, + 255, + 57, + 61, + 88, + 255, + 58, + 62, + 89, + 255, + 58, + 64, + 90, + 255, + 50, + 55, + 83, + 255, + 45, + 50, + 80, + 255, + 42, + 47, + 77, + 255, + 43, + 47, + 82, + 255, + 21, + 24, + 56, + 255, + 14, + 15, + 43, + 255, + 10, + 11, + 35, + 255, + 7, + 9, + 33, + 255, + 9, + 11, + 31, + 255, + 18, + 18, + 42, + 255, + 32, + 32, + 60, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 55, + 59, + 94, + 255, + 55, + 58, + 93, + 255, + 56, + 60, + 97, + 255, + 54, + 58, + 93, + 255, + 54, + 59, + 91, + 255, + 55, + 60, + 90, + 255, + 53, + 58, + 88, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 89, + 255, + 54, + 59, + 89, + 255, + 54, + 60, + 86, + 255, + 53, + 59, + 84, + 255, + 54, + 60, + 83, + 255, + 53, + 59, + 81, + 255, + 53, + 61, + 85, + 255, + 58, + 64, + 88, + 255, + 49, + 54, + 76, + 255, + 30, + 34, + 55, + 255, + 28, + 30, + 51, + 255, + 25, + 27, + 48, + 255, + 25, + 27, + 48, + 255, + 26, + 28, + 49, + 255, + 30, + 31, + 51, + 255, + 34, + 35, + 55, + 255, + 38, + 39, + 59, + 255, + 42, + 43, + 63, + 255, + 47, + 49, + 70, + 255, + 54, + 56, + 77, + 255, + 69, + 71, + 92, + 255, + 78, + 80, + 101, + 255, + 96, + 102, + 116, + 255, + 97, + 101, + 113, + 255, + 98, + 100, + 113, + 255, + 103, + 104, + 116, + 255, + 107, + 110, + 115, + 255, + 109, + 112, + 117, + 255, + 109, + 112, + 118, + 255, + 109, + 112, + 119, + 255, + 110, + 113, + 120, + 255, + 111, + 114, + 121, + 255, + 111, + 114, + 121, + 255, + 112, + 115, + 122, + 255, + 110, + 115, + 125, + 255, + 117, + 116, + 126, + 255, + 96, + 99, + 115, + 255, + 59, + 76, + 110, + 255, + 55, + 69, + 109, + 255, + 46, + 57, + 100, + 255, + 43, + 51, + 98, + 255, + 38, + 44, + 93, + 255, + 35, + 41, + 84, + 255, + 35, + 41, + 84, + 255, + 37, + 43, + 86, + 255, + 67, + 73, + 116, + 255, + 40, + 45, + 86, + 255, + 46, + 49, + 91, + 255, + 57, + 60, + 95, + 255, + 86, + 89, + 116, + 255, + 102, + 103, + 121, + 255, + 103, + 104, + 122, + 255, + 104, + 105, + 123, + 255, + 107, + 108, + 126, + 255, + 111, + 113, + 128, + 255, + 117, + 118, + 138, + 255, + 125, + 125, + 143, + 255, + 127, + 126, + 139, + 255, + 126, + 126, + 135, + 255, + 128, + 128, + 145, + 255, + 112, + 113, + 139, + 255, + 95, + 95, + 128, + 255, + 88, + 88, + 125, + 255, + 76, + 78, + 118, + 255, + 68, + 72, + 116, + 255, + 61, + 65, + 112, + 255, + 60, + 61, + 110, + 255, + 57, + 60, + 109, + 255, + 56, + 61, + 109, + 255, + 57, + 65, + 112, + 255, + 63, + 68, + 122, + 255, + 69, + 74, + 130, + 255, + 78, + 82, + 142, + 255, + 92, + 96, + 159, + 255, + 100, + 117, + 188, + 255, + 127, + 188, + 254, + 255, + 123, + 212, + 255, + 255, + 112, + 204, + 251, + 255, + 101, + 188, + 232, + 255, + 93, + 155, + 219, + 255, + 106, + 123, + 211, + 255, + 99, + 110, + 176, + 255, + 91, + 98, + 166, + 255, + 86, + 94, + 151, + 255, + 83, + 89, + 140, + 255, + 79, + 85, + 136, + 255, + 80, + 84, + 132, + 255, + 79, + 83, + 131, + 255, + 81, + 85, + 133, + 255, + 82, + 86, + 134, + 255, + 82, + 85, + 136, + 255, + 86, + 90, + 138, + 255, + 90, + 94, + 141, + 255, + 90, + 94, + 139, + 255, + 134, + 146, + 192, + 255, + 95, + 105, + 151, + 255, + 93, + 99, + 147, + 255, + 94, + 99, + 147, + 255, + 87, + 99, + 151, + 255, + 89, + 100, + 156, + 255, + 87, + 98, + 153, + 255, + 85, + 97, + 146, + 255, + 85, + 95, + 144, + 255, + 86, + 95, + 144, + 255, + 87, + 93, + 143, + 255, + 87, + 93, + 143, + 255, + 89, + 92, + 147, + 255, + 89, + 92, + 144, + 255, + 89, + 93, + 140, + 255, + 89, + 93, + 138, + 255, + 89, + 93, + 138, + 255, + 89, + 93, + 138, + 255, + 87, + 91, + 136, + 255, + 91, + 95, + 140, + 255, + 87, + 92, + 133, + 255, + 86, + 91, + 133, + 255, + 85, + 89, + 134, + 255, + 84, + 88, + 134, + 255, + 84, + 88, + 136, + 255, + 83, + 87, + 134, + 255, + 83, + 87, + 132, + 255, + 82, + 87, + 129, + 255, + 81, + 85, + 130, + 255, + 80, + 84, + 129, + 255, + 80, + 84, + 129, + 255, + 80, + 84, + 129, + 255, + 81, + 85, + 130, + 255, + 82, + 86, + 131, + 255, + 83, + 87, + 132, + 255, + 104, + 108, + 153, + 255, + 102, + 101, + 135, + 255, + 146, + 118, + 150, + 255, + 183, + 136, + 163, + 255, + 182, + 157, + 169, + 255, + 183, + 178, + 185, + 255, + 144, + 141, + 156, + 255, + 131, + 130, + 155, + 255, + 120, + 121, + 152, + 255, + 109, + 113, + 148, + 255, + 99, + 105, + 141, + 255, + 94, + 102, + 139, + 255, + 91, + 99, + 138, + 255, + 86, + 94, + 133, + 255, + 89, + 96, + 138, + 255, + 83, + 90, + 133, + 255, + 76, + 83, + 127, + 255, + 64, + 68, + 115, + 255, + 56, + 58, + 106, + 255, + 52, + 55, + 100, + 255, + 50, + 51, + 97, + 255, + 48, + 51, + 94, + 255, + 47, + 50, + 95, + 255, + 49, + 52, + 97, + 255, + 51, + 54, + 99, + 255, + 56, + 60, + 98, + 255, + 77, + 81, + 118, + 255, + 74, + 79, + 112, + 255, + 73, + 78, + 110, + 255, + 74, + 77, + 112, + 255, + 73, + 76, + 111, + 255, + 73, + 76, + 111, + 255, + 73, + 76, + 111, + 255, + 78, + 79, + 110, + 255, + 82, + 83, + 111, + 255, + 88, + 90, + 113, + 255, + 97, + 100, + 120, + 255, + 118, + 104, + 122, + 255, + 152, + 142, + 152, + 255, + 170, + 163, + 162, + 255, + 173, + 169, + 160, + 255, + 175, + 167, + 165, + 255, + 173, + 167, + 165, + 255, + 174, + 171, + 166, + 255, + 173, + 172, + 167, + 255, + 177, + 172, + 169, + 255, + 178, + 173, + 170, + 255, + 180, + 175, + 172, + 255, + 181, + 176, + 173, + 255, + 182, + 177, + 171, + 255, + 183, + 178, + 172, + 255, + 183, + 178, + 172, + 255, + 185, + 180, + 174, + 255, + 187, + 182, + 176, + 255, + 188, + 183, + 177, + 255, + 191, + 186, + 180, + 255, + 192, + 187, + 181, + 255, + 192, + 188, + 185, + 255, + 194, + 189, + 185, + 255, + 198, + 191, + 185, + 255, + 200, + 191, + 184, + 255, + 198, + 191, + 183, + 255, + 200, + 193, + 185, + 255, + 202, + 195, + 187, + 255, + 203, + 196, + 188, + 255, + 204, + 197, + 194, + 255, + 205, + 164, + 172, + 255, + 211, + 147, + 163, + 255, + 212, + 146, + 163, + 255, + 205, + 146, + 156, + 255, + 131, + 98, + 124, + 255, + 83, + 71, + 107, + 255, + 64, + 60, + 95, + 255, + 57, + 55, + 100, + 255, + 59, + 59, + 105, + 255, + 63, + 66, + 107, + 255, + 81, + 87, + 120, + 255, + 122, + 124, + 147, + 255, + 217, + 212, + 209, + 255, + 221, + 211, + 200, + 255, + 220, + 212, + 209, + 255, + 219, + 214, + 210, + 255, + 222, + 214, + 211, + 255, + 223, + 213, + 211, + 255, + 225, + 214, + 212, + 255, + 224, + 216, + 213, + 255, + 225, + 217, + 214, + 255, + 226, + 218, + 215, + 255, + 230, + 222, + 219, + 255, + 222, + 214, + 211, + 255, + 228, + 221, + 215, + 255, + 228, + 221, + 213, + 255, + 228, + 221, + 211, + 255, + 227, + 217, + 211, + 255, + 203, + 202, + 218, + 255, + 169, + 169, + 187, + 255, + 230, + 222, + 225, + 255, + 229, + 224, + 221, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 233, + 223, + 222, + 255, + 232, + 224, + 224, + 255, + 230, + 224, + 226, + 255, + 230, + 226, + 227, + 255, + 232, + 233, + 237, + 255, + 238, + 236, + 239, + 255, + 234, + 228, + 231, + 255, + 233, + 224, + 227, + 255, + 235, + 225, + 226, + 255, + 235, + 226, + 227, + 255, + 234, + 228, + 228, + 255, + 232, + 228, + 227, + 255, + 233, + 229, + 226, + 255, + 233, + 229, + 226, + 255, + 233, + 229, + 226, + 255, + 233, + 229, + 226, + 255, + 234, + 228, + 230, + 255, + 234, + 228, + 230, + 255, + 235, + 229, + 231, + 255, + 235, + 229, + 231, + 255, + 238, + 229, + 232, + 255, + 236, + 230, + 233, + 255, + 234, + 229, + 234, + 255, + 232, + 228, + 234, + 255, + 234, + 228, + 230, + 255, + 234, + 228, + 230, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 234, + 231, + 232, + 255, + 234, + 231, + 232, + 255, + 234, + 231, + 232, + 255, + 233, + 230, + 231, + 255, + 234, + 230, + 231, + 255, + 233, + 228, + 231, + 255, + 233, + 228, + 233, + 255, + 233, + 228, + 234, + 255, + 233, + 227, + 231, + 255, + 232, + 226, + 230, + 255, + 231, + 225, + 229, + 255, + 229, + 223, + 227, + 255, + 231, + 221, + 229, + 255, + 229, + 219, + 227, + 255, + 228, + 218, + 226, + 255, + 227, + 217, + 225, + 255, + 225, + 215, + 223, + 255, + 225, + 197, + 214, + 255, + 225, + 182, + 208, + 255, + 222, + 174, + 204, + 255, + 224, + 169, + 200, + 255, + 222, + 165, + 197, + 255, + 219, + 165, + 196, + 255, + 215, + 166, + 195, + 255, + 210, + 170, + 196, + 255, + 201, + 181, + 198, + 255, + 208, + 200, + 209, + 255, + 208, + 200, + 207, + 255, + 203, + 195, + 206, + 255, + 201, + 193, + 204, + 255, + 202, + 194, + 205, + 255, + 45, + 46, + 64, + 255, + 51, + 53, + 68, + 255, + 68, + 70, + 82, + 255, + 92, + 95, + 104, + 255, + 94, + 94, + 102, + 255, + 94, + 95, + 101, + 255, + 92, + 93, + 98, + 255, + 86, + 87, + 91, + 255, + 87, + 88, + 92, + 255, + 87, + 88, + 92, + 255, + 86, + 87, + 91, + 255, + 85, + 86, + 90, + 255, + 87, + 89, + 87, + 255, + 85, + 87, + 83, + 255, + 84, + 85, + 89, + 255, + 64, + 64, + 75, + 255, + 50, + 53, + 73, + 255, + 41, + 44, + 70, + 255, + 39, + 43, + 71, + 255, + 35, + 41, + 66, + 255, + 18, + 21, + 40, + 255, + 6, + 8, + 21, + 255, + 3, + 4, + 14, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 13, + 255, + 2, + 2, + 14, + 255, + 4, + 4, + 16, + 255, + 9, + 9, + 21, + 255, + 21, + 23, + 44, + 255, + 44, + 48, + 76, + 255, + 43, + 48, + 80, + 255, + 41, + 48, + 77, + 255, + 43, + 49, + 83, + 255, + 45, + 51, + 85, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 52, + 57, + 95, + 255, + 54, + 58, + 95, + 255, + 53, + 57, + 92, + 255, + 55, + 58, + 92, + 255, + 34, + 35, + 65, + 255, + 23, + 25, + 47, + 255, + 23, + 25, + 47, + 255, + 30, + 32, + 57, + 255, + 44, + 50, + 75, + 255, + 49, + 54, + 82, + 255, + 57, + 62, + 92, + 255, + 54, + 59, + 91, + 255, + 55, + 60, + 89, + 255, + 54, + 59, + 88, + 255, + 54, + 59, + 88, + 255, + 54, + 59, + 88, + 255, + 55, + 59, + 86, + 255, + 57, + 61, + 88, + 255, + 57, + 61, + 88, + 255, + 58, + 62, + 89, + 255, + 57, + 63, + 89, + 255, + 58, + 63, + 91, + 255, + 46, + 51, + 81, + 255, + 43, + 48, + 78, + 255, + 25, + 29, + 58, + 255, + 14, + 16, + 45, + 255, + 9, + 9, + 35, + 255, + 7, + 7, + 31, + 255, + 7, + 9, + 32, + 255, + 13, + 15, + 36, + 255, + 22, + 25, + 49, + 255, + 44, + 46, + 77, + 255, + 52, + 58, + 92, + 255, + 53, + 59, + 93, + 255, + 55, + 59, + 94, + 255, + 55, + 58, + 93, + 255, + 55, + 59, + 96, + 255, + 55, + 59, + 94, + 255, + 53, + 58, + 90, + 255, + 57, + 62, + 92, + 255, + 56, + 61, + 91, + 255, + 54, + 59, + 89, + 255, + 55, + 60, + 90, + 255, + 55, + 60, + 90, + 255, + 55, + 60, + 88, + 255, + 55, + 61, + 87, + 255, + 54, + 60, + 84, + 255, + 56, + 62, + 86, + 255, + 53, + 59, + 83, + 255, + 45, + 50, + 73, + 255, + 25, + 29, + 50, + 255, + 20, + 23, + 42, + 255, + 15, + 17, + 38, + 255, + 14, + 16, + 37, + 255, + 13, + 15, + 36, + 255, + 14, + 16, + 37, + 255, + 17, + 18, + 39, + 255, + 21, + 22, + 43, + 255, + 26, + 27, + 48, + 255, + 34, + 35, + 56, + 255, + 36, + 38, + 61, + 255, + 38, + 40, + 63, + 255, + 48, + 50, + 73, + 255, + 61, + 63, + 86, + 255, + 90, + 96, + 112, + 255, + 95, + 98, + 113, + 255, + 98, + 100, + 113, + 255, + 103, + 104, + 116, + 255, + 104, + 107, + 115, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 119, + 255, + 109, + 112, + 118, + 255, + 110, + 113, + 120, + 255, + 111, + 114, + 121, + 255, + 112, + 115, + 122, + 255, + 113, + 116, + 123, + 255, + 115, + 118, + 125, + 255, + 116, + 116, + 124, + 255, + 99, + 103, + 114, + 255, + 74, + 89, + 111, + 255, + 70, + 79, + 105, + 255, + 58, + 66, + 97, + 255, + 50, + 57, + 91, + 255, + 39, + 44, + 83, + 255, + 38, + 43, + 76, + 255, + 38, + 43, + 76, + 255, + 42, + 47, + 80, + 255, + 42, + 47, + 80, + 255, + 38, + 42, + 79, + 255, + 45, + 47, + 85, + 255, + 62, + 64, + 95, + 255, + 97, + 99, + 122, + 255, + 103, + 104, + 122, + 255, + 104, + 105, + 123, + 255, + 105, + 106, + 124, + 255, + 106, + 107, + 125, + 255, + 107, + 108, + 126, + 255, + 110, + 111, + 132, + 255, + 111, + 113, + 135, + 255, + 116, + 118, + 140, + 255, + 106, + 111, + 134, + 255, + 95, + 100, + 131, + 255, + 86, + 91, + 130, + 255, + 82, + 88, + 131, + 255, + 75, + 80, + 127, + 255, + 69, + 76, + 124, + 255, + 63, + 70, + 121, + 255, + 60, + 67, + 120, + 255, + 62, + 65, + 117, + 255, + 60, + 65, + 116, + 255, + 59, + 65, + 116, + 255, + 62, + 68, + 119, + 255, + 66, + 71, + 125, + 255, + 73, + 78, + 134, + 255, + 81, + 85, + 145, + 255, + 95, + 99, + 162, + 255, + 102, + 112, + 189, + 255, + 111, + 128, + 215, + 255, + 111, + 151, + 231, + 255, + 108, + 171, + 236, + 255, + 99, + 178, + 243, + 255, + 116, + 178, + 254, + 255, + 114, + 132, + 232, + 255, + 104, + 114, + 195, + 255, + 97, + 104, + 172, + 255, + 89, + 97, + 154, + 255, + 86, + 92, + 143, + 255, + 83, + 89, + 140, + 255, + 84, + 88, + 136, + 255, + 83, + 87, + 135, + 255, + 84, + 88, + 136, + 255, + 85, + 89, + 137, + 255, + 86, + 89, + 140, + 255, + 89, + 93, + 141, + 255, + 92, + 96, + 143, + 255, + 95, + 99, + 144, + 255, + 94, + 107, + 149, + 255, + 126, + 139, + 181, + 255, + 99, + 112, + 154, + 255, + 101, + 111, + 154, + 255, + 96, + 107, + 154, + 255, + 91, + 101, + 154, + 255, + 92, + 102, + 155, + 255, + 91, + 101, + 151, + 255, + 91, + 100, + 149, + 255, + 90, + 96, + 146, + 255, + 91, + 97, + 147, + 255, + 92, + 96, + 147, + 255, + 93, + 96, + 148, + 255, + 93, + 97, + 146, + 255, + 92, + 96, + 143, + 255, + 92, + 96, + 141, + 255, + 92, + 95, + 140, + 255, + 92, + 95, + 140, + 255, + 90, + 93, + 138, + 255, + 93, + 96, + 141, + 255, + 90, + 95, + 137, + 255, + 89, + 93, + 138, + 255, + 90, + 94, + 140, + 255, + 89, + 93, + 141, + 255, + 87, + 91, + 139, + 255, + 86, + 90, + 137, + 255, + 85, + 89, + 134, + 255, + 84, + 89, + 131, + 255, + 84, + 88, + 133, + 255, + 83, + 87, + 132, + 255, + 81, + 85, + 130, + 255, + 81, + 85, + 130, + 255, + 81, + 85, + 130, + 255, + 82, + 86, + 131, + 255, + 81, + 85, + 130, + 255, + 88, + 92, + 137, + 255, + 97, + 102, + 142, + 255, + 123, + 112, + 146, + 255, + 176, + 149, + 175, + 255, + 177, + 168, + 180, + 255, + 139, + 136, + 162, + 255, + 128, + 127, + 153, + 255, + 121, + 122, + 151, + 255, + 117, + 120, + 151, + 255, + 113, + 116, + 151, + 255, + 103, + 107, + 142, + 255, + 98, + 105, + 141, + 255, + 101, + 109, + 146, + 255, + 103, + 110, + 148, + 255, + 94, + 100, + 140, + 255, + 94, + 100, + 142, + 255, + 84, + 90, + 132, + 255, + 73, + 77, + 122, + 255, + 60, + 63, + 108, + 255, + 55, + 57, + 105, + 255, + 53, + 54, + 102, + 255, + 51, + 54, + 99, + 255, + 50, + 53, + 98, + 255, + 52, + 55, + 99, + 255, + 59, + 62, + 105, + 255, + 80, + 84, + 121, + 255, + 76, + 80, + 116, + 255, + 76, + 80, + 115, + 255, + 75, + 79, + 113, + 255, + 73, + 77, + 112, + 255, + 72, + 76, + 111, + 255, + 72, + 76, + 111, + 255, + 72, + 76, + 111, + 255, + 73, + 75, + 112, + 255, + 74, + 77, + 111, + 255, + 76, + 79, + 111, + 255, + 77, + 81, + 110, + 255, + 92, + 89, + 115, + 255, + 107, + 102, + 123, + 255, + 111, + 103, + 117, + 255, + 143, + 133, + 142, + 255, + 169, + 159, + 162, + 255, + 175, + 165, + 166, + 255, + 174, + 167, + 164, + 255, + 175, + 169, + 163, + 255, + 176, + 171, + 168, + 255, + 177, + 172, + 169, + 255, + 177, + 172, + 169, + 255, + 178, + 173, + 170, + 255, + 180, + 175, + 171, + 255, + 181, + 176, + 172, + 255, + 182, + 177, + 173, + 255, + 184, + 179, + 175, + 255, + 184, + 179, + 175, + 255, + 185, + 180, + 176, + 255, + 189, + 184, + 180, + 255, + 190, + 185, + 181, + 255, + 190, + 186, + 183, + 255, + 192, + 187, + 183, + 255, + 195, + 188, + 182, + 255, + 197, + 188, + 181, + 255, + 197, + 190, + 184, + 255, + 199, + 192, + 186, + 255, + 200, + 193, + 187, + 255, + 201, + 194, + 188, + 255, + 199, + 195, + 191, + 255, + 205, + 195, + 193, + 255, + 202, + 162, + 170, + 255, + 214, + 146, + 163, + 255, + 207, + 144, + 158, + 255, + 208, + 147, + 161, + 255, + 122, + 85, + 112, + 255, + 79, + 72, + 115, + 255, + 65, + 64, + 104, + 255, + 61, + 62, + 107, + 255, + 63, + 70, + 112, + 255, + 79, + 90, + 126, + 255, + 93, + 115, + 146, + 255, + 168, + 181, + 196, + 255, + 212, + 211, + 209, + 255, + 223, + 212, + 203, + 255, + 219, + 214, + 210, + 255, + 222, + 214, + 211, + 255, + 223, + 213, + 211, + 255, + 225, + 214, + 212, + 255, + 224, + 216, + 213, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 227, + 219, + 216, + 255, + 226, + 219, + 213, + 255, + 228, + 221, + 215, + 255, + 228, + 221, + 214, + 255, + 230, + 224, + 220, + 255, + 189, + 188, + 196, + 255, + 214, + 212, + 217, + 255, + 227, + 222, + 216, + 255, + 229, + 224, + 221, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 233, + 223, + 222, + 255, + 232, + 224, + 224, + 255, + 230, + 224, + 226, + 255, + 233, + 229, + 230, + 255, + 240, + 238, + 241, + 255, + 231, + 228, + 230, + 255, + 233, + 227, + 229, + 255, + 235, + 226, + 227, + 255, + 234, + 225, + 226, + 255, + 234, + 227, + 227, + 255, + 232, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 234, + 230, + 229, + 255, + 234, + 230, + 229, + 255, + 235, + 231, + 230, + 255, + 235, + 231, + 230, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 235, + 229, + 231, + 255, + 235, + 229, + 231, + 255, + 238, + 229, + 232, + 255, + 236, + 230, + 233, + 255, + 234, + 229, + 234, + 255, + 225, + 221, + 227, + 255, + 235, + 229, + 231, + 255, + 235, + 229, + 231, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 236, + 232, + 233, + 255, + 236, + 232, + 233, + 255, + 236, + 232, + 233, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 234, + 229, + 232, + 255, + 235, + 230, + 235, + 255, + 235, + 230, + 236, + 255, + 234, + 228, + 232, + 255, + 233, + 227, + 231, + 255, + 233, + 227, + 231, + 255, + 231, + 225, + 229, + 255, + 233, + 223, + 231, + 255, + 231, + 221, + 229, + 255, + 229, + 219, + 227, + 255, + 228, + 218, + 226, + 255, + 229, + 218, + 226, + 255, + 223, + 194, + 212, + 255, + 227, + 183, + 209, + 255, + 226, + 176, + 206, + 255, + 226, + 171, + 202, + 255, + 224, + 167, + 199, + 255, + 222, + 168, + 199, + 255, + 218, + 169, + 198, + 255, + 211, + 171, + 197, + 255, + 205, + 185, + 202, + 255, + 208, + 200, + 209, + 255, + 208, + 200, + 207, + 255, + 205, + 197, + 208, + 255, + 203, + 195, + 206, + 255, + 199, + 191, + 202, + 255, + 31, + 32, + 52, + 255, + 35, + 36, + 54, + 255, + 49, + 52, + 61, + 255, + 69, + 72, + 79, + 255, + 94, + 95, + 100, + 255, + 90, + 91, + 95, + 255, + 87, + 88, + 91, + 255, + 85, + 86, + 88, + 255, + 85, + 86, + 88, + 255, + 85, + 86, + 88, + 255, + 84, + 85, + 87, + 255, + 84, + 85, + 87, + 255, + 83, + 85, + 83, + 255, + 83, + 85, + 80, + 255, + 82, + 84, + 82, + 255, + 75, + 76, + 81, + 255, + 57, + 59, + 72, + 255, + 45, + 47, + 68, + 255, + 35, + 38, + 63, + 255, + 30, + 35, + 58, + 255, + 17, + 20, + 39, + 255, + 10, + 12, + 25, + 255, + 4, + 5, + 15, + 255, + 3, + 3, + 15, + 255, + 1, + 1, + 11, + 255, + 1, + 1, + 11, + 255, + 3, + 3, + 13, + 255, + 9, + 9, + 19, + 255, + 15, + 18, + 35, + 255, + 38, + 42, + 68, + 255, + 47, + 52, + 84, + 255, + 42, + 49, + 79, + 255, + 46, + 52, + 86, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 50, + 56, + 90, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 94, + 255, + 54, + 59, + 93, + 255, + 53, + 58, + 90, + 255, + 48, + 51, + 83, + 255, + 50, + 53, + 85, + 255, + 30, + 35, + 58, + 255, + 29, + 34, + 56, + 255, + 45, + 49, + 75, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 88, + 255, + 58, + 63, + 95, + 255, + 62, + 69, + 97, + 255, + 61, + 68, + 96, + 255, + 52, + 59, + 87, + 255, + 57, + 64, + 92, + 255, + 57, + 61, + 88, + 255, + 57, + 61, + 88, + 255, + 58, + 62, + 89, + 255, + 59, + 63, + 90, + 255, + 56, + 62, + 88, + 255, + 60, + 65, + 93, + 255, + 56, + 61, + 91, + 255, + 30, + 35, + 65, + 255, + 18, + 20, + 44, + 255, + 11, + 12, + 36, + 255, + 9, + 8, + 32, + 255, + 9, + 7, + 31, + 255, + 10, + 10, + 34, + 255, + 16, + 20, + 40, + 255, + 26, + 32, + 58, + 255, + 53, + 59, + 93, + 255, + 53, + 59, + 93, + 255, + 53, + 59, + 93, + 255, + 55, + 59, + 94, + 255, + 56, + 59, + 94, + 255, + 56, + 60, + 97, + 255, + 54, + 58, + 93, + 255, + 53, + 58, + 90, + 255, + 53, + 58, + 88, + 255, + 55, + 60, + 90, + 255, + 63, + 68, + 98, + 255, + 57, + 62, + 92, + 255, + 54, + 59, + 89, + 255, + 57, + 62, + 92, + 255, + 57, + 62, + 90, + 255, + 53, + 59, + 85, + 255, + 50, + 56, + 80, + 255, + 40, + 45, + 67, + 255, + 25, + 29, + 50, + 255, + 17, + 18, + 38, + 255, + 11, + 12, + 31, + 255, + 9, + 11, + 32, + 255, + 7, + 9, + 30, + 255, + 7, + 9, + 30, + 255, + 8, + 10, + 31, + 255, + 10, + 10, + 34, + 255, + 13, + 13, + 37, + 255, + 15, + 15, + 39, + 255, + 21, + 21, + 45, + 255, + 23, + 25, + 50, + 255, + 32, + 34, + 59, + 255, + 34, + 36, + 61, + 255, + 47, + 49, + 74, + 255, + 67, + 72, + 94, + 255, + 98, + 101, + 119, + 255, + 98, + 100, + 115, + 255, + 101, + 102, + 112, + 255, + 103, + 105, + 118, + 255, + 108, + 110, + 121, + 255, + 109, + 112, + 120, + 255, + 110, + 113, + 118, + 255, + 110, + 113, + 120, + 255, + 111, + 114, + 121, + 255, + 111, + 114, + 121, + 255, + 113, + 116, + 123, + 255, + 116, + 119, + 127, + 255, + 104, + 107, + 117, + 255, + 98, + 102, + 113, + 255, + 90, + 98, + 112, + 255, + 93, + 96, + 112, + 255, + 89, + 93, + 113, + 255, + 58, + 61, + 87, + 255, + 39, + 42, + 75, + 255, + 34, + 36, + 67, + 255, + 32, + 34, + 65, + 255, + 31, + 33, + 64, + 255, + 33, + 35, + 66, + 255, + 37, + 40, + 72, + 255, + 48, + 50, + 82, + 255, + 68, + 68, + 94, + 255, + 104, + 105, + 123, + 255, + 104, + 105, + 123, + 255, + 105, + 106, + 124, + 255, + 106, + 107, + 125, + 255, + 106, + 107, + 125, + 255, + 107, + 106, + 127, + 255, + 106, + 108, + 129, + 255, + 105, + 109, + 137, + 255, + 102, + 107, + 140, + 255, + 89, + 99, + 143, + 255, + 82, + 93, + 141, + 255, + 77, + 90, + 143, + 255, + 72, + 85, + 142, + 255, + 70, + 84, + 141, + 255, + 67, + 80, + 138, + 255, + 65, + 77, + 136, + 255, + 63, + 73, + 133, + 255, + 63, + 71, + 126, + 255, + 62, + 69, + 124, + 255, + 64, + 69, + 125, + 255, + 67, + 72, + 128, + 255, + 68, + 73, + 127, + 255, + 75, + 80, + 136, + 255, + 82, + 86, + 146, + 255, + 93, + 97, + 160, + 255, + 107, + 108, + 187, + 255, + 115, + 118, + 210, + 255, + 111, + 143, + 228, + 255, + 142, + 204, + 255, + 255, + 99, + 199, + 232, + 255, + 94, + 176, + 227, + 255, + 111, + 139, + 231, + 255, + 107, + 115, + 206, + 255, + 98, + 105, + 173, + 255, + 91, + 99, + 156, + 255, + 90, + 96, + 147, + 255, + 87, + 93, + 144, + 255, + 87, + 91, + 139, + 255, + 87, + 91, + 139, + 255, + 88, + 92, + 140, + 255, + 90, + 94, + 142, + 255, + 92, + 95, + 146, + 255, + 95, + 99, + 147, + 255, + 99, + 103, + 150, + 255, + 102, + 106, + 151, + 255, + 106, + 115, + 155, + 255, + 108, + 117, + 157, + 255, + 106, + 117, + 156, + 255, + 120, + 132, + 171, + 255, + 100, + 109, + 150, + 255, + 99, + 107, + 156, + 255, + 96, + 103, + 155, + 255, + 96, + 104, + 153, + 255, + 95, + 101, + 151, + 255, + 94, + 100, + 150, + 255, + 98, + 102, + 153, + 255, + 96, + 98, + 149, + 255, + 98, + 102, + 149, + 255, + 95, + 99, + 146, + 255, + 95, + 99, + 146, + 255, + 94, + 98, + 144, + 255, + 95, + 98, + 143, + 255, + 94, + 97, + 142, + 255, + 94, + 97, + 142, + 255, + 94, + 97, + 142, + 255, + 92, + 96, + 141, + 255, + 92, + 96, + 142, + 255, + 93, + 97, + 145, + 255, + 93, + 96, + 146, + 255, + 90, + 94, + 142, + 255, + 89, + 93, + 140, + 255, + 89, + 93, + 138, + 255, + 87, + 92, + 134, + 255, + 86, + 90, + 135, + 255, + 85, + 89, + 134, + 255, + 84, + 88, + 133, + 255, + 83, + 87, + 132, + 255, + 82, + 86, + 131, + 255, + 82, + 86, + 131, + 255, + 83, + 87, + 132, + 255, + 85, + 89, + 134, + 255, + 90, + 94, + 138, + 255, + 98, + 102, + 139, + 255, + 116, + 108, + 141, + 255, + 124, + 129, + 153, + 255, + 122, + 123, + 158, + 255, + 121, + 123, + 157, + 255, + 119, + 122, + 155, + 255, + 116, + 119, + 152, + 255, + 115, + 117, + 150, + 255, + 110, + 113, + 146, + 255, + 103, + 107, + 142, + 255, + 106, + 112, + 148, + 255, + 101, + 105, + 142, + 255, + 101, + 105, + 144, + 255, + 94, + 98, + 138, + 255, + 104, + 107, + 150, + 255, + 83, + 88, + 130, + 255, + 66, + 69, + 113, + 255, + 56, + 58, + 107, + 255, + 55, + 55, + 107, + 255, + 53, + 55, + 104, + 255, + 53, + 56, + 101, + 255, + 59, + 62, + 104, + 255, + 76, + 80, + 119, + 255, + 81, + 86, + 119, + 255, + 79, + 83, + 118, + 255, + 77, + 81, + 118, + 255, + 76, + 80, + 117, + 255, + 74, + 80, + 114, + 255, + 73, + 79, + 113, + 255, + 72, + 78, + 112, + 255, + 71, + 77, + 111, + 255, + 71, + 75, + 112, + 255, + 71, + 75, + 112, + 255, + 71, + 75, + 111, + 255, + 73, + 77, + 113, + 255, + 73, + 79, + 111, + 255, + 82, + 83, + 111, + 255, + 96, + 94, + 116, + 255, + 107, + 101, + 122, + 255, + 113, + 105, + 118, + 255, + 131, + 124, + 133, + 255, + 165, + 157, + 161, + 255, + 175, + 167, + 167, + 255, + 175, + 170, + 167, + 255, + 175, + 170, + 167, + 255, + 176, + 171, + 168, + 255, + 178, + 173, + 170, + 255, + 178, + 173, + 170, + 255, + 180, + 175, + 172, + 255, + 181, + 176, + 173, + 255, + 182, + 177, + 174, + 255, + 183, + 178, + 175, + 255, + 184, + 179, + 176, + 255, + 186, + 181, + 178, + 255, + 188, + 183, + 180, + 255, + 189, + 185, + 182, + 255, + 191, + 186, + 182, + 255, + 193, + 186, + 180, + 255, + 196, + 187, + 180, + 255, + 195, + 187, + 184, + 255, + 197, + 189, + 186, + 255, + 198, + 190, + 187, + 255, + 200, + 192, + 189, + 255, + 201, + 195, + 191, + 255, + 198, + 199, + 193, + 255, + 204, + 184, + 185, + 255, + 205, + 155, + 166, + 255, + 209, + 148, + 162, + 255, + 216, + 143, + 154, + 255, + 210, + 154, + 174, + 255, + 116, + 90, + 120, + 255, + 82, + 73, + 110, + 255, + 68, + 70, + 112, + 255, + 69, + 87, + 128, + 255, + 78, + 105, + 141, + 255, + 107, + 162, + 190, + 255, + 117, + 164, + 199, + 255, + 139, + 163, + 184, + 255, + 218, + 221, + 222, + 255, + 221, + 216, + 212, + 255, + 219, + 211, + 208, + 255, + 223, + 213, + 211, + 255, + 225, + 214, + 212, + 255, + 224, + 216, + 213, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 218, + 215, + 255, + 227, + 220, + 214, + 255, + 225, + 217, + 214, + 255, + 232, + 224, + 222, + 255, + 227, + 219, + 217, + 255, + 189, + 185, + 191, + 255, + 186, + 184, + 187, + 255, + 225, + 222, + 219, + 255, + 232, + 228, + 218, + 255, + 230, + 225, + 222, + 255, + 231, + 226, + 223, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 233, + 223, + 222, + 255, + 232, + 224, + 224, + 255, + 229, + 223, + 225, + 255, + 240, + 236, + 237, + 255, + 235, + 229, + 232, + 255, + 232, + 226, + 228, + 255, + 232, + 226, + 226, + 255, + 235, + 228, + 227, + 255, + 233, + 227, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 229, + 228, + 255, + 232, + 231, + 229, + 255, + 234, + 230, + 231, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 238, + 229, + 232, + 255, + 236, + 230, + 233, + 255, + 236, + 231, + 236, + 255, + 229, + 225, + 231, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 236, + 232, + 233, + 255, + 236, + 231, + 234, + 255, + 235, + 230, + 235, + 255, + 234, + 229, + 235, + 255, + 234, + 228, + 232, + 255, + 234, + 228, + 232, + 255, + 233, + 227, + 231, + 255, + 232, + 226, + 230, + 255, + 233, + 223, + 231, + 255, + 232, + 222, + 230, + 255, + 231, + 221, + 229, + 255, + 229, + 219, + 227, + 255, + 230, + 217, + 226, + 255, + 226, + 195, + 213, + 255, + 228, + 181, + 208, + 255, + 228, + 176, + 207, + 255, + 227, + 172, + 203, + 255, + 226, + 169, + 201, + 255, + 223, + 169, + 200, + 255, + 219, + 170, + 199, + 255, + 215, + 175, + 201, + 255, + 205, + 185, + 202, + 255, + 210, + 202, + 211, + 255, + 211, + 203, + 210, + 255, + 205, + 197, + 208, + 255, + 201, + 193, + 204, + 255, + 202, + 194, + 205, + 255, + 22, + 23, + 44, + 255, + 24, + 25, + 43, + 255, + 39, + 42, + 51, + 255, + 52, + 55, + 61, + 255, + 83, + 84, + 88, + 255, + 84, + 85, + 89, + 255, + 84, + 85, + 87, + 255, + 84, + 86, + 85, + 255, + 84, + 85, + 87, + 255, + 84, + 85, + 87, + 255, + 84, + 85, + 87, + 255, + 84, + 85, + 87, + 255, + 83, + 84, + 87, + 255, + 83, + 85, + 83, + 255, + 84, + 86, + 86, + 255, + 83, + 84, + 89, + 255, + 67, + 66, + 80, + 255, + 51, + 52, + 74, + 255, + 41, + 42, + 70, + 255, + 36, + 38, + 64, + 255, + 20, + 23, + 42, + 255, + 12, + 14, + 27, + 255, + 5, + 6, + 16, + 255, + 1, + 1, + 13, + 255, + 1, + 1, + 9, + 255, + 1, + 1, + 9, + 255, + 2, + 2, + 10, + 255, + 5, + 5, + 13, + 255, + 12, + 16, + 28, + 255, + 23, + 28, + 51, + 255, + 39, + 44, + 76, + 255, + 41, + 47, + 79, + 255, + 49, + 55, + 89, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 51, + 57, + 91, + 255, + 53, + 59, + 93, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 51, + 56, + 89, + 255, + 54, + 59, + 90, + 255, + 57, + 60, + 91, + 255, + 56, + 61, + 93, + 255, + 37, + 43, + 67, + 255, + 37, + 43, + 67, + 255, + 53, + 58, + 86, + 255, + 52, + 56, + 90, + 255, + 52, + 57, + 89, + 255, + 52, + 57, + 89, + 255, + 54, + 59, + 89, + 255, + 52, + 59, + 87, + 255, + 56, + 63, + 91, + 255, + 56, + 63, + 91, + 255, + 57, + 64, + 92, + 255, + 64, + 68, + 95, + 255, + 59, + 63, + 90, + 255, + 59, + 63, + 90, + 255, + 57, + 61, + 88, + 255, + 59, + 65, + 91, + 255, + 56, + 61, + 89, + 255, + 49, + 54, + 84, + 255, + 20, + 25, + 55, + 255, + 13, + 14, + 34, + 255, + 7, + 8, + 29, + 255, + 8, + 6, + 28, + 255, + 11, + 7, + 30, + 255, + 12, + 13, + 35, + 255, + 22, + 26, + 48, + 255, + 45, + 52, + 80, + 255, + 48, + 58, + 94, + 255, + 51, + 57, + 91, + 255, + 53, + 59, + 93, + 255, + 55, + 59, + 94, + 255, + 56, + 59, + 94, + 255, + 56, + 60, + 97, + 255, + 54, + 58, + 93, + 255, + 53, + 58, + 90, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 89, + 255, + 55, + 60, + 90, + 255, + 63, + 68, + 98, + 255, + 55, + 60, + 90, + 255, + 56, + 61, + 91, + 255, + 57, + 62, + 92, + 255, + 58, + 63, + 91, + 255, + 47, + 53, + 79, + 255, + 28, + 30, + 52, + 255, + 19, + 21, + 42, + 255, + 11, + 12, + 31, + 255, + 9, + 8, + 26, + 255, + 4, + 6, + 27, + 255, + 3, + 5, + 26, + 255, + 4, + 6, + 27, + 255, + 5, + 7, + 28, + 255, + 7, + 7, + 33, + 255, + 8, + 8, + 34, + 255, + 11, + 11, + 37, + 255, + 15, + 15, + 41, + 255, + 17, + 19, + 44, + 255, + 21, + 23, + 48, + 255, + 25, + 27, + 52, + 255, + 35, + 37, + 62, + 255, + 49, + 53, + 78, + 255, + 86, + 89, + 108, + 255, + 98, + 100, + 115, + 255, + 101, + 102, + 112, + 255, + 102, + 104, + 120, + 255, + 104, + 106, + 118, + 255, + 109, + 112, + 120, + 255, + 110, + 114, + 117, + 255, + 111, + 114, + 121, + 255, + 112, + 115, + 122, + 255, + 114, + 117, + 124, + 255, + 113, + 116, + 123, + 255, + 104, + 105, + 120, + 255, + 99, + 102, + 118, + 255, + 96, + 99, + 115, + 255, + 94, + 96, + 110, + 255, + 97, + 95, + 108, + 255, + 99, + 99, + 118, + 255, + 66, + 66, + 91, + 255, + 39, + 41, + 73, + 255, + 36, + 35, + 67, + 255, + 31, + 30, + 62, + 255, + 30, + 29, + 61, + 255, + 34, + 33, + 65, + 255, + 39, + 40, + 69, + 255, + 51, + 52, + 81, + 255, + 70, + 70, + 93, + 255, + 107, + 106, + 121, + 255, + 105, + 106, + 124, + 255, + 106, + 107, + 125, + 255, + 106, + 107, + 125, + 255, + 106, + 107, + 125, + 255, + 110, + 108, + 130, + 255, + 108, + 110, + 132, + 255, + 102, + 107, + 139, + 255, + 93, + 99, + 140, + 255, + 83, + 97, + 153, + 255, + 80, + 96, + 155, + 255, + 78, + 95, + 158, + 255, + 77, + 94, + 159, + 255, + 73, + 92, + 157, + 255, + 71, + 89, + 153, + 255, + 72, + 87, + 152, + 255, + 71, + 83, + 149, + 255, + 71, + 82, + 138, + 255, + 71, + 79, + 136, + 255, + 71, + 76, + 134, + 255, + 72, + 75, + 134, + 255, + 73, + 78, + 132, + 255, + 77, + 82, + 138, + 255, + 83, + 87, + 147, + 255, + 91, + 95, + 158, + 255, + 101, + 104, + 176, + 255, + 110, + 112, + 199, + 255, + 117, + 122, + 213, + 255, + 119, + 129, + 214, + 255, + 105, + 155, + 226, + 255, + 107, + 162, + 230, + 255, + 112, + 136, + 225, + 255, + 105, + 122, + 201, + 255, + 99, + 106, + 174, + 255, + 94, + 102, + 159, + 255, + 93, + 99, + 150, + 255, + 90, + 96, + 147, + 255, + 93, + 97, + 145, + 255, + 93, + 97, + 145, + 255, + 94, + 98, + 146, + 255, + 96, + 100, + 148, + 255, + 98, + 101, + 152, + 255, + 101, + 105, + 153, + 255, + 107, + 111, + 158, + 255, + 113, + 117, + 162, + 255, + 131, + 132, + 172, + 255, + 126, + 130, + 169, + 255, + 124, + 129, + 168, + 255, + 123, + 131, + 169, + 255, + 200, + 210, + 246, + 255, + 116, + 124, + 170, + 255, + 103, + 111, + 160, + 255, + 98, + 106, + 154, + 255, + 97, + 103, + 153, + 255, + 98, + 102, + 153, + 255, + 99, + 101, + 152, + 255, + 102, + 104, + 155, + 255, + 110, + 114, + 159, + 255, + 99, + 103, + 148, + 255, + 102, + 106, + 152, + 255, + 101, + 105, + 152, + 255, + 101, + 102, + 148, + 255, + 97, + 98, + 144, + 255, + 97, + 98, + 144, + 255, + 97, + 98, + 144, + 255, + 95, + 99, + 145, + 255, + 95, + 99, + 147, + 255, + 95, + 98, + 148, + 255, + 95, + 98, + 149, + 255, + 94, + 98, + 146, + 255, + 93, + 97, + 144, + 255, + 92, + 96, + 141, + 255, + 90, + 95, + 137, + 255, + 90, + 94, + 139, + 255, + 89, + 93, + 138, + 255, + 88, + 92, + 137, + 255, + 87, + 91, + 136, + 255, + 85, + 89, + 134, + 255, + 85, + 89, + 134, + 255, + 85, + 89, + 134, + 255, + 84, + 88, + 133, + 255, + 88, + 88, + 131, + 255, + 88, + 97, + 136, + 255, + 98, + 97, + 138, + 255, + 98, + 106, + 144, + 255, + 117, + 123, + 155, + 255, + 119, + 124, + 156, + 255, + 117, + 121, + 155, + 255, + 117, + 120, + 155, + 255, + 118, + 119, + 150, + 255, + 117, + 119, + 152, + 255, + 106, + 110, + 145, + 255, + 105, + 109, + 144, + 255, + 107, + 111, + 148, + 255, + 102, + 106, + 144, + 255, + 104, + 108, + 147, + 255, + 100, + 103, + 144, + 255, + 104, + 109, + 149, + 255, + 69, + 72, + 116, + 255, + 62, + 64, + 113, + 255, + 58, + 58, + 111, + 255, + 57, + 59, + 109, + 255, + 60, + 63, + 109, + 255, + 66, + 69, + 111, + 255, + 85, + 89, + 127, + 255, + 82, + 87, + 119, + 255, + 80, + 84, + 118, + 255, + 79, + 83, + 120, + 255, + 78, + 82, + 120, + 255, + 76, + 82, + 116, + 255, + 75, + 81, + 115, + 255, + 73, + 79, + 113, + 255, + 72, + 78, + 112, + 255, + 71, + 77, + 110, + 255, + 71, + 77, + 110, + 255, + 70, + 76, + 110, + 255, + 70, + 76, + 110, + 255, + 72, + 78, + 110, + 255, + 74, + 79, + 108, + 255, + 83, + 87, + 112, + 255, + 89, + 93, + 114, + 255, + 96, + 95, + 117, + 255, + 105, + 104, + 120, + 255, + 113, + 110, + 121, + 255, + 124, + 119, + 126, + 255, + 162, + 157, + 154, + 255, + 176, + 171, + 168, + 255, + 175, + 170, + 167, + 255, + 176, + 171, + 168, + 255, + 177, + 171, + 171, + 255, + 179, + 173, + 173, + 255, + 180, + 174, + 174, + 255, + 181, + 175, + 175, + 255, + 182, + 176, + 176, + 255, + 183, + 177, + 177, + 255, + 183, + 177, + 177, + 255, + 186, + 180, + 180, + 255, + 185, + 181, + 178, + 255, + 187, + 182, + 178, + 255, + 192, + 185, + 179, + 255, + 195, + 186, + 179, + 255, + 194, + 186, + 184, + 255, + 196, + 188, + 186, + 255, + 197, + 189, + 187, + 255, + 199, + 191, + 189, + 255, + 200, + 191, + 188, + 255, + 201, + 193, + 190, + 255, + 208, + 191, + 191, + 255, + 197, + 169, + 173, + 255, + 208, + 152, + 163, + 255, + 210, + 145, + 160, + 255, + 205, + 144, + 159, + 255, + 179, + 130, + 142, + 255, + 107, + 88, + 126, + 255, + 84, + 84, + 127, + 255, + 75, + 101, + 142, + 255, + 83, + 126, + 160, + 255, + 140, + 221, + 241, + 255, + 90, + 167, + 213, + 255, + 107, + 159, + 200, + 255, + 143, + 167, + 184, + 255, + 221, + 216, + 212, + 255, + 221, + 213, + 210, + 255, + 223, + 213, + 211, + 255, + 225, + 214, + 212, + 255, + 224, + 216, + 213, + 255, + 225, + 217, + 214, + 255, + 225, + 217, + 214, + 255, + 226, + 218, + 215, + 255, + 226, + 219, + 213, + 255, + 229, + 221, + 218, + 255, + 230, + 222, + 221, + 255, + 191, + 182, + 184, + 255, + 180, + 177, + 194, + 255, + 218, + 214, + 219, + 255, + 229, + 224, + 221, + 255, + 229, + 224, + 218, + 255, + 230, + 225, + 222, + 255, + 231, + 226, + 223, + 255, + 230, + 225, + 222, + 255, + 230, + 225, + 222, + 255, + 233, + 223, + 222, + 255, + 232, + 224, + 224, + 255, + 233, + 227, + 229, + 255, + 232, + 228, + 229, + 255, + 234, + 225, + 228, + 255, + 235, + 226, + 227, + 255, + 234, + 227, + 226, + 255, + 232, + 227, + 224, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 232, + 231, + 229, + 255, + 232, + 232, + 230, + 255, + 235, + 231, + 232, + 255, + 236, + 232, + 233, + 255, + 235, + 231, + 232, + 255, + 235, + 231, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 239, + 230, + 233, + 255, + 237, + 231, + 234, + 255, + 233, + 228, + 233, + 255, + 235, + 231, + 237, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 234, + 255, + 238, + 232, + 234, + 255, + 238, + 232, + 234, + 255, + 238, + 232, + 234, + 255, + 239, + 230, + 233, + 255, + 239, + 230, + 233, + 255, + 239, + 230, + 233, + 255, + 239, + 230, + 233, + 255, + 236, + 232, + 233, + 255, + 236, + 231, + 234, + 255, + 236, + 231, + 236, + 255, + 235, + 230, + 236, + 255, + 236, + 230, + 234, + 255, + 236, + 230, + 234, + 255, + 234, + 228, + 232, + 255, + 233, + 227, + 231, + 255, + 234, + 224, + 232, + 255, + 233, + 223, + 231, + 255, + 233, + 223, + 231, + 255, + 231, + 221, + 229, + 255, + 231, + 217, + 226, + 255, + 226, + 193, + 212, + 255, + 229, + 182, + 209, + 255, + 230, + 177, + 208, + 255, + 228, + 173, + 204, + 255, + 227, + 170, + 202, + 255, + 224, + 170, + 201, + 255, + 220, + 171, + 200, + 255, + 214, + 174, + 200, + 255, + 208, + 188, + 205, + 255, + 213, + 205, + 214, + 255, + 207, + 199, + 206, + 255, + 208, + 200, + 211, + 255, + 205, + 197, + 208, + 255, + 205, + 197, + 208, + 255, + 15, + 14, + 29, + 255, + 21, + 21, + 33, + 255, + 33, + 34, + 40, + 255, + 47, + 48, + 52, + 255, + 85, + 87, + 86, + 255, + 84, + 86, + 85, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 82, + 255, + 84, + 86, + 84, + 255, + 84, + 86, + 86, + 255, + 85, + 86, + 88, + 255, + 85, + 87, + 86, + 255, + 85, + 86, + 87, + 255, + 87, + 88, + 91, + 255, + 84, + 85, + 90, + 255, + 86, + 86, + 93, + 255, + 58, + 58, + 77, + 255, + 43, + 45, + 77, + 255, + 38, + 42, + 80, + 255, + 20, + 22, + 48, + 255, + 9, + 10, + 27, + 255, + 4, + 5, + 17, + 255, + 2, + 2, + 14, + 255, + 1, + 1, + 11, + 255, + 0, + 0, + 9, + 255, + 2, + 2, + 10, + 255, + 5, + 6, + 11, + 255, + 11, + 12, + 23, + 255, + 20, + 21, + 38, + 255, + 43, + 44, + 71, + 255, + 43, + 46, + 79, + 255, + 45, + 51, + 84, + 255, + 47, + 53, + 86, + 255, + 50, + 56, + 89, + 255, + 50, + 56, + 89, + 255, + 53, + 60, + 90, + 255, + 54, + 60, + 93, + 255, + 54, + 60, + 95, + 255, + 53, + 59, + 95, + 255, + 53, + 59, + 95, + 255, + 51, + 56, + 90, + 255, + 51, + 56, + 88, + 255, + 51, + 54, + 85, + 255, + 50, + 53, + 84, + 255, + 44, + 47, + 78, + 255, + 54, + 57, + 88, + 255, + 50, + 53, + 84, + 255, + 51, + 57, + 89, + 255, + 52, + 58, + 90, + 255, + 52, + 58, + 90, + 255, + 53, + 59, + 91, + 255, + 55, + 62, + 91, + 255, + 55, + 62, + 91, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 55, + 62, + 88, + 255, + 62, + 68, + 95, + 255, + 59, + 64, + 93, + 255, + 60, + 64, + 93, + 255, + 54, + 59, + 88, + 255, + 58, + 62, + 90, + 255, + 28, + 30, + 56, + 255, + 18, + 18, + 44, + 255, + 10, + 11, + 31, + 255, + 6, + 7, + 27, + 255, + 5, + 6, + 26, + 255, + 7, + 8, + 28, + 255, + 12, + 17, + 39, + 255, + 23, + 28, + 57, + 255, + 53, + 58, + 96, + 255, + 53, + 58, + 100, + 255, + 53, + 59, + 95, + 255, + 53, + 59, + 95, + 255, + 54, + 60, + 96, + 255, + 55, + 61, + 97, + 255, + 55, + 59, + 94, + 255, + 53, + 58, + 90, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 88, + 255, + 52, + 57, + 87, + 255, + 57, + 62, + 92, + 255, + 53, + 58, + 88, + 255, + 58, + 63, + 93, + 255, + 56, + 61, + 93, + 255, + 58, + 63, + 94, + 255, + 59, + 63, + 90, + 255, + 30, + 32, + 57, + 255, + 21, + 22, + 42, + 255, + 15, + 16, + 36, + 255, + 8, + 9, + 29, + 255, + 4, + 5, + 25, + 255, + 4, + 5, + 25, + 255, + 4, + 5, + 26, + 255, + 4, + 4, + 28, + 255, + 5, + 5, + 29, + 255, + 6, + 6, + 30, + 255, + 7, + 7, + 33, + 255, + 7, + 7, + 34, + 255, + 10, + 10, + 38, + 255, + 11, + 12, + 42, + 255, + 17, + 18, + 48, + 255, + 20, + 21, + 51, + 255, + 29, + 30, + 60, + 255, + 43, + 45, + 70, + 255, + 65, + 67, + 89, + 255, + 95, + 98, + 116, + 255, + 100, + 104, + 116, + 255, + 101, + 104, + 120, + 255, + 103, + 107, + 120, + 255, + 105, + 110, + 117, + 255, + 110, + 115, + 120, + 255, + 112, + 115, + 122, + 255, + 112, + 115, + 123, + 255, + 114, + 117, + 126, + 255, + 106, + 108, + 120, + 255, + 100, + 102, + 115, + 255, + 97, + 99, + 114, + 255, + 95, + 97, + 113, + 255, + 94, + 95, + 113, + 255, + 94, + 96, + 112, + 255, + 95, + 97, + 112, + 255, + 72, + 74, + 90, + 255, + 45, + 45, + 72, + 255, + 35, + 34, + 65, + 255, + 31, + 30, + 61, + 255, + 30, + 29, + 60, + 255, + 35, + 34, + 65, + 255, + 41, + 40, + 71, + 255, + 55, + 55, + 81, + 255, + 76, + 77, + 98, + 255, + 105, + 106, + 124, + 255, + 104, + 107, + 124, + 255, + 105, + 108, + 125, + 255, + 105, + 108, + 124, + 255, + 106, + 109, + 124, + 255, + 106, + 110, + 132, + 255, + 101, + 110, + 143, + 255, + 89, + 103, + 151, + 255, + 85, + 103, + 158, + 255, + 78, + 102, + 172, + 255, + 81, + 105, + 178, + 255, + 81, + 110, + 187, + 255, + 76, + 109, + 189, + 255, + 81, + 110, + 188, + 255, + 82, + 108, + 183, + 255, + 79, + 102, + 173, + 255, + 78, + 98, + 168, + 255, + 80, + 98, + 163, + 255, + 75, + 91, + 153, + 255, + 79, + 90, + 148, + 255, + 77, + 85, + 142, + 255, + 77, + 82, + 138, + 255, + 78, + 84, + 141, + 255, + 82, + 88, + 146, + 255, + 88, + 94, + 152, + 255, + 97, + 99, + 168, + 255, + 103, + 107, + 180, + 255, + 109, + 113, + 193, + 255, + 113, + 119, + 202, + 255, + 112, + 126, + 205, + 255, + 112, + 126, + 205, + 255, + 109, + 123, + 202, + 255, + 100, + 114, + 193, + 255, + 99, + 107, + 170, + 255, + 95, + 102, + 161, + 255, + 98, + 104, + 157, + 255, + 98, + 104, + 154, + 255, + 102, + 104, + 156, + 255, + 99, + 102, + 152, + 255, + 101, + 107, + 153, + 255, + 101, + 109, + 153, + 255, + 104, + 110, + 158, + 255, + 111, + 115, + 160, + 255, + 121, + 125, + 164, + 255, + 129, + 131, + 169, + 255, + 128, + 130, + 171, + 255, + 128, + 129, + 173, + 255, + 122, + 123, + 168, + 255, + 120, + 121, + 167, + 255, + 106, + 119, + 163, + 255, + 128, + 141, + 186, + 255, + 101, + 113, + 161, + 255, + 108, + 120, + 169, + 255, + 103, + 109, + 159, + 255, + 101, + 106, + 155, + 255, + 103, + 105, + 154, + 255, + 102, + 104, + 152, + 255, + 104, + 107, + 152, + 255, + 104, + 107, + 152, + 255, + 122, + 125, + 170, + 255, + 140, + 143, + 188, + 255, + 100, + 103, + 146, + 255, + 102, + 105, + 150, + 255, + 100, + 102, + 150, + 255, + 99, + 101, + 150, + 255, + 100, + 102, + 151, + 255, + 99, + 101, + 150, + 255, + 100, + 102, + 151, + 255, + 99, + 101, + 150, + 255, + 98, + 100, + 152, + 255, + 98, + 100, + 151, + 255, + 96, + 98, + 147, + 255, + 94, + 96, + 144, + 255, + 93, + 96, + 140, + 255, + 92, + 95, + 139, + 255, + 91, + 94, + 138, + 255, + 90, + 93, + 137, + 255, + 89, + 92, + 137, + 255, + 88, + 91, + 136, + 255, + 87, + 90, + 135, + 255, + 86, + 89, + 134, + 255, + 88, + 91, + 136, + 255, + 89, + 92, + 137, + 255, + 89, + 92, + 137, + 255, + 93, + 96, + 141, + 255, + 102, + 106, + 144, + 255, + 118, + 122, + 159, + 255, + 120, + 123, + 158, + 255, + 120, + 120, + 156, + 255, + 119, + 119, + 155, + 255, + 118, + 118, + 154, + 255, + 116, + 116, + 152, + 255, + 108, + 108, + 144, + 255, + 106, + 112, + 146, + 255, + 105, + 111, + 147, + 255, + 107, + 112, + 150, + 255, + 97, + 102, + 140, + 255, + 107, + 113, + 150, + 255, + 74, + 78, + 125, + 255, + 63, + 66, + 117, + 255, + 60, + 63, + 114, + 255, + 64, + 65, + 119, + 255, + 66, + 68, + 116, + 255, + 84, + 88, + 126, + 255, + 86, + 91, + 123, + 255, + 84, + 88, + 123, + 255, + 82, + 86, + 121, + 255, + 80, + 84, + 119, + 255, + 78, + 82, + 117, + 255, + 76, + 82, + 118, + 255, + 75, + 81, + 117, + 255, + 75, + 81, + 117, + 255, + 74, + 80, + 116, + 255, + 73, + 79, + 113, + 255, + 72, + 78, + 112, + 255, + 71, + 77, + 111, + 255, + 71, + 77, + 111, + 255, + 71, + 76, + 108, + 255, + 74, + 78, + 113, + 255, + 74, + 79, + 108, + 255, + 84, + 91, + 111, + 255, + 89, + 91, + 113, + 255, + 93, + 94, + 115, + 255, + 99, + 97, + 117, + 255, + 106, + 103, + 122, + 255, + 114, + 113, + 129, + 255, + 121, + 120, + 129, + 255, + 172, + 170, + 171, + 255, + 170, + 168, + 164, + 255, + 175, + 170, + 167, + 255, + 177, + 172, + 169, + 255, + 178, + 173, + 170, + 255, + 179, + 174, + 171, + 255, + 183, + 175, + 173, + 255, + 184, + 176, + 174, + 255, + 185, + 177, + 175, + 255, + 187, + 179, + 177, + 255, + 188, + 180, + 177, + 255, + 189, + 181, + 178, + 255, + 189, + 181, + 178, + 255, + 191, + 183, + 180, + 255, + 195, + 185, + 183, + 255, + 196, + 186, + 184, + 255, + 196, + 186, + 184, + 255, + 198, + 188, + 186, + 255, + 199, + 192, + 186, + 255, + 200, + 193, + 187, + 255, + 202, + 195, + 189, + 255, + 196, + 189, + 183, + 255, + 200, + 156, + 165, + 255, + 207, + 146, + 161, + 255, + 211, + 144, + 161, + 255, + 210, + 147, + 163, + 255, + 136, + 105, + 131, + 255, + 99, + 95, + 128, + 255, + 105, + 133, + 165, + 255, + 97, + 143, + 169, + 255, + 161, + 217, + 231, + 255, + 90, + 171, + 198, + 255, + 87, + 170, + 203, + 255, + 120, + 158, + 196, + 255, + 179, + 189, + 200, + 255, + 218, + 206, + 200, + 255, + 221, + 213, + 210, + 255, + 223, + 213, + 210, + 255, + 227, + 213, + 210, + 255, + 228, + 214, + 211, + 255, + 227, + 216, + 212, + 255, + 227, + 218, + 213, + 255, + 225, + 217, + 213, + 255, + 227, + 220, + 222, + 255, + 174, + 171, + 183, + 255, + 167, + 165, + 185, + 255, + 176, + 173, + 183, + 255, + 230, + 222, + 225, + 255, + 232, + 224, + 221, + 255, + 230, + 226, + 223, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 230, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 233, + 223, + 222, + 255, + 233, + 223, + 222, + 255, + 233, + 225, + 223, + 255, + 232, + 227, + 224, + 255, + 234, + 225, + 226, + 255, + 235, + 226, + 227, + 255, + 235, + 226, + 227, + 255, + 235, + 226, + 227, + 255, + 235, + 229, + 231, + 255, + 236, + 230, + 232, + 255, + 235, + 229, + 231, + 255, + 236, + 230, + 232, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 235, + 255, + 236, + 229, + 237, + 255, + 229, + 222, + 229, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 237, + 231, + 235, + 255, + 237, + 231, + 235, + 255, + 237, + 231, + 235, + 255, + 237, + 231, + 235, + 255, + 237, + 231, + 235, + 255, + 237, + 231, + 235, + 255, + 236, + 229, + 236, + 255, + 235, + 228, + 235, + 255, + 235, + 228, + 235, + 255, + 235, + 228, + 235, + 255, + 232, + 228, + 232, + 255, + 231, + 226, + 231, + 255, + 231, + 224, + 231, + 255, + 232, + 222, + 231, + 255, + 232, + 216, + 227, + 255, + 231, + 195, + 215, + 255, + 232, + 182, + 208, + 255, + 227, + 178, + 205, + 255, + 229, + 174, + 206, + 255, + 228, + 171, + 204, + 255, + 225, + 171, + 203, + 255, + 221, + 172, + 202, + 255, + 213, + 178, + 202, + 255, + 211, + 194, + 210, + 255, + 205, + 199, + 211, + 255, + 212, + 203, + 214, + 255, + 210, + 200, + 211, + 255, + 208, + 202, + 212, + 255, + 209, + 207, + 216, + 255, + 11, + 11, + 20, + 255, + 17, + 17, + 25, + 255, + 31, + 32, + 36, + 255, + 46, + 47, + 50, + 255, + 85, + 87, + 86, + 255, + 84, + 86, + 85, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 83, + 255, + 84, + 86, + 85, + 255, + 85, + 86, + 88, + 255, + 86, + 87, + 90, + 255, + 88, + 89, + 92, + 255, + 90, + 91, + 95, + 255, + 93, + 94, + 100, + 255, + 93, + 93, + 101, + 255, + 93, + 93, + 102, + 255, + 73, + 74, + 89, + 255, + 50, + 53, + 80, + 255, + 40, + 44, + 82, + 255, + 20, + 22, + 46, + 255, + 10, + 12, + 28, + 255, + 4, + 5, + 17, + 255, + 2, + 1, + 16, + 255, + 1, + 1, + 13, + 255, + 0, + 0, + 11, + 255, + 1, + 1, + 10, + 255, + 3, + 3, + 11, + 255, + 8, + 10, + 18, + 255, + 15, + 17, + 33, + 255, + 32, + 34, + 59, + 255, + 38, + 41, + 72, + 255, + 42, + 49, + 77, + 255, + 46, + 53, + 81, + 255, + 57, + 64, + 92, + 255, + 61, + 68, + 96, + 255, + 64, + 71, + 97, + 255, + 64, + 71, + 98, + 255, + 60, + 67, + 95, + 255, + 56, + 63, + 91, + 255, + 55, + 61, + 95, + 255, + 54, + 59, + 93, + 255, + 53, + 58, + 90, + 255, + 53, + 56, + 89, + 255, + 52, + 57, + 87, + 255, + 50, + 55, + 85, + 255, + 49, + 54, + 84, + 255, + 55, + 60, + 90, + 255, + 53, + 59, + 91, + 255, + 52, + 58, + 90, + 255, + 52, + 58, + 90, + 255, + 53, + 59, + 91, + 255, + 55, + 62, + 91, + 255, + 55, + 62, + 91, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 58, + 64, + 92, + 255, + 65, + 71, + 98, + 255, + 60, + 64, + 91, + 255, + 60, + 65, + 93, + 255, + 31, + 35, + 62, + 255, + 20, + 22, + 47, + 255, + 13, + 13, + 38, + 255, + 6, + 7, + 28, + 255, + 5, + 6, + 27, + 255, + 5, + 6, + 27, + 255, + 10, + 11, + 32, + 255, + 16, + 20, + 45, + 255, + 36, + 41, + 70, + 255, + 50, + 56, + 91, + 255, + 51, + 56, + 96, + 255, + 52, + 58, + 94, + 255, + 54, + 60, + 96, + 255, + 53, + 59, + 95, + 255, + 54, + 60, + 96, + 255, + 55, + 59, + 94, + 255, + 53, + 58, + 90, + 255, + 52, + 57, + 87, + 255, + 53, + 58, + 87, + 255, + 54, + 59, + 89, + 255, + 54, + 59, + 89, + 255, + 54, + 59, + 89, + 255, + 54, + 59, + 89, + 255, + 57, + 62, + 93, + 255, + 56, + 61, + 91, + 255, + 41, + 45, + 70, + 255, + 24, + 26, + 49, + 255, + 13, + 14, + 35, + 255, + 10, + 11, + 32, + 255, + 5, + 6, + 27, + 255, + 3, + 4, + 25, + 255, + 4, + 5, + 26, + 255, + 4, + 5, + 27, + 255, + 4, + 4, + 29, + 255, + 5, + 5, + 31, + 255, + 5, + 5, + 29, + 255, + 6, + 6, + 32, + 255, + 7, + 7, + 34, + 255, + 8, + 8, + 36, + 255, + 9, + 10, + 40, + 255, + 12, + 13, + 43, + 255, + 18, + 19, + 49, + 255, + 26, + 27, + 57, + 255, + 34, + 35, + 63, + 255, + 56, + 58, + 81, + 255, + 77, + 80, + 98, + 255, + 100, + 104, + 117, + 255, + 101, + 104, + 119, + 255, + 103, + 107, + 120, + 255, + 103, + 107, + 118, + 255, + 111, + 116, + 123, + 255, + 114, + 117, + 125, + 255, + 111, + 114, + 124, + 255, + 105, + 107, + 119, + 255, + 99, + 101, + 114, + 255, + 97, + 99, + 112, + 255, + 96, + 98, + 113, + 255, + 95, + 97, + 113, + 255, + 94, + 95, + 113, + 255, + 94, + 96, + 112, + 255, + 95, + 97, + 112, + 255, + 81, + 83, + 99, + 255, + 50, + 50, + 77, + 255, + 36, + 35, + 66, + 255, + 32, + 31, + 62, + 255, + 31, + 30, + 61, + 255, + 36, + 35, + 66, + 255, + 44, + 43, + 74, + 255, + 60, + 60, + 86, + 255, + 88, + 89, + 110, + 255, + 104, + 105, + 123, + 255, + 106, + 109, + 126, + 255, + 107, + 110, + 127, + 255, + 106, + 109, + 127, + 255, + 107, + 110, + 128, + 255, + 106, + 110, + 137, + 255, + 94, + 107, + 148, + 255, + 82, + 107, + 166, + 255, + 79, + 111, + 180, + 255, + 82, + 117, + 208, + 255, + 81, + 129, + 218, + 255, + 81, + 135, + 223, + 255, + 84, + 138, + 227, + 255, + 85, + 137, + 231, + 255, + 84, + 134, + 222, + 255, + 81, + 125, + 208, + 255, + 80, + 117, + 198, + 255, + 85, + 115, + 183, + 255, + 83, + 105, + 170, + 255, + 99, + 116, + 177, + 255, + 80, + 96, + 153, + 255, + 83, + 91, + 149, + 255, + 82, + 90, + 148, + 255, + 84, + 90, + 148, + 255, + 88, + 94, + 152, + 255, + 94, + 99, + 158, + 255, + 97, + 101, + 163, + 255, + 103, + 106, + 174, + 255, + 104, + 110, + 179, + 255, + 105, + 113, + 180, + 255, + 106, + 114, + 181, + 255, + 103, + 111, + 178, + 255, + 101, + 109, + 176, + 255, + 98, + 105, + 164, + 255, + 99, + 105, + 159, + 255, + 100, + 106, + 155, + 255, + 107, + 111, + 157, + 255, + 112, + 117, + 164, + 255, + 113, + 121, + 165, + 255, + 112, + 122, + 165, + 255, + 113, + 125, + 167, + 255, + 131, + 135, + 180, + 255, + 124, + 127, + 170, + 255, + 130, + 132, + 172, + 255, + 130, + 131, + 170, + 255, + 130, + 132, + 173, + 255, + 130, + 131, + 175, + 255, + 129, + 130, + 175, + 255, + 118, + 119, + 165, + 255, + 117, + 121, + 168, + 255, + 108, + 116, + 163, + 255, + 108, + 120, + 168, + 255, + 149, + 164, + 212, + 255, + 106, + 113, + 165, + 255, + 106, + 112, + 162, + 255, + 104, + 109, + 158, + 255, + 104, + 108, + 156, + 255, + 105, + 107, + 155, + 255, + 109, + 111, + 159, + 255, + 107, + 109, + 157, + 255, + 107, + 109, + 157, + 255, + 108, + 111, + 156, + 255, + 103, + 105, + 152, + 255, + 103, + 105, + 154, + 255, + 102, + 104, + 153, + 255, + 103, + 105, + 156, + 255, + 102, + 104, + 155, + 255, + 102, + 104, + 155, + 255, + 101, + 103, + 154, + 255, + 100, + 102, + 154, + 255, + 100, + 102, + 153, + 255, + 99, + 101, + 150, + 255, + 97, + 99, + 147, + 255, + 97, + 100, + 145, + 255, + 96, + 99, + 144, + 255, + 94, + 97, + 142, + 255, + 93, + 96, + 141, + 255, + 93, + 96, + 141, + 255, + 92, + 95, + 140, + 255, + 90, + 93, + 138, + 255, + 89, + 92, + 137, + 255, + 89, + 92, + 137, + 255, + 87, + 90, + 135, + 255, + 88, + 91, + 136, + 255, + 90, + 93, + 138, + 255, + 96, + 100, + 140, + 255, + 109, + 113, + 152, + 255, + 121, + 123, + 161, + 255, + 121, + 121, + 158, + 255, + 121, + 121, + 157, + 255, + 120, + 120, + 156, + 255, + 119, + 119, + 155, + 255, + 113, + 113, + 149, + 255, + 106, + 112, + 146, + 255, + 108, + 114, + 150, + 255, + 104, + 109, + 147, + 255, + 105, + 110, + 148, + 255, + 93, + 99, + 136, + 255, + 78, + 82, + 129, + 255, + 66, + 69, + 120, + 255, + 64, + 67, + 118, + 255, + 66, + 68, + 118, + 255, + 79, + 82, + 123, + 255, + 89, + 93, + 129, + 255, + 87, + 91, + 126, + 255, + 86, + 90, + 125, + 255, + 85, + 89, + 124, + 255, + 83, + 87, + 122, + 255, + 81, + 85, + 120, + 255, + 78, + 84, + 120, + 255, + 77, + 83, + 119, + 255, + 76, + 82, + 118, + 255, + 75, + 81, + 117, + 255, + 74, + 80, + 114, + 255, + 73, + 79, + 113, + 255, + 72, + 78, + 112, + 255, + 72, + 78, + 112, + 255, + 72, + 77, + 109, + 255, + 72, + 76, + 111, + 255, + 75, + 80, + 111, + 255, + 79, + 85, + 109, + 255, + 87, + 89, + 112, + 255, + 88, + 90, + 112, + 255, + 92, + 93, + 113, + 255, + 96, + 94, + 114, + 255, + 100, + 99, + 121, + 255, + 108, + 107, + 125, + 255, + 121, + 119, + 131, + 255, + 150, + 147, + 155, + 255, + 174, + 168, + 168, + 255, + 176, + 170, + 170, + 255, + 176, + 170, + 170, + 255, + 177, + 171, + 171, + 255, + 182, + 174, + 172, + 255, + 183, + 175, + 173, + 255, + 183, + 175, + 173, + 255, + 185, + 177, + 175, + 255, + 185, + 177, + 174, + 255, + 186, + 178, + 175, + 255, + 188, + 180, + 177, + 255, + 190, + 182, + 179, + 255, + 191, + 183, + 180, + 255, + 192, + 184, + 181, + 255, + 194, + 186, + 183, + 255, + 196, + 188, + 185, + 255, + 197, + 189, + 186, + 255, + 198, + 190, + 187, + 255, + 201, + 193, + 190, + 255, + 201, + 193, + 190, + 255, + 199, + 164, + 170, + 255, + 204, + 149, + 162, + 255, + 209, + 145, + 161, + 255, + 210, + 148, + 163, + 255, + 199, + 150, + 163, + 255, + 127, + 116, + 148, + 255, + 108, + 125, + 153, + 255, + 183, + 205, + 217, + 255, + 198, + 223, + 237, + 255, + 128, + 193, + 217, + 255, + 91, + 181, + 208, + 255, + 95, + 156, + 191, + 255, + 142, + 164, + 185, + 255, + 221, + 217, + 216, + 255, + 219, + 212, + 211, + 255, + 224, + 212, + 207, + 255, + 227, + 213, + 212, + 255, + 226, + 215, + 213, + 255, + 225, + 215, + 213, + 255, + 225, + 217, + 214, + 255, + 225, + 221, + 219, + 255, + 175, + 171, + 181, + 255, + 156, + 152, + 175, + 255, + 158, + 155, + 181, + 255, + 194, + 191, + 199, + 255, + 229, + 221, + 223, + 255, + 232, + 224, + 222, + 255, + 230, + 226, + 224, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 230, + 224, + 224, + 255, + 230, + 224, + 224, + 255, + 233, + 223, + 222, + 255, + 233, + 223, + 222, + 255, + 233, + 225, + 223, + 255, + 232, + 227, + 224, + 255, + 232, + 226, + 226, + 255, + 233, + 227, + 227, + 255, + 233, + 227, + 227, + 255, + 235, + 229, + 229, + 255, + 236, + 230, + 232, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 234, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 234, + 255, + 237, + 231, + 234, + 255, + 237, + 231, + 234, + 255, + 237, + 231, + 234, + 255, + 238, + 232, + 235, + 255, + 239, + 232, + 240, + 255, + 233, + 226, + 233, + 255, + 238, + 232, + 234, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 232, + 238, + 255, + 239, + 232, + 238, + 255, + 237, + 230, + 236, + 255, + 237, + 230, + 236, + 255, + 237, + 230, + 237, + 255, + 236, + 229, + 236, + 255, + 235, + 228, + 235, + 255, + 235, + 228, + 235, + 255, + 233, + 229, + 233, + 255, + 232, + 227, + 232, + 255, + 232, + 225, + 232, + 255, + 233, + 223, + 232, + 255, + 229, + 211, + 225, + 255, + 232, + 193, + 215, + 255, + 234, + 184, + 212, + 255, + 228, + 179, + 208, + 255, + 231, + 176, + 208, + 255, + 230, + 173, + 206, + 255, + 226, + 172, + 204, + 255, + 222, + 173, + 203, + 255, + 213, + 178, + 202, + 255, + 207, + 190, + 206, + 255, + 213, + 207, + 219, + 255, + 211, + 202, + 213, + 255, + 213, + 203, + 214, + 255, + 211, + 204, + 214, + 255, + 207, + 203, + 212, + 255, + 12, + 13, + 16, + 255, + 16, + 17, + 20, + 255, + 33, + 34, + 36, + 255, + 47, + 48, + 50, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 84, + 86, + 86, + 255, + 86, + 87, + 89, + 255, + 87, + 88, + 91, + 255, + 89, + 90, + 95, + 255, + 91, + 91, + 99, + 255, + 92, + 92, + 100, + 255, + 92, + 92, + 103, + 255, + 97, + 97, + 108, + 255, + 96, + 95, + 108, + 255, + 95, + 96, + 108, + 255, + 54, + 58, + 79, + 255, + 38, + 42, + 77, + 255, + 22, + 24, + 46, + 255, + 11, + 13, + 28, + 255, + 4, + 4, + 18, + 255, + 3, + 2, + 19, + 255, + 1, + 0, + 14, + 255, + 0, + 0, + 13, + 255, + 1, + 1, + 12, + 255, + 2, + 2, + 11, + 255, + 6, + 8, + 15, + 255, + 12, + 14, + 28, + 255, + 22, + 24, + 47, + 255, + 44, + 48, + 76, + 255, + 42, + 49, + 78, + 255, + 45, + 52, + 81, + 255, + 49, + 56, + 85, + 255, + 52, + 59, + 88, + 255, + 55, + 62, + 89, + 255, + 63, + 70, + 97, + 255, + 63, + 70, + 96, + 255, + 63, + 71, + 94, + 255, + 63, + 70, + 100, + 255, + 56, + 61, + 93, + 255, + 55, + 59, + 94, + 255, + 55, + 57, + 94, + 255, + 51, + 57, + 89, + 255, + 50, + 56, + 88, + 255, + 50, + 56, + 88, + 255, + 51, + 57, + 89, + 255, + 53, + 59, + 91, + 255, + 54, + 60, + 92, + 255, + 52, + 58, + 90, + 255, + 54, + 60, + 92, + 255, + 55, + 62, + 91, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 57, + 64, + 95, + 255, + 58, + 64, + 92, + 255, + 57, + 63, + 89, + 255, + 67, + 71, + 96, + 255, + 55, + 61, + 86, + 255, + 23, + 27, + 52, + 255, + 13, + 15, + 38, + 255, + 8, + 9, + 31, + 255, + 5, + 5, + 29, + 255, + 5, + 5, + 29, + 255, + 7, + 7, + 31, + 255, + 12, + 12, + 36, + 255, + 22, + 26, + 53, + 255, + 46, + 51, + 81, + 255, + 45, + 51, + 84, + 255, + 50, + 56, + 92, + 255, + 50, + 56, + 92, + 255, + 53, + 59, + 95, + 255, + 53, + 59, + 95, + 255, + 55, + 61, + 97, + 255, + 54, + 58, + 93, + 255, + 52, + 57, + 89, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 86, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 89, + 255, + 59, + 64, + 94, + 255, + 55, + 60, + 90, + 255, + 55, + 60, + 89, + 255, + 58, + 63, + 91, + 255, + 26, + 31, + 54, + 255, + 17, + 19, + 41, + 255, + 10, + 10, + 34, + 255, + 8, + 8, + 32, + 255, + 5, + 5, + 29, + 255, + 4, + 4, + 28, + 255, + 4, + 4, + 28, + 255, + 4, + 4, + 29, + 255, + 5, + 5, + 32, + 255, + 5, + 5, + 33, + 255, + 5, + 5, + 29, + 255, + 6, + 6, + 32, + 255, + 6, + 6, + 33, + 255, + 7, + 7, + 35, + 255, + 7, + 8, + 38, + 255, + 9, + 10, + 40, + 255, + 15, + 16, + 46, + 255, + 22, + 23, + 53, + 255, + 32, + 33, + 63, + 255, + 50, + 52, + 77, + 255, + 71, + 73, + 94, + 255, + 96, + 99, + 115, + 255, + 100, + 103, + 118, + 255, + 101, + 104, + 119, + 255, + 102, + 105, + 120, + 255, + 107, + 111, + 124, + 255, + 106, + 108, + 119, + 255, + 99, + 101, + 114, + 255, + 99, + 101, + 115, + 255, + 97, + 99, + 114, + 255, + 96, + 98, + 111, + 255, + 95, + 97, + 112, + 255, + 94, + 96, + 112, + 255, + 94, + 95, + 113, + 255, + 95, + 97, + 113, + 255, + 96, + 98, + 113, + 255, + 98, + 100, + 116, + 255, + 52, + 52, + 79, + 255, + 37, + 36, + 67, + 255, + 33, + 32, + 63, + 255, + 33, + 32, + 63, + 255, + 39, + 38, + 69, + 255, + 47, + 46, + 77, + 255, + 64, + 64, + 90, + 255, + 100, + 101, + 122, + 255, + 106, + 107, + 125, + 255, + 106, + 109, + 125, + 255, + 107, + 110, + 128, + 255, + 107, + 109, + 131, + 255, + 109, + 111, + 134, + 255, + 96, + 107, + 144, + 255, + 86, + 108, + 160, + 255, + 77, + 112, + 184, + 255, + 79, + 121, + 203, + 255, + 75, + 131, + 223, + 255, + 70, + 155, + 229, + 255, + 69, + 165, + 226, + 255, + 94, + 182, + 238, + 255, + 75, + 179, + 234, + 255, + 74, + 168, + 230, + 255, + 79, + 151, + 223, + 255, + 86, + 136, + 217, + 255, + 87, + 124, + 204, + 255, + 91, + 114, + 191, + 255, + 89, + 106, + 177, + 255, + 93, + 112, + 177, + 255, + 88, + 100, + 161, + 255, + 85, + 95, + 156, + 255, + 86, + 93, + 152, + 255, + 88, + 93, + 149, + 255, + 90, + 96, + 148, + 255, + 93, + 98, + 153, + 255, + 96, + 99, + 157, + 255, + 102, + 102, + 163, + 255, + 100, + 105, + 162, + 255, + 101, + 106, + 163, + 255, + 101, + 106, + 163, + 255, + 101, + 106, + 163, + 255, + 101, + 107, + 160, + 255, + 102, + 108, + 157, + 255, + 112, + 117, + 160, + 255, + 122, + 125, + 167, + 255, + 129, + 133, + 172, + 255, + 128, + 134, + 175, + 255, + 132, + 139, + 181, + 255, + 126, + 135, + 176, + 255, + 131, + 135, + 174, + 255, + 132, + 134, + 174, + 255, + 134, + 133, + 174, + 255, + 135, + 133, + 173, + 255, + 132, + 134, + 175, + 255, + 132, + 133, + 177, + 255, + 133, + 134, + 179, + 255, + 125, + 126, + 172, + 255, + 117, + 118, + 166, + 255, + 112, + 116, + 164, + 255, + 109, + 117, + 166, + 255, + 107, + 117, + 167, + 255, + 113, + 122, + 175, + 255, + 112, + 119, + 171, + 255, + 106, + 112, + 162, + 255, + 107, + 112, + 162, + 255, + 111, + 113, + 162, + 255, + 108, + 110, + 159, + 255, + 109, + 111, + 160, + 255, + 107, + 109, + 158, + 255, + 106, + 108, + 156, + 255, + 105, + 107, + 156, + 255, + 105, + 107, + 157, + 255, + 105, + 107, + 158, + 255, + 104, + 105, + 159, + 255, + 104, + 105, + 159, + 255, + 104, + 105, + 159, + 255, + 104, + 105, + 159, + 255, + 102, + 104, + 156, + 255, + 101, + 103, + 154, + 255, + 102, + 104, + 153, + 255, + 101, + 103, + 151, + 255, + 99, + 101, + 149, + 255, + 98, + 100, + 148, + 255, + 97, + 99, + 147, + 255, + 96, + 98, + 146, + 255, + 95, + 98, + 143, + 255, + 94, + 97, + 142, + 255, + 93, + 96, + 141, + 255, + 92, + 95, + 140, + 255, + 90, + 93, + 138, + 255, + 89, + 92, + 137, + 255, + 90, + 93, + 138, + 255, + 90, + 93, + 138, + 255, + 94, + 97, + 140, + 255, + 99, + 102, + 144, + 255, + 127, + 129, + 169, + 255, + 127, + 126, + 166, + 255, + 122, + 122, + 158, + 255, + 121, + 121, + 157, + 255, + 121, + 121, + 157, + 255, + 118, + 118, + 154, + 255, + 108, + 114, + 148, + 255, + 105, + 111, + 147, + 255, + 108, + 113, + 151, + 255, + 99, + 104, + 142, + 255, + 108, + 114, + 151, + 255, + 81, + 85, + 132, + 255, + 72, + 75, + 126, + 255, + 69, + 72, + 123, + 255, + 73, + 76, + 120, + 255, + 91, + 96, + 129, + 255, + 90, + 95, + 125, + 255, + 88, + 92, + 128, + 255, + 87, + 91, + 126, + 255, + 86, + 90, + 125, + 255, + 86, + 90, + 125, + 255, + 82, + 86, + 121, + 255, + 79, + 85, + 121, + 255, + 77, + 83, + 119, + 255, + 77, + 83, + 119, + 255, + 76, + 82, + 118, + 255, + 76, + 82, + 116, + 255, + 75, + 81, + 115, + 255, + 73, + 79, + 113, + 255, + 72, + 78, + 112, + 255, + 73, + 78, + 110, + 255, + 73, + 77, + 113, + 255, + 73, + 77, + 112, + 255, + 77, + 82, + 112, + 255, + 86, + 91, + 115, + 255, + 88, + 92, + 115, + 255, + 89, + 91, + 113, + 255, + 92, + 93, + 114, + 255, + 91, + 93, + 116, + 255, + 97, + 98, + 118, + 255, + 108, + 107, + 124, + 255, + 131, + 129, + 143, + 255, + 158, + 152, + 154, + 255, + 171, + 165, + 167, + 255, + 175, + 169, + 171, + 255, + 177, + 171, + 173, + 255, + 182, + 174, + 172, + 255, + 180, + 172, + 170, + 255, + 182, + 174, + 172, + 255, + 183, + 175, + 173, + 255, + 184, + 176, + 173, + 255, + 186, + 178, + 175, + 255, + 187, + 179, + 176, + 255, + 189, + 181, + 178, + 255, + 187, + 182, + 178, + 255, + 189, + 184, + 180, + 255, + 191, + 186, + 182, + 255, + 193, + 188, + 184, + 255, + 196, + 188, + 186, + 255, + 197, + 189, + 187, + 255, + 198, + 190, + 188, + 255, + 200, + 192, + 190, + 255, + 196, + 172, + 174, + 255, + 201, + 154, + 164, + 255, + 208, + 147, + 162, + 255, + 209, + 147, + 162, + 255, + 211, + 148, + 159, + 255, + 170, + 136, + 160, + 255, + 143, + 135, + 159, + 255, + 217, + 219, + 232, + 255, + 168, + 198, + 208, + 255, + 162, + 219, + 237, + 255, + 96, + 169, + 193, + 255, + 110, + 152, + 189, + 255, + 139, + 164, + 186, + 255, + 215, + 212, + 213, + 255, + 218, + 212, + 211, + 255, + 224, + 212, + 207, + 255, + 223, + 211, + 211, + 255, + 223, + 213, + 212, + 255, + 220, + 212, + 210, + 255, + 222, + 215, + 213, + 255, + 185, + 185, + 196, + 255, + 150, + 148, + 171, + 255, + 144, + 141, + 171, + 255, + 157, + 156, + 181, + 255, + 229, + 227, + 232, + 255, + 228, + 221, + 222, + 255, + 232, + 224, + 223, + 255, + 230, + 225, + 227, + 255, + 231, + 225, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 234, + 224, + 223, + 255, + 235, + 225, + 224, + 255, + 234, + 226, + 224, + 255, + 233, + 228, + 225, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 235, + 231, + 230, + 255, + 236, + 230, + 232, + 255, + 236, + 230, + 232, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 230, + 236, + 255, + 237, + 230, + 236, + 255, + 237, + 230, + 236, + 255, + 237, + 230, + 236, + 255, + 239, + 233, + 236, + 255, + 238, + 231, + 239, + 255, + 237, + 230, + 237, + 255, + 238, + 232, + 234, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 238, + 232, + 236, + 255, + 237, + 231, + 235, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 236, + 229, + 236, + 255, + 235, + 228, + 235, + 255, + 233, + 229, + 233, + 255, + 233, + 228, + 233, + 255, + 233, + 226, + 233, + 255, + 234, + 224, + 233, + 255, + 229, + 205, + 222, + 255, + 233, + 191, + 216, + 255, + 234, + 183, + 214, + 255, + 228, + 180, + 210, + 255, + 232, + 177, + 209, + 255, + 232, + 175, + 208, + 255, + 228, + 174, + 206, + 255, + 225, + 176, + 206, + 255, + 217, + 182, + 206, + 255, + 218, + 201, + 217, + 255, + 214, + 208, + 220, + 255, + 213, + 204, + 215, + 255, + 212, + 203, + 214, + 255, + 209, + 201, + 212, + 255, + 209, + 202, + 212, + 255, + 18, + 20, + 19, + 255, + 24, + 26, + 25, + 255, + 42, + 43, + 44, + 255, + 57, + 58, + 60, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 85, + 86, + 88, + 255, + 87, + 88, + 91, + 255, + 90, + 91, + 96, + 255, + 94, + 95, + 100, + 255, + 99, + 99, + 109, + 255, + 96, + 96, + 106, + 255, + 94, + 93, + 107, + 255, + 98, + 97, + 111, + 255, + 98, + 97, + 110, + 255, + 96, + 98, + 106, + 255, + 80, + 84, + 102, + 255, + 43, + 47, + 82, + 255, + 23, + 26, + 45, + 255, + 12, + 14, + 28, + 255, + 4, + 4, + 20, + 255, + 3, + 1, + 21, + 255, + 2, + 1, + 16, + 255, + 2, + 1, + 15, + 255, + 0, + 0, + 11, + 255, + 1, + 1, + 11, + 255, + 5, + 7, + 12, + 255, + 8, + 10, + 23, + 255, + 20, + 22, + 44, + 255, + 31, + 35, + 62, + 255, + 45, + 51, + 84, + 255, + 46, + 52, + 85, + 255, + 47, + 53, + 86, + 255, + 49, + 55, + 88, + 255, + 54, + 60, + 93, + 255, + 58, + 65, + 96, + 255, + 58, + 65, + 93, + 255, + 58, + 65, + 91, + 255, + 55, + 62, + 91, + 255, + 57, + 62, + 94, + 255, + 55, + 59, + 95, + 255, + 55, + 57, + 95, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 51, + 57, + 91, + 255, + 53, + 59, + 93, + 255, + 52, + 58, + 90, + 255, + 54, + 60, + 92, + 255, + 54, + 60, + 92, + 255, + 53, + 59, + 91, + 255, + 55, + 62, + 91, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 92, + 255, + 58, + 64, + 98, + 255, + 59, + 64, + 93, + 255, + 56, + 62, + 86, + 255, + 44, + 49, + 71, + 255, + 28, + 34, + 58, + 255, + 16, + 21, + 44, + 255, + 9, + 11, + 33, + 255, + 6, + 7, + 28, + 255, + 5, + 5, + 31, + 255, + 5, + 5, + 31, + 255, + 9, + 9, + 35, + 255, + 15, + 15, + 41, + 255, + 24, + 28, + 57, + 255, + 56, + 61, + 91, + 255, + 47, + 53, + 86, + 255, + 48, + 54, + 88, + 255, + 49, + 55, + 91, + 255, + 51, + 57, + 93, + 255, + 53, + 59, + 95, + 255, + 55, + 61, + 97, + 255, + 53, + 57, + 92, + 255, + 51, + 56, + 88, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 86, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 89, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 87, + 255, + 53, + 59, + 87, + 255, + 53, + 59, + 84, + 255, + 23, + 28, + 49, + 255, + 13, + 16, + 35, + 255, + 8, + 8, + 34, + 255, + 8, + 8, + 34, + 255, + 5, + 5, + 31, + 255, + 4, + 4, + 30, + 255, + 4, + 4, + 28, + 255, + 4, + 4, + 30, + 255, + 5, + 5, + 33, + 255, + 5, + 4, + 34, + 255, + 5, + 5, + 29, + 255, + 6, + 6, + 32, + 255, + 8, + 8, + 35, + 255, + 9, + 9, + 37, + 255, + 6, + 7, + 37, + 255, + 8, + 9, + 39, + 255, + 13, + 14, + 44, + 255, + 18, + 19, + 49, + 255, + 28, + 29, + 60, + 255, + 44, + 46, + 72, + 255, + 61, + 63, + 86, + 255, + 103, + 106, + 123, + 255, + 99, + 102, + 117, + 255, + 103, + 106, + 121, + 255, + 103, + 106, + 122, + 255, + 96, + 99, + 116, + 255, + 96, + 98, + 110, + 255, + 96, + 98, + 111, + 255, + 94, + 96, + 111, + 255, + 95, + 96, + 113, + 255, + 95, + 97, + 110, + 255, + 94, + 96, + 111, + 255, + 94, + 96, + 112, + 255, + 94, + 95, + 113, + 255, + 96, + 98, + 114, + 255, + 97, + 99, + 114, + 255, + 101, + 103, + 119, + 255, + 55, + 55, + 82, + 255, + 40, + 39, + 70, + 255, + 35, + 34, + 65, + 255, + 35, + 34, + 65, + 255, + 41, + 40, + 71, + 255, + 49, + 48, + 79, + 255, + 69, + 69, + 95, + 255, + 108, + 109, + 130, + 255, + 109, + 110, + 128, + 255, + 106, + 109, + 124, + 255, + 107, + 110, + 128, + 255, + 108, + 110, + 134, + 255, + 110, + 112, + 137, + 255, + 90, + 111, + 158, + 255, + 83, + 113, + 173, + 255, + 81, + 120, + 198, + 255, + 84, + 129, + 214, + 255, + 73, + 146, + 222, + 255, + 63, + 174, + 220, + 255, + 81, + 206, + 224, + 255, + 117, + 231, + 239, + 255, + 129, + 205, + 227, + 255, + 102, + 191, + 222, + 255, + 94, + 181, + 233, + 255, + 82, + 159, + 227, + 255, + 98, + 134, + 227, + 255, + 103, + 121, + 213, + 255, + 103, + 114, + 198, + 255, + 92, + 110, + 185, + 255, + 94, + 109, + 173, + 255, + 93, + 105, + 165, + 255, + 91, + 98, + 157, + 255, + 90, + 95, + 151, + 255, + 90, + 96, + 148, + 255, + 92, + 96, + 151, + 255, + 95, + 96, + 152, + 255, + 98, + 97, + 154, + 255, + 95, + 102, + 156, + 255, + 96, + 103, + 157, + 255, + 97, + 104, + 158, + 255, + 99, + 106, + 160, + 255, + 101, + 107, + 157, + 255, + 109, + 113, + 159, + 255, + 118, + 121, + 163, + 255, + 132, + 136, + 173, + 255, + 134, + 132, + 170, + 255, + 134, + 134, + 174, + 255, + 131, + 133, + 175, + 255, + 133, + 135, + 178, + 255, + 133, + 135, + 173, + 255, + 134, + 135, + 174, + 255, + 137, + 135, + 175, + 255, + 137, + 135, + 175, + 255, + 134, + 136, + 177, + 255, + 134, + 135, + 179, + 255, + 134, + 135, + 180, + 255, + 127, + 128, + 174, + 255, + 118, + 122, + 169, + 255, + 113, + 117, + 165, + 255, + 112, + 114, + 165, + 255, + 112, + 113, + 166, + 255, + 107, + 117, + 170, + 255, + 106, + 114, + 168, + 255, + 113, + 120, + 172, + 255, + 116, + 122, + 172, + 255, + 117, + 119, + 170, + 255, + 113, + 115, + 166, + 255, + 111, + 113, + 164, + 255, + 109, + 111, + 162, + 255, + 109, + 111, + 160, + 255, + 108, + 110, + 159, + 255, + 108, + 110, + 161, + 255, + 108, + 109, + 163, + 255, + 107, + 108, + 162, + 255, + 107, + 108, + 162, + 255, + 106, + 107, + 161, + 255, + 106, + 107, + 161, + 255, + 105, + 107, + 159, + 255, + 104, + 106, + 157, + 255, + 103, + 105, + 154, + 255, + 102, + 104, + 152, + 255, + 103, + 105, + 154, + 255, + 102, + 104, + 153, + 255, + 100, + 102, + 151, + 255, + 99, + 101, + 150, + 255, + 97, + 100, + 145, + 255, + 96, + 99, + 144, + 255, + 95, + 98, + 143, + 255, + 94, + 97, + 142, + 255, + 93, + 96, + 141, + 255, + 92, + 95, + 140, + 255, + 91, + 94, + 139, + 255, + 91, + 94, + 139, + 255, + 93, + 96, + 139, + 255, + 97, + 100, + 143, + 255, + 104, + 106, + 147, + 255, + 122, + 121, + 161, + 255, + 124, + 124, + 160, + 255, + 123, + 123, + 159, + 255, + 122, + 122, + 158, + 255, + 121, + 121, + 157, + 255, + 114, + 120, + 154, + 255, + 108, + 114, + 150, + 255, + 105, + 110, + 148, + 255, + 105, + 110, + 148, + 255, + 96, + 102, + 139, + 255, + 89, + 93, + 140, + 255, + 78, + 81, + 132, + 255, + 75, + 78, + 129, + 255, + 88, + 91, + 133, + 255, + 92, + 97, + 126, + 255, + 92, + 98, + 125, + 255, + 91, + 95, + 133, + 255, + 88, + 92, + 127, + 255, + 87, + 91, + 126, + 255, + 87, + 91, + 126, + 255, + 86, + 90, + 125, + 255, + 82, + 88, + 124, + 255, + 80, + 86, + 122, + 255, + 78, + 84, + 120, + 255, + 77, + 83, + 119, + 255, + 77, + 83, + 117, + 255, + 76, + 82, + 116, + 255, + 75, + 81, + 115, + 255, + 74, + 80, + 114, + 255, + 73, + 78, + 110, + 255, + 73, + 77, + 113, + 255, + 74, + 78, + 115, + 255, + 75, + 80, + 112, + 255, + 77, + 83, + 108, + 255, + 88, + 93, + 117, + 255, + 90, + 92, + 115, + 255, + 89, + 91, + 113, + 255, + 91, + 94, + 113, + 255, + 94, + 95, + 114, + 255, + 103, + 103, + 120, + 255, + 115, + 114, + 129, + 255, + 152, + 146, + 148, + 255, + 171, + 165, + 167, + 255, + 172, + 166, + 168, + 255, + 174, + 168, + 170, + 255, + 174, + 166, + 164, + 255, + 183, + 175, + 173, + 255, + 179, + 171, + 169, + 255, + 180, + 172, + 170, + 255, + 183, + 175, + 172, + 255, + 185, + 177, + 174, + 255, + 186, + 178, + 175, + 255, + 188, + 180, + 177, + 255, + 185, + 182, + 177, + 255, + 187, + 184, + 179, + 255, + 189, + 186, + 181, + 255, + 191, + 188, + 183, + 255, + 195, + 187, + 187, + 255, + 196, + 188, + 188, + 255, + 197, + 189, + 189, + 255, + 199, + 191, + 191, + 255, + 202, + 185, + 185, + 255, + 201, + 160, + 168, + 255, + 207, + 148, + 162, + 255, + 209, + 147, + 162, + 255, + 212, + 145, + 163, + 255, + 212, + 154, + 170, + 255, + 156, + 127, + 147, + 255, + 146, + 146, + 171, + 255, + 172, + 186, + 206, + 255, + 156, + 203, + 221, + 255, + 144, + 215, + 233, + 255, + 153, + 204, + 230, + 255, + 143, + 160, + 178, + 255, + 219, + 211, + 209, + 255, + 218, + 210, + 208, + 255, + 221, + 210, + 205, + 255, + 222, + 212, + 213, + 255, + 222, + 213, + 214, + 255, + 224, + 217, + 217, + 255, + 212, + 206, + 206, + 255, + 145, + 147, + 170, + 255, + 132, + 132, + 166, + 255, + 135, + 134, + 166, + 255, + 158, + 159, + 178, + 255, + 221, + 219, + 222, + 255, + 228, + 221, + 221, + 255, + 232, + 224, + 224, + 255, + 230, + 225, + 228, + 255, + 231, + 225, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 225, + 225, + 255, + 231, + 225, + 225, + 255, + 235, + 225, + 224, + 255, + 236, + 226, + 225, + 255, + 234, + 226, + 224, + 255, + 233, + 228, + 225, + 255, + 231, + 228, + 227, + 255, + 233, + 230, + 229, + 255, + 234, + 231, + 230, + 255, + 234, + 231, + 230, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 238, + 232, + 235, + 255, + 235, + 228, + 236, + 255, + 240, + 233, + 240, + 255, + 239, + 233, + 235, + 255, + 239, + 233, + 237, + 255, + 239, + 233, + 237, + 255, + 240, + 234, + 238, + 255, + 240, + 234, + 238, + 255, + 239, + 234, + 238, + 255, + 239, + 234, + 238, + 255, + 239, + 234, + 238, + 255, + 239, + 234, + 238, + 255, + 240, + 234, + 238, + 255, + 240, + 234, + 238, + 255, + 240, + 234, + 238, + 255, + 239, + 233, + 237, + 255, + 239, + 232, + 240, + 255, + 239, + 232, + 240, + 255, + 238, + 231, + 239, + 255, + 238, + 231, + 239, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 236, + 229, + 236, + 255, + 234, + 230, + 234, + 255, + 234, + 229, + 234, + 255, + 234, + 227, + 234, + 255, + 235, + 225, + 234, + 255, + 230, + 203, + 222, + 255, + 235, + 191, + 218, + 255, + 235, + 184, + 215, + 255, + 229, + 181, + 212, + 255, + 233, + 178, + 210, + 255, + 233, + 176, + 209, + 255, + 230, + 176, + 208, + 255, + 227, + 178, + 208, + 255, + 220, + 185, + 209, + 255, + 223, + 206, + 222, + 255, + 215, + 209, + 221, + 255, + 214, + 205, + 216, + 255, + 212, + 204, + 215, + 255, + 211, + 202, + 213, + 255, + 211, + 201, + 212, + 255, + 27, + 29, + 28, + 255, + 35, + 37, + 36, + 255, + 54, + 56, + 55, + 255, + 85, + 87, + 86, + 255, + 83, + 85, + 84, + 255, + 83, + 84, + 85, + 255, + 83, + 84, + 86, + 255, + 85, + 86, + 90, + 255, + 87, + 88, + 90, + 255, + 90, + 91, + 96, + 255, + 94, + 94, + 103, + 255, + 98, + 98, + 110, + 255, + 94, + 98, + 109, + 255, + 94, + 98, + 109, + 255, + 95, + 99, + 110, + 255, + 93, + 97, + 108, + 255, + 95, + 97, + 111, + 255, + 92, + 95, + 104, + 255, + 98, + 100, + 113, + 255, + 44, + 45, + 64, + 255, + 25, + 27, + 42, + 255, + 11, + 13, + 28, + 255, + 5, + 7, + 22, + 255, + 1, + 3, + 18, + 255, + 2, + 1, + 17, + 255, + 0, + 0, + 13, + 255, + 0, + 0, + 12, + 255, + 1, + 1, + 12, + 255, + 3, + 3, + 13, + 255, + 7, + 9, + 18, + 255, + 17, + 18, + 36, + 255, + 26, + 28, + 52, + 255, + 45, + 51, + 87, + 255, + 45, + 51, + 87, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 88, + 255, + 61, + 68, + 97, + 255, + 65, + 72, + 100, + 255, + 62, + 69, + 95, + 255, + 60, + 67, + 96, + 255, + 56, + 62, + 95, + 255, + 54, + 59, + 97, + 255, + 53, + 58, + 98, + 255, + 52, + 58, + 94, + 255, + 51, + 57, + 91, + 255, + 51, + 57, + 89, + 255, + 52, + 59, + 88, + 255, + 53, + 59, + 93, + 255, + 53, + 59, + 93, + 255, + 55, + 61, + 95, + 255, + 56, + 62, + 96, + 255, + 55, + 61, + 93, + 255, + 56, + 63, + 92, + 255, + 56, + 63, + 91, + 255, + 57, + 64, + 92, + 255, + 56, + 62, + 96, + 255, + 55, + 60, + 91, + 255, + 56, + 60, + 88, + 255, + 27, + 30, + 56, + 255, + 21, + 22, + 43, + 255, + 13, + 14, + 35, + 255, + 17, + 17, + 40, + 255, + 6, + 6, + 31, + 255, + 5, + 7, + 32, + 255, + 5, + 7, + 32, + 255, + 9, + 11, + 36, + 255, + 17, + 19, + 44, + 255, + 31, + 38, + 67, + 255, + 51, + 57, + 90, + 255, + 50, + 55, + 93, + 255, + 53, + 58, + 98, + 255, + 50, + 56, + 92, + 255, + 50, + 56, + 91, + 255, + 51, + 57, + 91, + 255, + 53, + 59, + 91, + 255, + 52, + 57, + 89, + 255, + 52, + 57, + 87, + 255, + 52, + 57, + 86, + 255, + 52, + 57, + 86, + 255, + 54, + 59, + 88, + 255, + 55, + 60, + 89, + 255, + 56, + 61, + 90, + 255, + 56, + 61, + 90, + 255, + 54, + 59, + 88, + 255, + 40, + 44, + 72, + 255, + 20, + 22, + 47, + 255, + 13, + 13, + 37, + 255, + 7, + 8, + 35, + 255, + 5, + 6, + 34, + 255, + 4, + 5, + 34, + 255, + 3, + 4, + 35, + 255, + 4, + 4, + 32, + 255, + 4, + 4, + 30, + 255, + 5, + 5, + 31, + 255, + 5, + 4, + 36, + 255, + 5, + 5, + 31, + 255, + 7, + 7, + 34, + 255, + 8, + 7, + 37, + 255, + 8, + 7, + 38, + 255, + 9, + 7, + 38, + 255, + 10, + 9, + 41, + 255, + 12, + 13, + 44, + 255, + 15, + 18, + 51, + 255, + 27, + 26, + 57, + 255, + 42, + 43, + 71, + 255, + 59, + 63, + 89, + 255, + 82, + 88, + 112, + 255, + 104, + 106, + 121, + 255, + 96, + 97, + 115, + 255, + 93, + 94, + 113, + 255, + 91, + 92, + 113, + 255, + 91, + 94, + 111, + 255, + 92, + 95, + 110, + 255, + 92, + 96, + 108, + 255, + 93, + 97, + 109, + 255, + 94, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 96, + 98, + 113, + 255, + 96, + 98, + 114, + 255, + 98, + 100, + 115, + 255, + 97, + 99, + 115, + 255, + 56, + 56, + 83, + 255, + 40, + 39, + 70, + 255, + 37, + 36, + 68, + 255, + 36, + 35, + 67, + 255, + 43, + 42, + 76, + 255, + 56, + 56, + 84, + 255, + 75, + 75, + 100, + 255, + 109, + 110, + 129, + 255, + 109, + 111, + 126, + 255, + 106, + 110, + 127, + 255, + 112, + 109, + 129, + 255, + 105, + 109, + 136, + 255, + 101, + 116, + 147, + 255, + 87, + 112, + 157, + 255, + 81, + 120, + 190, + 255, + 76, + 129, + 213, + 255, + 77, + 135, + 216, + 255, + 70, + 163, + 223, + 255, + 65, + 176, + 220, + 255, + 80, + 190, + 222, + 255, + 98, + 190, + 219, + 255, + 144, + 214, + 224, + 255, + 154, + 226, + 237, + 255, + 119, + 215, + 238, + 255, + 97, + 193, + 235, + 255, + 99, + 146, + 232, + 255, + 103, + 133, + 221, + 255, + 111, + 123, + 214, + 255, + 111, + 116, + 208, + 255, + 103, + 114, + 187, + 255, + 99, + 111, + 179, + 255, + 94, + 104, + 166, + 255, + 93, + 100, + 161, + 255, + 90, + 97, + 149, + 255, + 91, + 97, + 148, + 255, + 92, + 97, + 147, + 255, + 94, + 98, + 146, + 255, + 97, + 98, + 152, + 255, + 99, + 101, + 152, + 255, + 101, + 103, + 152, + 255, + 104, + 106, + 154, + 255, + 111, + 111, + 160, + 255, + 118, + 119, + 165, + 255, + 131, + 133, + 173, + 255, + 132, + 134, + 172, + 255, + 134, + 136, + 177, + 255, + 134, + 136, + 177, + 255, + 134, + 136, + 177, + 255, + 134, + 136, + 177, + 255, + 137, + 136, + 176, + 255, + 137, + 136, + 177, + 255, + 137, + 136, + 179, + 255, + 137, + 136, + 180, + 255, + 135, + 137, + 178, + 255, + 135, + 137, + 178, + 255, + 135, + 136, + 180, + 255, + 126, + 127, + 173, + 255, + 119, + 121, + 169, + 255, + 117, + 119, + 168, + 255, + 116, + 118, + 169, + 255, + 114, + 116, + 167, + 255, + 113, + 114, + 168, + 255, + 113, + 114, + 168, + 255, + 113, + 114, + 168, + 255, + 114, + 115, + 169, + 255, + 118, + 120, + 171, + 255, + 120, + 122, + 173, + 255, + 113, + 115, + 166, + 255, + 114, + 116, + 167, + 255, + 111, + 114, + 164, + 255, + 111, + 113, + 165, + 255, + 110, + 111, + 166, + 255, + 110, + 109, + 167, + 255, + 109, + 111, + 162, + 255, + 108, + 110, + 161, + 255, + 108, + 110, + 161, + 255, + 108, + 110, + 161, + 255, + 107, + 108, + 162, + 255, + 106, + 107, + 161, + 255, + 105, + 106, + 160, + 255, + 104, + 105, + 159, + 255, + 105, + 105, + 159, + 255, + 104, + 104, + 157, + 255, + 103, + 103, + 155, + 255, + 102, + 102, + 152, + 255, + 100, + 101, + 149, + 255, + 99, + 100, + 148, + 255, + 99, + 100, + 148, + 255, + 98, + 99, + 147, + 255, + 96, + 99, + 144, + 255, + 94, + 97, + 142, + 255, + 93, + 96, + 141, + 255, + 92, + 95, + 140, + 255, + 93, + 96, + 139, + 255, + 96, + 99, + 141, + 255, + 102, + 106, + 145, + 255, + 123, + 127, + 164, + 255, + 120, + 123, + 157, + 255, + 124, + 126, + 161, + 255, + 124, + 124, + 160, + 255, + 122, + 120, + 159, + 255, + 119, + 122, + 157, + 255, + 114, + 116, + 153, + 255, + 107, + 109, + 148, + 255, + 108, + 110, + 151, + 255, + 111, + 115, + 151, + 255, + 100, + 104, + 144, + 255, + 85, + 88, + 132, + 255, + 84, + 86, + 134, + 255, + 97, + 100, + 135, + 255, + 95, + 98, + 131, + 255, + 94, + 97, + 128, + 255, + 92, + 96, + 125, + 255, + 90, + 95, + 127, + 255, + 88, + 94, + 126, + 255, + 85, + 94, + 125, + 255, + 85, + 94, + 125, + 255, + 85, + 90, + 122, + 255, + 82, + 86, + 121, + 255, + 81, + 85, + 122, + 255, + 79, + 83, + 121, + 255, + 78, + 82, + 119, + 255, + 77, + 81, + 118, + 255, + 77, + 81, + 118, + 255, + 76, + 80, + 117, + 255, + 74, + 80, + 114, + 255, + 73, + 79, + 113, + 255, + 73, + 79, + 113, + 255, + 73, + 79, + 113, + 255, + 78, + 81, + 115, + 255, + 87, + 90, + 114, + 255, + 92, + 94, + 116, + 255, + 91, + 91, + 117, + 255, + 91, + 94, + 113, + 255, + 92, + 95, + 114, + 255, + 95, + 98, + 117, + 255, + 102, + 105, + 124, + 255, + 120, + 117, + 126, + 255, + 156, + 147, + 156, + 255, + 169, + 163, + 167, + 255, + 170, + 171, + 170, + 255, + 161, + 156, + 158, + 255, + 177, + 171, + 173, + 255, + 177, + 171, + 173, + 255, + 183, + 176, + 178, + 255, + 179, + 173, + 173, + 255, + 181, + 175, + 174, + 255, + 182, + 177, + 173, + 255, + 183, + 178, + 174, + 255, + 185, + 180, + 176, + 255, + 187, + 182, + 178, + 255, + 187, + 182, + 178, + 255, + 189, + 184, + 180, + 255, + 194, + 186, + 183, + 255, + 196, + 188, + 185, + 255, + 196, + 188, + 185, + 255, + 197, + 189, + 186, + 255, + 202, + 186, + 186, + 255, + 201, + 161, + 169, + 255, + 205, + 150, + 163, + 255, + 204, + 148, + 161, + 255, + 207, + 146, + 162, + 255, + 211, + 147, + 162, + 255, + 200, + 154, + 176, + 255, + 154, + 132, + 163, + 255, + 143, + 145, + 168, + 255, + 162, + 185, + 210, + 255, + 126, + 154, + 183, + 255, + 133, + 151, + 183, + 255, + 165, + 154, + 181, + 255, + 223, + 165, + 186, + 255, + 215, + 198, + 200, + 255, + 204, + 198, + 207, + 255, + 177, + 180, + 182, + 255, + 222, + 216, + 217, + 255, + 219, + 216, + 224, + 255, + 143, + 148, + 168, + 255, + 127, + 134, + 164, + 255, + 122, + 125, + 159, + 255, + 134, + 133, + 164, + 255, + 162, + 159, + 185, + 255, + 230, + 224, + 226, + 255, + 226, + 220, + 222, + 255, + 229, + 223, + 225, + 255, + 230, + 224, + 226, + 255, + 233, + 224, + 225, + 255, + 232, + 226, + 226, + 255, + 232, + 228, + 227, + 255, + 231, + 228, + 227, + 255, + 231, + 227, + 226, + 255, + 232, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 237, + 228, + 231, + 255, + 236, + 230, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 232, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 238, + 232, + 236, + 255, + 237, + 232, + 239, + 255, + 237, + 232, + 239, + 255, + 237, + 232, + 239, + 255, + 237, + 232, + 239, + 255, + 236, + 231, + 237, + 255, + 231, + 226, + 232, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 237, + 232, + 238, + 255, + 237, + 232, + 238, + 255, + 238, + 231, + 238, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 234, + 230, + 236, + 255, + 234, + 229, + 235, + 255, + 235, + 228, + 235, + 255, + 235, + 225, + 233, + 255, + 234, + 203, + 226, + 255, + 235, + 192, + 220, + 255, + 235, + 184, + 217, + 255, + 231, + 181, + 214, + 255, + 233, + 179, + 213, + 255, + 232, + 176, + 211, + 255, + 228, + 177, + 210, + 255, + 224, + 180, + 211, + 255, + 218, + 187, + 212, + 255, + 224, + 210, + 224, + 255, + 218, + 211, + 221, + 255, + 220, + 206, + 222, + 255, + 216, + 206, + 217, + 255, + 214, + 204, + 215, + 255, + 213, + 203, + 214, + 255, + 44, + 46, + 45, + 255, + 55, + 57, + 56, + 255, + 86, + 88, + 87, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 84, + 85, + 255, + 84, + 85, + 87, + 255, + 86, + 87, + 91, + 255, + 91, + 92, + 95, + 255, + 93, + 94, + 99, + 255, + 98, + 98, + 106, + 255, + 98, + 98, + 108, + 255, + 95, + 97, + 109, + 255, + 95, + 97, + 109, + 255, + 95, + 97, + 109, + 255, + 96, + 98, + 110, + 255, + 97, + 99, + 111, + 255, + 97, + 100, + 109, + 255, + 93, + 95, + 107, + 255, + 44, + 45, + 63, + 255, + 25, + 26, + 44, + 255, + 11, + 12, + 30, + 255, + 5, + 6, + 24, + 255, + 1, + 2, + 20, + 255, + 1, + 0, + 18, + 255, + 0, + 0, + 17, + 255, + 0, + 0, + 15, + 255, + 1, + 0, + 14, + 255, + 2, + 2, + 14, + 255, + 6, + 7, + 19, + 255, + 12, + 14, + 30, + 255, + 20, + 22, + 44, + 255, + 44, + 50, + 83, + 255, + 45, + 51, + 85, + 255, + 46, + 52, + 86, + 255, + 47, + 53, + 87, + 255, + 51, + 57, + 89, + 255, + 52, + 58, + 90, + 255, + 53, + 60, + 89, + 255, + 56, + 63, + 91, + 255, + 56, + 63, + 94, + 255, + 57, + 63, + 96, + 255, + 55, + 61, + 97, + 255, + 54, + 59, + 98, + 255, + 53, + 59, + 95, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 89, + 255, + 52, + 59, + 88, + 255, + 53, + 59, + 91, + 255, + 53, + 59, + 91, + 255, + 53, + 59, + 91, + 255, + 55, + 61, + 93, + 255, + 57, + 63, + 95, + 255, + 56, + 63, + 92, + 255, + 57, + 64, + 92, + 255, + 55, + 62, + 90, + 255, + 53, + 57, + 92, + 255, + 60, + 64, + 92, + 255, + 29, + 33, + 52, + 255, + 17, + 21, + 34, + 255, + 14, + 15, + 32, + 255, + 8, + 8, + 31, + 255, + 4, + 4, + 30, + 255, + 15, + 15, + 40, + 255, + 7, + 9, + 34, + 255, + 7, + 9, + 34, + 255, + 11, + 13, + 38, + 255, + 21, + 23, + 48, + 255, + 36, + 43, + 74, + 255, + 46, + 52, + 85, + 255, + 51, + 57, + 93, + 255, + 50, + 55, + 94, + 255, + 51, + 56, + 94, + 255, + 54, + 60, + 97, + 255, + 53, + 59, + 93, + 255, + 53, + 59, + 93, + 255, + 53, + 58, + 90, + 255, + 53, + 58, + 88, + 255, + 52, + 57, + 86, + 255, + 52, + 57, + 86, + 255, + 53, + 58, + 87, + 255, + 54, + 59, + 88, + 255, + 55, + 60, + 89, + 255, + 53, + 58, + 87, + 255, + 51, + 56, + 85, + 255, + 28, + 32, + 60, + 255, + 16, + 17, + 45, + 255, + 12, + 12, + 39, + 255, + 7, + 7, + 42, + 255, + 5, + 5, + 40, + 255, + 7, + 7, + 44, + 255, + 6, + 5, + 45, + 255, + 5, + 4, + 36, + 255, + 5, + 5, + 32, + 255, + 5, + 5, + 31, + 255, + 5, + 4, + 35, + 255, + 5, + 5, + 31, + 255, + 7, + 7, + 34, + 255, + 8, + 7, + 37, + 255, + 8, + 7, + 38, + 255, + 9, + 7, + 38, + 255, + 10, + 9, + 41, + 255, + 12, + 13, + 44, + 255, + 15, + 18, + 51, + 255, + 26, + 25, + 57, + 255, + 41, + 42, + 71, + 255, + 52, + 56, + 83, + 255, + 81, + 87, + 111, + 255, + 87, + 90, + 110, + 255, + 86, + 88, + 109, + 255, + 87, + 89, + 110, + 255, + 87, + 89, + 110, + 255, + 88, + 91, + 109, + 255, + 89, + 92, + 109, + 255, + 90, + 93, + 108, + 255, + 92, + 96, + 108, + 255, + 94, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 96, + 98, + 113, + 255, + 97, + 99, + 115, + 255, + 99, + 101, + 116, + 255, + 99, + 101, + 117, + 255, + 58, + 58, + 85, + 255, + 42, + 41, + 72, + 255, + 39, + 38, + 70, + 255, + 38, + 37, + 69, + 255, + 46, + 45, + 79, + 255, + 58, + 58, + 86, + 255, + 81, + 81, + 106, + 255, + 108, + 109, + 128, + 255, + 109, + 111, + 126, + 255, + 110, + 112, + 129, + 255, + 110, + 109, + 127, + 255, + 109, + 112, + 136, + 255, + 105, + 116, + 145, + 255, + 93, + 115, + 163, + 255, + 80, + 120, + 189, + 255, + 71, + 134, + 213, + 255, + 69, + 145, + 222, + 255, + 64, + 169, + 232, + 255, + 71, + 195, + 231, + 255, + 100, + 216, + 230, + 255, + 132, + 222, + 229, + 255, + 110, + 199, + 221, + 255, + 97, + 199, + 220, + 255, + 98, + 206, + 238, + 255, + 103, + 179, + 237, + 255, + 101, + 149, + 232, + 255, + 108, + 137, + 230, + 255, + 114, + 133, + 229, + 255, + 112, + 131, + 224, + 255, + 110, + 126, + 210, + 255, + 101, + 115, + 193, + 255, + 94, + 111, + 172, + 255, + 87, + 108, + 156, + 255, + 93, + 100, + 152, + 255, + 91, + 97, + 148, + 255, + 92, + 97, + 147, + 255, + 94, + 98, + 146, + 255, + 97, + 99, + 150, + 255, + 99, + 101, + 150, + 255, + 102, + 104, + 152, + 255, + 107, + 109, + 157, + 255, + 115, + 116, + 162, + 255, + 131, + 132, + 176, + 255, + 135, + 137, + 177, + 255, + 134, + 136, + 175, + 255, + 135, + 137, + 178, + 255, + 135, + 137, + 178, + 255, + 135, + 137, + 178, + 255, + 135, + 137, + 178, + 255, + 138, + 137, + 178, + 255, + 138, + 137, + 179, + 255, + 138, + 137, + 181, + 255, + 138, + 136, + 182, + 255, + 138, + 140, + 181, + 255, + 138, + 139, + 183, + 255, + 138, + 139, + 185, + 255, + 125, + 126, + 173, + 255, + 119, + 121, + 170, + 255, + 117, + 119, + 169, + 255, + 119, + 120, + 173, + 255, + 118, + 119, + 173, + 255, + 116, + 117, + 171, + 255, + 115, + 116, + 170, + 255, + 115, + 116, + 170, + 255, + 116, + 117, + 171, + 255, + 116, + 118, + 169, + 255, + 119, + 121, + 172, + 255, + 119, + 121, + 172, + 255, + 115, + 117, + 168, + 255, + 112, + 115, + 167, + 255, + 117, + 118, + 173, + 255, + 114, + 115, + 171, + 255, + 114, + 113, + 170, + 255, + 112, + 113, + 166, + 255, + 111, + 112, + 165, + 255, + 111, + 112, + 165, + 255, + 109, + 110, + 163, + 255, + 109, + 110, + 164, + 255, + 108, + 109, + 163, + 255, + 108, + 109, + 163, + 255, + 107, + 108, + 162, + 255, + 107, + 107, + 161, + 255, + 106, + 106, + 159, + 255, + 106, + 106, + 158, + 255, + 105, + 105, + 155, + 255, + 103, + 104, + 152, + 255, + 102, + 103, + 151, + 255, + 101, + 102, + 150, + 255, + 100, + 101, + 149, + 255, + 99, + 102, + 147, + 255, + 97, + 100, + 145, + 255, + 95, + 98, + 143, + 255, + 94, + 97, + 142, + 255, + 94, + 97, + 140, + 255, + 95, + 98, + 141, + 255, + 99, + 102, + 144, + 255, + 104, + 107, + 148, + 255, + 118, + 122, + 160, + 255, + 117, + 119, + 157, + 255, + 123, + 123, + 160, + 255, + 124, + 124, + 160, + 255, + 121, + 123, + 160, + 255, + 119, + 121, + 159, + 255, + 115, + 117, + 155, + 255, + 114, + 116, + 155, + 255, + 115, + 119, + 154, + 255, + 109, + 113, + 150, + 255, + 90, + 93, + 134, + 255, + 95, + 98, + 140, + 255, + 97, + 100, + 135, + 255, + 98, + 101, + 134, + 255, + 97, + 100, + 131, + 255, + 95, + 99, + 128, + 255, + 94, + 97, + 130, + 255, + 92, + 97, + 129, + 255, + 88, + 96, + 127, + 255, + 84, + 93, + 124, + 255, + 88, + 93, + 125, + 255, + 85, + 89, + 124, + 255, + 82, + 86, + 123, + 255, + 80, + 84, + 122, + 255, + 79, + 83, + 120, + 255, + 78, + 82, + 119, + 255, + 78, + 82, + 119, + 255, + 77, + 81, + 118, + 255, + 75, + 81, + 115, + 255, + 74, + 80, + 114, + 255, + 74, + 80, + 114, + 255, + 74, + 80, + 114, + 255, + 77, + 82, + 115, + 255, + 80, + 84, + 112, + 255, + 91, + 93, + 118, + 255, + 91, + 93, + 118, + 255, + 91, + 93, + 114, + 255, + 92, + 94, + 115, + 255, + 94, + 96, + 117, + 255, + 95, + 97, + 118, + 255, + 105, + 102, + 122, + 255, + 121, + 113, + 128, + 255, + 161, + 149, + 156, + 255, + 177, + 164, + 167, + 255, + 156, + 144, + 150, + 255, + 175, + 168, + 169, + 255, + 173, + 172, + 172, + 255, + 180, + 183, + 185, + 255, + 178, + 174, + 175, + 255, + 177, + 173, + 173, + 255, + 180, + 176, + 174, + 255, + 181, + 177, + 174, + 255, + 184, + 179, + 176, + 255, + 186, + 181, + 178, + 255, + 186, + 181, + 178, + 255, + 188, + 183, + 180, + 255, + 192, + 184, + 182, + 255, + 194, + 186, + 184, + 255, + 195, + 187, + 185, + 255, + 196, + 188, + 186, + 255, + 205, + 192, + 192, + 255, + 199, + 162, + 170, + 255, + 203, + 151, + 164, + 255, + 203, + 148, + 162, + 255, + 205, + 146, + 164, + 255, + 210, + 148, + 161, + 255, + 207, + 150, + 166, + 255, + 195, + 150, + 171, + 255, + 165, + 141, + 164, + 255, + 148, + 139, + 165, + 255, + 142, + 136, + 164, + 255, + 155, + 142, + 171, + 255, + 209, + 155, + 180, + 255, + 221, + 164, + 188, + 255, + 181, + 173, + 189, + 255, + 171, + 183, + 205, + 255, + 199, + 214, + 235, + 255, + 199, + 207, + 227, + 255, + 143, + 149, + 175, + 255, + 122, + 132, + 166, + 255, + 115, + 121, + 154, + 255, + 120, + 123, + 159, + 255, + 134, + 133, + 164, + 255, + 166, + 164, + 188, + 255, + 227, + 221, + 223, + 255, + 225, + 219, + 221, + 255, + 229, + 223, + 225, + 255, + 230, + 224, + 226, + 255, + 233, + 224, + 225, + 255, + 232, + 226, + 226, + 255, + 232, + 228, + 227, + 255, + 231, + 228, + 227, + 255, + 232, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 233, + 229, + 228, + 255, + 234, + 230, + 229, + 255, + 237, + 228, + 231, + 255, + 236, + 230, + 232, + 255, + 235, + 231, + 232, + 255, + 235, + 232, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 231, + 237, + 255, + 238, + 231, + 237, + 255, + 238, + 231, + 237, + 255, + 238, + 231, + 237, + 255, + 237, + 232, + 238, + 255, + 237, + 232, + 238, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 240, + 235, + 241, + 255, + 233, + 228, + 234, + 255, + 240, + 235, + 241, + 255, + 240, + 235, + 241, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 240, + 233, + 240, + 255, + 239, + 232, + 239, + 255, + 237, + 230, + 237, + 255, + 237, + 230, + 237, + 255, + 235, + 231, + 237, + 255, + 235, + 230, + 236, + 255, + 235, + 228, + 235, + 255, + 235, + 225, + 233, + 255, + 234, + 203, + 226, + 255, + 235, + 192, + 220, + 255, + 236, + 185, + 218, + 255, + 233, + 183, + 216, + 255, + 234, + 180, + 214, + 255, + 233, + 177, + 212, + 255, + 229, + 178, + 211, + 255, + 225, + 181, + 212, + 255, + 219, + 190, + 214, + 255, + 225, + 213, + 226, + 255, + 220, + 214, + 224, + 255, + 222, + 210, + 225, + 255, + 219, + 209, + 220, + 255, + 217, + 207, + 218, + 255, + 215, + 205, + 216, + 255, + 80, + 82, + 81, + 255, + 85, + 87, + 86, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 84, + 85, + 86, + 255, + 85, + 86, + 88, + 255, + 89, + 90, + 94, + 255, + 93, + 94, + 99, + 255, + 99, + 100, + 105, + 255, + 99, + 99, + 107, + 255, + 99, + 99, + 107, + 255, + 100, + 100, + 110, + 255, + 100, + 100, + 110, + 255, + 100, + 100, + 110, + 255, + 99, + 99, + 109, + 255, + 97, + 100, + 110, + 255, + 88, + 91, + 98, + 255, + 73, + 76, + 85, + 255, + 47, + 49, + 63, + 255, + 25, + 26, + 44, + 255, + 13, + 14, + 32, + 255, + 5, + 6, + 24, + 255, + 4, + 5, + 23, + 255, + 3, + 1, + 23, + 255, + 2, + 0, + 21, + 255, + 2, + 1, + 19, + 255, + 1, + 0, + 18, + 255, + 2, + 1, + 16, + 255, + 5, + 6, + 18, + 255, + 10, + 12, + 27, + 255, + 16, + 19, + 38, + 255, + 39, + 46, + 74, + 255, + 46, + 53, + 83, + 255, + 45, + 51, + 85, + 255, + 47, + 53, + 89, + 255, + 49, + 55, + 89, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 90, + 255, + 53, + 60, + 89, + 255, + 53, + 59, + 93, + 255, + 55, + 61, + 95, + 255, + 55, + 61, + 95, + 255, + 53, + 59, + 94, + 255, + 51, + 57, + 93, + 255, + 51, + 57, + 91, + 255, + 51, + 57, + 89, + 255, + 53, + 60, + 89, + 255, + 52, + 59, + 88, + 255, + 54, + 61, + 90, + 255, + 55, + 62, + 91, + 255, + 55, + 62, + 91, + 255, + 55, + 61, + 93, + 255, + 58, + 65, + 94, + 255, + 54, + 61, + 89, + 255, + 60, + 67, + 95, + 255, + 57, + 61, + 87, + 255, + 35, + 39, + 59, + 255, + 21, + 23, + 36, + 255, + 11, + 14, + 22, + 255, + 9, + 11, + 22, + 255, + 5, + 5, + 31, + 255, + 5, + 4, + 34, + 255, + 5, + 5, + 30, + 255, + 11, + 13, + 38, + 255, + 10, + 12, + 37, + 255, + 12, + 14, + 39, + 255, + 23, + 25, + 50, + 255, + 41, + 47, + 81, + 255, + 51, + 57, + 91, + 255, + 48, + 54, + 88, + 255, + 51, + 57, + 92, + 255, + 52, + 57, + 97, + 255, + 53, + 58, + 97, + 255, + 54, + 60, + 96, + 255, + 61, + 67, + 102, + 255, + 58, + 63, + 95, + 255, + 54, + 59, + 89, + 255, + 56, + 61, + 90, + 255, + 54, + 59, + 88, + 255, + 53, + 58, + 87, + 255, + 53, + 58, + 87, + 255, + 52, + 57, + 86, + 255, + 55, + 60, + 89, + 255, + 41, + 46, + 74, + 255, + 24, + 28, + 57, + 255, + 15, + 16, + 47, + 255, + 11, + 10, + 43, + 255, + 7, + 7, + 44, + 255, + 6, + 6, + 44, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 48, + 255, + 8, + 6, + 43, + 255, + 6, + 5, + 36, + 255, + 6, + 6, + 33, + 255, + 6, + 5, + 35, + 255, + 7, + 7, + 33, + 255, + 8, + 8, + 35, + 255, + 8, + 7, + 37, + 255, + 8, + 7, + 38, + 255, + 10, + 8, + 39, + 255, + 11, + 10, + 42, + 255, + 12, + 13, + 44, + 255, + 15, + 18, + 51, + 255, + 26, + 25, + 59, + 255, + 41, + 42, + 73, + 255, + 53, + 57, + 85, + 255, + 78, + 84, + 110, + 255, + 82, + 86, + 112, + 255, + 83, + 87, + 112, + 255, + 83, + 88, + 111, + 255, + 83, + 88, + 110, + 255, + 86, + 89, + 108, + 255, + 88, + 91, + 109, + 255, + 92, + 95, + 112, + 255, + 93, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 95, + 97, + 112, + 255, + 95, + 97, + 112, + 255, + 97, + 99, + 114, + 255, + 98, + 100, + 116, + 255, + 99, + 101, + 116, + 255, + 100, + 102, + 118, + 255, + 55, + 55, + 82, + 255, + 44, + 43, + 74, + 255, + 40, + 39, + 71, + 255, + 40, + 39, + 71, + 255, + 49, + 48, + 82, + 255, + 62, + 62, + 90, + 255, + 88, + 88, + 113, + 255, + 107, + 108, + 127, + 255, + 109, + 111, + 126, + 255, + 110, + 111, + 129, + 255, + 111, + 112, + 130, + 255, + 111, + 113, + 134, + 255, + 111, + 115, + 143, + 255, + 103, + 124, + 169, + 255, + 81, + 120, + 179, + 255, + 70, + 136, + 206, + 255, + 64, + 148, + 217, + 255, + 66, + 172, + 212, + 255, + 59, + 186, + 212, + 255, + 76, + 189, + 212, + 255, + 118, + 198, + 225, + 255, + 129, + 215, + 228, + 255, + 115, + 221, + 233, + 255, + 95, + 214, + 229, + 255, + 97, + 188, + 220, + 255, + 96, + 156, + 219, + 255, + 100, + 148, + 221, + 255, + 106, + 160, + 225, + 255, + 108, + 178, + 229, + 255, + 112, + 155, + 222, + 255, + 105, + 129, + 203, + 255, + 104, + 116, + 183, + 255, + 96, + 109, + 161, + 255, + 96, + 103, + 155, + 255, + 93, + 99, + 150, + 255, + 93, + 98, + 148, + 255, + 94, + 98, + 146, + 255, + 97, + 99, + 148, + 255, + 101, + 103, + 151, + 255, + 106, + 109, + 155, + 255, + 112, + 115, + 160, + 255, + 130, + 132, + 172, + 255, + 134, + 136, + 176, + 255, + 135, + 137, + 177, + 255, + 136, + 138, + 177, + 255, + 135, + 137, + 178, + 255, + 136, + 138, + 179, + 255, + 137, + 139, + 180, + 255, + 137, + 139, + 180, + 255, + 140, + 139, + 182, + 255, + 140, + 139, + 183, + 255, + 140, + 138, + 185, + 255, + 140, + 138, + 186, + 255, + 138, + 139, + 183, + 255, + 138, + 139, + 185, + 255, + 139, + 140, + 187, + 255, + 126, + 126, + 176, + 255, + 121, + 123, + 174, + 255, + 118, + 119, + 172, + 255, + 118, + 119, + 174, + 255, + 119, + 120, + 176, + 255, + 119, + 120, + 174, + 255, + 118, + 119, + 173, + 255, + 119, + 120, + 174, + 255, + 119, + 120, + 174, + 255, + 119, + 121, + 172, + 255, + 120, + 122, + 173, + 255, + 120, + 122, + 173, + 255, + 117, + 119, + 170, + 255, + 118, + 120, + 179, + 255, + 118, + 119, + 176, + 255, + 115, + 116, + 172, + 255, + 115, + 114, + 171, + 255, + 114, + 115, + 170, + 255, + 113, + 114, + 169, + 255, + 114, + 115, + 170, + 255, + 113, + 114, + 169, + 255, + 112, + 113, + 167, + 255, + 111, + 112, + 166, + 255, + 111, + 112, + 166, + 255, + 110, + 111, + 165, + 255, + 110, + 110, + 164, + 255, + 109, + 109, + 162, + 255, + 108, + 108, + 160, + 255, + 106, + 106, + 156, + 255, + 106, + 107, + 155, + 255, + 104, + 105, + 153, + 255, + 103, + 104, + 152, + 255, + 102, + 103, + 151, + 255, + 102, + 105, + 150, + 255, + 99, + 102, + 147, + 255, + 99, + 102, + 147, + 255, + 96, + 99, + 144, + 255, + 96, + 99, + 142, + 255, + 96, + 99, + 142, + 255, + 97, + 100, + 144, + 255, + 100, + 102, + 149, + 255, + 103, + 108, + 150, + 255, + 108, + 112, + 151, + 255, + 121, + 123, + 161, + 255, + 123, + 125, + 160, + 255, + 122, + 124, + 163, + 255, + 117, + 119, + 157, + 255, + 115, + 117, + 155, + 255, + 118, + 121, + 156, + 255, + 115, + 118, + 153, + 255, + 113, + 116, + 151, + 255, + 99, + 102, + 137, + 255, + 102, + 105, + 141, + 255, + 99, + 102, + 137, + 255, + 98, + 101, + 134, + 255, + 98, + 101, + 132, + 255, + 97, + 101, + 130, + 255, + 96, + 98, + 131, + 255, + 93, + 96, + 129, + 255, + 91, + 96, + 128, + 255, + 88, + 94, + 126, + 255, + 88, + 93, + 125, + 255, + 86, + 90, + 125, + 255, + 85, + 89, + 126, + 255, + 82, + 86, + 124, + 255, + 81, + 85, + 122, + 255, + 80, + 84, + 121, + 255, + 79, + 83, + 120, + 255, + 78, + 82, + 119, + 255, + 77, + 83, + 117, + 255, + 76, + 82, + 116, + 255, + 75, + 81, + 115, + 255, + 75, + 81, + 115, + 255, + 75, + 81, + 113, + 255, + 77, + 82, + 114, + 255, + 86, + 90, + 119, + 255, + 91, + 95, + 118, + 255, + 93, + 95, + 118, + 255, + 93, + 95, + 118, + 255, + 92, + 94, + 117, + 255, + 94, + 96, + 119, + 255, + 99, + 98, + 121, + 255, + 110, + 107, + 125, + 255, + 124, + 115, + 128, + 255, + 159, + 143, + 153, + 255, + 157, + 144, + 154, + 255, + 174, + 168, + 169, + 255, + 169, + 171, + 170, + 255, + 178, + 183, + 188, + 255, + 176, + 173, + 175, + 255, + 176, + 173, + 174, + 255, + 177, + 174, + 174, + 255, + 179, + 177, + 175, + 255, + 182, + 176, + 176, + 255, + 184, + 178, + 178, + 255, + 185, + 179, + 179, + 255, + 187, + 181, + 181, + 255, + 190, + 181, + 182, + 255, + 192, + 183, + 184, + 255, + 194, + 185, + 186, + 255, + 195, + 186, + 187, + 255, + 199, + 189, + 190, + 255, + 195, + 162, + 171, + 255, + 201, + 151, + 166, + 255, + 199, + 148, + 163, + 255, + 205, + 145, + 164, + 255, + 206, + 148, + 163, + 255, + 208, + 150, + 165, + 255, + 211, + 150, + 167, + 255, + 206, + 157, + 176, + 255, + 193, + 151, + 174, + 255, + 192, + 149, + 174, + 255, + 207, + 159, + 182, + 255, + 210, + 158, + 179, + 255, + 185, + 169, + 188, + 255, + 196, + 219, + 237, + 255, + 184, + 224, + 242, + 255, + 148, + 176, + 206, + 255, + 140, + 160, + 193, + 255, + 151, + 165, + 202, + 255, + 114, + 124, + 166, + 255, + 112, + 117, + 156, + 255, + 117, + 119, + 158, + 255, + 133, + 132, + 164, + 255, + 167, + 165, + 188, + 255, + 226, + 220, + 222, + 255, + 228, + 222, + 224, + 255, + 229, + 223, + 225, + 255, + 230, + 224, + 226, + 255, + 233, + 224, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 234, + 230, + 229, + 255, + 233, + 229, + 228, + 255, + 235, + 231, + 230, + 255, + 238, + 229, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 232, + 233, + 255, + 235, + 232, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 234, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 237, + 232, + 238, + 255, + 236, + 231, + 237, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 235, + 231, + 237, + 255, + 236, + 231, + 237, + 255, + 237, + 230, + 237, + 255, + 235, + 225, + 233, + 255, + 235, + 204, + 227, + 255, + 235, + 192, + 220, + 255, + 236, + 185, + 218, + 255, + 232, + 182, + 215, + 255, + 234, + 180, + 214, + 255, + 233, + 177, + 212, + 255, + 230, + 179, + 212, + 255, + 227, + 183, + 214, + 255, + 218, + 191, + 215, + 255, + 227, + 217, + 229, + 255, + 220, + 216, + 225, + 255, + 221, + 211, + 226, + 255, + 218, + 208, + 219, + 255, + 217, + 207, + 218, + 255, + 214, + 204, + 215, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 86, + 87, + 88, + 255, + 87, + 88, + 90, + 255, + 92, + 93, + 97, + 255, + 99, + 99, + 107, + 255, + 99, + 99, + 107, + 255, + 99, + 100, + 105, + 255, + 101, + 102, + 107, + 255, + 102, + 102, + 110, + 255, + 102, + 102, + 110, + 255, + 102, + 102, + 110, + 255, + 103, + 103, + 111, + 255, + 99, + 102, + 111, + 255, + 100, + 103, + 109, + 255, + 57, + 60, + 68, + 255, + 43, + 45, + 59, + 255, + 25, + 26, + 46, + 255, + 16, + 17, + 37, + 255, + 8, + 9, + 29, + 255, + 6, + 7, + 27, + 255, + 4, + 2, + 26, + 255, + 3, + 1, + 24, + 255, + 3, + 1, + 22, + 255, + 2, + 0, + 21, + 255, + 1, + 0, + 17, + 255, + 4, + 5, + 17, + 255, + 7, + 9, + 22, + 255, + 12, + 15, + 32, + 255, + 25, + 33, + 57, + 255, + 45, + 52, + 81, + 255, + 44, + 50, + 83, + 255, + 46, + 52, + 88, + 255, + 48, + 54, + 90, + 255, + 50, + 56, + 90, + 255, + 50, + 56, + 88, + 255, + 51, + 57, + 89, + 255, + 51, + 57, + 93, + 255, + 52, + 58, + 93, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 53, + 59, + 95, + 255, + 53, + 59, + 93, + 255, + 52, + 58, + 90, + 255, + 53, + 60, + 89, + 255, + 56, + 63, + 91, + 255, + 56, + 63, + 91, + 255, + 55, + 62, + 90, + 255, + 55, + 62, + 90, + 255, + 57, + 63, + 95, + 255, + 56, + 63, + 92, + 255, + 66, + 73, + 101, + 255, + 50, + 57, + 85, + 255, + 50, + 53, + 69, + 255, + 22, + 26, + 39, + 255, + 12, + 14, + 26, + 255, + 9, + 9, + 19, + 255, + 3, + 6, + 13, + 255, + 3, + 3, + 29, + 255, + 4, + 3, + 34, + 255, + 4, + 4, + 29, + 255, + 5, + 7, + 32, + 255, + 9, + 11, + 36, + 255, + 16, + 18, + 43, + 255, + 27, + 29, + 54, + 255, + 53, + 59, + 95, + 255, + 48, + 54, + 89, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 55, + 96, + 255, + 53, + 58, + 98, + 255, + 52, + 57, + 95, + 255, + 55, + 61, + 97, + 255, + 55, + 60, + 92, + 255, + 60, + 65, + 95, + 255, + 67, + 72, + 101, + 255, + 57, + 62, + 91, + 255, + 53, + 58, + 87, + 255, + 55, + 60, + 89, + 255, + 53, + 58, + 87, + 255, + 47, + 52, + 81, + 255, + 35, + 41, + 67, + 255, + 25, + 29, + 58, + 255, + 13, + 13, + 47, + 255, + 11, + 9, + 46, + 255, + 7, + 7, + 42, + 255, + 6, + 6, + 42, + 255, + 7, + 7, + 45, + 255, + 7, + 7, + 45, + 255, + 9, + 7, + 46, + 255, + 7, + 6, + 39, + 255, + 6, + 6, + 34, + 255, + 6, + 5, + 35, + 255, + 7, + 7, + 33, + 255, + 8, + 8, + 35, + 255, + 8, + 7, + 37, + 255, + 8, + 7, + 38, + 255, + 10, + 8, + 39, + 255, + 11, + 10, + 42, + 255, + 12, + 13, + 44, + 255, + 15, + 18, + 51, + 255, + 26, + 25, + 59, + 255, + 41, + 42, + 74, + 255, + 56, + 59, + 90, + 255, + 78, + 83, + 112, + 255, + 81, + 86, + 115, + 255, + 82, + 88, + 114, + 255, + 84, + 90, + 114, + 255, + 84, + 90, + 112, + 255, + 86, + 88, + 109, + 255, + 88, + 91, + 110, + 255, + 89, + 92, + 110, + 255, + 93, + 96, + 113, + 255, + 94, + 96, + 111, + 255, + 95, + 97, + 112, + 255, + 97, + 99, + 114, + 255, + 98, + 100, + 115, + 255, + 98, + 100, + 116, + 255, + 99, + 101, + 116, + 255, + 100, + 102, + 118, + 255, + 55, + 55, + 82, + 255, + 45, + 44, + 75, + 255, + 41, + 40, + 72, + 255, + 42, + 41, + 73, + 255, + 51, + 50, + 84, + 255, + 66, + 66, + 94, + 255, + 99, + 99, + 124, + 255, + 108, + 109, + 128, + 255, + 110, + 112, + 127, + 255, + 111, + 111, + 129, + 255, + 110, + 113, + 128, + 255, + 111, + 114, + 133, + 255, + 114, + 114, + 139, + 255, + 105, + 128, + 164, + 255, + 84, + 120, + 170, + 255, + 70, + 131, + 194, + 255, + 65, + 145, + 209, + 255, + 53, + 173, + 214, + 255, + 57, + 205, + 227, + 255, + 74, + 211, + 226, + 255, + 84, + 188, + 207, + 255, + 86, + 192, + 224, + 255, + 95, + 190, + 231, + 255, + 93, + 182, + 231, + 255, + 102, + 167, + 225, + 255, + 107, + 149, + 225, + 255, + 110, + 148, + 228, + 255, + 105, + 166, + 227, + 255, + 111, + 202, + 236, + 255, + 115, + 214, + 244, + 255, + 100, + 160, + 215, + 255, + 101, + 130, + 195, + 255, + 94, + 116, + 173, + 255, + 98, + 105, + 157, + 255, + 95, + 101, + 152, + 255, + 96, + 101, + 151, + 255, + 97, + 101, + 149, + 255, + 100, + 102, + 150, + 255, + 105, + 107, + 155, + 255, + 110, + 113, + 158, + 255, + 121, + 124, + 167, + 255, + 136, + 138, + 176, + 255, + 134, + 136, + 175, + 255, + 136, + 138, + 177, + 255, + 137, + 139, + 178, + 255, + 137, + 139, + 180, + 255, + 138, + 140, + 181, + 255, + 139, + 141, + 182, + 255, + 139, + 141, + 182, + 255, + 141, + 140, + 184, + 255, + 141, + 139, + 185, + 255, + 142, + 140, + 188, + 255, + 142, + 140, + 189, + 255, + 140, + 141, + 187, + 255, + 140, + 141, + 188, + 255, + 139, + 139, + 189, + 255, + 128, + 128, + 178, + 255, + 122, + 124, + 175, + 255, + 120, + 121, + 175, + 255, + 119, + 120, + 176, + 255, + 120, + 121, + 178, + 255, + 120, + 121, + 175, + 255, + 122, + 123, + 177, + 255, + 123, + 124, + 178, + 255, + 123, + 124, + 178, + 255, + 121, + 123, + 174, + 255, + 122, + 124, + 175, + 255, + 119, + 121, + 172, + 255, + 121, + 123, + 174, + 255, + 123, + 125, + 186, + 255, + 120, + 120, + 180, + 255, + 119, + 120, + 176, + 255, + 119, + 118, + 173, + 255, + 117, + 118, + 174, + 255, + 116, + 117, + 173, + 255, + 116, + 117, + 173, + 255, + 115, + 116, + 172, + 255, + 115, + 116, + 170, + 255, + 114, + 115, + 169, + 255, + 113, + 114, + 168, + 255, + 112, + 113, + 167, + 255, + 113, + 113, + 167, + 255, + 112, + 112, + 165, + 255, + 110, + 110, + 162, + 255, + 108, + 108, + 158, + 255, + 105, + 106, + 154, + 255, + 110, + 111, + 159, + 255, + 105, + 106, + 154, + 255, + 104, + 105, + 153, + 255, + 102, + 105, + 150, + 255, + 104, + 107, + 152, + 255, + 100, + 103, + 148, + 255, + 99, + 102, + 147, + 255, + 97, + 100, + 142, + 255, + 97, + 100, + 144, + 255, + 97, + 99, + 146, + 255, + 97, + 99, + 148, + 255, + 95, + 102, + 146, + 255, + 106, + 111, + 152, + 255, + 122, + 126, + 163, + 255, + 124, + 127, + 161, + 255, + 118, + 120, + 161, + 255, + 116, + 118, + 157, + 255, + 121, + 124, + 159, + 255, + 119, + 122, + 156, + 255, + 120, + 120, + 155, + 255, + 119, + 119, + 153, + 255, + 108, + 108, + 141, + 255, + 104, + 105, + 137, + 255, + 101, + 104, + 139, + 255, + 100, + 103, + 136, + 255, + 99, + 102, + 133, + 255, + 98, + 102, + 131, + 255, + 99, + 99, + 133, + 255, + 96, + 98, + 131, + 255, + 93, + 98, + 130, + 255, + 91, + 96, + 128, + 255, + 90, + 95, + 127, + 255, + 88, + 92, + 127, + 255, + 86, + 90, + 127, + 255, + 84, + 88, + 126, + 255, + 82, + 86, + 123, + 255, + 81, + 85, + 122, + 255, + 80, + 84, + 121, + 255, + 79, + 83, + 120, + 255, + 77, + 83, + 117, + 255, + 76, + 82, + 116, + 255, + 76, + 82, + 116, + 255, + 76, + 82, + 116, + 255, + 73, + 82, + 113, + 255, + 76, + 82, + 117, + 255, + 77, + 82, + 113, + 255, + 91, + 96, + 118, + 255, + 93, + 95, + 120, + 255, + 93, + 95, + 120, + 255, + 92, + 94, + 119, + 255, + 94, + 96, + 121, + 255, + 97, + 97, + 117, + 255, + 98, + 102, + 119, + 255, + 110, + 109, + 125, + 255, + 127, + 118, + 136, + 255, + 155, + 149, + 160, + 255, + 168, + 166, + 163, + 255, + 168, + 170, + 168, + 255, + 178, + 180, + 190, + 255, + 175, + 173, + 176, + 255, + 174, + 172, + 174, + 255, + 175, + 173, + 174, + 255, + 177, + 176, + 174, + 255, + 181, + 175, + 175, + 255, + 183, + 177, + 177, + 255, + 184, + 178, + 178, + 255, + 186, + 180, + 180, + 255, + 188, + 179, + 180, + 255, + 190, + 181, + 182, + 255, + 193, + 184, + 185, + 255, + 194, + 185, + 186, + 255, + 197, + 190, + 190, + 255, + 194, + 163, + 171, + 255, + 198, + 150, + 164, + 255, + 196, + 148, + 162, + 255, + 204, + 144, + 162, + 255, + 201, + 148, + 167, + 255, + 203, + 148, + 168, + 255, + 209, + 147, + 169, + 255, + 210, + 151, + 165, + 255, + 214, + 154, + 174, + 255, + 217, + 155, + 175, + 255, + 220, + 154, + 172, + 255, + 207, + 161, + 187, + 255, + 198, + 204, + 226, + 255, + 159, + 186, + 205, + 255, + 190, + 225, + 237, + 255, + 145, + 178, + 206, + 255, + 137, + 163, + 196, + 255, + 143, + 158, + 195, + 255, + 114, + 122, + 160, + 255, + 109, + 114, + 156, + 255, + 116, + 118, + 159, + 255, + 133, + 132, + 164, + 255, + 167, + 165, + 188, + 255, + 228, + 222, + 224, + 255, + 229, + 223, + 225, + 255, + 229, + 223, + 225, + 255, + 230, + 224, + 226, + 255, + 233, + 224, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 228, + 227, + 255, + 233, + 229, + 228, + 255, + 234, + 230, + 229, + 255, + 234, + 230, + 229, + 255, + 233, + 229, + 228, + 255, + 238, + 229, + 232, + 255, + 236, + 230, + 232, + 255, + 236, + 232, + 233, + 255, + 235, + 232, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 237, + 231, + 233, + 255, + 238, + 232, + 234, + 255, + 238, + 231, + 239, + 255, + 238, + 231, + 239, + 255, + 239, + 232, + 240, + 255, + 239, + 232, + 240, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 238, + 233, + 237, + 255, + 240, + 235, + 241, + 255, + 238, + 233, + 239, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 238, + 236, + 239, + 255, + 238, + 236, + 239, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 237, + 235, + 238, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 238, + 233, + 239, + 255, + 239, + 234, + 240, + 255, + 239, + 234, + 240, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 235, + 231, + 237, + 255, + 236, + 231, + 237, + 255, + 240, + 233, + 240, + 255, + 234, + 224, + 232, + 255, + 234, + 203, + 226, + 255, + 236, + 193, + 221, + 255, + 238, + 187, + 220, + 255, + 234, + 184, + 217, + 255, + 236, + 182, + 216, + 255, + 235, + 179, + 214, + 255, + 231, + 180, + 213, + 255, + 228, + 184, + 215, + 255, + 220, + 195, + 218, + 255, + 227, + 218, + 230, + 255, + 220, + 217, + 226, + 255, + 221, + 213, + 227, + 255, + 220, + 210, + 221, + 255, + 218, + 208, + 219, + 255, + 214, + 204, + 215, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 84, + 86, + 85, + 255, + 84, + 86, + 85, + 255, + 85, + 86, + 87, + 255, + 87, + 88, + 91, + 255, + 90, + 91, + 97, + 255, + 98, + 98, + 108, + 255, + 99, + 99, + 107, + 255, + 98, + 98, + 106, + 255, + 101, + 101, + 109, + 255, + 103, + 103, + 111, + 255, + 103, + 104, + 109, + 255, + 105, + 106, + 111, + 255, + 104, + 105, + 110, + 255, + 109, + 110, + 115, + 255, + 99, + 102, + 107, + 255, + 69, + 72, + 80, + 255, + 53, + 55, + 68, + 255, + 41, + 43, + 58, + 255, + 28, + 31, + 50, + 255, + 18, + 20, + 41, + 255, + 10, + 12, + 33, + 255, + 6, + 8, + 29, + 255, + 3, + 4, + 25, + 255, + 1, + 1, + 25, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 0, + 1, + 22, + 255, + 3, + 5, + 19, + 255, + 6, + 8, + 21, + 255, + 10, + 11, + 29, + 255, + 22, + 24, + 47, + 255, + 47, + 50, + 81, + 255, + 45, + 50, + 82, + 255, + 46, + 51, + 82, + 255, + 47, + 53, + 87, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 51, + 57, + 91, + 255, + 52, + 56, + 91, + 255, + 53, + 57, + 92, + 255, + 54, + 58, + 93, + 255, + 54, + 58, + 93, + 255, + 55, + 58, + 92, + 255, + 54, + 57, + 90, + 255, + 54, + 57, + 89, + 255, + 50, + 53, + 84, + 255, + 51, + 57, + 83, + 255, + 63, + 69, + 95, + 255, + 63, + 69, + 95, + 255, + 53, + 59, + 85, + 255, + 57, + 64, + 90, + 255, + 61, + 67, + 90, + 255, + 53, + 58, + 78, + 255, + 44, + 48, + 66, + 255, + 27, + 31, + 40, + 255, + 15, + 18, + 25, + 255, + 8, + 10, + 15, + 255, + 5, + 6, + 10, + 255, + 3, + 3, + 15, + 255, + 1, + 2, + 17, + 255, + 1, + 2, + 29, + 255, + 3, + 3, + 40, + 255, + 5, + 3, + 34, + 255, + 8, + 8, + 33, + 255, + 15, + 17, + 41, + 255, + 28, + 32, + 60, + 255, + 57, + 63, + 96, + 255, + 53, + 62, + 95, + 255, + 47, + 57, + 92, + 255, + 46, + 56, + 92, + 255, + 51, + 57, + 93, + 255, + 51, + 57, + 93, + 255, + 51, + 57, + 93, + 255, + 53, + 59, + 95, + 255, + 55, + 60, + 98, + 255, + 55, + 61, + 97, + 255, + 55, + 61, + 95, + 255, + 54, + 60, + 93, + 255, + 53, + 58, + 87, + 255, + 52, + 57, + 86, + 255, + 52, + 57, + 86, + 255, + 52, + 57, + 86, + 255, + 32, + 37, + 67, + 255, + 20, + 25, + 55, + 255, + 12, + 15, + 46, + 255, + 9, + 10, + 41, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 8, + 8, + 46, + 255, + 7, + 7, + 42, + 255, + 6, + 7, + 37, + 255, + 6, + 7, + 34, + 255, + 9, + 7, + 36, + 255, + 9, + 7, + 36, + 255, + 9, + 7, + 37, + 255, + 10, + 8, + 39, + 255, + 8, + 9, + 40, + 255, + 10, + 11, + 42, + 255, + 13, + 14, + 45, + 255, + 19, + 20, + 51, + 255, + 28, + 27, + 59, + 255, + 43, + 44, + 74, + 255, + 60, + 64, + 92, + 255, + 80, + 86, + 112, + 255, + 81, + 85, + 110, + 255, + 82, + 86, + 111, + 255, + 83, + 87, + 112, + 255, + 90, + 94, + 119, + 255, + 88, + 91, + 110, + 255, + 88, + 91, + 110, + 255, + 88, + 91, + 108, + 255, + 93, + 96, + 111, + 255, + 94, + 96, + 111, + 255, + 95, + 97, + 112, + 255, + 97, + 99, + 114, + 255, + 98, + 100, + 115, + 255, + 99, + 100, + 118, + 255, + 100, + 102, + 117, + 255, + 101, + 102, + 121, + 255, + 58, + 57, + 87, + 255, + 47, + 45, + 77, + 255, + 43, + 42, + 74, + 255, + 43, + 44, + 75, + 255, + 52, + 55, + 86, + 255, + 71, + 71, + 98, + 255, + 107, + 108, + 127, + 255, + 110, + 112, + 127, + 255, + 110, + 111, + 130, + 255, + 110, + 111, + 132, + 255, + 111, + 112, + 133, + 255, + 112, + 113, + 134, + 255, + 114, + 115, + 136, + 255, + 104, + 120, + 152, + 255, + 87, + 120, + 169, + 255, + 76, + 125, + 189, + 255, + 67, + 136, + 201, + 255, + 61, + 154, + 215, + 255, + 65, + 165, + 216, + 255, + 76, + 179, + 211, + 255, + 106, + 206, + 223, + 255, + 87, + 209, + 222, + 255, + 82, + 210, + 227, + 255, + 96, + 200, + 236, + 255, + 97, + 167, + 219, + 255, + 103, + 145, + 212, + 255, + 106, + 166, + 225, + 255, + 119, + 190, + 243, + 255, + 103, + 175, + 225, + 255, + 100, + 175, + 222, + 255, + 102, + 189, + 235, + 255, + 103, + 161, + 210, + 255, + 102, + 115, + 174, + 255, + 97, + 107, + 160, + 255, + 97, + 103, + 154, + 255, + 98, + 103, + 150, + 255, + 101, + 104, + 149, + 255, + 103, + 109, + 151, + 255, + 108, + 113, + 155, + 255, + 115, + 118, + 161, + 255, + 127, + 128, + 172, + 255, + 141, + 138, + 181, + 255, + 139, + 136, + 179, + 255, + 140, + 137, + 180, + 255, + 142, + 139, + 182, + 255, + 138, + 139, + 183, + 255, + 139, + 140, + 184, + 255, + 140, + 141, + 185, + 255, + 140, + 141, + 185, + 255, + 142, + 140, + 189, + 255, + 143, + 141, + 190, + 255, + 143, + 141, + 190, + 255, + 143, + 141, + 190, + 255, + 141, + 143, + 184, + 255, + 141, + 142, + 187, + 255, + 136, + 136, + 186, + 255, + 127, + 127, + 179, + 255, + 123, + 124, + 180, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 121, + 122, + 178, + 255, + 122, + 123, + 179, + 255, + 123, + 124, + 180, + 255, + 123, + 124, + 180, + 255, + 125, + 126, + 182, + 255, + 124, + 125, + 181, + 255, + 122, + 123, + 179, + 255, + 121, + 122, + 178, + 255, + 120, + 121, + 177, + 255, + 119, + 120, + 176, + 255, + 118, + 119, + 175, + 255, + 118, + 119, + 175, + 255, + 118, + 119, + 175, + 255, + 117, + 118, + 172, + 255, + 116, + 117, + 171, + 255, + 115, + 116, + 170, + 255, + 114, + 115, + 169, + 255, + 114, + 115, + 169, + 255, + 113, + 115, + 167, + 255, + 111, + 113, + 164, + 255, + 111, + 113, + 162, + 255, + 112, + 110, + 157, + 255, + 112, + 110, + 157, + 255, + 108, + 106, + 153, + 255, + 107, + 105, + 152, + 255, + 105, + 106, + 152, + 255, + 104, + 105, + 152, + 255, + 103, + 103, + 153, + 255, + 102, + 102, + 153, + 255, + 100, + 101, + 147, + 255, + 99, + 100, + 147, + 255, + 98, + 100, + 149, + 255, + 98, + 102, + 150, + 255, + 96, + 104, + 151, + 255, + 99, + 109, + 158, + 255, + 112, + 119, + 165, + 255, + 117, + 118, + 159, + 255, + 114, + 120, + 161, + 255, + 117, + 122, + 161, + 255, + 121, + 125, + 160, + 255, + 122, + 125, + 158, + 255, + 123, + 123, + 159, + 255, + 126, + 127, + 157, + 255, + 112, + 116, + 143, + 255, + 108, + 113, + 143, + 255, + 103, + 106, + 139, + 255, + 100, + 103, + 136, + 255, + 100, + 103, + 136, + 255, + 99, + 102, + 135, + 255, + 97, + 100, + 133, + 255, + 96, + 99, + 132, + 255, + 95, + 98, + 131, + 255, + 93, + 96, + 129, + 255, + 91, + 96, + 128, + 255, + 88, + 94, + 126, + 255, + 84, + 93, + 126, + 255, + 82, + 91, + 126, + 255, + 84, + 88, + 123, + 255, + 82, + 86, + 121, + 255, + 81, + 85, + 120, + 255, + 80, + 84, + 119, + 255, + 79, + 83, + 120, + 255, + 79, + 83, + 120, + 255, + 77, + 81, + 118, + 255, + 76, + 80, + 117, + 255, + 76, + 81, + 119, + 255, + 76, + 82, + 116, + 255, + 79, + 86, + 115, + 255, + 83, + 90, + 116, + 255, + 94, + 96, + 117, + 255, + 92, + 94, + 115, + 255, + 91, + 96, + 116, + 255, + 91, + 96, + 118, + 255, + 96, + 96, + 116, + 255, + 99, + 99, + 119, + 255, + 104, + 104, + 122, + 255, + 116, + 116, + 132, + 255, + 167, + 163, + 171, + 255, + 172, + 166, + 167, + 255, + 169, + 167, + 169, + 255, + 176, + 179, + 187, + 255, + 175, + 171, + 172, + 255, + 175, + 171, + 172, + 255, + 176, + 172, + 173, + 255, + 178, + 174, + 175, + 255, + 183, + 173, + 174, + 255, + 183, + 176, + 176, + 255, + 182, + 178, + 177, + 255, + 183, + 180, + 179, + 255, + 186, + 180, + 182, + 255, + 187, + 182, + 184, + 255, + 187, + 184, + 185, + 255, + 189, + 186, + 187, + 255, + 196, + 187, + 188, + 255, + 193, + 159, + 168, + 255, + 200, + 149, + 164, + 255, + 199, + 145, + 161, + 255, + 200, + 145, + 166, + 255, + 203, + 148, + 169, + 255, + 203, + 148, + 169, + 255, + 205, + 150, + 171, + 255, + 210, + 149, + 170, + 255, + 207, + 154, + 173, + 255, + 214, + 150, + 174, + 255, + 214, + 158, + 178, + 255, + 175, + 160, + 183, + 255, + 147, + 178, + 201, + 255, + 151, + 183, + 204, + 255, + 205, + 229, + 239, + 255, + 178, + 196, + 215, + 255, + 183, + 209, + 232, + 255, + 128, + 148, + 182, + 255, + 111, + 119, + 164, + 255, + 109, + 114, + 155, + 255, + 115, + 117, + 159, + 255, + 132, + 131, + 165, + 255, + 164, + 161, + 187, + 255, + 225, + 219, + 219, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 226, + 255, + 233, + 224, + 225, + 255, + 232, + 226, + 226, + 255, + 231, + 227, + 226, + 255, + 231, + 228, + 227, + 255, + 233, + 229, + 230, + 255, + 234, + 230, + 231, + 255, + 234, + 230, + 231, + 255, + 235, + 231, + 232, + 255, + 236, + 232, + 233, + 255, + 237, + 232, + 235, + 255, + 236, + 231, + 236, + 255, + 236, + 231, + 237, + 255, + 237, + 230, + 237, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 232, + 240, + 255, + 239, + 234, + 241, + 255, + 239, + 235, + 242, + 255, + 237, + 234, + 241, + 255, + 237, + 235, + 239, + 255, + 237, + 235, + 239, + 255, + 237, + 235, + 239, + 255, + 237, + 235, + 239, + 255, + 237, + 234, + 241, + 255, + 237, + 234, + 241, + 255, + 237, + 234, + 241, + 255, + 237, + 234, + 241, + 255, + 240, + 233, + 241, + 255, + 240, + 233, + 241, + 255, + 240, + 233, + 241, + 255, + 239, + 232, + 240, + 255, + 238, + 233, + 240, + 255, + 238, + 233, + 240, + 255, + 238, + 233, + 240, + 255, + 238, + 233, + 240, + 255, + 239, + 232, + 238, + 255, + 239, + 232, + 238, + 255, + 239, + 232, + 238, + 255, + 239, + 232, + 238, + 255, + 239, + 231, + 238, + 255, + 237, + 232, + 239, + 255, + 238, + 227, + 239, + 255, + 237, + 219, + 235, + 255, + 237, + 201, + 227, + 255, + 238, + 192, + 221, + 255, + 238, + 187, + 220, + 255, + 234, + 184, + 219, + 255, + 235, + 182, + 218, + 255, + 235, + 181, + 217, + 255, + 231, + 183, + 217, + 255, + 227, + 186, + 218, + 255, + 226, + 193, + 219, + 255, + 222, + 219, + 229, + 255, + 224, + 216, + 224, + 255, + 221, + 213, + 225, + 255, + 222, + 210, + 224, + 255, + 215, + 198, + 215, + 255, + 216, + 191, + 213, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 84, + 86, + 85, + 255, + 84, + 86, + 85, + 255, + 86, + 87, + 88, + 255, + 91, + 92, + 95, + 255, + 94, + 95, + 101, + 255, + 100, + 100, + 110, + 255, + 99, + 99, + 107, + 255, + 101, + 101, + 109, + 255, + 103, + 103, + 111, + 255, + 103, + 103, + 111, + 255, + 105, + 106, + 111, + 255, + 102, + 103, + 108, + 255, + 109, + 110, + 115, + 255, + 107, + 108, + 113, + 255, + 84, + 87, + 92, + 255, + 60, + 63, + 70, + 255, + 47, + 49, + 60, + 255, + 40, + 42, + 54, + 255, + 33, + 36, + 52, + 255, + 28, + 31, + 48, + 255, + 15, + 17, + 38, + 255, + 10, + 12, + 35, + 255, + 4, + 5, + 26, + 255, + 2, + 2, + 26, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 24, + 255, + 4, + 5, + 26, + 255, + 7, + 8, + 29, + 255, + 20, + 22, + 44, + 255, + 38, + 42, + 70, + 255, + 45, + 50, + 81, + 255, + 46, + 51, + 81, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 52, + 56, + 91, + 255, + 53, + 57, + 92, + 255, + 54, + 58, + 93, + 255, + 54, + 58, + 93, + 255, + 55, + 58, + 93, + 255, + 54, + 57, + 89, + 255, + 52, + 56, + 85, + 255, + 51, + 55, + 82, + 255, + 46, + 52, + 76, + 255, + 50, + 56, + 80, + 255, + 53, + 59, + 83, + 255, + 51, + 57, + 81, + 255, + 49, + 55, + 78, + 255, + 50, + 55, + 75, + 255, + 46, + 50, + 66, + 255, + 26, + 30, + 43, + 255, + 20, + 23, + 30, + 255, + 8, + 10, + 16, + 255, + 5, + 5, + 10, + 255, + 4, + 3, + 8, + 255, + 2, + 1, + 10, + 255, + 0, + 0, + 10, + 255, + 0, + 1, + 20, + 255, + 2, + 1, + 32, + 255, + 5, + 3, + 34, + 255, + 8, + 8, + 32, + 255, + 16, + 19, + 38, + 255, + 31, + 36, + 57, + 255, + 57, + 63, + 89, + 255, + 59, + 67, + 98, + 255, + 51, + 59, + 96, + 255, + 49, + 58, + 99, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 94, + 255, + 51, + 57, + 93, + 255, + 51, + 57, + 93, + 255, + 53, + 59, + 95, + 255, + 53, + 59, + 93, + 255, + 53, + 59, + 92, + 255, + 52, + 58, + 90, + 255, + 52, + 57, + 87, + 255, + 53, + 58, + 88, + 255, + 52, + 57, + 87, + 255, + 61, + 66, + 96, + 255, + 30, + 35, + 67, + 255, + 22, + 27, + 59, + 255, + 12, + 15, + 48, + 255, + 9, + 9, + 43, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 8, + 8, + 46, + 255, + 7, + 7, + 43, + 255, + 7, + 8, + 40, + 255, + 7, + 8, + 39, + 255, + 9, + 8, + 41, + 255, + 9, + 8, + 40, + 255, + 8, + 7, + 39, + 255, + 9, + 8, + 39, + 255, + 8, + 9, + 40, + 255, + 10, + 11, + 42, + 255, + 13, + 14, + 45, + 255, + 19, + 20, + 51, + 255, + 30, + 29, + 61, + 255, + 46, + 47, + 77, + 255, + 67, + 71, + 99, + 255, + 83, + 89, + 115, + 255, + 83, + 87, + 112, + 255, + 83, + 87, + 112, + 255, + 84, + 88, + 113, + 255, + 87, + 91, + 116, + 255, + 94, + 96, + 117, + 255, + 89, + 92, + 111, + 255, + 88, + 91, + 110, + 255, + 90, + 93, + 110, + 255, + 95, + 97, + 112, + 255, + 96, + 98, + 113, + 255, + 98, + 100, + 115, + 255, + 99, + 101, + 116, + 255, + 99, + 100, + 118, + 255, + 100, + 102, + 117, + 255, + 95, + 96, + 115, + 255, + 56, + 55, + 85, + 255, + 48, + 46, + 78, + 255, + 44, + 43, + 75, + 255, + 44, + 45, + 76, + 255, + 56, + 59, + 90, + 255, + 75, + 75, + 102, + 255, + 111, + 112, + 131, + 255, + 110, + 112, + 127, + 255, + 110, + 111, + 130, + 255, + 110, + 111, + 132, + 255, + 111, + 112, + 133, + 255, + 112, + 113, + 134, + 255, + 114, + 115, + 136, + 255, + 114, + 119, + 149, + 255, + 99, + 137, + 176, + 255, + 67, + 133, + 184, + 255, + 70, + 133, + 195, + 255, + 60, + 141, + 206, + 255, + 66, + 146, + 210, + 255, + 70, + 146, + 202, + 255, + 82, + 156, + 203, + 255, + 83, + 157, + 201, + 255, + 76, + 156, + 198, + 255, + 85, + 154, + 201, + 255, + 97, + 147, + 200, + 255, + 98, + 135, + 197, + 255, + 103, + 145, + 205, + 255, + 98, + 169, + 218, + 255, + 97, + 201, + 238, + 255, + 99, + 178, + 233, + 255, + 102, + 150, + 214, + 255, + 104, + 134, + 194, + 255, + 92, + 123, + 172, + 255, + 99, + 109, + 160, + 255, + 101, + 107, + 156, + 255, + 102, + 107, + 153, + 255, + 108, + 111, + 155, + 255, + 111, + 116, + 157, + 255, + 120, + 123, + 165, + 255, + 121, + 123, + 165, + 255, + 127, + 127, + 170, + 255, + 134, + 133, + 177, + 255, + 140, + 139, + 183, + 255, + 141, + 140, + 184, + 255, + 141, + 140, + 184, + 255, + 140, + 141, + 185, + 255, + 141, + 142, + 186, + 255, + 141, + 142, + 186, + 255, + 141, + 142, + 186, + 255, + 144, + 142, + 191, + 255, + 146, + 144, + 193, + 255, + 146, + 144, + 193, + 255, + 146, + 144, + 193, + 255, + 144, + 145, + 189, + 255, + 144, + 145, + 192, + 255, + 135, + 135, + 186, + 255, + 129, + 129, + 182, + 255, + 124, + 125, + 182, + 255, + 122, + 123, + 180, + 255, + 122, + 123, + 180, + 255, + 122, + 123, + 180, + 255, + 122, + 123, + 180, + 255, + 122, + 123, + 180, + 255, + 123, + 124, + 181, + 255, + 123, + 124, + 181, + 255, + 123, + 124, + 180, + 255, + 124, + 125, + 181, + 255, + 125, + 126, + 182, + 255, + 129, + 130, + 186, + 255, + 128, + 129, + 185, + 255, + 126, + 127, + 183, + 255, + 125, + 126, + 182, + 255, + 124, + 125, + 181, + 255, + 123, + 124, + 180, + 255, + 122, + 123, + 179, + 255, + 120, + 121, + 177, + 255, + 120, + 121, + 177, + 255, + 119, + 120, + 175, + 255, + 118, + 119, + 174, + 255, + 118, + 119, + 174, + 255, + 117, + 118, + 173, + 255, + 116, + 117, + 171, + 255, + 115, + 117, + 169, + 255, + 113, + 115, + 166, + 255, + 116, + 118, + 167, + 255, + 113, + 114, + 162, + 255, + 111, + 112, + 160, + 255, + 109, + 110, + 158, + 255, + 108, + 109, + 157, + 255, + 107, + 108, + 155, + 255, + 106, + 106, + 156, + 255, + 105, + 105, + 156, + 255, + 104, + 104, + 156, + 255, + 103, + 104, + 153, + 255, + 100, + 103, + 153, + 255, + 97, + 103, + 153, + 255, + 96, + 105, + 155, + 255, + 99, + 108, + 156, + 255, + 101, + 114, + 165, + 255, + 100, + 113, + 163, + 255, + 111, + 119, + 166, + 255, + 116, + 121, + 162, + 255, + 123, + 127, + 166, + 255, + 123, + 126, + 161, + 255, + 124, + 126, + 159, + 255, + 128, + 127, + 160, + 255, + 141, + 142, + 170, + 255, + 119, + 122, + 148, + 255, + 112, + 116, + 146, + 255, + 105, + 108, + 141, + 255, + 102, + 105, + 138, + 255, + 101, + 104, + 137, + 255, + 100, + 103, + 136, + 255, + 98, + 101, + 134, + 255, + 97, + 100, + 133, + 255, + 97, + 100, + 133, + 255, + 95, + 98, + 131, + 255, + 93, + 97, + 127, + 255, + 90, + 95, + 127, + 255, + 88, + 95, + 129, + 255, + 85, + 94, + 127, + 255, + 85, + 89, + 124, + 255, + 83, + 87, + 122, + 255, + 82, + 86, + 121, + 255, + 81, + 85, + 120, + 255, + 81, + 85, + 122, + 255, + 79, + 83, + 120, + 255, + 79, + 83, + 120, + 255, + 78, + 82, + 119, + 255, + 76, + 82, + 118, + 255, + 76, + 82, + 116, + 255, + 78, + 84, + 116, + 255, + 80, + 87, + 117, + 255, + 89, + 93, + 118, + 255, + 92, + 97, + 119, + 255, + 93, + 95, + 118, + 255, + 93, + 95, + 116, + 255, + 95, + 96, + 117, + 255, + 98, + 99, + 119, + 255, + 103, + 104, + 123, + 255, + 113, + 114, + 132, + 255, + 170, + 168, + 174, + 255, + 170, + 165, + 163, + 255, + 168, + 165, + 165, + 255, + 177, + 177, + 185, + 255, + 174, + 170, + 171, + 255, + 174, + 170, + 171, + 255, + 174, + 170, + 171, + 255, + 176, + 172, + 173, + 255, + 180, + 172, + 170, + 255, + 182, + 174, + 172, + 255, + 182, + 175, + 173, + 255, + 183, + 177, + 175, + 255, + 185, + 179, + 181, + 255, + 186, + 182, + 183, + 255, + 184, + 184, + 184, + 255, + 186, + 186, + 186, + 255, + 193, + 185, + 188, + 255, + 189, + 155, + 166, + 255, + 196, + 145, + 162, + 255, + 199, + 145, + 163, + 255, + 199, + 144, + 165, + 255, + 201, + 146, + 167, + 255, + 203, + 148, + 169, + 255, + 205, + 150, + 171, + 255, + 207, + 150, + 169, + 255, + 207, + 153, + 171, + 255, + 212, + 151, + 175, + 255, + 199, + 157, + 180, + 255, + 187, + 205, + 226, + 255, + 163, + 210, + 231, + 255, + 172, + 207, + 228, + 255, + 178, + 205, + 216, + 255, + 215, + 229, + 239, + 255, + 197, + 215, + 234, + 255, + 129, + 141, + 176, + 255, + 114, + 116, + 164, + 255, + 109, + 114, + 156, + 255, + 115, + 117, + 160, + 255, + 131, + 130, + 165, + 255, + 160, + 157, + 184, + 255, + 227, + 220, + 226, + 255, + 227, + 221, + 223, + 255, + 230, + 224, + 226, + 255, + 230, + 224, + 227, + 255, + 233, + 224, + 227, + 255, + 232, + 226, + 228, + 255, + 231, + 227, + 228, + 255, + 231, + 228, + 229, + 255, + 233, + 228, + 231, + 255, + 234, + 229, + 232, + 255, + 235, + 230, + 233, + 255, + 236, + 231, + 234, + 255, + 236, + 232, + 233, + 255, + 237, + 232, + 235, + 255, + 236, + 231, + 236, + 255, + 236, + 231, + 237, + 255, + 237, + 230, + 237, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 234, + 227, + 235, + 255, + 240, + 235, + 242, + 255, + 239, + 235, + 242, + 255, + 237, + 234, + 241, + 255, + 239, + 237, + 242, + 255, + 239, + 237, + 242, + 255, + 239, + 237, + 242, + 255, + 239, + 237, + 242, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 241, + 236, + 243, + 255, + 241, + 236, + 243, + 255, + 240, + 235, + 242, + 255, + 239, + 234, + 241, + 255, + 239, + 234, + 241, + 255, + 239, + 234, + 241, + 255, + 239, + 234, + 241, + 255, + 239, + 234, + 241, + 255, + 240, + 233, + 240, + 255, + 240, + 233, + 240, + 255, + 239, + 232, + 239, + 255, + 239, + 232, + 239, + 255, + 239, + 231, + 238, + 255, + 237, + 232, + 239, + 255, + 238, + 227, + 239, + 255, + 234, + 216, + 232, + 255, + 237, + 201, + 227, + 255, + 238, + 192, + 223, + 255, + 239, + 188, + 223, + 255, + 235, + 185, + 221, + 255, + 235, + 184, + 219, + 255, + 235, + 182, + 218, + 255, + 233, + 183, + 218, + 255, + 230, + 186, + 219, + 255, + 216, + 197, + 218, + 255, + 219, + 218, + 227, + 255, + 228, + 214, + 228, + 255, + 220, + 206, + 224, + 255, + 221, + 194, + 214, + 255, + 219, + 188, + 212, + 255, + 218, + 182, + 208, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 85, + 87, + 86, + 255, + 88, + 89, + 90, + 255, + 92, + 93, + 96, + 255, + 104, + 105, + 111, + 255, + 100, + 100, + 110, + 255, + 100, + 100, + 108, + 255, + 102, + 102, + 110, + 255, + 103, + 103, + 111, + 255, + 103, + 103, + 111, + 255, + 107, + 108, + 113, + 255, + 105, + 106, + 111, + 255, + 98, + 99, + 104, + 255, + 112, + 113, + 118, + 255, + 65, + 68, + 75, + 255, + 52, + 55, + 62, + 255, + 46, + 49, + 56, + 255, + 40, + 43, + 51, + 255, + 33, + 37, + 48, + 255, + 28, + 31, + 46, + 255, + 25, + 27, + 48, + 255, + 11, + 13, + 36, + 255, + 6, + 7, + 28, + 255, + 3, + 3, + 27, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 27, + 255, + 1, + 1, + 26, + 255, + 1, + 1, + 27, + 255, + 3, + 3, + 28, + 255, + 6, + 7, + 27, + 255, + 15, + 18, + 38, + 255, + 28, + 32, + 59, + 255, + 47, + 52, + 81, + 255, + 47, + 53, + 80, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 48, + 54, + 88, + 255, + 49, + 55, + 89, + 255, + 51, + 55, + 90, + 255, + 52, + 56, + 91, + 255, + 54, + 58, + 93, + 255, + 53, + 57, + 92, + 255, + 53, + 55, + 92, + 255, + 56, + 59, + 91, + 255, + 51, + 55, + 81, + 255, + 48, + 53, + 76, + 255, + 47, + 52, + 73, + 255, + 47, + 52, + 73, + 255, + 47, + 52, + 73, + 255, + 47, + 52, + 73, + 255, + 45, + 51, + 67, + 255, + 44, + 49, + 63, + 255, + 32, + 35, + 45, + 255, + 18, + 21, + 29, + 255, + 13, + 15, + 21, + 255, + 6, + 6, + 11, + 255, + 4, + 2, + 6, + 255, + 2, + 0, + 3, + 255, + 2, + 0, + 5, + 255, + 1, + 0, + 5, + 255, + 1, + 1, + 12, + 255, + 2, + 1, + 22, + 255, + 4, + 3, + 27, + 255, + 9, + 10, + 28, + 255, + 17, + 20, + 37, + 255, + 33, + 38, + 59, + 255, + 66, + 70, + 96, + 255, + 57, + 62, + 92, + 255, + 51, + 58, + 93, + 255, + 52, + 60, + 98, + 255, + 53, + 59, + 95, + 255, + 51, + 57, + 93, + 255, + 51, + 57, + 93, + 255, + 52, + 58, + 94, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 91, + 255, + 53, + 60, + 90, + 255, + 53, + 60, + 89, + 255, + 53, + 58, + 88, + 255, + 53, + 58, + 88, + 255, + 58, + 63, + 93, + 255, + 61, + 66, + 96, + 255, + 32, + 37, + 71, + 255, + 23, + 27, + 62, + 255, + 12, + 15, + 50, + 255, + 10, + 10, + 46, + 255, + 8, + 7, + 47, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 8, + 7, + 47, + 255, + 9, + 9, + 45, + 255, + 7, + 7, + 43, + 255, + 7, + 7, + 43, + 255, + 9, + 9, + 44, + 255, + 11, + 10, + 50, + 255, + 10, + 10, + 46, + 255, + 9, + 9, + 43, + 255, + 9, + 10, + 41, + 255, + 10, + 11, + 42, + 255, + 11, + 12, + 43, + 255, + 14, + 15, + 46, + 255, + 20, + 21, + 52, + 255, + 32, + 31, + 63, + 255, + 49, + 50, + 80, + 255, + 78, + 82, + 110, + 255, + 82, + 88, + 114, + 255, + 83, + 87, + 112, + 255, + 84, + 88, + 113, + 255, + 90, + 94, + 119, + 255, + 86, + 90, + 115, + 255, + 96, + 98, + 121, + 255, + 92, + 94, + 116, + 255, + 90, + 92, + 113, + 255, + 90, + 93, + 112, + 255, + 94, + 96, + 111, + 255, + 97, + 99, + 114, + 255, + 98, + 100, + 115, + 255, + 99, + 101, + 116, + 255, + 101, + 102, + 120, + 255, + 102, + 104, + 119, + 255, + 83, + 84, + 103, + 255, + 58, + 57, + 87, + 255, + 48, + 46, + 78, + 255, + 45, + 44, + 76, + 255, + 46, + 47, + 78, + 255, + 58, + 61, + 92, + 255, + 79, + 79, + 106, + 255, + 110, + 111, + 130, + 255, + 111, + 113, + 128, + 255, + 111, + 112, + 131, + 255, + 112, + 113, + 134, + 255, + 113, + 114, + 135, + 255, + 114, + 115, + 136, + 255, + 114, + 115, + 136, + 255, + 116, + 117, + 143, + 255, + 101, + 127, + 159, + 255, + 76, + 153, + 191, + 255, + 65, + 134, + 189, + 255, + 66, + 138, + 203, + 255, + 69, + 131, + 200, + 255, + 74, + 129, + 194, + 255, + 76, + 130, + 189, + 255, + 88, + 128, + 187, + 255, + 90, + 131, + 186, + 255, + 96, + 131, + 186, + 255, + 99, + 129, + 183, + 255, + 97, + 129, + 185, + 255, + 109, + 126, + 188, + 255, + 108, + 134, + 194, + 255, + 100, + 144, + 199, + 255, + 90, + 170, + 221, + 255, + 91, + 174, + 223, + 255, + 84, + 131, + 183, + 255, + 107, + 107, + 166, + 255, + 100, + 110, + 159, + 255, + 102, + 109, + 155, + 255, + 106, + 112, + 155, + 255, + 113, + 116, + 158, + 255, + 138, + 142, + 181, + 255, + 129, + 131, + 171, + 255, + 129, + 128, + 169, + 255, + 132, + 130, + 171, + 255, + 132, + 133, + 178, + 255, + 136, + 137, + 182, + 255, + 138, + 139, + 184, + 255, + 142, + 143, + 188, + 255, + 141, + 142, + 186, + 255, + 143, + 144, + 188, + 255, + 143, + 144, + 188, + 255, + 143, + 144, + 188, + 255, + 146, + 144, + 193, + 255, + 146, + 144, + 193, + 255, + 146, + 144, + 193, + 255, + 147, + 145, + 194, + 255, + 145, + 146, + 192, + 255, + 145, + 145, + 194, + 255, + 135, + 135, + 188, + 255, + 129, + 128, + 184, + 255, + 124, + 124, + 184, + 255, + 123, + 123, + 183, + 255, + 124, + 124, + 184, + 255, + 124, + 124, + 184, + 255, + 124, + 124, + 184, + 255, + 124, + 124, + 184, + 255, + 124, + 124, + 184, + 255, + 124, + 124, + 184, + 255, + 125, + 126, + 182, + 255, + 127, + 128, + 184, + 255, + 129, + 130, + 186, + 255, + 135, + 136, + 192, + 255, + 139, + 140, + 196, + 255, + 131, + 132, + 188, + 255, + 132, + 133, + 189, + 255, + 131, + 132, + 188, + 255, + 128, + 129, + 185, + 255, + 127, + 128, + 184, + 255, + 124, + 125, + 181, + 255, + 124, + 125, + 181, + 255, + 120, + 121, + 178, + 255, + 121, + 122, + 179, + 255, + 120, + 121, + 178, + 255, + 119, + 120, + 177, + 255, + 118, + 119, + 173, + 255, + 117, + 119, + 171, + 255, + 117, + 119, + 170, + 255, + 116, + 118, + 167, + 255, + 113, + 115, + 164, + 255, + 112, + 114, + 163, + 255, + 111, + 113, + 162, + 255, + 109, + 111, + 160, + 255, + 109, + 109, + 159, + 255, + 108, + 108, + 159, + 255, + 107, + 107, + 160, + 255, + 106, + 106, + 160, + 255, + 104, + 105, + 158, + 255, + 101, + 107, + 158, + 255, + 98, + 108, + 160, + 255, + 98, + 112, + 165, + 255, + 97, + 114, + 168, + 255, + 94, + 114, + 168, + 255, + 103, + 119, + 170, + 255, + 111, + 120, + 168, + 255, + 119, + 122, + 164, + 255, + 125, + 127, + 167, + 255, + 127, + 127, + 163, + 255, + 130, + 129, + 163, + 255, + 139, + 136, + 166, + 255, + 141, + 141, + 166, + 255, + 124, + 125, + 152, + 255, + 114, + 115, + 148, + 255, + 107, + 110, + 143, + 255, + 103, + 106, + 139, + 255, + 102, + 105, + 138, + 255, + 101, + 104, + 137, + 255, + 100, + 103, + 136, + 255, + 98, + 101, + 134, + 255, + 97, + 100, + 133, + 255, + 96, + 99, + 132, + 255, + 95, + 98, + 127, + 255, + 93, + 97, + 127, + 255, + 91, + 96, + 128, + 255, + 88, + 94, + 126, + 255, + 87, + 91, + 126, + 255, + 85, + 89, + 124, + 255, + 83, + 87, + 122, + 255, + 82, + 86, + 121, + 255, + 81, + 85, + 122, + 255, + 81, + 85, + 122, + 255, + 79, + 83, + 120, + 255, + 78, + 82, + 119, + 255, + 77, + 83, + 119, + 255, + 77, + 83, + 119, + 255, + 77, + 83, + 118, + 255, + 79, + 85, + 120, + 255, + 83, + 89, + 116, + 255, + 92, + 96, + 121, + 255, + 95, + 96, + 119, + 255, + 96, + 95, + 117, + 255, + 95, + 97, + 120, + 255, + 97, + 99, + 121, + 255, + 102, + 105, + 124, + 255, + 115, + 118, + 137, + 255, + 165, + 166, + 170, + 255, + 166, + 164, + 160, + 255, + 169, + 165, + 163, + 255, + 173, + 172, + 178, + 255, + 173, + 169, + 170, + 255, + 172, + 168, + 169, + 255, + 172, + 168, + 169, + 255, + 175, + 171, + 172, + 255, + 173, + 171, + 173, + 255, + 176, + 173, + 175, + 255, + 178, + 173, + 176, + 255, + 184, + 179, + 182, + 255, + 183, + 178, + 180, + 255, + 187, + 180, + 182, + 255, + 191, + 181, + 184, + 255, + 192, + 180, + 184, + 255, + 196, + 175, + 183, + 255, + 188, + 145, + 161, + 255, + 197, + 141, + 161, + 255, + 197, + 141, + 161, + 255, + 199, + 144, + 165, + 255, + 201, + 146, + 167, + 255, + 202, + 147, + 168, + 255, + 204, + 149, + 170, + 255, + 203, + 151, + 171, + 255, + 209, + 152, + 169, + 255, + 209, + 153, + 176, + 255, + 177, + 151, + 176, + 255, + 145, + 183, + 210, + 255, + 136, + 186, + 211, + 255, + 179, + 209, + 233, + 255, + 170, + 195, + 209, + 255, + 211, + 225, + 237, + 255, + 158, + 169, + 191, + 255, + 125, + 132, + 169, + 255, + 112, + 114, + 161, + 255, + 109, + 113, + 158, + 255, + 115, + 116, + 161, + 255, + 130, + 128, + 166, + 255, + 156, + 153, + 181, + 255, + 228, + 220, + 233, + 255, + 228, + 222, + 223, + 255, + 228, + 222, + 222, + 255, + 230, + 223, + 229, + 255, + 233, + 224, + 228, + 255, + 232, + 226, + 229, + 255, + 231, + 226, + 229, + 255, + 231, + 228, + 230, + 255, + 233, + 228, + 233, + 255, + 233, + 228, + 233, + 255, + 234, + 229, + 234, + 255, + 234, + 229, + 234, + 255, + 235, + 231, + 232, + 255, + 236, + 231, + 234, + 255, + 236, + 231, + 236, + 255, + 236, + 231, + 237, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 239, + 232, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 234, + 240, + 255, + 240, + 235, + 241, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 234, + 227, + 235, + 255, + 240, + 235, + 242, + 255, + 239, + 235, + 242, + 255, + 238, + 235, + 242, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 240, + 236, + 243, + 255, + 240, + 236, + 243, + 255, + 240, + 236, + 243, + 255, + 240, + 236, + 243, + 255, + 240, + 235, + 242, + 255, + 240, + 235, + 242, + 255, + 240, + 235, + 242, + 255, + 239, + 234, + 241, + 255, + 240, + 233, + 241, + 255, + 240, + 233, + 241, + 255, + 239, + 232, + 240, + 255, + 238, + 231, + 239, + 255, + 239, + 231, + 238, + 255, + 237, + 232, + 239, + 255, + 240, + 229, + 241, + 255, + 234, + 216, + 232, + 255, + 237, + 201, + 229, + 255, + 239, + 192, + 226, + 255, + 239, + 187, + 225, + 255, + 236, + 185, + 224, + 255, + 233, + 186, + 220, + 255, + 236, + 183, + 219, + 255, + 233, + 183, + 218, + 255, + 231, + 186, + 219, + 255, + 224, + 199, + 222, + 255, + 226, + 212, + 227, + 255, + 227, + 197, + 220, + 255, + 221, + 191, + 219, + 255, + 225, + 185, + 212, + 255, + 223, + 182, + 209, + 255, + 221, + 177, + 208, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 83, + 85, + 84, + 255, + 85, + 87, + 86, + 255, + 89, + 90, + 91, + 255, + 93, + 94, + 97, + 255, + 107, + 108, + 114, + 255, + 101, + 101, + 111, + 255, + 101, + 101, + 109, + 255, + 104, + 104, + 112, + 255, + 105, + 105, + 113, + 255, + 105, + 105, + 113, + 255, + 106, + 107, + 112, + 255, + 97, + 98, + 103, + 255, + 91, + 92, + 97, + 255, + 72, + 73, + 78, + 255, + 54, + 57, + 64, + 255, + 46, + 49, + 55, + 255, + 44, + 47, + 52, + 255, + 43, + 46, + 51, + 255, + 39, + 43, + 52, + 255, + 32, + 36, + 49, + 255, + 30, + 33, + 53, + 255, + 17, + 19, + 43, + 255, + 9, + 10, + 31, + 255, + 5, + 5, + 29, + 255, + 2, + 2, + 28, + 255, + 1, + 1, + 27, + 255, + 1, + 2, + 22, + 255, + 1, + 1, + 27, + 255, + 2, + 3, + 24, + 255, + 5, + 7, + 22, + 255, + 13, + 16, + 34, + 255, + 21, + 25, + 51, + 255, + 41, + 46, + 75, + 255, + 43, + 49, + 75, + 255, + 46, + 52, + 86, + 255, + 48, + 54, + 88, + 255, + 48, + 54, + 88, + 255, + 49, + 55, + 89, + 255, + 50, + 54, + 89, + 255, + 51, + 55, + 90, + 255, + 52, + 56, + 91, + 255, + 55, + 59, + 94, + 255, + 57, + 59, + 96, + 255, + 51, + 54, + 85, + 255, + 48, + 53, + 76, + 255, + 45, + 50, + 69, + 255, + 47, + 50, + 69, + 255, + 47, + 50, + 69, + 255, + 46, + 49, + 68, + 255, + 46, + 49, + 68, + 255, + 44, + 48, + 62, + 255, + 39, + 43, + 54, + 255, + 22, + 25, + 33, + 255, + 13, + 14, + 19, + 255, + 8, + 9, + 14, + 255, + 4, + 3, + 8, + 255, + 3, + 1, + 4, + 255, + 2, + 0, + 0, + 255, + 2, + 0, + 1, + 255, + 1, + 0, + 0, + 255, + 0, + 0, + 5, + 255, + 1, + 0, + 14, + 255, + 3, + 4, + 17, + 255, + 8, + 10, + 22, + 255, + 17, + 20, + 39, + 255, + 33, + 37, + 64, + 255, + 67, + 70, + 101, + 255, + 62, + 67, + 97, + 255, + 57, + 64, + 94, + 255, + 52, + 59, + 89, + 255, + 52, + 58, + 94, + 255, + 54, + 60, + 96, + 255, + 55, + 61, + 97, + 255, + 54, + 60, + 96, + 255, + 54, + 60, + 92, + 255, + 53, + 59, + 91, + 255, + 53, + 60, + 89, + 255, + 53, + 60, + 88, + 255, + 54, + 59, + 91, + 255, + 57, + 62, + 94, + 255, + 59, + 64, + 96, + 255, + 61, + 66, + 98, + 255, + 34, + 38, + 75, + 255, + 20, + 24, + 61, + 255, + 12, + 14, + 52, + 255, + 10, + 10, + 48, + 255, + 8, + 7, + 47, + 255, + 7, + 6, + 46, + 255, + 7, + 6, + 46, + 255, + 8, + 7, + 47, + 255, + 8, + 8, + 44, + 255, + 8, + 8, + 44, + 255, + 10, + 10, + 48, + 255, + 12, + 12, + 50, + 255, + 10, + 11, + 55, + 255, + 9, + 11, + 50, + 255, + 8, + 11, + 45, + 255, + 8, + 11, + 42, + 255, + 10, + 11, + 42, + 255, + 11, + 12, + 43, + 255, + 16, + 17, + 48, + 255, + 22, + 23, + 54, + 255, + 37, + 36, + 68, + 255, + 59, + 60, + 90, + 255, + 81, + 85, + 113, + 255, + 82, + 88, + 114, + 255, + 83, + 87, + 112, + 255, + 84, + 88, + 113, + 255, + 83, + 87, + 112, + 255, + 87, + 91, + 116, + 255, + 86, + 88, + 113, + 255, + 88, + 90, + 113, + 255, + 90, + 92, + 113, + 255, + 90, + 92, + 113, + 255, + 93, + 95, + 110, + 255, + 98, + 100, + 115, + 255, + 98, + 100, + 115, + 255, + 99, + 101, + 116, + 255, + 101, + 102, + 120, + 255, + 102, + 104, + 119, + 255, + 76, + 77, + 96, + 255, + 56, + 55, + 85, + 255, + 48, + 46, + 78, + 255, + 45, + 44, + 76, + 255, + 47, + 48, + 79, + 255, + 62, + 65, + 96, + 255, + 88, + 88, + 115, + 255, + 107, + 108, + 127, + 255, + 111, + 113, + 128, + 255, + 111, + 112, + 131, + 255, + 112, + 113, + 134, + 255, + 113, + 114, + 135, + 255, + 115, + 116, + 137, + 255, + 116, + 117, + 138, + 255, + 115, + 119, + 141, + 255, + 114, + 123, + 155, + 255, + 71, + 147, + 179, + 255, + 69, + 148, + 196, + 255, + 62, + 134, + 192, + 255, + 70, + 127, + 190, + 255, + 74, + 121, + 180, + 255, + 76, + 122, + 173, + 255, + 85, + 119, + 173, + 255, + 93, + 118, + 174, + 255, + 99, + 117, + 174, + 255, + 101, + 119, + 175, + 255, + 105, + 117, + 175, + 255, + 102, + 118, + 176, + 255, + 101, + 121, + 181, + 255, + 98, + 121, + 181, + 255, + 104, + 123, + 183, + 255, + 103, + 123, + 185, + 255, + 98, + 114, + 174, + 255, + 99, + 110, + 165, + 255, + 100, + 111, + 158, + 255, + 105, + 112, + 158, + 255, + 112, + 118, + 160, + 255, + 124, + 127, + 168, + 255, + 131, + 133, + 172, + 255, + 135, + 136, + 175, + 255, + 140, + 138, + 178, + 255, + 143, + 141, + 181, + 255, + 133, + 136, + 181, + 255, + 135, + 138, + 183, + 255, + 140, + 143, + 188, + 255, + 140, + 143, + 188, + 255, + 144, + 145, + 189, + 255, + 145, + 146, + 190, + 255, + 145, + 146, + 190, + 255, + 145, + 146, + 190, + 255, + 147, + 145, + 194, + 255, + 147, + 145, + 194, + 255, + 148, + 146, + 195, + 255, + 149, + 147, + 196, + 255, + 146, + 147, + 194, + 255, + 146, + 146, + 196, + 255, + 134, + 134, + 187, + 255, + 131, + 130, + 187, + 255, + 127, + 127, + 187, + 255, + 126, + 126, + 186, + 255, + 125, + 125, + 185, + 255, + 125, + 125, + 185, + 255, + 126, + 126, + 186, + 255, + 126, + 126, + 186, + 255, + 126, + 126, + 186, + 255, + 126, + 126, + 186, + 255, + 128, + 129, + 185, + 255, + 130, + 131, + 187, + 255, + 131, + 132, + 188, + 255, + 144, + 145, + 201, + 255, + 143, + 144, + 200, + 255, + 142, + 143, + 199, + 255, + 140, + 141, + 197, + 255, + 141, + 142, + 198, + 255, + 141, + 142, + 198, + 255, + 132, + 133, + 189, + 255, + 127, + 128, + 184, + 255, + 125, + 126, + 182, + 255, + 122, + 123, + 180, + 255, + 123, + 124, + 181, + 255, + 121, + 122, + 179, + 255, + 120, + 121, + 178, + 255, + 122, + 123, + 177, + 255, + 121, + 123, + 175, + 255, + 122, + 124, + 175, + 255, + 118, + 120, + 169, + 255, + 114, + 117, + 168, + 255, + 115, + 118, + 169, + 255, + 113, + 116, + 167, + 255, + 111, + 114, + 165, + 255, + 112, + 112, + 163, + 255, + 111, + 111, + 163, + 255, + 110, + 110, + 164, + 255, + 109, + 108, + 165, + 255, + 106, + 109, + 163, + 255, + 102, + 110, + 164, + 255, + 98, + 112, + 165, + 255, + 106, + 124, + 178, + 255, + 96, + 123, + 185, + 255, + 97, + 122, + 181, + 255, + 106, + 120, + 173, + 255, + 118, + 124, + 169, + 255, + 127, + 129, + 171, + 255, + 126, + 126, + 167, + 255, + 130, + 128, + 165, + 255, + 135, + 134, + 168, + 255, + 146, + 142, + 169, + 255, + 145, + 143, + 167, + 255, + 136, + 136, + 163, + 255, + 118, + 118, + 152, + 255, + 109, + 112, + 145, + 255, + 106, + 109, + 142, + 255, + 103, + 106, + 139, + 255, + 102, + 105, + 138, + 255, + 101, + 104, + 137, + 255, + 99, + 102, + 135, + 255, + 98, + 101, + 134, + 255, + 97, + 100, + 133, + 255, + 97, + 98, + 126, + 255, + 95, + 98, + 127, + 255, + 93, + 98, + 128, + 255, + 91, + 96, + 128, + 255, + 90, + 94, + 129, + 255, + 88, + 92, + 127, + 255, + 85, + 89, + 124, + 255, + 84, + 88, + 123, + 255, + 83, + 87, + 124, + 255, + 81, + 85, + 122, + 255, + 80, + 84, + 121, + 255, + 79, + 83, + 120, + 255, + 77, + 83, + 119, + 255, + 77, + 83, + 119, + 255, + 77, + 82, + 120, + 255, + 79, + 84, + 122, + 255, + 81, + 89, + 119, + 255, + 89, + 93, + 120, + 255, + 96, + 96, + 121, + 255, + 98, + 96, + 117, + 255, + 94, + 98, + 123, + 255, + 96, + 101, + 123, + 255, + 100, + 105, + 125, + 255, + 116, + 121, + 141, + 255, + 166, + 169, + 171, + 255, + 166, + 164, + 158, + 255, + 168, + 163, + 160, + 255, + 169, + 165, + 171, + 255, + 169, + 165, + 166, + 255, + 171, + 167, + 168, + 255, + 175, + 171, + 172, + 255, + 172, + 168, + 169, + 255, + 159, + 165, + 171, + 255, + 160, + 165, + 171, + 255, + 167, + 167, + 175, + 255, + 177, + 176, + 184, + 255, + 180, + 178, + 179, + 255, + 181, + 170, + 174, + 255, + 183, + 160, + 168, + 255, + 179, + 149, + 159, + 255, + 179, + 139, + 155, + 255, + 193, + 138, + 159, + 255, + 196, + 137, + 159, + 255, + 195, + 142, + 162, + 255, + 198, + 143, + 164, + 255, + 200, + 145, + 166, + 255, + 201, + 146, + 167, + 255, + 203, + 148, + 169, + 255, + 201, + 151, + 171, + 255, + 208, + 151, + 167, + 255, + 206, + 152, + 176, + 255, + 160, + 144, + 170, + 255, + 143, + 180, + 215, + 255, + 130, + 172, + 202, + 255, + 150, + 171, + 198, + 255, + 197, + 218, + 236, + 255, + 192, + 207, + 228, + 255, + 133, + 144, + 173, + 255, + 115, + 123, + 161, + 255, + 109, + 115, + 159, + 255, + 109, + 113, + 160, + 255, + 115, + 116, + 162, + 255, + 127, + 125, + 163, + 255, + 151, + 148, + 178, + 255, + 203, + 195, + 211, + 255, + 230, + 224, + 226, + 255, + 227, + 221, + 221, + 255, + 229, + 222, + 229, + 255, + 233, + 224, + 229, + 255, + 232, + 226, + 230, + 255, + 231, + 226, + 230, + 255, + 231, + 228, + 231, + 255, + 233, + 228, + 234, + 255, + 233, + 228, + 234, + 255, + 234, + 229, + 235, + 255, + 234, + 229, + 235, + 255, + 235, + 231, + 232, + 255, + 236, + 231, + 234, + 255, + 236, + 231, + 236, + 255, + 236, + 231, + 237, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 238, + 231, + 238, + 255, + 239, + 232, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 234, + 240, + 255, + 240, + 235, + 241, + 255, + 240, + 235, + 241, + 255, + 236, + 231, + 237, + 255, + 234, + 227, + 235, + 255, + 241, + 236, + 243, + 255, + 241, + 237, + 244, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 239, + 236, + 243, + 255, + 241, + 236, + 243, + 255, + 241, + 236, + 243, + 255, + 241, + 236, + 243, + 255, + 240, + 235, + 242, + 255, + 240, + 232, + 243, + 255, + 240, + 232, + 243, + 255, + 240, + 232, + 243, + 255, + 239, + 231, + 242, + 255, + 240, + 232, + 239, + 255, + 238, + 233, + 240, + 255, + 241, + 230, + 242, + 255, + 233, + 215, + 231, + 255, + 237, + 201, + 231, + 255, + 239, + 192, + 227, + 255, + 240, + 188, + 227, + 255, + 237, + 186, + 225, + 255, + 234, + 187, + 221, + 255, + 236, + 185, + 220, + 255, + 236, + 183, + 219, + 255, + 231, + 183, + 217, + 255, + 228, + 187, + 213, + 255, + 221, + 187, + 209, + 255, + 230, + 184, + 214, + 255, + 224, + 183, + 218, + 255, + 223, + 180, + 208, + 255, + 220, + 177, + 207, + 255, + 221, + 176, + 209, + 255, + 83, + 85, + 84, + 255, + 83, + 84, + 85, + 255, + 83, + 84, + 86, + 255, + 85, + 86, + 90, + 255, + 88, + 89, + 91, + 255, + 92, + 93, + 96, + 255, + 102, + 103, + 107, + 255, + 100, + 101, + 106, + 255, + 101, + 101, + 109, + 255, + 104, + 105, + 110, + 255, + 105, + 106, + 110, + 255, + 105, + 106, + 109, + 255, + 100, + 101, + 105, + 255, + 85, + 87, + 92, + 255, + 68, + 71, + 78, + 255, + 57, + 61, + 70, + 255, + 48, + 51, + 60, + 255, + 41, + 43, + 54, + 255, + 38, + 40, + 53, + 255, + 35, + 37, + 50, + 255, + 33, + 36, + 51, + 255, + 32, + 35, + 50, + 255, + 28, + 30, + 52, + 255, + 22, + 23, + 52, + 255, + 9, + 11, + 36, + 255, + 3, + 5, + 30, + 255, + 2, + 4, + 29, + 255, + 0, + 2, + 27, + 255, + 1, + 2, + 23, + 255, + 0, + 1, + 21, + 255, + 3, + 4, + 22, + 255, + 3, + 4, + 22, + 255, + 12, + 13, + 32, + 255, + 20, + 23, + 47, + 255, + 37, + 43, + 74, + 255, + 44, + 51, + 85, + 255, + 49, + 55, + 89, + 255, + 50, + 56, + 90, + 255, + 51, + 57, + 91, + 255, + 50, + 56, + 90, + 255, + 50, + 56, + 90, + 255, + 50, + 56, + 90, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 51, + 58, + 87, + 255, + 48, + 54, + 80, + 255, + 47, + 52, + 75, + 255, + 47, + 49, + 70, + 255, + 46, + 49, + 68, + 255, + 45, + 48, + 67, + 255, + 45, + 48, + 67, + 255, + 45, + 48, + 67, + 255, + 45, + 48, + 68, + 255, + 26, + 29, + 37, + 255, + 16, + 18, + 23, + 255, + 9, + 10, + 15, + 255, + 3, + 7, + 6, + 255, + 0, + 3, + 2, + 255, + 1, + 1, + 1, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 0, + 0, + 1, + 255, + 0, + 0, + 3, + 255, + 2, + 1, + 6, + 255, + 4, + 4, + 13, + 255, + 9, + 10, + 23, + 255, + 18, + 19, + 38, + 255, + 35, + 37, + 60, + 255, + 65, + 70, + 99, + 255, + 65, + 71, + 97, + 255, + 61, + 66, + 95, + 255, + 54, + 58, + 94, + 255, + 52, + 58, + 92, + 255, + 52, + 58, + 92, + 255, + 51, + 57, + 91, + 255, + 52, + 58, + 92, + 255, + 55, + 60, + 90, + 255, + 54, + 59, + 89, + 255, + 53, + 58, + 88, + 255, + 54, + 59, + 89, + 255, + 55, + 59, + 94, + 255, + 61, + 66, + 100, + 255, + 59, + 67, + 100, + 255, + 58, + 67, + 100, + 255, + 32, + 37, + 69, + 255, + 22, + 26, + 61, + 255, + 12, + 14, + 52, + 255, + 9, + 8, + 48, + 255, + 4, + 8, + 46, + 255, + 5, + 7, + 46, + 255, + 9, + 8, + 48, + 255, + 9, + 7, + 47, + 255, + 9, + 9, + 47, + 255, + 8, + 8, + 46, + 255, + 11, + 10, + 52, + 255, + 12, + 11, + 53, + 255, + 12, + 11, + 55, + 255, + 12, + 11, + 54, + 255, + 11, + 10, + 51, + 255, + 11, + 10, + 50, + 255, + 10, + 10, + 44, + 255, + 12, + 13, + 44, + 255, + 16, + 17, + 47, + 255, + 23, + 24, + 54, + 255, + 35, + 36, + 66, + 255, + 73, + 74, + 102, + 255, + 82, + 83, + 110, + 255, + 85, + 87, + 112, + 255, + 84, + 88, + 113, + 255, + 84, + 88, + 113, + 255, + 84, + 88, + 113, + 255, + 85, + 89, + 114, + 255, + 85, + 90, + 113, + 255, + 87, + 92, + 114, + 255, + 85, + 90, + 110, + 255, + 87, + 92, + 111, + 255, + 89, + 94, + 113, + 255, + 96, + 99, + 118, + 255, + 100, + 101, + 121, + 255, + 101, + 100, + 121, + 255, + 103, + 105, + 120, + 255, + 101, + 102, + 123, + 255, + 74, + 74, + 99, + 255, + 54, + 53, + 83, + 255, + 47, + 44, + 79, + 255, + 46, + 45, + 79, + 255, + 48, + 48, + 82, + 255, + 63, + 66, + 99, + 255, + 97, + 97, + 122, + 255, + 110, + 111, + 130, + 255, + 111, + 112, + 130, + 255, + 112, + 113, + 134, + 255, + 112, + 113, + 133, + 255, + 114, + 115, + 135, + 255, + 115, + 116, + 136, + 255, + 116, + 117, + 137, + 255, + 115, + 117, + 139, + 255, + 119, + 123, + 144, + 255, + 97, + 130, + 163, + 255, + 71, + 153, + 191, + 255, + 63, + 134, + 191, + 255, + 67, + 124, + 191, + 255, + 73, + 117, + 181, + 255, + 80, + 116, + 169, + 255, + 87, + 114, + 164, + 255, + 98, + 116, + 161, + 255, + 106, + 117, + 162, + 255, + 108, + 119, + 165, + 255, + 107, + 117, + 163, + 255, + 103, + 113, + 166, + 255, + 102, + 113, + 169, + 255, + 100, + 113, + 166, + 255, + 97, + 112, + 167, + 255, + 98, + 111, + 165, + 255, + 99, + 110, + 163, + 255, + 99, + 109, + 162, + 255, + 107, + 109, + 158, + 255, + 111, + 114, + 159, + 255, + 123, + 125, + 167, + 255, + 140, + 139, + 180, + 255, + 138, + 140, + 178, + 255, + 141, + 141, + 179, + 255, + 142, + 140, + 179, + 255, + 144, + 140, + 180, + 255, + 141, + 138, + 181, + 255, + 139, + 138, + 182, + 255, + 139, + 140, + 185, + 255, + 142, + 145, + 190, + 255, + 147, + 144, + 191, + 255, + 147, + 145, + 192, + 255, + 145, + 146, + 192, + 255, + 145, + 148, + 193, + 255, + 146, + 147, + 195, + 255, + 146, + 147, + 195, + 255, + 147, + 148, + 196, + 255, + 148, + 149, + 197, + 255, + 148, + 149, + 197, + 255, + 148, + 148, + 200, + 255, + 135, + 134, + 190, + 255, + 130, + 129, + 187, + 255, + 127, + 127, + 187, + 255, + 126, + 126, + 186, + 255, + 127, + 127, + 187, + 255, + 127, + 127, + 187, + 255, + 128, + 127, + 187, + 255, + 128, + 127, + 187, + 255, + 128, + 127, + 187, + 255, + 128, + 127, + 187, + 255, + 130, + 129, + 189, + 255, + 134, + 133, + 192, + 255, + 141, + 140, + 197, + 255, + 147, + 146, + 203, + 255, + 146, + 145, + 202, + 255, + 145, + 144, + 201, + 255, + 144, + 143, + 200, + 255, + 143, + 142, + 199, + 255, + 140, + 143, + 198, + 255, + 140, + 141, + 198, + 255, + 130, + 130, + 190, + 255, + 127, + 126, + 186, + 255, + 125, + 125, + 185, + 255, + 124, + 125, + 183, + 255, + 123, + 124, + 180, + 255, + 123, + 124, + 180, + 255, + 124, + 125, + 181, + 255, + 131, + 132, + 186, + 255, + 125, + 127, + 179, + 255, + 124, + 126, + 177, + 255, + 118, + 119, + 175, + 255, + 116, + 117, + 171, + 255, + 116, + 118, + 170, + 255, + 113, + 115, + 166, + 255, + 114, + 115, + 171, + 255, + 112, + 113, + 167, + 255, + 110, + 112, + 164, + 255, + 109, + 111, + 162, + 255, + 108, + 109, + 166, + 255, + 106, + 109, + 162, + 255, + 101, + 113, + 165, + 255, + 98, + 119, + 175, + 255, + 93, + 127, + 190, + 255, + 98, + 154, + 213, + 255, + 110, + 128, + 175, + 255, + 121, + 125, + 169, + 255, + 127, + 130, + 172, + 255, + 127, + 129, + 167, + 255, + 132, + 132, + 165, + 255, + 143, + 142, + 173, + 255, + 147, + 145, + 169, + 255, + 144, + 143, + 169, + 255, + 139, + 139, + 166, + 255, + 119, + 120, + 148, + 255, + 110, + 113, + 146, + 255, + 107, + 110, + 143, + 255, + 105, + 108, + 141, + 255, + 103, + 106, + 139, + 255, + 103, + 106, + 139, + 255, + 101, + 104, + 137, + 255, + 99, + 102, + 135, + 255, + 98, + 101, + 134, + 255, + 96, + 99, + 130, + 255, + 95, + 98, + 129, + 255, + 95, + 98, + 129, + 255, + 93, + 96, + 127, + 255, + 92, + 95, + 126, + 255, + 89, + 94, + 126, + 255, + 86, + 92, + 126, + 255, + 83, + 89, + 125, + 255, + 83, + 87, + 124, + 255, + 82, + 86, + 123, + 255, + 81, + 85, + 122, + 255, + 80, + 84, + 121, + 255, + 80, + 82, + 120, + 255, + 78, + 82, + 119, + 255, + 78, + 84, + 118, + 255, + 78, + 84, + 116, + 255, + 81, + 86, + 118, + 255, + 85, + 90, + 119, + 255, + 94, + 98, + 123, + 255, + 95, + 97, + 121, + 255, + 96, + 98, + 121, + 255, + 98, + 100, + 125, + 255, + 103, + 105, + 127, + 255, + 119, + 122, + 139, + 255, + 164, + 162, + 165, + 255, + 165, + 162, + 163, + 255, + 167, + 163, + 163, + 255, + 169, + 163, + 163, + 255, + 170, + 164, + 166, + 255, + 168, + 166, + 168, + 255, + 150, + 159, + 166, + 255, + 152, + 173, + 185, + 255, + 148, + 173, + 185, + 255, + 155, + 177, + 190, + 255, + 163, + 176, + 190, + 255, + 144, + 146, + 161, + 255, + 141, + 131, + 146, + 255, + 137, + 124, + 142, + 255, + 136, + 118, + 141, + 255, + 137, + 116, + 142, + 255, + 135, + 111, + 138, + 255, + 137, + 111, + 139, + 255, + 143, + 112, + 142, + 255, + 149, + 115, + 146, + 255, + 156, + 117, + 146, + 255, + 166, + 126, + 152, + 255, + 181, + 138, + 159, + 255, + 192, + 146, + 165, + 255, + 201, + 152, + 173, + 255, + 206, + 150, + 171, + 255, + 202, + 152, + 181, + 255, + 154, + 145, + 173, + 255, + 134, + 148, + 185, + 255, + 125, + 145, + 180, + 255, + 139, + 160, + 191, + 255, + 162, + 181, + 205, + 255, + 133, + 146, + 180, + 255, + 124, + 130, + 170, + 255, + 113, + 118, + 160, + 255, + 105, + 112, + 156, + 255, + 107, + 111, + 158, + 255, + 113, + 114, + 158, + 255, + 127, + 125, + 164, + 255, + 148, + 144, + 180, + 255, + 180, + 175, + 196, + 255, + 225, + 217, + 220, + 255, + 229, + 219, + 227, + 255, + 227, + 223, + 223, + 255, + 230, + 224, + 228, + 255, + 231, + 225, + 229, + 255, + 231, + 225, + 229, + 255, + 232, + 226, + 230, + 255, + 233, + 228, + 232, + 255, + 234, + 229, + 233, + 255, + 234, + 229, + 233, + 255, + 234, + 229, + 233, + 255, + 238, + 229, + 234, + 255, + 236, + 229, + 235, + 255, + 236, + 231, + 237, + 255, + 235, + 231, + 238, + 255, + 239, + 229, + 237, + 255, + 238, + 231, + 238, + 255, + 237, + 232, + 238, + 255, + 236, + 232, + 238, + 255, + 238, + 233, + 239, + 255, + 238, + 233, + 239, + 255, + 239, + 234, + 240, + 255, + 240, + 235, + 241, + 255, + 238, + 234, + 239, + 255, + 239, + 234, + 240, + 255, + 241, + 234, + 242, + 255, + 237, + 227, + 238, + 255, + 234, + 225, + 238, + 255, + 238, + 236, + 241, + 255, + 238, + 237, + 242, + 255, + 240, + 235, + 245, + 255, + 240, + 238, + 243, + 255, + 239, + 236, + 243, + 255, + 240, + 237, + 246, + 255, + 240, + 237, + 248, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 244, + 255, + 240, + 237, + 246, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 245, + 255, + 239, + 236, + 243, + 255, + 238, + 235, + 242, + 255, + 238, + 235, + 242, + 255, + 238, + 235, + 242, + 255, + 241, + 233, + 242, + 255, + 235, + 234, + 239, + 255, + 242, + 232, + 242, + 255, + 236, + 212, + 231, + 255, + 240, + 199, + 231, + 255, + 239, + 194, + 227, + 255, + 238, + 189, + 226, + 255, + 238, + 186, + 225, + 255, + 238, + 186, + 225, + 255, + 237, + 185, + 223, + 255, + 236, + 184, + 220, + 255, + 234, + 183, + 217, + 255, + 231, + 181, + 218, + 255, + 231, + 181, + 218, + 255, + 230, + 180, + 217, + 255, + 228, + 178, + 215, + 255, + 227, + 177, + 212, + 255, + 225, + 175, + 210, + 255, + 223, + 173, + 208, + 255 + ], + "totalPixels": 46875 + }, + "paintedMapPacked": { + "width": 375, + "height": 125, + "data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + } +} \ No newline at end of file diff --git a/Extension/old ver.js b/Extension/old ver.js new file mode 100644 index 0000000..7cef737 --- /dev/null +++ b/Extension/old ver.js @@ -0,0 +1,8388 @@ +// ==UserScript== +// @name WPlaceBot +// @namespace http://tampermonkey.net/ +// @version 2025-08-08.3 +// @description Bot +// @author Wbot +// @match https://wplace.live/* +// @grant none +// @icon +// ==/UserScript== +localStorage.removeItem("lp"); +; (async () => { + // CONFIGURATION CONSTANTS + const CONFIG = { + COOLDOWN_DEFAULT: 31000, + TRANSPARENCY_THRESHOLD: 100, + WHITE_THRESHOLD: 250, + LOG_INTERVAL: 10, + PAINTING_SPEED: { + MIN: 1, // Minimum 1 pixel batch size + MAX: 1000, // Maximum 1000 pixels batch size + DEFAULT: 5, // Default 5 pixels batch size + }, + BATCH_MODE: 'normal', // "normal" or "random" - default to normal + RANDOM_BATCH_RANGE: { + MIN: 3, // Random range minimum + MAX: 20, // Random range maximum + }, + PAINTING_SPEED_ENABLED: true, // On by default + AUTO_CAPTCHA_ENABLED: true, // Turnstile generator enabled by default + TOKEN_SOURCE: 'generator', // "generator", "manual", or "hybrid" - default to generator + COOLDOWN_CHARGE_THRESHOLD: 1, // Default wait threshold + // Desktop Notifications (defaults) + NOTIFICATIONS: { + ENABLED: false, + ON_CHARGES_REACHED: true, + ONLY_WHEN_UNFOCUSED: true, + REPEAT_MINUTES: 5, // repeat reminder while threshold condition holds + }, + OVERLAY: { + OPACITY_DEFAULT: 0.6, + BLUE_MARBLE_DEFAULT: false, + ditheringEnabled: false, + }, // --- START: Color data from colour-converter.js --- + // New color structure with proper ID mapping + COLOR_MAP: { + 0: { id: 1, name: 'Black', rgb: { r: 0, g: 0, b: 0 } }, + 1: { id: 2, name: 'Dark Gray', rgb: { r: 60, g: 60, b: 60 } }, + 2: { id: 3, name: 'Gray', rgb: { r: 120, g: 120, b: 120 } }, + 3: { id: 4, name: 'Light Gray', rgb: { r: 210, g: 210, b: 210 } }, + 4: { id: 5, name: 'White', rgb: { r: 255, g: 255, b: 255 } }, + 5: { id: 6, name: 'Deep Red', rgb: { r: 96, g: 0, b: 24 } }, + 6: { id: 7, name: 'Red', rgb: { r: 237, g: 28, b: 36 } }, + 7: { id: 8, name: 'Orange', rgb: { r: 255, g: 127, b: 39 } }, + 8: { id: 9, name: 'Gold', rgb: { r: 246, g: 170, b: 9 } }, + 9: { id: 10, name: 'Yellow', rgb: { r: 249, g: 221, b: 59 } }, + 10: { id: 11, name: 'Light Yellow', rgb: { r: 255, g: 250, b: 188 } }, + 11: { id: 12, name: 'Dark Green', rgb: { r: 14, g: 185, b: 104 } }, + 12: { id: 13, name: 'Green', rgb: { r: 19, g: 230, b: 123 } }, + 13: { id: 14, name: 'Light Green', rgb: { r: 135, g: 255, b: 94 } }, + 14: { id: 15, name: 'Dark Teal', rgb: { r: 12, g: 129, b: 110 } }, + 15: { id: 16, name: 'Teal', rgb: { r: 16, g: 174, b: 166 } }, + 16: { id: 17, name: 'Light Teal', rgb: { r: 19, g: 225, b: 190 } }, + 17: { id: 20, name: 'Cyan', rgb: { r: 96, g: 247, b: 242 } }, + 18: { id: 44, name: 'Light Cyan', rgb: { r: 187, g: 250, b: 242 } }, + 19: { id: 18, name: 'Dark Blue', rgb: { r: 40, g: 80, b: 158 } }, + 20: { id: 19, name: 'Blue', rgb: { r: 64, g: 147, b: 228 } }, + 21: { id: 21, name: 'Indigo', rgb: { r: 107, g: 80, b: 246 } }, + 22: { id: 22, name: 'Light Indigo', rgb: { r: 153, g: 177, b: 251 } }, + 23: { id: 23, name: 'Dark Purple', rgb: { r: 120, g: 12, b: 153 } }, + 24: { id: 24, name: 'Purple', rgb: { r: 170, g: 56, b: 185 } }, + 25: { id: 25, name: 'Light Purple', rgb: { r: 224, g: 159, b: 249 } }, + 26: { id: 26, name: 'Dark Pink', rgb: { r: 203, g: 0, b: 122 } }, + 27: { id: 27, name: 'Pink', rgb: { r: 236, g: 31, b: 128 } }, + 28: { id: 28, name: 'Light Pink', rgb: { r: 243, g: 141, b: 169 } }, + 29: { id: 29, name: 'Dark Brown', rgb: { r: 104, g: 70, b: 52 } }, + 30: { id: 30, name: 'Brown', rgb: { r: 149, g: 104, b: 42 } }, + 31: { id: 31, name: 'Beige', rgb: { r: 248, g: 178, b: 119 } }, + 32: { id: 52, name: 'Light Beige', rgb: { r: 255, g: 197, b: 165 } }, + 33: { id: 32, name: 'Medium Gray', rgb: { r: 170, g: 170, b: 170 } }, + 34: { id: 33, name: 'Dark Red', rgb: { r: 165, g: 14, b: 30 } }, + 35: { id: 34, name: 'Light Red', rgb: { r: 250, g: 128, b: 114 } }, + 36: { id: 35, name: 'Dark Orange', rgb: { r: 228, g: 92, b: 26 } }, + 37: { id: 37, name: 'Dark Goldenrod', rgb: { r: 156, g: 132, b: 49 } }, + 38: { id: 38, name: 'Goldenrod', rgb: { r: 197, g: 173, b: 49 } }, + 39: { id: 39, name: 'Light Goldenrod', rgb: { r: 232, g: 212, b: 95 } }, + 40: { id: 40, name: 'Dark Olive', rgb: { r: 74, g: 107, b: 58 } }, + 41: { id: 41, name: 'Olive', rgb: { r: 90, g: 148, b: 74 } }, + 42: { id: 42, name: 'Light Olive', rgb: { r: 132, g: 197, b: 115 } }, + 43: { id: 43, name: 'Dark Cyan', rgb: { r: 15, g: 121, b: 159 } }, + 44: { id: 45, name: 'Light Blue', rgb: { r: 125, g: 199, b: 255 } }, + 45: { id: 46, name: 'Dark Indigo', rgb: { r: 77, g: 49, b: 184 } }, + 46: { id: 47, name: 'Dark Slate Blue', rgb: { r: 74, g: 66, b: 132 } }, + 47: { id: 48, name: 'Slate Blue', rgb: { r: 122, g: 113, b: 196 } }, + 48: { id: 49, name: 'Light Slate Blue', rgb: { r: 181, g: 174, b: 241 } }, + 49: { id: 53, name: 'Dark Peach', rgb: { r: 155, g: 82, b: 73 } }, + 50: { id: 54, name: 'Peach', rgb: { r: 209, g: 128, b: 120 } }, + 51: { id: 55, name: 'Light Peach', rgb: { r: 250, g: 182, b: 164 } }, + 52: { id: 50, name: 'Light Brown', rgb: { r: 219, g: 164, b: 99 } }, + 53: { id: 56, name: 'Dark Tan', rgb: { r: 123, g: 99, b: 82 } }, + 54: { id: 57, name: 'Tan', rgb: { r: 156, g: 132, b: 107 } }, + 55: { id: 36, name: 'Light Tan', rgb: { r: 214, g: 181, b: 148 } }, + 56: { id: 51, name: 'Dark Beige', rgb: { r: 209, g: 128, b: 81 } }, + 57: { id: 61, name: 'Dark Stone', rgb: { r: 109, g: 100, b: 63 } }, + 58: { id: 62, name: 'Stone', rgb: { r: 148, g: 140, b: 107 } }, + 59: { id: 63, name: 'Light Stone', rgb: { r: 205, g: 197, b: 158 } }, + 60: { id: 58, name: 'Dark Slate', rgb: { r: 51, g: 57, b: 65 } }, + 61: { id: 59, name: 'Slate', rgb: { r: 109, g: 117, b: 141 } }, + 62: { id: 60, name: 'Light Slate', rgb: { r: 179, g: 185, b: 209 } }, + 63: { id: 0, name: 'Transparent', rgb: null }, + }, // --- END: Color data --- + // Optimized CSS Classes for reuse + CSS_CLASSES: { + BUTTON_PRIMARY: ` + background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); + color: white; border: none; border-radius: 8px; padding: 10px 16px; + cursor: pointer; font-weight: 500; transition: all 0.3s ease; + display: flex; align-items: center; gap: 8px; + `, + BUTTON_SECONDARY: ` + background: rgba(255,255,255,0.1); color: white; + border: 1px solid rgba(255,255,255,0.2); border-radius: 8px; + padding: 8px 12px; cursor: pointer; transition: all 0.3s ease; + `, + MODERN_CARD: ` + background: rgba(255,255,255,0.1); border-radius: 12px; + padding: 18px; border: 1px solid rgba(255,255,255,0.1); + backdrop-filter: blur(5px); + `, + GRADIENT_TEXT: ` + background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); + -webkit-background-clip: text; -webkit-text-fill-color: transparent; + background-clip: text; font-weight: bold; + `, + }, + THEMES: { + 'Classic Autobot': { + primary: '#000000', + secondary: '#111111', + accent: '#222222', + text: '#ffffff', + highlight: '#775ce3', + success: '#00ff00', + error: '#ff0000', + warning: '#ffaa00', + fontFamily: "'Segoe UI', Roboto, sans-serif", + borderRadius: '12px', + borderStyle: 'solid', + borderWidth: '1px', + boxShadow: '0 8px 32px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.1)', + backdropFilter: 'blur(10px)', + animations: { + glow: false, + scanline: false, + 'pixel-blink': false, + }, + }, + 'Classic Light': { + primary: '#ffffff', + secondary: '#f8f9fa', + accent: '#e9ecef', + text: '#212529', + highlight: '#6f42c1', + success: '#28a745', + error: '#dc3545', + warning: '#ffc107', + fontFamily: "'Segoe UI', Roboto, sans-serif", + borderRadius: '12px', + borderStyle: 'solid', + borderWidth: '1px', + boxShadow: '0 8px 32px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.08)', + backdropFilter: 'blur(10px)', + animations: { + glow: false, + scanline: false, + 'pixel-blink': false, + }, + }, + 'Neon Retro': { + primary: '#1a1a2e', + secondary: '#16213e', + accent: '#0f3460', + text: '#00ff41', + highlight: '#ff6b35', + success: '#39ff14', + error: '#ff073a', + warning: '#ffff00', + neon: '#00ffff', + purple: '#bf00ff', + pink: '#ff1493', + fontFamily: "'Press Start 2P', monospace", + borderRadius: '0', + borderStyle: 'solid', + borderWidth: '3px', + boxShadow: '0 0 20px rgba(0, 255, 65, 0.3), inset 0 0 20px rgba(0, 255, 65, 0.1)', + backdropFilter: 'none', + animations: { + glow: true, + scanline: true, + 'pixel-blink': true, + }, + }, + 'Acrylic': { + primary: '#00000080', + secondary: '#00000040', + accent: 'rgba(0,0,0,0.75)', + text: '#ffffff', + highlight: '#ffffff', + success: '#00e500', + error: '#e50000', + warning: '#e5e500', + fontFamily: "'Inter', 'Apple Color Emoji'", + borderRadius: '10px', + borderStyle: 'solid', + borderWidth: '0px', + boxShadow: 'none', + backdropFilter: 'blur(20px)', + animations: { + glow: false, + scanline: false, + 'pixel-blink': false, + }, + }, + }, + currentTheme: 'Classic Autobot', + PAINT_UNAVAILABLE: true, + COORDINATE_MODE: 'rows', + COORDINATE_DIRECTION: 'top-left', + COORDINATE_SNAKE: true, + COORDINATE_BLOCK_WIDTH: 6, + COORDINATE_BLOCK_HEIGHT: 2, + autoSwap: true, + }; + + const getCurrentTheme = () => CONFIG.THEMES[CONFIG.currentTheme]; + + const switchTheme = (themeName) => { + if (CONFIG.THEMES[themeName]) { + CONFIG.currentTheme = themeName; + saveThemePreference(); + + // APPLY THEME VARS/CLASS (new) + applyTheme(); + + // Recreate UI (kept for now) + createUI(); + } + }; + + // Add this helper (place it after getCurrentTheme/switchTheme definitions) + function applyTheme() { + const theme = getCurrentTheme(); + console.group('%c๐ŸŽจ Applying Theme in Auto-Image Script', 'color: #8b5cf6; font-weight: bold;'); + console.log(`%c๐ŸŽฏ Target theme: ${CONFIG.currentTheme}`, 'color: #8b5cf6;'); + + // Toggle theme class on documentElement so CSS vars cascade to our UI + document.documentElement.classList.remove( + 'wplace-theme-classic', + 'wplace-theme-classic-light', + 'wplace-theme-acrylic', + 'wplace-theme-neon' + ); + + let themeClass = 'wplace-theme-classic'; // default + let themeFileName = 'classic'; // corresponding file name + + if (CONFIG.currentTheme === 'Neon Retro') { + themeClass = 'wplace-theme-neon'; + themeFileName = 'neon'; + } else if (CONFIG.currentTheme === 'Classic Light') { + themeClass = 'wplace-theme-classic-light'; + themeFileName = 'classic-light'; + } else if (CONFIG.currentTheme === 'Acrylic') { + themeClass = 'wplace-theme-acrylic'; + themeFileName = 'acrylic'; + } + + document.documentElement.classList.add(themeClass); + console.log(`%cโœ… Applied theme class: ${themeClass}`, 'color: #8b5cf6;'); + + // Use extension's applyTheme helper if available (loads from local extension resources) + if (typeof window.applyTheme === 'function') { + console.log(`%c๐Ÿ”ง Using extension's applyTheme() helper for: ${themeFileName}`, 'color: #10b981; font-weight: bold;'); + const success = window.applyTheme(themeFileName); + if (success) { + console.log(`%cโœ… Theme CSS loaded from extension local resources`, 'color: #10b981; font-weight: bold;'); + console.log(` ๐Ÿ“ Source: Extension local file (themes/${themeFileName}.css)`); + console.log(` ๐Ÿš€ Performance: Instant load (no network request)`); + } else { + console.warn(`%cโš ๏ธ Extension theme loading failed, fallback to CSS classes only`, 'color: #f59e0b;'); + console.log(` ๐ŸŽจ Using CSS class: ${themeClass}`); + console.log(` ๐Ÿ“ Note: Theme variables may be limited without CSS file`); + } + } else { + console.log(`%c๐Ÿ“ Extension applyTheme() not available, using CSS class only`, 'color: #f59e0b;'); + console.log(` ๐ŸŽจ Using CSS class: ${themeClass}`); + console.log(` โš ๏ธ Note: Full theme styling requires extension helper function`); + } + + // Also set CSS variables explicitly in case you want runtime overrides + const root = document.documentElement; + const setVar = (k, v) => { + try { + root.style.setProperty(k, v); + } catch { } + }; + + setVar('--wplace-primary', theme.primary); + setVar('--wplace-secondary', theme.secondary); + setVar('--wplace-accent', theme.accent); + setVar('--wplace-text', theme.text); + setVar('--wplace-highlight', theme.highlight); + setVar('--wplace-success', theme.success); + setVar('--wplace-error', theme.error); + setVar('--wplace-warning', theme.warning); + + // Typography + look + setVar('--wplace-font', theme.fontFamily || "'Segoe UI', Roboto, sans-serif"); + setVar('--wplace-radius', '' + (theme.borderRadius || '12px')); + setVar('--wplace-border-style', '' + (theme.borderStyle || 'solid')); + setVar('--wplace-border-width', '' + (theme.borderWidth || '1px')); + setVar('--wplace-backdrop', '' + (theme.backdropFilter || 'blur(10px)')); + setVar('--wplace-border-color', 'rgba(255,255,255,0.1)'); + + console.log(`%c๐ŸŽจ Theme application complete`, 'color: #8b5cf6; font-weight: bold;'); + console.groupEnd(); + } + + const saveThemePreference = () => { + try { + localStorage.setItem('wplace-theme', CONFIG.currentTheme); + } catch (e) { + console.warn('Could not save theme preference:', e); + } + }; + + const loadThemePreference = () => { + try { + const saved = localStorage.getItem('wplace-theme'); + if (saved && CONFIG.THEMES[saved]) { + CONFIG.currentTheme = saved; + } + } catch (e) { + console.warn('Could not load theme preference:', e); + } + }; + + // Simple translation cache + const translationCache = new Map(); + + // Dynamically loaded translations + let loadedTranslations = {}; + + // Available languages + const AVAILABLE_LANGUAGES = [ + 'en', + 'ru', + 'pt', + 'vi', + 'fr', + 'id', + 'tr', + 'zh-CN', + 'zh-TW', + 'ja', + 'ko', + 'uk', + ]; + + // Function to load translations from JSON file with retry mechanism + const loadTranslations = async (language, retryCount = 0) => { + if (loadedTranslations[language]) { + return loadedTranslations[language]; + } + + console.group(`%c๐ŸŒ Loading ${language.toUpperCase()} translations`, 'color: #06b6d4; font-weight: bold;'); + + // First try: Check if extension has loaded local resources + if (window.AUTOBOT_LANGUAGES && Object.keys(window.AUTOBOT_LANGUAGES).length > 0) { + console.log(`%c๐Ÿ” Checking extension local resources...`, 'color: #06b6d4;'); + + const langFile = language + '.json'; + if (window.AUTOBOT_LANGUAGES[langFile]) { + const translations = window.AUTOBOT_LANGUAGES[langFile]; + + // Validate that translations is an object with keys + if ( + typeof translations === 'object' && + translations !== null && + Object.keys(translations).length > 0 + ) { + loadedTranslations[language] = translations; + console.log(`%cโœ… Loaded ${language} translations from EXTENSION LOCAL FILES`, 'color: #10b981; font-weight: bold;'); + console.log(` ๐Ÿ“ Source: Extension local storage (chrome-extension://)`); + console.log(` ๐Ÿ“ Keys count: ${Object.keys(translations).length}`); + console.log(` ๐Ÿš€ Performance: Instant load (no network request)`); + console.groupEnd(); + return translations; + } + } else { + console.log(`%c๐Ÿ“ ${langFile} not found in extension resources`, 'color: #f59e0b;'); + console.log(` ๐Ÿ“‹ Available in extension: ${Object.keys(window.AUTOBOT_LANGUAGES).join(', ')}`); + } + } else { + console.log(`%c๐Ÿ“ No extension local resources available`, 'color: #f59e0b;'); + console.log(` ๐Ÿ” window.AUTOBOT_LANGUAGES: ${typeof window.AUTOBOT_LANGUAGES}`); + } + + // Second try: Use helper function if available + if (typeof window.getLanguage === 'function') { + console.log(`%c๐Ÿ”ง Trying extension getLanguage() helper...`, 'color: #06b6d4;'); + try { + const translations = window.getLanguage(language); + if ( + typeof translations === 'object' && + translations !== null && + Object.keys(translations).length > 0 + ) { + loadedTranslations[language] = translations; + console.log(`%cโœ… Loaded ${language} translations via extension helper`, 'color: #10b981; font-weight: bold;'); + console.log(` ๐Ÿ“ Source: Extension getLanguage() function`); + console.log(` ๐Ÿ“ Keys count: ${Object.keys(translations).length}`); + console.groupEnd(); + return translations; + } + } catch (error) { + console.warn(`%cโš ๏ธ Extension helper failed:`, 'color: #f59e0b;', error); + } + } + + // Fallback: Load from CDN (original behavior) + console.log(`%c๐ŸŒ Falling back to CDN loading...`, 'color: #8b5cf6;'); + const url = `https://wplace-autobot.github.io/WPlace-AutoBOT/main/lang/${language}.json`; + const maxRetries = 3; + const baseDelay = 1000; // 1 second + + try { + if (retryCount === 0) { + console.log(`๐Ÿ”„ Loading ${language} translations from CDN...`); + } else { + console.log( + `๐Ÿ”„ Retrying ${language} translations (attempt ${retryCount + 1}/${maxRetries + 1})...` + ); + } + + const response = await fetch(url); + if (response.ok) { + const translations = await response.json(); + + // Validate that translations is an object with keys + if ( + typeof translations === 'object' && + translations !== null && + Object.keys(translations).length > 0 + ) { + loadedTranslations[language] = translations; + console.log( + `%c๐Ÿ“š Loaded ${language} translations from CDN (${Object.keys(translations).length} keys)`, 'color: #f59e0b; font-weight: bold;' + ); + console.log(` ๐Ÿ“ Source: CDN (wplace-autobot.github.io)`); + console.log(` ๐ŸŒ URL: ${url}`); + console.log(` โš ๏ธ Performance: Network request required`); + console.groupEnd(); + return translations; + } else { + console.warn(`โŒ Invalid translation format for ${language}`); + throw new Error('Invalid translation format'); + } + } else { + console.warn( + `โŒ CDN returned HTTP ${response.status}: ${response.statusText} for ${language} translations` + ); + throw new Error(`HTTP ${response.status}: ${response.statusText}`); + } + } catch (error) { + console.error( + `โŒ Failed to load ${language} translations from CDN (attempt ${retryCount + 1}):`, + error + ); + + // Retry with exponential backoff + if (retryCount < maxRetries) { + const delay = baseDelay * Math.pow(2, retryCount); + console.log(`โณ Retrying in ${delay}ms...`); + await new Promise((resolve) => setTimeout(resolve, delay)); + console.groupEnd(); + return loadTranslations(language, retryCount + 1); + } + } + + console.error(`%c๐Ÿ’ฅ All translation loading methods failed for ${language}`, 'color: #ef4444; font-weight: bold;'); + console.groupEnd(); + return null; + }; + + const loadLanguagePreference = async () => { + const savedLanguage = localStorage.getItem('wplace_language'); + const browserLocale = navigator.language; + const browserLanguage = browserLocale.split('-')[0]; + + let selectedLanguage = 'en'; // Default fallback + + try { + // Check if we have the saved language available + if (savedLanguage && AVAILABLE_LANGUAGES.includes(savedLanguage)) { + selectedLanguage = savedLanguage; + console.log(`๐Ÿ”„ Using saved language preference: ${selectedLanguage}`); + } + // Try full locale match (e.g. "zh-CN", "zh-TW" etc) + else if (AVAILABLE_LANGUAGES.includes(browserLocale)) { + selectedLanguage = browserLocale; + localStorage.setItem('wplace_language', browserLocale); + console.log(`๐Ÿ”„ Using browser locale: ${selectedLanguage}`); + } + // Try base language match (e.g. "en" for "en-US" or "en-GB" etc) + else if (AVAILABLE_LANGUAGES.includes(browserLanguage)) { + selectedLanguage = browserLanguage; + localStorage.setItem('wplace_language', browserLanguage); + console.log(`๐Ÿ”„ Using browser language: ${selectedLanguage}`); + } + // Use English as fallback + else { + console.log(`๐Ÿ”„ No matching language found, using English fallback`); + } + + // Set the language in state first + state.language = selectedLanguage; + + // Only load translations if not already loaded and not English (which should already be loaded) + if (selectedLanguage !== 'en' && !loadedTranslations[selectedLanguage]) { + const loaded = await loadTranslations(selectedLanguage); + if (!loaded) { + console.warn( + `โš ๏ธ Failed to load ${selectedLanguage} translations, falling back to English` + ); + state.language = 'en'; + localStorage.setItem('wplace_language', 'en'); + } + } + } catch (error) { + console.error(`โŒ Error in loadLanguagePreference:`, error); + state.language = 'en'; // Always ensure we have a valid language + } + }; + + // Simple user notification function for critical issues + const showTranslationWarning = (message) => { + try { + // Create a simple temporary notification banner + const warning = document.createElement('div'); + warning.style.cssText = ` + position: fixed; top: 10px; right: 10px; z-index: 10001; + background: rgba(255, 193, 7, 0.95); color: #212529; padding: 12px 16px; + border-radius: 8px; font-size: 14px; font-weight: 500; + box-shadow: 0 4px 12px rgba(0,0,0,0.3); border: 1px solid rgba(255, 193, 7, 0.8); + max-width: 300px; word-wrap: break-word; + `; + warning.textContent = message; + document.body.appendChild(warning); + + // Auto-remove after 8 seconds + setTimeout(() => { + if (warning.parentNode) { + warning.remove(); + } + }, 8000); + } catch (e) { + // If DOM manipulation fails, just log + console.warn('Failed to show translation warning UI:', e); + } + }; + + // Initialize translations function + const initializeTranslations = async () => { + try { + console.log('๐ŸŒ Initializing translation system...'); + + // Always ensure English is loaded as fallback first + if (!loadedTranslations['en']) { + const englishLoaded = await loadTranslations('en'); + if (!englishLoaded) { + console.warn('โš ๏ธ Failed to load English translations from CDN, using fallback'); + showTranslationWarning('โš ๏ธ Translation loading failed, using basic fallbacks'); + } + } + + // Then load user's language preference + await loadLanguagePreference(); + + console.log(`โœ… Translation system initialized. Active language: ${state.language}`); + } catch (error) { + console.error('โŒ Translation initialization failed:', error); + // Ensure state has a valid language even if loading fails + if (!state.language) { + state.language = 'en'; + } + console.warn('โš ๏ธ Using fallback translations due to initialization failure'); + showTranslationWarning('โš ๏ธ Translation system error, using basic English'); + } + }; + + // Emergency fallback TEXT (minimal) + const FALLBACK_TEXT = { + en: { + title: 'WPlace Auto-Image', + toggleOverlay: 'Toggle Overlay', + scanColors: 'Scan Colors', + uploadImage: 'Upload Image', + resizeImage: 'Resize Image', + selectPosition: 'Select Position', + startPainting: 'Start Painting', + stopPainting: 'Stop Painting', + progress: 'Progress', + pixels: 'Pixels', + charges: 'Charges', + batchSize: 'Batch Size', + cooldownSettings: 'Cooldown Settings', + waitCharges: 'Wait for Charges', + settings: 'Settings', + showStats: 'Show Statistics', + compactMode: 'Compact Mode', + minimize: 'Minimize', + tokenCapturedSuccess: 'Token captured successfully', + turnstileInstructions: 'Complete the verification', + hideTurnstileBtn: 'Hide', + notificationsNotSupported: 'Notifications not supported', + chargesReadyMessage: 'Charges are ready', + chargesReadyNotification: 'WPlace AutoBot', + initMessage: "Click 'Upload Image' to begin", + }, + }; + + // Safe translation function with multiple fallback levels + const getText = (key, replacements = {}) => { + // Try current language first + let text = loadedTranslations[state.language]?.[key]; + + // Fallback to English translations + if (!text && state.language !== 'en') { + text = loadedTranslations['en']?.[key]; + } + + // Fallback to hardcoded English + if (!text) { + text = FALLBACK_TEXT['en']?.[key]; + } + + // Last resort - return the key itself + if (!text) { + console.warn(`โš ๏ธ Missing translation for key: ${key}`); + return key; + } + + // Handle string replacements like {count}, {time}, etc. + return Object.entries(replacements).reduce((result, [placeholder, value]) => { + return result.replace(new RegExp(`\\{${placeholder}\\}`, 'g'), value); + }, text); + }; + + // GLOBAL STATE + const state = { + running: false, + imageLoaded: false, + processing: false, + totalPixels: 0, + paintedPixels: 0, + availableColors: [], + activeColorPalette: [], // User-selected colors for conversion + paintWhitePixels: true, // Default to ON + fullChargeData: null, + fullChargeInterval: null, + paintTransparentPixels: false, // Default to OFF + displayCharges: 0, + preciseCurrentCharges: 0, + maxCharges: 1, // Default max charges + cooldown: CONFIG.COOLDOWN_DEFAULT, + imageData: null, + stopFlag: false, + colorsChecked: false, + startPosition: null, + selectingPosition: false, + region: null, + minimized: false, + lastPosition: { x: 0, y: 0 }, + estimatedTime: 0, + language: 'en', + paintingSpeed: CONFIG.PAINTING_SPEED.DEFAULT, // pixels batch size + batchMode: CONFIG.BATCH_MODE, // "normal" or "random" + randomBatchMin: CONFIG.RANDOM_BATCH_RANGE.MIN, // Random range minimum + randomBatchMax: CONFIG.RANDOM_BATCH_RANGE.MAX, // Random range maximum + cooldownChargeThreshold: CONFIG.COOLDOWN_CHARGE_THRESHOLD, + chargesThresholdInterval: null, + tokenSource: CONFIG.TOKEN_SOURCE, // "generator" or "manual" + initialSetupComplete: false, // Track if initial startup setup is complete (only happens once) + overlayOpacity: CONFIG.OVERLAY.OPACITY_DEFAULT, + blueMarbleEnabled: CONFIG.OVERLAY.BLUE_MARBLE_DEFAULT, + ditheringEnabled: true, + // Advanced color matching settings + colorMatchingAlgorithm: 'lab', + enableChromaPenalty: true, + chromaPenaltyWeight: 0.15, + customTransparencyThreshold: CONFIG.TRANSPARENCY_THRESHOLD, + customWhiteThreshold: CONFIG.WHITE_THRESHOLD, + resizeSettings: null, + originalImage: null, + resizeIgnoreMask: null, + paintUnavailablePixels: CONFIG.PAINT_UNAVAILABLE, + // Coordinate generation settings + coordinateMode: CONFIG.COORDINATE_MODE, + coordinateDirection: CONFIG.COORDINATE_DIRECTION, + coordinateSnake: CONFIG.COORDINATE_SNAKE, + blockWidth: CONFIG.COORDINATE_BLOCK_WIDTH, + blockHeight: CONFIG.COORDINATE_BLOCK_HEIGHT, + notificationsEnabled: CONFIG.NOTIFICATIONS.ENABLED, + notifyOnChargesReached: CONFIG.NOTIFICATIONS.ON_CHARGES_REACHED, + notifyOnlyWhenUnfocused: CONFIG.NOTIFICATIONS.ONLY_WHEN_UNFOCUSED, + notificationIntervalMinutes: CONFIG.NOTIFICATIONS.REPEAT_MINUTES, + _lastChargesNotifyAt: 0, + _lastChargesBelow: true, + // Smart save tracking + _lastSavePixelCount: 0, + _lastSaveTime: 0, + _saveInProgress: false, + paintedMap: null, + accountIndex: -1, + }; + + let _updateResizePreview = () => { }; + let _resizeDialogCleanup = null; + + // --- OVERLAY UPDATE: Optimized OverlayManager class with performance improvements --- + class OverlayManager { + constructor() { + this.isEnabled = false; + this.startCoords = null; // { region: {x, y}, pixel: {x, y} } + this.imageBitmap = null; + this.chunkedTiles = new Map(); // Map<"tileX,tileY", ImageBitmap> + this.originalTiles = new Map(); // Map<"tileX,tileY", ImageBitmap> store latest original tile bitmaps + this.originalTilesData = new Map(); // Map<"tileX,tileY", {w,h,data:Uint8ClampedArray}> cache full ImageData for fast pixel reads + this.tileSize = 1000; + this.processPromise = null; // Track ongoing processing + this.lastProcessedHash = null; // Cache invalidation + this.workerPool = null; // Web worker pool for heavy processing + } + + toggle() { + this.isEnabled = !this.isEnabled; + console.log(`Overlay ${this.isEnabled ? 'enabled' : 'disabled'}.`); + return this.isEnabled; + } + + enable() { + this.isEnabled = true; + } + + disable() { + this.isEnabled = false; + } + + clear() { + this.disable(); + this.imageBitmap = null; + this.chunkedTiles.clear(); + this.originalTiles.clear(); + this.originalTilesData.clear(); + this.lastProcessedHash = null; + if (this.processPromise) { + this.processPromise = null; + } + } + + async setImage(imageBitmap) { + this.imageBitmap = imageBitmap; + this.lastProcessedHash = null; // Invalidate cache + if (this.imageBitmap && this.startCoords) { + await this.processImageIntoChunks(); + } + } + + async setPosition(startPosition, region) { + if (!startPosition || !region) { + this.startCoords = null; + this.chunkedTiles.clear(); + this.lastProcessedHash = null; + return; + } + this.startCoords = { region, pixel: startPosition }; + this.lastProcessedHash = null; // Invalidate cache + if (this.imageBitmap) { + await this.processImageIntoChunks(); + } + } + + // Generate hash for cache invalidation + _generateProcessHash() { + if (!this.imageBitmap || !this.startCoords) return null; + const { width, height } = this.imageBitmap; + const { x: px, y: py } = this.startCoords.pixel; + const { x: rx, y: ry } = this.startCoords.region; + return `${width}x${height}_${px},${py}_${rx},${ry}_${state.blueMarbleEnabled}_${state.overlayOpacity}`; + } + + // --- OVERLAY UPDATE: Optimized chunking with caching and batch processing --- + async processImageIntoChunks() { + if (!this.imageBitmap || !this.startCoords) return; + + // Check if we're already processing to avoid duplicate work + if (this.processPromise) { + return this.processPromise; + } + + // Check cache validity + const currentHash = this._generateProcessHash(); + if (this.lastProcessedHash === currentHash && this.chunkedTiles.size > 0) { + console.log(`๐Ÿ“ฆ Using cached overlay chunks (${this.chunkedTiles.size} tiles)`); + return; + } + + // Start processing + this.processPromise = this._doProcessImageIntoChunks(); + try { + await this.processPromise; + this.lastProcessedHash = currentHash; + } finally { + this.processPromise = null; + } + } + + async _doProcessImageIntoChunks() { + const startTime = performance.now(); + this.chunkedTiles.clear(); + + const { width: imageWidth, height: imageHeight } = this.imageBitmap; + const { x: startPixelX, y: startPixelY } = this.startCoords.pixel; + const { x: startRegionX, y: startRegionY } = this.startCoords.region; + + const { startTileX, startTileY, endTileX, endTileY } = Utils.calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + imageWidth, + imageHeight, + this.tileSize + ); + + const totalTiles = (endTileX - startTileX + 1) * (endTileY - startTileY + 1); + console.log(`๐Ÿ”„ Processing ${totalTiles} overlay tiles...`); + + // Process tiles in batches to avoid blocking the main thread + const batchSize = 4; // Process 4 tiles at a time + const tilesToProcess = []; + + for (let ty = startTileY; ty <= endTileY; ty++) { + for (let tx = startTileX; tx <= endTileX; tx++) { + tilesToProcess.push({ tx, ty }); + } + } + + // Process tiles in batches with yielding + for (let i = 0; i < tilesToProcess.length; i += batchSize) { + const batch = tilesToProcess.slice(i, i + batchSize); + + await Promise.all( + batch.map(async ({ tx, ty }) => { + const tileKey = `${tx},${ty}`; + const chunkBitmap = await this._processTile( + tx, + ty, + imageWidth, + imageHeight, + startPixelX, + startPixelY, + startRegionX, + startRegionY + ); + if (chunkBitmap) { + this.chunkedTiles.set(tileKey, chunkBitmap); + } + }) + ); + + // Yield control to prevent blocking + if (i + batchSize < tilesToProcess.length) { + await new Promise((resolve) => setTimeout(resolve, 0)); + } + } + + const processingTime = performance.now() - startTime; + console.log( + `โœ… Overlay processed ${this.chunkedTiles.size} tiles in ${Math.round(processingTime)}ms` + ); + } + + async _processTile( + tx, + ty, + imageWidth, + imageHeight, + startPixelX, + startPixelY, + startRegionX, + startRegionY + ) { + const tileKey = `${tx},${ty}`; + + // Calculate the portion of the image that overlaps with this tile + const imgStartX = (tx - startRegionX) * this.tileSize - startPixelX; + const imgStartY = (ty - startRegionY) * this.tileSize - startPixelY; + + // Crop coordinates within the source image + const sX = Math.max(0, imgStartX); + const sY = Math.max(0, imgStartY); + const sW = Math.min(imageWidth - sX, this.tileSize - (sX - imgStartX)); + const sH = Math.min(imageHeight - sY, this.tileSize - (sY - imgStartY)); + + if (sW <= 0 || sH <= 0) return null; + + // Destination coordinates on the new chunk canvas + const dX = Math.max(0, -imgStartX); + const dY = Math.max(0, -imgStartY); + + const chunkCanvas = new OffscreenCanvas(this.tileSize, this.tileSize); + const chunkCtx = chunkCanvas.getContext('2d'); + chunkCtx.imageSmoothingEnabled = false; + + chunkCtx.drawImage(this.imageBitmap, sX, sY, sW, sH, dX, dY, sW, sH); + + // --- OPTIMIZED: Blue marble effect with faster pixel manipulation --- + if (state.blueMarbleEnabled) { + const imageData = chunkCtx.getImageData(dX, dY, sW, sH); + const data = imageData.data; + + // Faster pixel manipulation using typed arrays + for (let i = 0; i < data.length; i += 4) { + const pixelIndex = i / 4; + const pixelY = Math.floor(pixelIndex / sW); + const pixelX = pixelIndex % sW; + + if ((pixelX + pixelY) % 2 === 0 && data[i + 3] > 0) { + data[i + 3] = 0; // Set alpha to 0 + } + } + + chunkCtx.putImageData(imageData, dX, dY); + } + + return await chunkCanvas.transferToImageBitmap(); + } + + // --- OVERLAY UPDATE: Optimized compositing with caching --- + async processAndRespondToTileRequest(eventData) { + const { endpoint, blobID, blobData } = eventData; + + let finalBlob = blobData; + + if (this.isEnabled && this.chunkedTiles.size > 0) { + const tileMatch = endpoint.match(/(\d+)\/(\d+)\.png/); + if (tileMatch) { + const tileX = parseInt(tileMatch[1], 10); + const tileY = parseInt(tileMatch[2], 10); + const tileKey = `${tileX},${tileY}`; + + const chunkBitmap = this.chunkedTiles.get(tileKey); + // Also store the original tile bitmap for later pixel color checks + try { + const originalBitmap = await createImageBitmap(blobData); + this.originalTiles.set(tileKey, originalBitmap); + // Cache full ImageData for fast pixel access (avoid repeated drawImage/getImageData) + try { + let canvas, ctx; + if (typeof OffscreenCanvas !== 'undefined') { + canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); + ctx = canvas.getContext('2d'); + } else { + canvas = document.createElement('canvas'); + canvas.width = originalBitmap.width; + canvas.height = originalBitmap.height; + ctx = canvas.getContext('2d'); + } + ctx.imageSmoothingEnabled = false; + ctx.drawImage(originalBitmap, 0, 0); + const imgData = ctx.getImageData(0, 0, originalBitmap.width, originalBitmap.height); + // Store typed array copy to avoid retaining large canvas + this.originalTilesData.set(tileKey, { + w: originalBitmap.width, + h: originalBitmap.height, + data: new Uint8ClampedArray(imgData.data), + }); + } catch (e) { + // If ImageData extraction fails, still keep the bitmap as fallback + console.warn('OverlayManager: could not cache ImageData for', tileKey, e); + } + } catch (e) { + console.warn('OverlayManager: could not create original bitmap for', tileKey, e); + } + if (chunkBitmap) { + try { + // Use faster compositing for better performance + finalBlob = await this._compositeTileOptimized(blobData, chunkBitmap); + } catch (e) { + console.error('Error compositing overlay:', e); + // Fallback to original tile on error + finalBlob = blobData; + } + } + } + } + + // Send the (possibly modified) blob back to the injected script + window.postMessage( + { + source: 'auto-image-overlay', + blobID: blobID, + blobData: finalBlob, + }, + '*' + ); + } + + // Returns [r,g,b,a] for a pixel inside a region tile (tileX, tileY are region coords) + async getTilePixelColor(tileX, tileY, pixelX, pixelY) { + const tileKey = `${tileX},${tileY}`; + const alphaThresh = state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; + + // 1. Prefer cached ImageData if available + const cached = this.originalTilesData.get(tileKey); + if (cached && cached.data && cached.w > 0 && cached.h > 0) { + const x = Math.max(0, Math.min(cached.w - 1, pixelX)); + const y = Math.max(0, Math.min(cached.h - 1, pixelY)); + const idx = (y * cached.w + x) * 4; + const d = cached.data; + const a = d[idx + 3]; + + if (!state.paintTransparentPixels && a < alphaThresh) { + // Treat as transparent / unavailable + // Lightweight debug: show when transparency causes skip (only if verbose enabled) + if (window._overlayDebug) + console.debug('OverlayManager: pixel transparent (cached), skipping', tileKey, x, y, a); + return null; + } + return [d[idx], d[idx + 1], d[idx + 2], a]; + } + + // 2. Fallback: use bitmap, with retry + const maxRetries = 3; + for (let attempt = 1; attempt <= maxRetries; attempt++) { + const bitmap = this.originalTiles.get(tileKey); + if (!bitmap) { + if (attempt === maxRetries) { + console.warn('OverlayManager: no bitmap for', tileKey, 'after', maxRetries, 'attempts'); + } else { + await Utils.sleep(50 * attempt); // exponential delay + } + continue; + } + + try { + let canvas, ctx; + if (typeof OffscreenCanvas !== 'undefined') { + canvas = new OffscreenCanvas(bitmap.width, bitmap.height); + ctx = canvas.getContext('2d'); + } else { + canvas = document.createElement('canvas'); + canvas.width = bitmap.width; + canvas.height = bitmap.height; + ctx = canvas.getContext('2d'); + } + ctx.imageSmoothingEnabled = false; + ctx.drawImage(bitmap, 0, 0); + + const x = Math.max(0, Math.min(bitmap.width - 1, pixelX)); + const y = Math.max(0, Math.min(bitmap.height - 1, pixelY)); + const data = ctx.getImageData(x, y, 1, 1).data; + const a = data[3]; + + if (!state.paintTransparentPixels && a < alphaThresh) { + if (window._overlayDebug) + console.debug('OverlayManager: pixel transparent (fallback)', tileKey, x, y, a); + return null; + } + + return [data[0], data[1], data[2], a]; + } catch (e) { + console.warn('OverlayManager: failed to read pixel (attempt', attempt, ')', tileKey, e); + if (attempt < maxRetries) { + await Utils.sleep(50 * attempt); + } else { + console.error( + 'OverlayManager: failed to read pixel after', + maxRetries, + 'attempts', + tileKey + ); + } + } + } + + // 3. If everything fails โ€” you can return null or [0,0,0,0] + // Prefer null โ€” to avoid misleading + return null; + } + + async _compositeTileOptimized(originalBlob, overlayBitmap) { + const originalBitmap = await createImageBitmap(originalBlob); + const canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); + const ctx = canvas.getContext('2d'); + + // Disable antialiasing for pixel-perfect rendering + ctx.imageSmoothingEnabled = false; + + // Draw original tile first + ctx.drawImage(originalBitmap, 0, 0); + + // Set opacity and draw overlay with optimized blend mode + ctx.globalAlpha = state.overlayOpacity; + ctx.globalCompositeOperation = 'source-over'; + ctx.drawImage(overlayBitmap, 0, 0); + + // Use faster blob conversion with compression settings + return await canvas.convertToBlob({ + type: 'image/png', + quality: 0.95, // Slight compression for faster processing + }); + } + + /** + * Wait until all required tiles are loaded and cached + * @param {number} startRegionX + * @param {number} startRegionY + * @param {number} pixelWidth + * @param {number} pixelHeight + * @param {number} startPixelX + * @param {number} startPixelY + * @param {number} timeoutMs + * @returns {Promise} true if tiles are ready + */ + async waitForTiles( + startRegionX, + startRegionY, + pixelWidth, + pixelHeight, + startPixelX = 0, + startPixelY = 0, + timeoutMs = 10000 + ) { + const { startTileX, startTileY, endTileX, endTileY } = Utils.calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + pixelWidth, + pixelHeight, + this.tileSize + ); + + const requiredTiles = []; + for (let ty = startTileY; ty <= endTileY; ty++) { + for (let tx = startTileX; tx <= endTileX; tx++) { + requiredTiles.push(`${tx},${ty}`); + } + } + + if (requiredTiles.length === 0) return true; + + const startTime = Date.now(); + + while (Date.now() - startTime < timeoutMs) { + if (state.stopFlag) { + console.log('waitForTiles: stopped by user'); + return false; + } + + const missing = requiredTiles.filter((key) => !this.originalTiles.has(key)); + if (missing.length === 0) { + console.log(`โœ… All ${requiredTiles.length} required tiles are loaded`); + return true; + } + + await Utils.sleep(100); + } + + console.warn(`โŒ Timeout waiting for tiles: ${requiredTiles.length} required, + ${requiredTiles.filter((k) => this.originalTiles.has(k)).length} loaded`); + return false; + } + } + + const overlayManager = new OverlayManager(); + + // Optimized Turnstile token handling with improved caching and retry logic + let turnstileToken = null; + let tokenExpiryTime = 0; + let tokenGenerationInProgress = false; + let _resolveToken = null; + let tokenPromise = new Promise((resolve) => { + _resolveToken = resolve; + }); + let retryCount = 0; + const MAX_RETRIES = 10; + const MAX_BATCH_RETRIES = 10; // Maximum attempts for batch sending + const TOKEN_LIFETIME = 240000; // 4 minutes (tokens typically last 5 min, use 4 for safety) + + function setTurnstileToken(token) { + if (_resolveToken) { + _resolveToken(token); + _resolveToken = null; + } + turnstileToken = token; + tokenExpiryTime = Date.now() + TOKEN_LIFETIME; + console.log('โœ… Turnstile token set successfully'); + } + + function isTokenValid() { + return turnstileToken && Date.now() < tokenExpiryTime; + } + + function invalidateToken() { + turnstileToken = null; + tokenExpiryTime = 0; + console.log('๐Ÿ—‘๏ธ Token invalidated, will force fresh generation'); + } + + async function ensureToken(forceRefresh = false) { + // Return cached token if still valid and not forcing refresh + if (isTokenValid() && !forceRefresh) { + return turnstileToken; + } + + // Invalidate token if forcing refresh + if (forceRefresh) invalidateToken(); + + // Avoid multiple simultaneous token generations + if (tokenGenerationInProgress) { + console.log('๐Ÿ”„ Token generation already in progress, waiting...'); + await Utils.sleep(2000); + return isTokenValid() ? turnstileToken : null; + } + + tokenGenerationInProgress = true; + + try { + console.log('๐Ÿ”„ Token expired or missing, generating new one...'); + const token = await handleCaptchaWithRetry(); + if (token && token.length > 20) { + setTurnstileToken(token); + console.log('โœ… Token captured and cached successfully'); + return token; + } + + console.log('โš ๏ธ Invisible Turnstile failed, forcing browser automation...'); + const fallbackToken = await handleCaptchaFallback(); + if (fallbackToken && fallbackToken.length > 20) { + setTurnstileToken(fallbackToken); + console.log('โœ… Fallback token captured successfully'); + return fallbackToken; + } + + console.log('โŒ All token generation methods failed'); + return null; + } finally { + tokenGenerationInProgress = false; + } + } + + async function handleCaptchaWithRetry() { + const startTime = performance.now(); + + try { + const { sitekey, token: preGeneratedToken } = await Utils.obtainSitekeyAndToken(); + + if (!sitekey) { + throw new Error('No valid sitekey found'); + } + + console.log('๐Ÿ”‘ Using sitekey:', sitekey); + + if (typeof window !== 'undefined' && window.navigator) { + console.log( + '๐Ÿงญ UA:', + window.navigator.userAgent.substring(0, 50) + '...', + 'Platform:', + window.navigator.platform + ); + } + + let token = null; + + if ( + preGeneratedToken && + typeof preGeneratedToken === 'string' && + preGeneratedToken.length > 20 + ) { + console.log('โ™ป๏ธ Reusing pre-generated Turnstile token'); + token = preGeneratedToken; + } else { + if (isTokenValid()) { + console.log('โ™ป๏ธ Using existing cached token (from previous session)'); + token = turnstileToken; + } else { + console.log('๐Ÿ” Generating new token with executeTurnstile...'); + token = await Utils.executeTurnstile(sitekey, 'paint'); + if (token) setTurnstileToken(token); + } + } + + if (token && typeof token === 'string' && token.length > 20) { + const elapsed = Math.round(performance.now() - startTime); + console.log(`โœ… Turnstile token generated successfully in ${elapsed}ms`); + return token; + } else { + throw new Error(`Invalid or empty token received - Length: ${token?.length || 0}`); + } + } catch (error) { + const elapsed = Math.round(performance.now() - startTime); + console.error(`โŒ Turnstile token generation failed after ${elapsed}ms:`, error); + throw error; + } + } + const randStr = (len, chars = 'abcdefghijklmnopqrstuvwxyz0123456789') => + [...Array(len)].map(() => chars[(crypto?.getRandomValues?.(new Uint32Array(1))[0] % chars.length) || Math.floor(Math.random() * chars.length)]).join('') + const fpStr32 = randStr(32); + async function handleCaptchaFallback() { + // Implementation for fallback token generation would go here + // This is a placeholder for browser automation fallback + console.log('๐Ÿ”„ Attempting fallback token generation...'); + return null; + } + + function inject(callback) { + const script = document.createElement('script'); + script.textContent = `(${callback})();`; + document.documentElement?.appendChild(script); + script.remove(); + } + + inject(() => { + const fetchedBlobQueue = new Map(); + + window.addEventListener('message', (event) => { + const { source, blobID, blobData } = event.data; + if (source === 'auto-image-overlay' && blobID && blobData) { + const callback = fetchedBlobQueue.get(blobID); + if (typeof callback === 'function') { + callback(blobData); + } + fetchedBlobQueue.delete(blobID); + } + }); + + const originalFetch = window.fetch; + window.fetch = async function (...args) { + const response = await originalFetch.apply(this, args); + const url = args[0] instanceof Request ? args[0].url : args[0]; + + if (typeof url === 'string') { + if (url.includes('https://backend.wplace.live/s0/pixel/')) { + try { + const payload = JSON.parse(args[1].body); + if (payload.t) { + // ๐Ÿ“Š Debug log + console.log( + `๐Ÿ”โœ… Turnstile Token Captured - Type: ${typeof payload.t}, Value: ${payload.t + ? typeof payload.t === 'string' + ? payload.t.length > 50 + ? payload.t.substring(0, 50) + '...' + : payload.t + : JSON.stringify(payload.t) + : 'null/undefined' + }, Length: ${payload.t?.length || 0}` + ); + window.postMessage({ source: 'turnstile-capture', token: payload.t }, '*'); + } + } catch (_) { + /* ignore */ + } + } + + const contentType = response.headers.get('content-type') || ''; + if (contentType.includes('image/png') && url.includes('.png')) { + const cloned = response.clone(); + return new Promise(async (resolve) => { + const blobUUID = crypto.randomUUID(); + const originalBlob = await cloned.blob(); + + fetchedBlobQueue.set(blobUUID, (processedBlob) => { + resolve( + new Response(processedBlob, { + headers: cloned.headers, + status: cloned.status, + statusText: cloned.statusText, + }) + ); + }); + + window.postMessage( + { + source: 'auto-image-tile', + endpoint: url, + blobID: blobUUID, + blobData: originalBlob, + }, + '*' + ); + }); + } + } + + return response; + }; + }); + + window.addEventListener('message', (event) => { + const { source, endpoint, blobID, blobData, token } = event.data; + + if (source === 'auto-image-tile' && endpoint && blobID && blobData) { + overlayManager.processAndRespondToTileRequest(event.data); + } + + if (source === 'turnstile-capture' && token) { + setTurnstileToken(token); + if (document.querySelector('#statusText')?.textContent.includes('CAPTCHA')) { + Utils.showAlert(Utils.t('tokenCapturedSuccess'), 'success'); + updateUI('colorsFound', 'success', { count: state.availableColors.length }); + } + } + }); + + async function detectLanguage() { + try { + const response = await fetch('https://backend.wplace.live/me', { + credentials: 'include', + }); + const data = await response.json(); + state.language = data.language === 'pt' ? 'pt' : 'en'; + } catch { + state.language = navigator.language.startsWith('pt') ? 'pt' : 'en'; + } + } + + // UTILITY FUNCTIONS + const Utils = { + sleep: (ms) => new Promise((r) => setTimeout(r, ms)), + + dynamicSleep: async function (tickAndGetRemainingMs) { + let remaining = Math.max(0, await tickAndGetRemainingMs()); + while (remaining > 0) { + const interval = remaining > 5000 ? 2000 : remaining > 1000 ? 500 : 100; + await this.sleep(Math.min(interval, remaining)); + remaining = Math.max(0, await tickAndGetRemainingMs()); + } + }, + + waitForSelector: async (selector, interval = 200, timeout = 5000) => { + const start = Date.now(); + while (Date.now() - start < timeout) { + const el = document.querySelector(selector); + if (el) return el; + await Utils.sleep(interval); + } + return null; + }, + + msToTimeText(ms) { + const totalSeconds = Math.ceil(ms / 1000); + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + const seconds = totalSeconds % 60; + + if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`; + if (minutes > 0) return `${minutes}m ${seconds}s`; + return `${seconds}s`; + }, + + // Debounced scroll-to-adjust handler for sliders + createScrollToAdjust: (element, updateCallback, min, max, step = 1) => { + let debounceTimer = null; + + const handleWheel = (e) => { + // Only trigger when hovering over the slider + if (e.target !== element) return; + + e.preventDefault(); + e.stopPropagation(); + + // Clear existing debounce timer + if (debounceTimer) { + clearTimeout(debounceTimer); + } + + // Debounce the adjustment to make it precise + debounceTimer = setTimeout(() => { + const currentValue = parseInt(element.value) || 0; + const delta = e.deltaY > 0 ? -step : step; + const newValue = Math.max(min, Math.min(max, currentValue + delta)); + + if (newValue !== currentValue) { + element.value = newValue; + updateCallback(newValue); + } + }, 50); // 50ms debounce for precise control + }; + + element.addEventListener('wheel', handleWheel, { passive: false }); + + // Return cleanup function + return () => { + if (debounceTimer) clearTimeout(debounceTimer); + element.removeEventListener('wheel', handleWheel); + }; + }, + + /** + * Calculate the range of tile coordinates (in region space) that cover a given image area. + * @param {number} startRegionX - Base region X + * @param {number} startRegionY - Base region Y + * @param {number} startPixelX - Starting pixel X within the region grid + * @param {number} startPixelY - Starting pixel Y within the region grid + * @param {number} width - Image width in pixels + * @param {number} height - Image height in pixels + * @param {number} tileSize - Size of a tile (default 1000) + * @returns {{ startTileX: number, startTileY: number, endTileX: number, endTileY: number }} + */ + calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + width, + height, + tileSize = 1000 + ) { + const endPixelX = startPixelX + width; + const endPixelY = startPixelY + height; + + return { + startTileX: startRegionX + Math.floor(startPixelX / tileSize), + startTileY: startRegionY + Math.floor(startPixelY / tileSize), + endTileX: startRegionX + Math.floor((endPixelX - 1) / tileSize), + endTileY: startRegionY + Math.floor((endPixelY - 1) / tileSize), + }; + }, // Turnstile Generator Integration - Optimized with widget reuse and proper cleanup + turnstileLoaded: false, + _turnstileContainer: null, + _turnstileOverlay: null, + _turnstileWidgetId: null, + _lastSitekey: null, + + async loadTurnstile() { + // If Turnstile is already present, just resolve. + if (window.turnstile) { + this.turnstileLoaded = true; + return Promise.resolve(); + } + + return new Promise((resolve, reject) => { + // Avoid adding the script twice + if ( + document.querySelector( + 'script[src^="https://challenges.cloudflare.com/turnstile/v0/api.js"]' + ) + ) { + const checkReady = () => { + if (window.turnstile) { + this.turnstileLoaded = true; + resolve(); + } else { + setTimeout(checkReady, 100); + } + }; + return checkReady(); + } + + const script = document.createElement('script'); + script.src = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'; + script.async = true; + script.defer = true; + script.onload = () => { + this.turnstileLoaded = true; + console.log('โœ… Turnstile script loaded successfully'); + resolve(); + }; + script.onerror = () => { + console.error('โŒ Failed to load Turnstile script'); + reject(new Error('Failed to load Turnstile')); + }; + document.head.appendChild(script); + }); + }, + + // Create or reuse the turnstile container - completely hidden for token generation + ensureTurnstileContainer() { + if (!this._turnstileContainer || !document.body.contains(this._turnstileContainer)) { + // Clean up old container if it exists + if (this._turnstileContainer) { + this._turnstileContainer.remove(); + } + + this._turnstileContainer = document.createElement('div'); + this._turnstileContainer.className = 'wplace-turnstile-hidden'; + this._turnstileContainer.setAttribute('aria-hidden', 'true'); + this._turnstileContainer.id = 'turnstile-widget-container'; + document.body.appendChild(this._turnstileContainer); + } + return this._turnstileContainer; + }, + + // Interactive overlay container for visible widgets when needed + ensureTurnstileOverlayContainer() { + if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { + return this._turnstileOverlay; + } + + const overlay = document.createElement('div'); + overlay.id = 'turnstile-overlay-container'; + overlay.className = 'wplace-turnstile-overlay wplace-overlay-hidden'; + + const title = document.createElement('div'); + title.textContent = Utils.t('turnstileInstructions'); + title.className = 'wplace-turnstile-title'; + + const host = document.createElement('div'); + host.id = 'turnstile-overlay-host'; + host.className = 'wplace-turnstile-host'; + + const hideBtn = document.createElement('button'); + hideBtn.textContent = Utils.t('hideTurnstileBtn'); + hideBtn.className = 'wplace-turnstile-hide-btn'; + hideBtn.addEventListener('click', () => overlay.remove()); + + overlay.appendChild(title); + overlay.appendChild(host); + overlay.appendChild(hideBtn); + document.body.appendChild(overlay); + + this._turnstileOverlay = overlay; + return overlay; + }, + + async executeTurnstile(sitekey, action = 'paint') { + await this.loadTurnstile(); + + // Try reusing existing widget first if sitekey matches + if (this._turnstileWidgetId && this._lastSitekey === sitekey && window.turnstile?.execute) { + try { + console.log('๐Ÿ”„ Reusing existing Turnstile widget...'); + const token = await Promise.race([ + window.turnstile.execute(this._turnstileWidgetId, { action }), + new Promise((_, reject) => + setTimeout(() => reject(new Error('Execute timeout')), 15000) + ), + ]); + if (token && token.length > 20) { + console.log('โœ… Token generated via widget reuse'); + return token; + } + } catch (error) { + console.log('๏ฟฝ Widget reuse failed, will create a fresh widget:', error.message); + } + } + + // Try invisible widget first + const invisibleToken = await this.createTurnstileWidget(sitekey, action); + if (invisibleToken && invisibleToken.length > 20) { + return invisibleToken; + } + + console.log('๏ฟฝ Falling back to interactive Turnstile (visible).'); + return await this.createTurnstileWidgetInteractive(sitekey, action); + }, + + async createTurnstileWidget(sitekey, action) { + return new Promise((resolve) => { + try { + // Force cleanup of any existing widget + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + console.log('๐Ÿงน Cleaned up existing Turnstile widget'); + } catch (e) { + console.warn('โš ๏ธ Widget cleanup warning:', e.message); + } + } + + const container = this.ensureTurnstileContainer(); + container.innerHTML = ''; + + // Verify Turnstile is available + if (!window.turnstile?.render) { + console.error('โŒ Turnstile not available for rendering'); + resolve(null); + return; + } + + console.log('๐Ÿ”ง Creating invisible Turnstile widget...'); + const widgetId = window.turnstile.render(container, { + sitekey, + action, + size: 'invisible', + retry: 'auto', + 'retry-interval': 8000, + callback: (token) => { + console.log('โœ… Invisible Turnstile callback'); + resolve(token); + }, + 'error-callback': () => resolve(null), + 'timeout-callback': () => resolve(null), + }); + + this._turnstileWidgetId = widgetId; + this._lastSitekey = sitekey; + + if (!widgetId) { + return resolve(null); + } + + // Execute the widget and race with timeout + Promise.race([ + window.turnstile.execute(widgetId, { action }), + new Promise((_, reject) => + setTimeout(() => reject(new Error('Invisible execute timeout')), 12000) + ), + ]) + .then(resolve) + .catch(() => resolve(null)); + } catch (e) { + console.error('โŒ Invisible Turnstile creation failed:', e); + resolve(null); + } + }); + }, + + async createTurnstileWidgetInteractive(sitekey, action) { + // Create a visible widget that users can interact with if needed + console.log('๐Ÿ”„ Creating interactive Turnstile widget (visible)'); + + return new Promise((resolve) => { + try { + // Force cleanup of any existing widget + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + } catch (e) { + console.warn('โš ๏ธ Widget cleanup warning:', e.message); + } + } + + const overlay = this.ensureTurnstileOverlayContainer(); + overlay.classList.remove('wplace-overlay-hidden'); + overlay.style.display = 'block'; + + const host = overlay.querySelector('#turnstile-overlay-host'); + host.innerHTML = ''; + + // Set a timeout for interactive mode + const timeout = setTimeout(() => { + console.warn('โฐ Interactive Turnstile widget timeout'); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + resolve(null); + }, 60000); // 60 seconds for user interaction + + const widgetId = window.turnstile.render(host, { + sitekey, + action, + size: 'normal', + theme: 'light', + callback: (token) => { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.log('โœ… Interactive Turnstile completed successfully'); + + if (typeof token === 'string' && token.length > 20) { + resolve(token); + } else { + console.warn('โŒ Invalid token from interactive widget'); + resolve(null); + } + }, + 'error-callback': (error) => { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.warn('โŒ Interactive Turnstile error:', error); + resolve(null); + }, + }); + + this._turnstileWidgetId = widgetId; + this._lastSitekey = sitekey; + + if (!widgetId) { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.warn('โŒ Failed to create interactive Turnstile widget'); + resolve(null); + } else { + console.log('โœ… Interactive Turnstile widget created, waiting for user interaction...'); + } + } catch (e) { + console.error('โŒ Interactive Turnstile creation failed:', e); + resolve(null); + } + }); + }, + + // Cleanup method for when the script is disabled/reloaded + cleanupTurnstile() { + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + } catch (e) { + console.warn('Failed to cleanup Turnstile widget:', e); + } + } + + if (this._turnstileContainer && document.body.contains(this._turnstileContainer)) { + this._turnstileContainer.remove(); + } + + if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { + this._turnstileOverlay.remove(); + } + + this._turnstileWidgetId = null; + this._turnstileContainer = null; + this._turnstileOverlay = null; + this._lastSitekey = null; + }, + + async obtainSitekeyAndToken(fallback = '0x4AAAAAABpqJe8FO0N84q0F') { + // Cache sitekey to avoid repeated DOM queries + if (this._cachedSitekey) { + console.log('๐Ÿ” Using cached sitekey:', this._cachedSitekey); + + return isTokenValid() + ? { + sitekey: this._cachedSitekey, + token: turnstileToken, + } + : { sitekey: this._cachedSitekey, token: null }; + } + + // List of potential sitekeys to try + const potentialSitekeys = [ + '0x4AAAAAABpqJe8FO0N84q0F', // WPlace common sitekey + '0x4AAAAAAAJ7xjKAp6Mt_7zw', // Alternative WPlace sitekey + '0x4AAAAAADm5QWx6Ov2LNF2g', // Another common sitekey + ]; + const trySitekey = async (sitekey, source) => { + if (!sitekey || sitekey.length < 10) return null; + + console.log(`๐Ÿ” Testing sitekey from ${source}:`, sitekey); + const token = await this.executeTurnstile(sitekey); + + if (token && token.length >= 20) { + console.log(`โœ… Valid token generated from ${source} sitekey`); + setTurnstileToken(token); + this._cachedSitekey = sitekey; + return { sitekey, token }; + } else { + console.log(`โŒ Failed to get token from ${source} sitekey`); + return null; + } + }; + + try { + // 1๏ธโƒฃ data-sitekey attribute + const sitekeySel = document.querySelector('[data-sitekey]'); + if (sitekeySel) { + const sitekey = sitekeySel.getAttribute('data-sitekey'); + const result = await trySitekey(sitekey, 'data attribute'); + if (result) { + return result; + } + } + + // 2๏ธโƒฃ Turnstile element + const turnstileEl = document.querySelector('.cf-turnstile'); + if (turnstileEl?.dataset?.sitekey) { + const sitekey = turnstileEl.dataset.sitekey; + const result = await trySitekey(sitekey, 'turnstile element'); + if (result) { + return result; + } + } + + // 3๏ธโƒฃ Meta tags + const metaTags = document.querySelectorAll( + 'meta[name*="turnstile"], meta[property*="turnstile"]' + ); + for (const meta of metaTags) { + const content = meta.getAttribute('content'); + const result = await trySitekey(content, 'meta tag'); + if (result) { + return result; + } + } + + // 4๏ธโƒฃ Global variable + if (window.__TURNSTILE_SITEKEY) { + const result = await trySitekey(window.__TURNSTILE_SITEKEY, 'global variable'); + if (result) { + return result; + } + } + + // 5๏ธโƒฃ Script tags + const scripts = document.querySelectorAll('script'); + for (const script of scripts) { + const content = script.textContent || script.innerHTML; + const match = content.match( + /(?:sitekey|data-sitekey)['"\s\[\]:\=\(]*['"]?([0-9a-zA-Z_-]{20,})['"]?/i + ); + if (match && match[1]) { + const extracted = match[1].replace(/['"]/g, ''); + const result = await trySitekey(extracted, 'script content'); + if (result) { + return result; + } + } + } + + // 6๏ธโƒฃ Known potential sitekeys + console.log('๐Ÿ” Testing known potential sitekeys...'); + for (const testSitekey of potentialSitekeys) { + const result = await trySitekey(testSitekey, 'known list'); + if (result) { + return result; + } + } + } catch (error) { + console.warn('โš ๏ธ Error during sitekey detection:', error); + } + + // 7๏ธโƒฃ Fallback + console.log('๐Ÿ”ง Trying fallback sitekey:', fallback); + const fallbackResult = await trySitekey(fallback, 'fallback'); + if (fallbackResult) { + return fallbackResult; + } + + console.error('โŒ No working sitekey or token found.'); + return { sitekey: null, token: null }; + }, + + createElement: (tag, props = {}, children = []) => { + const element = document.createElement(tag); + + Object.entries(props).forEach(([key, value]) => { + if (key === 'style' && typeof value === 'object') { + Object.assign(element.style, value); + } else if (key === 'className') { + element.className = value; + } else if (key === 'innerHTML') { + element.innerHTML = value; + } else { + element.setAttribute(key, value); + } + }); + + if (typeof children === 'string') { + element.textContent = children; + } else if (Array.isArray(children)) { + children.forEach((child) => { + if (typeof child === 'string') { + element.appendChild(document.createTextNode(child)); + } else { + element.appendChild(child); + } + }); + } + + return element; + }, + + createButton: (id, text, icon, onClick, style = CONFIG.CSS_CLASSES.BUTTON_PRIMARY) => { + const button = Utils.createElement('button', { + id: id, + style: style, + innerHTML: `${icon ? `` : ''}${text}`, + }); + if (onClick) button.addEventListener('click', onClick); + return button; + }, + + // Synchronous translation function for UI rendering + t: (key, params = {}) => { + // Try to get from cache first + const cacheKey = `${state.language}_${key}`; + if (translationCache.has(cacheKey)) { + let text = translationCache.get(cacheKey); + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + // Try dynamically loaded translations (already loaded) + if (loadedTranslations[state.language]?.[key]) { + let text = loadedTranslations[state.language][key]; + // Cache for future use + translationCache.set(cacheKey, text); + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + // Fallback to English if current language failed + if (state.language !== 'en' && loadedTranslations['en']?.[key]) { + let text = loadedTranslations['en'][key]; + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + // Final fallback to emergency fallback or key + let text = FALLBACK_TEXT[state.language]?.[key] || FALLBACK_TEXT.en?.[key] || key; + Object.keys(params).forEach((param) => { + text = text.replace(new RegExp(`\\{${param}\\}`, 'g'), params[param]); + }); + + // Log missing translations for debugging + if (text === key && key !== 'undefined') { + console.warn(`โš ๏ธ Missing translation for key: ${key} (language: ${state.language})`); + } + + return text; + }, + + showAlert: (message, type = 'info') => { + const alertDiv = document.createElement('div'); + alertDiv.className = `wplace-alert-base wplace-alert-${type}`; + + alertDiv.textContent = message; + document.body.appendChild(alertDiv); + + setTimeout(() => { + alertDiv.style.animation = 'slide-down 0.3s ease-out reverse'; + setTimeout(() => { + document.body.removeChild(alertDiv); + }, 300); + }, 4000); + }, + + colorDistance: (a, b) => + Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2) + Math.pow(a[2] - b[2], 2)), + _labCache: new Map(), // key: (r<<16)|(g<<8)|b value: [L,a,b] + _rgbToLab: (r, g, b) => { + // sRGB -> linear + const srgbToLinear = (v) => { + v /= 255; + return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); + }; + const rl = srgbToLinear(r); + const gl = srgbToLinear(g); + const bl = srgbToLinear(b); + let X = rl * 0.4124 + gl * 0.3576 + bl * 0.1805; + let Y = rl * 0.2126 + gl * 0.7152 + bl * 0.0722; + let Z = rl * 0.0193 + gl * 0.1192 + bl * 0.9505; + X /= 0.95047; + Y /= 1.0; + Z /= 1.08883; + const f = (t) => (t > 0.008856 ? Math.cbrt(t) : 7.787 * t + 16 / 116); + const fX = f(X), + fY = f(Y), + fZ = f(Z); + const L = 116 * fY - 16; + const a = 500 * (fX - fY); + const b2 = 200 * (fY - fZ); + return [L, a, b2]; + }, + _lab: (r, g, b) => { + const key = (r << 16) | (g << 8) | b; + let v = Utils._labCache.get(key); + if (!v) { + v = Utils._rgbToLab(r, g, b); + Utils._labCache.set(key, v); + } + return v; + }, + findClosestPaletteColor: (r, g, b, palette) => { + // Use provided palette or derive from COLOR_MAP + if (!palette || palette.length === 0) { + palette = Object.values(CONFIG.COLOR_MAP) + .filter((c) => c.rgb) + .map((c) => [c.rgb.r, c.rgb.g, c.rgb.b]); + } + if (state.colorMatchingAlgorithm === 'legacy') { + let menorDist = Infinity; + let cor = [0, 0, 0]; + for (let i = 0; i < palette.length; i++) { + const [pr, pg, pb] = palette[i]; + const rmean = (pr + r) / 2; + const rdiff = pr - r; + const gdiff = pg - g; + const bdiff = pb - b; + const dist = Math.sqrt( + (((512 + rmean) * rdiff * rdiff) >> 8) + + 4 * gdiff * gdiff + + (((767 - rmean) * bdiff * bdiff) >> 8) + ); + if (dist < menorDist) { + menorDist = dist; + cor = [pr, pg, pb]; + } + } + return cor; + } + // LAB algorithm + const [Lt, at, bt] = Utils._lab(r, g, b); + const targetChroma = Math.sqrt(at * at + bt * bt); + let best = null; + let bestDist = Infinity; + for (let i = 0; i < palette.length; i++) { + const [pr, pg, pb] = palette[i]; + const [Lp, ap, bp] = Utils._lab(pr, pg, pb); + const dL = Lt - Lp; + const da = at - ap; + const db = bt - bp; + let dist = dL * dL + da * da + db * db; + if (state.enableChromaPenalty && targetChroma > 20) { + const candChroma = Math.sqrt(ap * ap + bp * bp); + if (candChroma < targetChroma) { + const chromaDiff = targetChroma - candChroma; + dist += chromaDiff * chromaDiff * state.chromaPenaltyWeight; + } + } + if (dist < bestDist) { + bestDist = dist; + best = palette[i]; + if (bestDist === 0) break; + } + } + return best || [0, 0, 0]; + }, + + isWhitePixel: (r, g, b) => { + const wt = state.customWhiteThreshold || CONFIG.WHITE_THRESHOLD; + return r >= wt && g >= wt && b >= wt; + }, + + resolveColor(targetRgb, availableColors, exactMatch = false) { + if (!availableColors || availableColors.length === 0) { + return { + id: null, + rgb: targetRgb, + }; + } + + const cacheKey = `${targetRgb[0]},${targetRgb[1]},${targetRgb[2]}|${state.colorMatchingAlgorithm}|${state.enableChromaPenalty ? 'c' : 'nc' + }|${state.chromaPenaltyWeight}|${exactMatch ? 'exact' : 'closest'}`; + + if (colorCache.has(cacheKey)) return colorCache.get(cacheKey); + + // Check for an exact color match in availableColors. + // If found, return the matched color with its ID. + // If not found, return the target color with null ID. + // Cache the result for future lookups. + if (exactMatch) { + const match = availableColors.find( + (c) => c.rgb[0] === targetRgb[0] && c.rgb[1] === targetRgb[1] && c.rgb[2] === targetRgb[2] + ); + const result = match ? { id: match.id, rgb: [...match.rgb] } : { id: null, rgb: targetRgb }; + colorCache.set(cacheKey, result); + return result; + } + + // check for white using threshold + const whiteThreshold = state.customWhiteThreshold || CONFIG.WHITE_THRESHOLD; + if ( + targetRgb[0] >= whiteThreshold && + targetRgb[1] >= whiteThreshold && + targetRgb[2] >= whiteThreshold + ) { + const whiteEntry = availableColors.find( + (c) => + c.rgb[0] >= whiteThreshold && c.rgb[1] >= whiteThreshold && c.rgb[2] >= whiteThreshold + ); + if (whiteEntry) { + const result = { id: whiteEntry.id, rgb: [...whiteEntry.rgb] }; + colorCache.set(cacheKey, result); + return result; + } + } + + // find nearest color + let bestId = availableColors[0].id; + let bestRgb = [...availableColors[0].rgb]; + let bestScore = Infinity; + + if (state.colorMatchingAlgorithm === 'legacy') { + for (let i = 0; i < availableColors.length; i++) { + const c = availableColors[i]; + const [r, g, b] = c.rgb; + const rmean = (r + targetRgb[0]) / 2; + const rdiff = r - targetRgb[0]; + const gdiff = g - targetRgb[1]; + const bdiff = b - targetRgb[2]; + const dist = Math.sqrt( + (((512 + rmean) * rdiff * rdiff) >> 8) + + 4 * gdiff * gdiff + + (((767 - rmean) * bdiff * bdiff) >> 8) + ); + if (dist < bestScore) { + bestScore = dist; + bestId = c.id; + bestRgb = [...c.rgb]; + if (dist === 0) break; + } + } + } else { + const [Lt, at, bt] = Utils._lab(targetRgb[0], targetRgb[1], targetRgb[2]); + const targetChroma = Math.sqrt(at * at + bt * bt); + const penaltyWeight = state.enableChromaPenalty ? state.chromaPenaltyWeight || 0.15 : 0; + + for (let i = 0; i < availableColors.length; i++) { + const c = availableColors[i]; + const [r, g, b] = c.rgb; + const [L2, a2, b2] = Utils._lab(r, g, b); + const dL = Lt - L2, + da = at - a2, + db = bt - b2; + let dist = dL * dL + da * da + db * db; + + if (penaltyWeight > 0 && targetChroma > 20) { + const candChroma = Math.sqrt(a2 * a2 + b2 * b2); + if (candChroma < targetChroma) { + const cd = targetChroma - candChroma; + dist += cd * cd * penaltyWeight; + } + } + + if (dist < bestScore) { + bestScore = dist; + bestId = c.id; + bestRgb = [...c.rgb]; + if (dist === 0) break; + } + } + } + + const result = { id: bestId, rgb: bestRgb }; + colorCache.set(cacheKey, result); + + // limit the size of the cache + if (colorCache.size > 15000) { + const firstKey = colorCache.keys().next().value; + colorCache.delete(firstKey); + } + + return result; + }, + + createImageUploader: () => + new Promise((resolve) => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = 'image/png,image/jpeg'; + input.onchange = () => { + const fr = new FileReader(); + fr.onload = () => resolve(fr.result); + fr.readAsDataURL(input.files[0]); + }; + input.click(); + }), + + createFileDownloader: (data, filename) => { + const blob = new Blob([data], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }, + + createFileUploader: () => + new Promise((resolve, reject) => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = '.json'; + input.onchange = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = () => { + try { + const data = JSON.parse(reader.result); + resolve(data); + } catch (error) { + reject(new Error('Invalid JSON file')); + } + }; + reader.onerror = () => reject(new Error('File reading error')); + reader.readAsText(file); + } else { + reject(new Error('No file selected')); + } + }; + input.click(); + }), + + extractAvailableColors: () => { + const colorElements = document.querySelectorAll('.tooltip button[id^="color-"]'); + if (colorElements.length === 0) { + console.log('โŒ No color elements found on page'); + return null; + } + // Separate available and unavailable colors + const availableColors = []; + const unavailableColors = []; + + Array.from(colorElements).forEach((el) => { + const id = Number.parseInt(el.id.replace('color-', '')); + if (id === 0) return; // Skip transparent color + + const rgbStr = el.style.backgroundColor.match(/\d+/g); + if (!rgbStr || rgbStr.length < 3) { + console.warn(`Skipping color element ${el.id} โ€” cannot parse RGB`); + return; + } + const rgb = rgbStr.map(Number); + + // Find color name from COLOR_MAP + const colorInfo = Object.values(CONFIG.COLOR_MAP).find((color) => color.id === id); + const name = colorInfo ? colorInfo.name : `Unknown Color ${id}`; + + const colorData = { id, name, rgb }; + + // Check if color is available (no SVG overlay means available) + if (!el.querySelector('svg')) { + availableColors.push(colorData); + } else { + unavailableColors.push(colorData); + } + }); + + // Console log detailed color information + console.log('=== CAPTURED COLORS STATUS ==='); + console.log(`Total available colors: ${availableColors.length}`); + console.log(`Total unavailable colors: ${unavailableColors.length}`); + console.log(`Total colors scanned: ${availableColors.length + unavailableColors.length}`); + + if (availableColors.length > 0) { + console.log('\n--- AVAILABLE COLORS ---'); + availableColors.forEach((color, index) => { + console.log( + `${index + 1 + }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]})` + ); + }); + } + + if (unavailableColors.length > 0) { + console.log('\n--- UNAVAILABLE COLORS ---'); + unavailableColors.forEach((color, index) => { + console.log( + `${index + 1 + }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]}) [LOCKED]` + ); + }); + } + + console.log('=== END COLOR STATUS ==='); + + return availableColors; + }, + + formatTime: (ms) => { + const seconds = Math.floor((ms / 1000) % 60); + const minutes = Math.floor((ms / (1000 * 60)) % 60); + const hours = Math.floor((ms / (1000 * 60 * 60)) % 24); + const days = Math.floor(ms / (1000 * 60 * 60 * 24)); + + let result = ''; + if (days > 0) result += `${days}d `; + if (hours > 0 || days > 0) result += `${hours}h `; + if (minutes > 0 || hours > 0 || days > 0) result += `${minutes}m `; + result += `${seconds}s`; + + return result; + }, + + calculateEstimatedTime: (remainingPixels, charges, cooldown) => { + if (remainingPixels <= 0) return 0; + + const paintingSpeedDelay = state.paintingSpeed > 0 ? 1000 / state.paintingSpeed : 1000; + const timeFromSpeed = remainingPixels * paintingSpeedDelay; + + const cyclesNeeded = Math.ceil(remainingPixels / Math.max(charges, 1)); + const timeFromCharges = cyclesNeeded * cooldown; + + return timeFromSpeed + timeFromCharges; // combine instead of taking max + }, + + // --- Painted pixel tracking helpers --- + initializePaintedMap: (width, height) => { + if (!state.paintedMap || state.paintedMap.length !== height) { + state.paintedMap = Array(height) + .fill() + .map(() => Array(width).fill(false)); + console.log(`๐Ÿ“‹ Initialized painted map: ${width}x${height}`); + } + }, + + markPixelPainted: (x, y, regionX = 0, regionY = 0) => { + const actualX = x + regionX; + const actualY = y + regionY; + + if ( + state.paintedMap && + state.paintedMap[actualY] && + actualX >= 0 && + actualX < state.paintedMap[actualY].length + ) { + state.paintedMap[actualY][actualX] = true; + } + }, + + isPixelPainted: (x, y, regionX = 0, regionY = 0) => { + const actualX = x + regionX; + const actualY = y + regionY; + + if ( + state.paintedMap && + state.paintedMap[actualY] && + actualX >= 0 && + actualX < state.paintedMap[actualY].length + ) { + return state.paintedMap[actualY][actualX]; + } + return false; + }, + + // Smart save - only save if significant changes + shouldAutoSave: () => { + const now = Date.now(); + const pixelsSinceLastSave = state.paintedPixels - state._lastSavePixelCount; + const timeSinceLastSave = now - state._lastSaveTime; + + // Save conditions: + // 1. Every 25 pixels (reduced from 50 for more frequent saves) + // 2. At least 30 seconds since last save (prevent spam) + // 3. Not already saving + return !state._saveInProgress && pixelsSinceLastSave >= 25 && timeSinceLastSave >= 30000; + }, + + performSmartSave: () => { + if (!Utils.shouldAutoSave()) return false; + + state._saveInProgress = true; + const success = Utils.saveProgress(); + + if (success) { + state._lastSavePixelCount = state.paintedPixels; + state._lastSaveTime = Date.now(); + console.log(`๐Ÿ’พ Auto-saved at ${state.paintedPixels} pixels`); + } + + state._saveInProgress = false; + return success; + }, + + // --- Data management helpers --- + + // Base64 compression helpers for efficient storage + packPaintedMapToBase64: (paintedMap, width, height) => { + if (!paintedMap || !width || !height) return null; + const totalBits = width * height; + const byteLen = Math.ceil(totalBits / 8); + const bytes = new Uint8Array(byteLen); + let bitIndex = 0; + for (let y = 0; y < height; y++) { + const row = paintedMap[y]; + for (let x = 0; x < width; x++) { + const bit = row && row[x] ? 1 : 0; + const b = bitIndex >> 3; // byte index + const o = bitIndex & 7; // bit offset + if (bit) bytes[b] |= 1 << o; + bitIndex++; + } + } + let binary = ''; + const chunk = 0x8000; + for (let i = 0; i < bytes.length; i += chunk) { + binary += String.fromCharCode.apply( + null, + bytes.subarray(i, Math.min(i + chunk, bytes.length)) + ); + } + return btoa(binary); + }, + + unpackPaintedMapFromBase64: (base64, width, height) => { + if (!base64 || !width || !height) return null; + const binary = atob(base64); + const bytes = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i); + const map = Array(height) + .fill() + .map(() => Array(width).fill(false)); + let bitIndex = 0; + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const b = bitIndex >> 3; + const o = bitIndex & 7; + map[y][x] = ((bytes[b] >> o) & 1) === 1; + bitIndex++; + } + } + return map; + }, + + // Migration helpers for backward compatibility + migrateProgressToV2: (saved) => { + if (!saved) return saved; + const isV1 = + !saved.version || + saved.version === '1' || + saved.version === '1.0' || + saved.version === '1.1'; + if (!isV1) return saved; + + try { + const migrated = { ...saved }; + const width = migrated.imageData?.width; + const height = migrated.imageData?.height; + if (migrated.paintedMap && width && height) { + const data = Utils.packPaintedMapToBase64(migrated.paintedMap, width, height); + migrated.paintedMapPacked = { width, height, data }; + } + delete migrated.paintedMap; + migrated.version = '2'; + return migrated; + } catch (e) { + console.warn('Migration to v2 failed, using original data:', e); + return saved; + } + }, + + migrateProgressToV21: (saved) => { + if (!saved) return saved; + if (saved.version === '2.1') return saved; + const isV2 = saved.version === '2' || saved.version === '2.0'; + const isV1 = + !saved.version || + saved.version === '1' || + saved.version === '1.0' || + saved.version === '1.1'; + if (!isV2 && !isV1) return saved; // save this for future + try { + const migrated = { ...saved }; + // First migrate to v2 if needed + if (isV1) { + const width = migrated.imageData?.width; + const height = migrated.imageData?.height; + if (migrated.paintedMap && width && height) { + const data = Utils.packPaintedMapToBase64(migrated.paintedMap, width, height); + migrated.paintedMapPacked = { width, height, data }; + } + delete migrated.paintedMap; + } + migrated.version = '2.1'; + return migrated; + } catch (e) { + console.warn('Migration to v2.1 failed, using original data:', e); + return saved; + } + }, + + migrateProgressToV22: (data) => { + try { + const migrated = { ...data }; + migrated.version = '2.2'; + + // Add new fields with default values + if (!migrated.state.coordinateMode) { + migrated.state.coordinateMode = CONFIG.COORDINATE_MODE; + } + if (!migrated.state.coordinateDirection) { + migrated.state.coordinateDirection = CONFIG.COORDINATE_DIRECTION; + } + if (!migrated.state.coordinateSnake) { + migrated.state.coordinateSnake = CONFIG.COORDINATE_SNAKE; + } + if (!migrated.state.blockWidth) { + migrated.state.blockWidth = CONFIG.COORDINATE_BLOCK_WIDTH; + } + if (!migrated.state.blockHeight) { + migrated.state.blockHeight = CONFIG.COORDINATE_BLOCK_HEIGHT; + } + + return migrated; + } catch (e) { + console.warn('Migration to v2.2 failed, using original data:', e); + return data; + } + }, + + buildPaintedMapPacked() { + if (state.paintedMap && state.imageData) { + const data = Utils.packPaintedMapToBase64( + state.paintedMap, + state.imageData.width, + state.imageData.height + ); + if (data) { + return { + width: state.imageData.width, + height: state.imageData.height, + data: data, + }; + } + } + return null; + }, + + buildProgressData() { + return { + timestamp: Date.now(), + version: '2.2', + state: { + totalPixels: state.totalPixels, + paintedPixels: state.paintedPixels, + lastPosition: state.lastPosition, + startPosition: state.startPosition, + region: state.region, + imageLoaded: state.imageLoaded, + colorsChecked: state.colorsChecked, + coordinateMode: state.coordinateMode, + coordinateDirection: state.coordinateDirection, + coordinateSnake: state.coordinateSnake, + blockWidth: state.blockWidth, + blockHeight: state.blockHeight, + availableColors: state.availableColors, + }, + imageData: state.imageData + ? { + width: state.imageData.width, + height: state.imageData.height, + pixels: Array.from(state.imageData.pixels), + totalPixels: state.imageData.totalPixels, + } + : null, + paintedMapPacked: Utils.buildPaintedMapPacked(), + }; + }, + + migrateProgress(saved) { + if (!saved) return null; + + let data = saved; + const ver = data.version; + + // If version is missing or โ‰ค 1.x โ†’ first migrate to v2 + if (!ver || ver === '1' || ver === '1.0' || ver === '1.1') { + data = Utils.migrateProgressToV2(data); + } + + // If still older than v2.1 โ†’ migrate to 2.1 + if (data.version === '2' || data.version === '2.0') { + data = Utils.migrateProgressToV21(data); + } + + // If still older than v2.2 โ†’ migrate to 2.2 + if (data.version === '2.1') { + data = Utils.migrateProgressToV22(data); + } + + // Now data is guaranteed to be the latest version + return data; + }, + + saveProgress: () => { + try { + const progressData = Utils.buildProgressData(state); + + localStorage.setItem('wplace-bot-progress', JSON.stringify(progressData)); + return true; + } catch (error) { + console.error('Error saving progress:', error); + return false; + } + }, + + loadProgress: () => { + try { + const saved = localStorage.getItem('wplace-bot-progress'); + if (!saved) return null; + let data = JSON.parse(saved); + const migrated = Utils.migrateProgress(data); + + if (migrated && migrated !== data) { + try { + localStorage.setItem('wplace-bot-progress', JSON.stringify(migrated)); + } catch { } + } + return migrated; + } catch (error) { + console.error('Error loading progress:', error); + return null; + } + }, + + clearProgress: () => { + try { + localStorage.removeItem('wplace-bot-progress'); + // Also clear painted map from memory + state.paintedMap = null; + state._lastSavePixelCount = 0; + state._lastSaveTime = 0; + // Reset coordinate generation settings to their default values + state.coordinateMode = CONFIG.COORDINATE_MODE; + state.coordinateDirection = CONFIG.COORDINATE_DIRECTION; + state.coordinateSnake = CONFIG.COORDINATE_SNAKE; + state.blockWidth = CONFIG.COORDINATE_BLOCK_WIDTH; + state.blockHeight = CONFIG.COORDINATE_BLOCK_HEIGHT; + console.log('๐Ÿ“‹ Progress and painted map cleared'); + return true; + } catch (error) { + console.error('Error clearing progress:', error); + return false; + } + }, + + restoreProgress: (savedData) => { + try { + Object.assign(state, savedData.state); + + // Restore coordinate generation settings + if (savedData.state.coordinateMode) { + state.coordinateMode = savedData.state.coordinateMode; + } + if (savedData.state.coordinateDirection) { + state.coordinateDirection = savedData.state.coordinateDirection; + } + if (savedData.state.coordinateSnake !== undefined) { + state.coordinateSnake = savedData.state.coordinateSnake; + } + if (savedData.state.blockWidth) { + state.blockWidth = savedData.state.blockWidth; + } + if (savedData.state.blockHeight) { + state.blockHeight = savedData.state.blockHeight; + } + + if (savedData.imageData) { + state.imageData = { + ...savedData.imageData, + pixels: new Uint8ClampedArray(savedData.imageData.pixels), + }; + + try { + const canvas = document.createElement('canvas'); + canvas.width = state.imageData.width; + canvas.height = state.imageData.height; + const ctx = canvas.getContext('2d'); + const imageData = new ImageData( + state.imageData.pixels, + state.imageData.width, + state.imageData.height + ); + ctx.putImageData(imageData, 0, 0); + const proc = new ImageProcessor(''); + proc.img = canvas; + proc.canvas = canvas; + proc.ctx = ctx; + state.imageData.processor = proc; + } catch (e) { + console.warn('Could not rebuild processor from saved image data:', e); + } + } + + // Prefer packed form if available; fallback to legacy paintedMap array for backward compatibility + if (savedData.paintedMapPacked && savedData.paintedMapPacked.data) { + const { width, height, data } = savedData.paintedMapPacked; + state.paintedMap = Utils.unpackPaintedMapFromBase64(data, width, height); + } else if (savedData.paintedMap) { + state.paintedMap = savedData.paintedMap.map((row) => Array.from(row)); + } + + return true; + } catch (error) { + console.error('Error restoring progress:', error); + return false; + } + }, + + saveProgressToFile: () => { + try { + const progressData = Utils.buildProgressData(); + const filename = `wplace-bot-progress-${new Date() + .toISOString() + .slice(0, 19) + .replace(/:/g, '-')}.json`; + Utils.createFileDownloader(JSON.stringify(progressData, null, 2), filename); + return true; + } catch (error) { + console.error('Error saving to file:', error); + return false; + } + }, + + loadProgressFromFile: async () => { + try { + const data = await Utils.createFileUploader(); + if (!data || !data.state) { + throw new Error('Invalid file format'); + } + const migrated = Utils.migrateProgress(data); + + const success = Utils.restoreProgress(migrated); + return success; + } catch (error) { + console.error('Error loading from file:', error); + throw error; + } + }, + + // Helper function to restore overlay from loaded data + restoreOverlayFromData: async () => { + if (!state.imageLoaded || !state.imageData || !state.startPosition || !state.region) { + return false; + } + + try { + // Recreate ImageBitmap from loaded pixel data + const imageData = new ImageData( + state.imageData.pixels, + state.imageData.width, + state.imageData.height + ); + + const canvas = new OffscreenCanvas(state.imageData.width, state.imageData.height); + const ctx = canvas.getContext('2d'); + ctx.putImageData(imageData, 0, 0); + const imageBitmap = await canvas.transferToImageBitmap(); + + // Set up overlay with restored data + await overlayManager.setImage(imageBitmap); + await overlayManager.setPosition(state.startPosition, state.region); + overlayManager.enable(); + + // Update overlay button state + const toggleOverlayBtn = document.getElementById('toggleOverlayBtn'); + if (toggleOverlayBtn) { + toggleOverlayBtn.disabled = false; + toggleOverlayBtn.classList.add('active'); + } + + console.log('Overlay restored from data'); + return true; + } catch (error) { + console.error('Failed to restore overlay from data:', error); + return false; + } + }, + + updateCoordinateUI({ mode, directionControls, snakeControls, blockControls }) { + const isLinear = mode === 'rows' || mode === 'columns'; + const isBlock = mode === 'blocks' || mode === 'shuffle-blocks'; + + if (directionControls) directionControls.style.display = isLinear ? 'block' : 'none'; + if (snakeControls) snakeControls.style.display = isLinear ? 'block' : 'none'; + if (blockControls) blockControls.style.display = isBlock ? 'block' : 'none'; + }, + }; + + // IMAGE PROCESSOR CLASS + class ImageProcessor { + constructor(imageSrc) { + this.imageSrc = imageSrc; + this.img = null; + this.canvas = null; + this.ctx = null; + } + + async load() { + return new Promise((resolve, reject) => { + this.img = new Image(); + this.img.crossOrigin = 'anonymous'; + this.img.onload = () => { + this.canvas = document.createElement('canvas'); + this.ctx = this.canvas.getContext('2d'); + this.canvas.width = this.img.width; + this.canvas.height = this.img.height; + this.ctx.drawImage(this.img, 0, 0); + resolve(); + }; + this.img.onerror = reject; + this.img.src = this.imageSrc; + }); + } + + getDimensions() { + return { + width: this.canvas.width, + height: this.canvas.height, + }; + } + + getPixelData() { + return this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height).data; + } + + resize(newWidth, newHeight) { + const tempCanvas = document.createElement('canvas'); + const tempCtx = tempCanvas.getContext('2d'); + + tempCanvas.width = newWidth; + tempCanvas.height = newHeight; + + tempCtx.imageSmoothingEnabled = false; + tempCtx.drawImage(this.canvas, 0, 0, newWidth, newHeight); + + this.canvas.width = newWidth; + this.canvas.height = newHeight; + this.ctx.imageSmoothingEnabled = false; + this.ctx.drawImage(tempCanvas, 0, 0); + + return this.ctx.getImageData(0, 0, newWidth, newHeight).data; + } + + generatePreview(width, height) { + const previewCanvas = document.createElement('canvas'); + const previewCtx = previewCanvas.getContext('2d'); + + previewCanvas.width = width; + previewCanvas.height = height; + + previewCtx.imageSmoothingEnabled = false; + previewCtx.drawImage(this.img, 0, 0, width, height); + + return previewCanvas.toDataURL(); + } + } + + // WPLACE API SERVICE + const WPlaceService = { + async paintPixelInRegion(regionX, regionY, pixelX, pixelY, color) { + try { + await ensureToken(); + if (!turnstileToken) return 'token_error'; + const payload = { + coords: [pixelX, pixelY], + colors: [color], + t: turnstileToken, + fp: fpStr32, + }; + var token = await createWasmToken(regionX, regionY, payload); + const res = await fetch(`https://backend.wplace.live/s0/pixel/${regionX}/${regionY}`, { + method: 'POST', + headers: { 'Content-Type': 'text/plain;charset=UTF-8', "x-pawtect-token": token }, + credentials: 'include', + body: JSON.stringify(payload), + }); + if (res.status === 403) { + console.error('โŒ 403 Forbidden. Turnstile token might be invalid or expired.'); + turnstileToken = null; + tokenPromise = new Promise((resolve) => { + _resolveToken = resolve; + }); + return 'token_error'; + } + const data = await res.json(); + return data?.painted === 1; + } catch (e) { + console.error('Paint request failed:', e); + return false; + } + }, + + async getCharges() { + try { + const res = await fetch("https://backend.wplace.live/me", { + credentials: "include", + }) + const data = await res.json() + return { + id: data.id, + charges: data.charges?.count || 0, + max: data.charges?.max || 1, + cooldown: data.charges?.next || CONFIG.COOLDOWN_DEFAULT, + droplets: data.droplets || 0, + } + } catch (e) { + console.error("Failed to get charges:", e) + return { + id: null, + charges: 0, + max: 1, + cooldown: CONFIG.COOLDOWN_DEFAULT, + droplets: 0, + } + } + }, + + async fetchCheck() { + try { + const res = await fetch("https://backend.wplace.live/me", { + credentials: "include", + }) + const data = await res.json() + return { + ID: data.id, + Charges: data.charges.count, + Max: data.charges.max, + Droplets: data.droplets + } + } catch (e) { + console.error("Failed to get ID:", e) + return { + + } + } + } + }; + + // Desktop Notification Manager + const NotificationManager = { + pollTimer: null, + pollIntervalMs: 60_000, + icon() { + const link = document.querySelector("link[rel~='icon']"); + return link?.href || location.origin + '/favicon.ico'; + }, + async requestPermission() { + if (!('Notification' in window)) { + Utils.showAlert(Utils.t('notificationsNotSupported'), 'warning'); + return 'denied'; + } + if (Notification.permission === 'granted') return 'granted'; + try { + const perm = await Notification.requestPermission(); + return perm; + } catch { + return Notification.permission; + } + }, + canNotify() { + return ( + state.notificationsEnabled && + typeof Notification !== 'undefined' && + Notification.permission === 'granted' + ); + }, + notify(title, body, tag = 'wplace-charges', force = false) { + if (!this.canNotify()) return false; + if (!force && state.notifyOnlyWhenUnfocused && document.hasFocus()) return false; + try { + new Notification(title, { + body, + tag, + renotify: true, + icon: this.icon(), + badge: this.icon(), + silent: false, + }); + return true; + } catch { + // Graceful fallback + Utils.showAlert(body, 'info'); + return false; + } + }, + resetEdgeTracking() { + state._lastChargesBelow = state.displayCharges < state.cooldownChargeThreshold; + state._lastChargesNotifyAt = 0; + }, + maybeNotifyChargesReached(force = false) { + if (!state.notificationsEnabled || !state.notifyOnChargesReached) return; + const reached = state.displayCharges >= state.cooldownChargeThreshold; + const now = Date.now(); + const repeatMs = Math.max(1, Number(state.notificationIntervalMinutes || 5)) * 60_000; + if (reached) { + const shouldEdge = state._lastChargesBelow || force; + const shouldRepeat = now - (state._lastChargesNotifyAt || 0) >= repeatMs; + if (shouldEdge || shouldRepeat) { + const msg = Utils.t('chargesReadyMessage', { + current: state.displayCharges, + max: state.maxCharges, + threshold: state.cooldownChargeThreshold, + }); + this.notify(Utils.t('chargesReadyNotification'), msg, 'wplace-notify-charges'); + state._lastChargesNotifyAt = now; + } + state._lastChargesBelow = false; + } else { + state._lastChargesBelow = true; + } + }, + startPolling() { + this.stopPolling(); + if (!state.notificationsEnabled || !state.notifyOnChargesReached) return; + // lightweight background polling + this.pollTimer = setInterval(async () => { + try { + const { charges, cooldown, max } = await WPlaceService.getCharges(); + state.displayCharges = Math.floor(charges); + state.cooldown = cooldown; + state.maxCharges = Math.max(1, Math.floor(max)); + this.maybeNotifyChargesReached(); + } catch { + /* ignore */ + } + }, this.pollIntervalMs); + }, + stopPolling() { + if (this.pollTimer) { + clearInterval(this.pollTimer); + this.pollTimer = null; + } + }, + syncFromState() { + this.resetEdgeTracking(); + if (state.notificationsEnabled && state.notifyOnChargesReached) this.startPolling(); + else this.stopPolling(); + }, + }; + + // COLOR MATCHING FUNCTION - Optimized with caching + const colorCache = new Map(); + + // UI UPDATE FUNCTIONS (declared early to avoid reference errors) + let updateUI = () => { }; + let updateStats = (isManualRefresh) => { }; + let updateDataButtons = () => { }; + + function updateActiveColorPalette() { + state.activeColorPalette = []; + const activeSwatches = document.querySelectorAll('.wplace-color-swatch.active'); + if (activeSwatches) { + activeSwatches.forEach((swatch) => { + const rgbStr = swatch.getAttribute('data-rgb'); + if (rgbStr) { + const rgb = rgbStr.split(',').map(Number); + state.activeColorPalette.push(rgb); + } + }); + } + if (document.querySelector('.resize-container')?.style.display === 'block') { + _updateResizePreview(); + } + } + + function toggleAllColors(select, showingUnavailable = false) { + const swatches = document.querySelectorAll('.wplace-color-swatch'); + if (swatches) { + swatches.forEach((swatch) => { + // Only toggle colors that are available or if we're showing unavailable colors + const isUnavailable = swatch.classList.contains('unavailable'); + if (!isUnavailable || showingUnavailable) { + // Don't try to select unavailable colors + if (!isUnavailable) { + swatch.classList.toggle('active', select); + } + } + }); + } + updateActiveColorPalette(); + } + + function unselectAllPaidColors() { + const swatches = document.querySelectorAll('.wplace-color-swatch'); + if (swatches) { + swatches.forEach((swatch) => { + const colorId = parseInt(swatch.getAttribute('data-color-id'), 10); + if (!isNaN(colorId) && colorId >= 32) { + swatch.classList.toggle('active', false); + } + }); + } + updateActiveColorPalette(); + } + + function initializeColorPalette(container) { + const colorsContainer = container.querySelector('#colors-container'); + const showAllToggle = container.querySelector('#showAllColorsToggle'); + if (!colorsContainer) return; + + // Use already captured colors from state (captured during upload) + // Don't re-fetch colors here, use what was captured when user clicked upload + if (!state.availableColors || state.availableColors.length === 0) { + // If no colors have been captured yet, show message + colorsContainer.innerHTML = `
${Utils.t( + 'uploadImageFirst' + )}
`; + return; + } + + function populateColors(showUnavailable = false) { + colorsContainer.innerHTML = ''; + let availableCount = 0; + let totalCount = 0; + + // Convert COLOR_MAP to array and filter out transparent + const allColors = Object.values(CONFIG.COLOR_MAP).filter((color) => color.rgb !== null); + + allColors.forEach((colorData) => { + const { id, name, rgb } = colorData; + const rgbKey = `${rgb.r},${rgb.g},${rgb.b}`; + totalCount++; + + // Check if this color is available in the captured colors + const isAvailable = state.availableColors.some( + (c) => c.rgb[0] === rgb.r && c.rgb[1] === rgb.g && c.rgb[2] === rgb.b + ); + + // If not showing all colors and this color is not available, skip it + if (!showUnavailable && !isAvailable) { + return; + } + + if (isAvailable) availableCount++; + + const colorItem = Utils.createElement('div', { + className: 'wplace-color-item', + }); + const swatch = Utils.createElement('button', { + className: `wplace-color-swatch ${!isAvailable ? 'unavailable' : ''}`, + title: `${name} (ID: ${id})${!isAvailable ? ' (Unavailable)' : ''}`, + 'data-rgb': rgbKey, + 'data-color-id': id, + }); + swatch.style.backgroundColor = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`; + + // Make unavailable colors visually distinct + if (!isAvailable) { + swatch.style.opacity = '0.4'; + swatch.style.filter = 'grayscale(50%)'; + swatch.disabled = true; + } else { + // Select available colors by default + swatch.classList.add('active'); + } + + const nameLabel = Utils.createElement( + 'span', + { + className: 'wplace-color-item-name', + style: !isAvailable ? 'color: #888; font-style: italic;' : '', + }, + name + (!isAvailable ? ' (N/A)' : '') + ); + + // Only add click listener for available colors + if (isAvailable) { + swatch.addEventListener('click', () => { + swatch.classList.toggle('active'); + updateActiveColorPalette(); + }); + } + + colorItem.appendChild(swatch); + colorItem.appendChild(nameLabel); + colorsContainer.appendChild(colorItem); + }); + + updateActiveColorPalette(); + } + + // Initialize with only available colors + populateColors(false); + + // Add toggle functionality + if (showAllToggle) { + showAllToggle.addEventListener('change', (e) => { + populateColors(e.target.checked); + }); + } + + container + .querySelector('#selectAllBtn') + ?.addEventListener('click', () => toggleAllColors(true, showAllToggle?.checked)); + container + .querySelector('#unselectAllBtn') + ?.addEventListener('click', () => toggleAllColors(false, showAllToggle?.checked)); + container + .querySelector('#unselectPaidBtn') + ?.addEventListener('click', () => unselectAllPaidColors()); + } + + async function handleCaptcha() { + const startTime = performance.now(); + + // Check user's token source preference + if (state.tokenSource === 'manual') { + console.log('๐ŸŽฏ Manual token source selected - using pixel placement automation'); + return await handleCaptchaFallback(); + } + + // Generator mode (pure) or Hybrid mode - try generator first + try { + // Use optimized token generation with automatic sitekey detection + const { sitekey, token: preGeneratedToken } = await Utils.obtainSitekeyAndToken(); + + if (!sitekey) { + throw new Error('No valid sitekey found'); + } + + console.log('๐Ÿ”‘ Generating Turnstile token for sitekey:', sitekey); + console.log( + '๐Ÿงญ UA:', + navigator.userAgent.substring(0, 50) + '...', + 'Platform:', + navigator.platform + ); + + // Add additional checks before token generation + if (!window.turnstile) { + await Utils.loadTurnstile(); + } + + let token = null; + + // โœ… Reuse pre-generated token if available and valid + if ( + preGeneratedToken && + typeof preGeneratedToken === 'string' && + preGeneratedToken.length > 20 + ) { + console.log('โ™ป๏ธ Reusing pre-generated token from sitekey detection phase'); + token = preGeneratedToken; + } + // โœ… Or use globally cached token if still valid + else if (isTokenValid()) { + console.log('โ™ป๏ธ Using existing cached token (from previous operation)'); + token = turnstileToken; + } + // โœ… Otherwise generate a new one + else { + console.log('๐Ÿ” No valid pre-generated or cached token, creating new one...'); + token = await Utils.executeTurnstile(sitekey, 'paint'); + if (token) { + setTurnstileToken(token); + } + } + + // ๐Ÿ“Š Debug log + console.log( + `๐Ÿ” Token received - Type: ${typeof token}, Value: ${token + ? typeof token === 'string' + ? token.length > 50 + ? token.substring(0, 50) + '...' + : token + : JSON.stringify(token) + : 'null/undefined' + }, Length: ${token?.length || 0}` + ); + + // โœ… Final validation + if (typeof token === 'string' && token.length > 20) { + const duration = Math.round(performance.now() - startTime); + console.log(`โœ… Turnstile token generated successfully in ${duration}ms`); + return token; + } else { + throw new Error( + `Invalid or empty token received - Type: ${typeof token}, Value: ${JSON.stringify( + token + )}, Length: ${token?.length || 0}` + ); + } + } catch (error) { + const duration = Math.round(performance.now() - startTime); + console.error(`โŒ Turnstile token generation failed after ${duration}ms:`, error); + + // Fallback to manual pixel placement for hybrid mode + if (state.tokenSource === 'hybrid') { + console.log( + '๐Ÿ”„ Hybrid mode: Generator failed, automatically switching to manual pixel placement...' + ); + const fbToken = await handleCaptchaFallback(); + return fbToken; + } else { + // Pure generator mode - don't fallback, just fail + throw error; + } + } + } + + // Keep original method as fallback + async function handleCaptchaFallback() { + return new Promise(async (resolve, reject) => { + try { + // Ensure we have a fresh promise to await for a new token capture + if (!_resolveToken) { + tokenPromise = new Promise((res) => { + _resolveToken = res; + }); + } + const timeoutPromise = Utils.sleep(20000).then(() => + reject(new Error('Auto-CAPTCHA timed out.')) + ); + + const solvePromise = (async () => { + const mainPaintBtn = await Utils.waitForSelector( + 'button.btn.btn-primary.btn-lg, button.btn-primary.sm\\:btn-xl', + 200, + 10000 + ); + if (!mainPaintBtn) throw new Error('Could not find the main paint button.'); + mainPaintBtn.click(); + await Utils.sleep(500); + + const transBtn = await Utils.waitForSelector('button#color-0', 200, 5000); + if (!transBtn) throw new Error('Could not find the transparent color button.'); + transBtn.click(); + await Utils.sleep(500); + + const canvas = await Utils.waitForSelector('canvas', 200, 5000); + if (!canvas) throw new Error('Could not find the canvas element.'); + + canvas.setAttribute('tabindex', '0'); + canvas.focus(); + const rect = canvas.getBoundingClientRect(); + const centerX = Math.round(rect.left + rect.width / 2); + const centerY = Math.round(rect.top + rect.height / 2); + + canvas.dispatchEvent( + new MouseEvent('mousemove', { + clientX: centerX, + clientY: centerY, + bubbles: true, + }) + ); + canvas.dispatchEvent( + new KeyboardEvent('keydown', { + key: ' ', + code: 'Space', + bubbles: true, + }) + ); + await Utils.sleep(50); + canvas.dispatchEvent( + new KeyboardEvent('keyup', { + key: ' ', + code: 'Space', + bubbles: true, + }) + ); + await Utils.sleep(500); + + // 800ms delay before sending confirmation + await Utils.sleep(800); + + // Keep confirming until token is captured + const confirmLoop = async () => { + while (!turnstileToken) { + let confirmBtn = await Utils.waitForSelector( + 'button.btn.btn-primary.btn-lg, button.btn.btn-primary.sm\\:btn-xl' + ); + if (!confirmBtn) { + const allPrimary = Array.from(document.querySelectorAll('button.btn-primary')); + confirmBtn = allPrimary.length ? allPrimary[allPrimary.length - 1] : null; + } + if (confirmBtn) { + confirmBtn.click(); + } + await Utils.sleep(500); // 500ms delay between confirmation attempts + } + }; + + // Start confirmation loop and wait for token + confirmLoop(); + const token = await tokenPromise; + await Utils.sleep(300); // small delay after token is captured + resolve(token); + })(); + + await Promise.race([solvePromise, timeoutPromise]); + } catch (error) { + console.error('Auto-CAPTCHA process failed:', error); + reject(error); + } + }); + } + + async function createUI() { + await detectLanguage(); + + const existingContainer = document.getElementById('wplace-image-bot-container'); + const existingStats = document.getElementById('wplace-stats-container'); + const existingSettings = document.getElementById('wplace-settings-container'); + const existingResizeContainer = document.querySelector('.resize-container'); + const existingResizeOverlay = document.querySelector('.resize-overlay'); + + if (existingContainer) existingContainer.remove(); + if (existingStats) existingStats.remove(); + if (existingSettings) existingSettings.remove(); + if (existingResizeContainer) existingResizeContainer.remove(); + if (existingResizeOverlay) existingResizeOverlay.remove(); + + loadThemePreference(); + await initializeTranslations(); + + const theme = getCurrentTheme(); + applyTheme(); // <- new: set CSS vars and theme class before building UI + + function appendLinkOnce(href, attributes = {}) { + // Check if a link with the same href already exists in the document head + const exists = Array.from(document.head.querySelectorAll('link')).some( + (link) => link.href === href + ); + if (exists) return; + + // Create a new link element + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = href; + + // Add any additional attributes (e.g., data-* attributes) + for (const [key, value] of Object.entries(attributes)) { + link.setAttribute(key, value); + } + + // Append the link element to the document head + document.head.appendChild(link); + } + + appendLinkOnce('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css'); + + if (theme.fontFamily.includes('Press Start 2P')) { + appendLinkOnce('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap'); + } + + // Load auto-image-styles.css - prioritize extension local resources + console.group('%c๐ŸŽจ Loading Auto-Image Styles', 'color: #8b5cf6; font-weight: bold;'); + + let stylesLoaded = false; + + // First try: Check if extension has loaded local CSS resources + if (window.AUTOBOT_THEMES && window.AUTOBOT_THEMES['auto-image-styles.css']) { + console.log('%c๐Ÿ” Found auto-image-styles.css in extension local resources!', 'color: #10b981; font-weight: bold;'); + + // Check if it's already injected by the extension + const existingStyle = document.getElementById('autobot-auto-image-styles'); + if (existingStyle) { + console.log('%cโœ… Styles already injected by extension - using local version', 'color: #10b981; font-weight: bold;'); + console.log(' ๐Ÿ“ Source: Extension local file (already in DOM)'); + console.log(' ๐Ÿ†” Element ID: autobot-auto-image-styles'); + stylesLoaded = true; + } else { + // Inject it ourselves + const styleElement = document.createElement('style'); + styleElement.id = 'autobot-auto-image-styles-script'; + styleElement.setAttribute('data-wplace-theme', 'true'); + styleElement.textContent = window.AUTOBOT_THEMES['auto-image-styles.css']; + document.head.appendChild(styleElement); + + console.log('%cโœ… Injected auto-image-styles.css from extension local resources', 'color: #10b981; font-weight: bold;'); + console.log(' ๐Ÿ“ Source: Extension local file'); + console.log(' ๐Ÿ“ Size: ' + window.AUTOBOT_THEMES['auto-image-styles.css'].length + ' characters'); + console.log(' ๐Ÿ†” Element ID: autobot-auto-image-styles-script'); + stylesLoaded = true; + } + } else { + console.log('%c๐Ÿ“ auto-image-styles.css not found in extension resources', 'color: #f59e0b;'); + console.log(' ๐Ÿ” window.AUTOBOT_THEMES:', typeof window.AUTOBOT_THEMES); + if (window.AUTOBOT_THEMES) { + console.log(' ๐Ÿ“‹ Available themes:', Object.keys(window.AUTOBOT_THEMES)); + } + } + + // Fallback: Load from CDN if local resources not available + if (!stylesLoaded) { + console.log('%c๐ŸŒ Falling back to CDN loading...', 'color: #8b5cf6;'); + appendLinkOnce( + 'https://wplace-autobot.github.io/WPlace-AutoBOT/main/auto-image-styles.css', + { 'data-wplace-theme': 'true' } + ); + console.log('%c๐Ÿ“š Loaded auto-image-styles.css from CDN (fallback)', 'color: #f59e0b; font-weight: bold;'); + console.log(' ๐Ÿ“ Source: CDN (wplace-autobot.github.io)'); + console.log(' ๐ŸŒ URL: https://wplace-autobot.github.io/WPlace-AutoBOT/main/auto-image-styles.css'); + console.log(' โš ๏ธ Performance: Network request required'); + } + + console.groupEnd(); + + // Ensure default theme is loaded from extension resources + if (window.applyTheme && typeof window.applyTheme === 'function') { + console.group('%c๐ŸŽจ Loading Default Theme from Extension', 'color: #8b5cf6; font-weight: bold;'); + + // Determine the current theme file name + let defaultTheme = 'classic'; // fallback + if (CONFIG.currentTheme === 'Neon Retro') { + defaultTheme = 'neon'; + } else if (CONFIG.currentTheme === 'Classic Light') { + defaultTheme = 'classic-light'; + } else if (CONFIG.currentTheme === 'Acrylic') { + defaultTheme = 'acrylic'; + } + + console.log(`%c๐ŸŽฏ Loading theme: ${defaultTheme} (${CONFIG.currentTheme})`, 'color: #8b5cf6;'); + const success = window.applyTheme(defaultTheme); + + if (success) { + console.log(`%cโœ… Default theme loaded from extension local resources`, 'color: #10b981; font-weight: bold;'); + console.log(` ๐Ÿ“ Source: Extension local file (themes/${defaultTheme}.css)`); + console.log(` ๐Ÿš€ Performance: Instant load (no CDN request)`); + console.log(` ๐ŸŽจ Theme: ${CONFIG.currentTheme}`); + } else { + console.warn(`%cโš ๏ธ Failed to load theme ${defaultTheme} from extension`, 'color: #f59e0b;'); + console.log(` ๐Ÿ“ Note: Theme CSS classes will still work`); + } + + console.groupEnd(); + } else { + console.warn(`%cโš ๏ธ Extension applyTheme() function not available`, 'color: #f59e0b; font-weight: bold;'); + console.log(` ๐Ÿ“ Themes will be limited to CSS classes only`); + } + + const container = document.createElement('div'); + container.id = 'wplace-image-bot-container'; + container.innerHTML = ` +
+
+ + ${Utils.t('title')} +
+
+ + + + +
+
+
+ +
+
+ ${Utils.t('initMessage')} +
+
+
+
+
+ + +
+
๐Ÿ–ผ๏ธ Image Management
+
+
+ + +
+
+ +
+
+
+ + +
+
๐ŸŽฎ Painting Control
+
+
+ + +
+
+ +
+
+
+ + +
+
โฑ๏ธ ${Utils.t('cooldownSettings')}
+
+ +
+
+ +
+
+ + + + ${Utils.t('charges')} +
+
+
+
+ + +
+
๐Ÿ’พ Data Management
+
+
+ + +
+
+ + +
+
+
+
+ `; + + // Stats Window - Separate UI + const statsContainer = document.createElement('div'); + statsContainer.id = 'wplace-stats-container'; + statsContainer.style.display = 'none'; + statsContainer.innerHTML = ` +
+
+ + ${Utils.t('paintingStats')} +
+
+ + +
+
+
+
+
+
+
${Utils.t( + 'initMessage' + )}
+
+
+
+
+ `; + + // Modern Settings Container with Theme Support + // Use the theme variable already declared at the top of createUI function + const settingsContainer = document.createElement('div'); + settingsContainer.id = 'wplace-settings-container'; + + // Apply theme-based styling + const themeBackground = theme.primary + ? `linear-gradient(135deg, ${theme.primary} 0%, ${theme.secondary || theme.primary} 100%)` + : `linear-gradient(135deg, #667eea 0%, #764ba2 100%)`; + + settingsContainer.className = 'wplace-settings-container-base'; + // Apply theme-specific background + settingsContainer.style.background = themeBackground; + settingsContainer.style.cssText += ` + min-width: 420px; + max-width: 480px; + z-index: 99999; + color: ${theme.text || 'white'}; + font-family: ${theme.fontFamily || "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"}; + box-shadow: ${theme.boxShadow || '0 20px 40px rgba(0,0,0,0.3), 0 0 0 1px rgba(255,255,255,0.1)' + }; + backdrop-filter: ${theme.backdropFilter || 'blur(10px)'}; + overflow: hidden; + animation: settings-slide-in 0.4s ease-out; + ${theme.animations?.glow + ? ` + box-shadow: ${theme.boxShadow || '0 20px 40px rgba(0,0,0,0.3)'}, + 0 0 30px ${theme.highlight || theme.neon || '#00ffff'}; + ` + : '' + } + `; + + // noinspection CssInvalidFunction + settingsContainer.innerHTML = ` +
+
+

+ + ${Utils.t('settings')} +

+ +
+
+ +
+ + +
+ +
+ +

+ Generator mode creates tokens automatically. Hybrid mode falls back to manual when generator fails. Manual mode only uses pixel placement. +

+
+
+ + +
+ + +
+ + +
+ +
+ +
+
+ Overlay Opacity +
${Math.round(state.overlayOpacity * 100)}%
+
+ +
+ + +
+
+ + +
+ + +
+ + + + + + +
+
+ + +
+ + + +
+ + +
+ + +
+
+ ${Utils.t('batchSize')} +
+
+
+ +
+
+
+ + + + pixels +
+
+
+
+ ${CONFIG.PAINTING_SPEED.MIN} + ${CONFIG.PAINTING_SPEED.MAX} +
+
+ + +
+
+
+ + +
+
+ + +
+
+

+ ๐ŸŽฒ Random batch size between min and max values +

+
+ + + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+
+
+ + +
+
+ + +
+
+

+ ๐Ÿงฑ Block dimensions for block-based generation modes +

+
+
+ + +
+ +
+ + + +
+ ${Utils.t('repeatEvery')} + + ${Utils.t('minutesPl')} +
+
+ + +
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + + `; + + const resizeContainer = document.createElement('div'); + resizeContainer.className = 'resize-container'; + resizeContainer.innerHTML = ` +

${Utils.t('resizeImage')}

+
+ + + + + +
+ + + + + + + 100% +
+ Drag to pan โ€ข Pinch to zoom โ€ข Doubleโ€‘tap to zoom +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
+ +
+ + 1 +
+
+
+ +
+ + 1 +
+
+
+
+ +
+ + + +
+
+ + + Shift = Row โ€ข Alt = Column +
+
+ +
+
+  Color Palette +
+
+
+ +
+
+ + + +
+
+
+
+ +
+
+  Advanced Color Matching +
+
+ + +
+
+ ${Utils.t('chromaWeight')} + ${state.chromaPenaltyWeight} +
+ +
+ +
+ + +
+ +
+
+ +
+ + + +
+ `; + + const resizeOverlay = document.createElement('div'); + resizeOverlay.className = 'resize-overlay'; + + document.body.appendChild(container); + document.body.appendChild(resizeOverlay); + document.body.appendChild(resizeContainer); + document.body.appendChild(statsContainer); + document.body.appendChild(settingsContainer); + + // Show the main container after all elements are appended + container.style.display = 'block'; + + const uploadBtn = container.querySelector('#uploadBtn'); + const resizeBtn = container.querySelector('#resizeBtn'); + const selectPosBtn = container.querySelector('#selectPosBtn'); + const startBtn = container.querySelector('#startBtn'); + const stopBtn = container.querySelector('#stopBtn'); + const saveBtn = container.querySelector('#saveBtn'); + const loadBtn = container.querySelector('#loadBtn'); + const saveToFileBtn = container.querySelector('#saveToFileBtn'); + const loadFromFileBtn = container.querySelector('#loadFromFileBtn'); + + container.querySelectorAll('.wplace-section-title').forEach((title) => { + // Add a right-side arrow if it doesn't exist + if (!title.querySelector('i.arrow')) { + const arrow = document.createElement('i'); + arrow.className = 'fas fa-chevron-down arrow'; // FontAwesome down arrow + title.appendChild(arrow); + } + + // Click event to toggle collapse/expand of the section + title.addEventListener('click', () => { + const section = title.parentElement; + section.classList.toggle('collapsed'); + }); + }); + + // Disable load/upload buttons until initial setup is complete (startup only) + if (loadBtn) { + loadBtn.disabled = !state.initialSetupComplete; + loadBtn.title = state.initialSetupComplete + ? '' + : '๐Ÿ”„ Waiting for initial setup to complete...'; + } + if (loadFromFileBtn) { + loadFromFileBtn.disabled = !state.initialSetupComplete; + loadFromFileBtn.title = state.initialSetupComplete + ? '' + : '๐Ÿ”„ Waiting for initial setup to complete...'; + } + if (uploadBtn) { + uploadBtn.disabled = !state.initialSetupComplete; + uploadBtn.title = state.initialSetupComplete + ? '' + : '๐Ÿ”„ Waiting for initial setup to complete...'; + } + + const minimizeBtn = container.querySelector('#minimizeBtn'); + const compactBtn = container.querySelector('#compactBtn'); + const statsBtn = container.querySelector('#statsBtn'); + const toggleOverlayBtn = container.querySelector('#toggleOverlayBtn'); + const statusText = container.querySelector('#statusText'); + const progressBar = container.querySelector('#progressBar'); + const statsArea = statsContainer.querySelector('#statsArea'); + const content = container.querySelector('.wplace-content'); + const closeStatsBtn = statsContainer.querySelector('#closeStatsBtn'); + const refreshChargesBtn = statsContainer.querySelector('#refreshChargesBtn'); + const cooldownSlider = container.querySelector('#cooldownSlider'); + const cooldownInput = container.querySelector('#cooldownInput'); + const cooldownDecrease = container.querySelector('#cooldownDecrease'); + const cooldownIncrease = container.querySelector('#cooldownIncrease'); + const cooldownValue = container.querySelector('#cooldownValue'); + + if (!uploadBtn || !selectPosBtn || !startBtn || !stopBtn) { + console.error('Some UI elements not found:', { + uploadBtn: !!uploadBtn, + selectPosBtn: !!selectPosBtn, + startBtn: !!startBtn, + stopBtn: !!stopBtn, + }); + } + + if (!statsContainer || !statsArea || !closeStatsBtn) { + // Note: base CSS now aligns with this layout: main panel at left:20px (width 280), stats at left:330px. + } + + const header = container.querySelector('.wplace-header'); + + makeDraggable(container); + + function makeDraggable(element) { + let pos1 = 0, + pos2 = 0, + pos3 = 0, + pos4 = 0; + let isDragging = false; + const header = + element.querySelector('.wplace-header') || element.querySelector('.wplace-settings-header'); + + if (!header) { + console.warn('No draggable header found for element:', element); + return; + } + + header.onmousedown = dragMouseDown; + + function dragMouseDown(e) { + if (e.target.closest('.wplace-header-btn') || e.target.closest('button')) return; + + e.preventDefault(); + isDragging = true; + + const rect = element.getBoundingClientRect(); + + element.style.transform = 'none'; + element.style.top = rect.top + 'px'; + element.style.left = rect.left + 'px'; + + pos3 = e.clientX; + pos4 = e.clientY; + element.classList.add('wplace-dragging'); + document.onmouseup = closeDragElement; + document.onmousemove = elementDrag; + + document.body.style.userSelect = 'none'; + } + + function elementDrag(e) { + if (!isDragging) return; + + e.preventDefault(); + pos1 = pos3 - e.clientX; + pos2 = pos4 - e.clientY; + pos3 = e.clientX; + pos4 = e.clientY; + + let newTop = element.offsetTop - pos2; + let newLeft = element.offsetLeft - pos1; + + const rect = element.getBoundingClientRect(); + const maxTop = window.innerHeight - rect.height; + const maxLeft = window.innerWidth - rect.width; + + newTop = Math.max(0, Math.min(newTop, maxTop)); + newLeft = Math.max(0, Math.min(newLeft, maxLeft)); + + element.style.top = newTop + 'px'; + element.style.left = newLeft + 'px'; + } + + function closeDragElement() { + isDragging = false; + element.classList.remove('wplace-dragging'); + document.onmouseup = null; + document.onmousemove = null; + document.body.style.userSelect = ''; + } + } + + makeDraggable(statsContainer); + makeDraggable(container); + + if (statsBtn && closeStatsBtn) { + statsBtn.addEventListener('click', () => { + const isVisible = statsContainer.style.display !== 'none'; + if (isVisible) { + statsContainer.style.display = 'none'; + statsBtn.innerHTML = ''; + statsBtn.title = Utils.t('showStats'); + } else { + statsContainer.style.display = 'block'; + statsBtn.innerHTML = ''; + statsBtn.title = Utils.t('hideStats'); + } + }); + + closeStatsBtn.addEventListener('click', () => { + statsContainer.style.display = 'none'; + statsBtn.innerHTML = ''; + statsBtn.title = Utils.t('showStats'); + }); + + if (refreshChargesBtn) { + refreshChargesBtn.addEventListener('click', async () => { + refreshChargesBtn.innerHTML = ''; + refreshChargesBtn.disabled = true; + + try { + await updateStats(true); + } catch (error) { + console.error('Error refreshing charges:', error); + } finally { + refreshChargesBtn.innerHTML = ''; + refreshChargesBtn.disabled = false; + } + }); + } + } + if (statsContainer && statsBtn) { + // Stats container starts hidden - user clicks button to show + statsBtn.innerHTML = ''; + statsBtn.title = Utils.t('showStats'); + } + + const settingsBtn = container.querySelector('#settingsBtn'); + const closeSettingsBtn = settingsContainer.querySelector('#closeSettingsBtn'); + const applySettingsBtn = settingsContainer.querySelector('#applySettingsBtn'); + + if (settingsBtn && closeSettingsBtn && applySettingsBtn) { + settingsBtn.addEventListener('click', () => { + const isVisible = settingsContainer.classList.contains('show'); + if (isVisible) { + settingsContainer.style.animation = 'settings-fade-out 0.3s ease-out forwards'; + settingsContainer.classList.remove('show'); + setTimeout(() => { + settingsContainer.style.animation = ''; + }, 300); + } else { + settingsContainer.style.top = '50%'; + settingsContainer.style.left = '50%'; + settingsContainer.style.transform = 'translate(-50%, -50%)'; + settingsContainer.classList.add('show'); + settingsContainer.style.animation = 'settings-slide-in 0.4s ease-out'; + } + }); + + closeSettingsBtn.addEventListener('click', () => { + settingsContainer.style.animation = 'settings-fade-out 0.3s ease-out forwards'; + settingsContainer.classList.remove('show'); + setTimeout(() => { + settingsContainer.style.animation = ''; + settingsContainer.style.top = '50%'; + settingsContainer.style.left = '50%'; + settingsContainer.style.transform = 'translate(-50%, -50%)'; + }, 300); + }); + + applySettingsBtn.addEventListener('click', () => { + // Sync advanced settings before save + const colorAlgorithmSelect = document.getElementById('colorAlgorithmSelect'); + if (colorAlgorithmSelect) state.colorMatchingAlgorithm = colorAlgorithmSelect.value; + const enableChromaPenaltyToggle = document.getElementById('enableChromaPenaltyToggle'); + if (enableChromaPenaltyToggle) + state.enableChromaPenalty = enableChromaPenaltyToggle.checked; + const chromaPenaltyWeightSlider = document.getElementById('chromaPenaltyWeightSlider'); + if (chromaPenaltyWeightSlider) + state.chromaPenaltyWeight = parseFloat(chromaPenaltyWeightSlider.value) || 0.15; + const transparencyThresholdInput = document.getElementById('transparencyThresholdInput'); + if (transparencyThresholdInput) { + const v = parseInt(transparencyThresholdInput.value, 10); + if (!isNaN(v) && v >= 0 && v <= 255) state.customTransparencyThreshold = v; + } + const whiteThresholdInput = document.getElementById('whiteThresholdInput'); + if (whiteThresholdInput) { + const v = parseInt(whiteThresholdInput.value, 10); + if (!isNaN(v) && v >= 200 && v <= 255) state.customWhiteThreshold = v; + } + // Update functional thresholds + CONFIG.TRANSPARENCY_THRESHOLD = state.customTransparencyThreshold; + CONFIG.WHITE_THRESHOLD = state.customWhiteThreshold; + // Notifications + const notifEnabledToggle = document.getElementById('notifEnabledToggle'); + const notifOnChargesToggle = document.getElementById('notifOnChargesToggle'); + const notifOnlyUnfocusedToggle = document.getElementById('notifOnlyUnfocusedToggle'); + const notifIntervalInput = document.getElementById('notifIntervalInput'); + if (notifEnabledToggle) state.notificationsEnabled = !!notifEnabledToggle.checked; + if (notifOnChargesToggle) state.notifyOnChargesReached = !!notifOnChargesToggle.checked; + if (notifOnlyUnfocusedToggle) + state.notifyOnlyWhenUnfocused = !!notifOnlyUnfocusedToggle.checked; + if (notifIntervalInput) { + const v = parseInt(notifIntervalInput.value, 10); + if (!isNaN(v) && v >= 1 && v <= 60) state.notificationIntervalMinutes = v; + } + saveBotSettings(); + Utils.showAlert(Utils.t('settingsSaved'), 'success'); + closeSettingsBtn.click(); + NotificationManager.syncFromState(); + }); + + makeDraggable(settingsContainer); + + const tokenSourceSelect = settingsContainer.querySelector('#tokenSourceSelect'); + if (tokenSourceSelect) { + tokenSourceSelect.addEventListener('change', (e) => { + state.tokenSource = e.target.value; + saveBotSettings(); + console.log(`๐Ÿ”‘ Token source changed to: ${state.tokenSource}`); + const sourceNames = { + generator: 'Automatic Generator', + hybrid: 'Generator + Auto Fallback', + manual: 'Manual Pixel Placement', + }; + Utils.showAlert( + Utils.t('tokenSourceSet', { source: sourceNames[state.tokenSource] }), + 'success' + ); + }); + } + + // Batch mode controls + const batchModeSelect = settingsContainer.querySelector('#batchModeSelect'); + const normalBatchControls = settingsContainer.querySelector('#normalBatchControls'); + const randomBatchControls = settingsContainer.querySelector('#randomBatchControls'); + const randomBatchMin = settingsContainer.querySelector('#randomBatchMin'); + const randomBatchMax = settingsContainer.querySelector('#randomBatchMax'); + + if (batchModeSelect) { + batchModeSelect.addEventListener('change', (e) => { + state.batchMode = e.target.value; + + // Switch between normal and random controls + if (normalBatchControls && randomBatchControls) { + if (e.target.value === 'random') { + normalBatchControls.style.display = 'none'; + randomBatchControls.style.display = 'block'; + } else { + normalBatchControls.style.display = 'block'; + randomBatchControls.style.display = 'none'; + } + } + + saveBotSettings(); + console.log(`๐Ÿ“ฆ Batch mode changed to: ${state.batchMode}`); + Utils.showAlert( + Utils.t('batchModeSet', { + mode: + state.batchMode === 'random' ? Utils.t('randomRange') : Utils.t('normalFixedSize'), + }), + 'success' + ); + }); + } + + if (randomBatchMin) { + randomBatchMin.addEventListener('input', (e) => { + const min = parseInt(e.target.value); + if (min >= 1 && min <= 1000) { + state.randomBatchMin = min; + // Ensure min doesn't exceed max + if (randomBatchMax && min > state.randomBatchMax) { + state.randomBatchMax = min; + randomBatchMax.value = min; + } + saveBotSettings(); + } + }); + } + + if (randomBatchMax) { + randomBatchMax.addEventListener('input', (e) => { + const max = parseInt(e.target.value); + if (max >= 1 && max <= 1000) { + state.randomBatchMax = max; + // Ensure max doesn't go below min + if (randomBatchMin && max < state.randomBatchMin) { + state.randomBatchMin = max; + randomBatchMin.value = max; + } + saveBotSettings(); + } + }); + } + + const languageSelect = settingsContainer.querySelector('#languageSelect'); + if (languageSelect) { + languageSelect.addEventListener('change', async (e) => { + const newLanguage = e.target.value; + state.language = newLanguage; + localStorage.setItem('wplace_language', newLanguage); + + // Load the new language translations + await loadTranslations(newLanguage); + + setTimeout(() => { + settingsContainer.style.display = 'none'; + createUI(); + }, 100); + }); + } + + const themeSelect = settingsContainer.querySelector('#themeSelect'); + if (themeSelect) { + themeSelect.addEventListener('change', (e) => { + const newTheme = e.target.value; + switchTheme(newTheme); + }); + } + + const overlayOpacitySlider = settingsContainer.querySelector('#overlayOpacitySlider'); + const overlayOpacityValue = settingsContainer.querySelector('#overlayOpacityValue'); + const enableBlueMarbleToggle = settingsContainer.querySelector('#enableBlueMarbleToggle'); + const settingsPaintWhiteToggle = settingsContainer.querySelector('#settingsPaintWhiteToggle'); + const settingsPaintTransparentToggle = settingsContainer.querySelector( + '#settingsPaintTransparentToggle' + ); + + if (overlayOpacitySlider && overlayOpacityValue) { + const updateOpacity = (newValue) => { + const opacity = parseFloat(newValue); + state.overlayOpacity = opacity; + overlayOpacitySlider.value = opacity; + overlayOpacityValue.textContent = `${Math.round(opacity * 100)}%`; + }; + + overlayOpacitySlider.addEventListener('input', (e) => { + updateOpacity(e.target.value); + }); + + // Add scroll-to-adjust for overlay opacity slider + Utils.createScrollToAdjust(overlayOpacitySlider, updateOpacity, 0, 1, 0.05); + } + + if (settingsPaintWhiteToggle) { + settingsPaintWhiteToggle.checked = state.paintWhitePixels; + settingsPaintWhiteToggle.addEventListener('change', (e) => { + state.paintWhitePixels = e.target.checked; + saveBotSettings(); + console.log(`๐ŸŽจ Paint white pixels: ${state.paintWhitePixels ? 'ON' : 'OFF'}`); + const statusText = state.paintWhitePixels + ? 'White pixels in the template will be painted' + : 'White pixels will be skipped'; + Utils.showAlert(statusText, 'success'); + }); + } + + if (settingsPaintTransparentToggle) { + settingsPaintTransparentToggle.checked = state.paintTransparentPixels; + settingsPaintTransparentToggle.addEventListener('change', (e) => { + state.paintTransparentPixels = e.target.checked; + saveBotSettings(); + console.log( + `๐ŸŽจ Paint transparent pixels: ${state.paintTransparentPixels ? 'ON' : 'OFF'}` + ); + const statusText = state.paintTransparentPixels + ? 'Transparent pixels in the template will be painted with the closest available color' + : 'Transparent pixels will be skipped'; + Utils.showAlert(statusText, 'success'); + }); + } + + // Speed controls - both slider and input + const speedSlider = settingsContainer.querySelector('#speedSlider'); + const speedInput = settingsContainer.querySelector('#speedInput'); + const speedDecrease = settingsContainer.querySelector('#speedDecrease'); + const speedIncrease = settingsContainer.querySelector('#speedIncrease'); + const speedValue = settingsContainer.querySelector('#speedValue'); + + if (speedSlider && speedInput && speedValue && speedDecrease && speedIncrease) { + const updateSpeed = (newValue) => { + const speed = Math.max(CONFIG.PAINTING_SPEED.MIN, Math.min(CONFIG.PAINTING_SPEED.MAX, parseInt(newValue))); + state.paintingSpeed = speed; + + // Update both controls (value shows in input, label shows unit only) + speedSlider.value = speed; + speedInput.value = speed; + speedValue.textContent = `pixels`; + + saveBotSettings(); + }; + + // Slider event listener + speedSlider.addEventListener('input', (e) => { + updateSpeed(e.target.value); + }); + + // Number input event listener + speedInput.addEventListener('input', (e) => { + updateSpeed(e.target.value); + }); + + // Decrease button + speedDecrease.addEventListener('click', () => { + updateSpeed(parseInt(speedInput.value) - 1); + }); + + // Increase button + speedIncrease.addEventListener('click', () => { + updateSpeed(parseInt(speedInput.value) + 1); + }); + + // Add scroll-to-adjust for speed slider + Utils.createScrollToAdjust(speedSlider, updateSpeed, CONFIG.PAINTING_SPEED.MIN, CONFIG.PAINTING_SPEED.MAX, 1); + } + + if (enableBlueMarbleToggle) { + enableBlueMarbleToggle.addEventListener('click', async () => { + state.blueMarbleEnabled = enableBlueMarbleToggle.checked; + if (state.imageLoaded && overlayManager.imageBitmap) { + Utils.showAlert(Utils.t('reprocessingOverlay'), 'info'); + await overlayManager.processImageIntoChunks(); + Utils.showAlert(Utils.t('overlayUpdated'), 'success'); + } + }); + } + + // (Advanced color listeners moved outside to work with resize dialog) + // (Advanced color listeners moved outside to work with resize dialog) + // Notifications listeners + const notifPermBtn = settingsContainer.querySelector('#notifRequestPermBtn'); + const notifTestBtn = settingsContainer.querySelector('#notifTestBtn'); + if (notifPermBtn) { + notifPermBtn.addEventListener('click', async () => { + const perm = await NotificationManager.requestPermission(); + if (perm === 'granted') Utils.showAlert(Utils.t('notificationsEnabled'), 'success'); + else Utils.showAlert(Utils.t('notificationsPermissionDenied'), 'warning'); + }); + } + if (notifTestBtn) { + notifTestBtn.addEventListener('click', () => { + NotificationManager.notify( + Utils.t('testNotificationTitle'), + Utils.t('testNotificationMessage'), + 'wplace-notify-test', + true + ); + }); + } + } + + const widthSlider = resizeContainer.querySelector('#widthSlider'); + const heightSlider = resizeContainer.querySelector('#heightSlider'); + const widthValue = resizeContainer.querySelector('#widthValue'); + const heightValue = resizeContainer.querySelector('#heightValue'); + const keepAspect = resizeContainer.querySelector('#keepAspect'); + const paintWhiteToggle = resizeContainer.querySelector('#paintWhiteToggle'); + const paintTransparentToggle = resizeContainer.querySelector('#paintTransparentToggle'); + const zoomSlider = resizeContainer.querySelector('#zoomSlider'); + const zoomValue = resizeContainer.querySelector('#zoomValue'); + const zoomInBtn = resizeContainer.querySelector('#zoomInBtn'); + const zoomOutBtn = resizeContainer.querySelector('#zoomOutBtn'); + const zoomFitBtn = resizeContainer.querySelector('#zoomFitBtn'); + const zoomActualBtn = resizeContainer.querySelector('#zoomActualBtn'); + const panModeBtn = resizeContainer.querySelector('#panModeBtn'); + const panStage = resizeContainer.querySelector('#resizePanStage'); + const canvasStack = resizeContainer.querySelector('#resizeCanvasStack'); + const baseCanvas = resizeContainer.querySelector('#resizeCanvas'); + const maskCanvas = resizeContainer.querySelector('#maskCanvas'); + const baseCtx = baseCanvas.getContext('2d'); + const maskCtx = maskCanvas.getContext('2d'); + const confirmResize = resizeContainer.querySelector('#confirmResize'); + const cancelResize = resizeContainer.querySelector('#cancelResize'); + const downloadPreviewBtn = resizeContainer.querySelector('#downloadPreviewBtn'); + const clearIgnoredBtn = resizeContainer.querySelector('#clearIgnoredBtn'); + + // Coordinate generation controls with smart visibility + const coordinateModeSelect = settingsContainer.querySelector('#coordinateModeSelect'); + const coordinateDirectionSelect = settingsContainer.querySelector('#coordinateDirectionSelect'); + const coordinateSnakeToggle = settingsContainer.querySelector('#coordinateSnakeToggle'); + const directionControls = settingsContainer.querySelector('#directionControls'); + const snakeControls = settingsContainer.querySelector('#snakeControls'); + const blockControls = settingsContainer.querySelector('#blockControls'); + const blockWidthInput = settingsContainer.querySelector('#blockWidthInput'); + const blockHeightInput = settingsContainer.querySelector('#blockHeightInput'); + const paintUnavailablePixelsToggle = settingsContainer.querySelector( + '#paintUnavailablePixelsToggle' + ); + + if (paintUnavailablePixelsToggle) { + paintUnavailablePixelsToggle.checked = state.paintUnavailablePixels; + paintUnavailablePixelsToggle.addEventListener('change', (e) => { + state.paintUnavailablePixels = e.target.checked; + saveBotSettings(); + console.log(`๐ŸŽจ Paint unavailable colors: ${state.paintUnavailablePixels ? 'ON' : 'OFF'}`); + const statusText = state.paintUnavailablePixels + ? 'Unavailable template colors will be painted with the closest available color' + : 'Unavailable template colors will be skipped'; + Utils.showAlert(statusText, 'success'); + }); + } + if (coordinateModeSelect) { + coordinateModeSelect.value = state.coordinateMode; + coordinateModeSelect.addEventListener('change', (e) => { + state.coordinateMode = e.target.value; + Utils.updateCoordinateUI({ + mode: state.coordinateMode, + directionControls, + snakeControls, + blockControls, + }); + saveBotSettings(); + console.log(`๐Ÿ”„ Coordinate mode changed to: ${state.coordinateMode}`); + Utils.showAlert(`Coordinate mode set to: ${state.coordinateMode}`, 'success'); + }); + } + + if (coordinateDirectionSelect) { + coordinateDirectionSelect.value = state.coordinateDirection; + coordinateDirectionSelect.addEventListener('change', (e) => { + state.coordinateDirection = e.target.value; + saveBotSettings(); + console.log(`๐Ÿงญ Coordinate direction changed to: ${state.coordinateDirection}`); + Utils.showAlert(`Coordinate direction set to: ${state.coordinateDirection}`, 'success'); + }); + } + + if (coordinateSnakeToggle) { + coordinateSnakeToggle.checked = state.coordinateSnake; + coordinateSnakeToggle.addEventListener('change', (e) => { + state.coordinateSnake = e.target.checked; + saveBotSettings(); + console.log(`๐Ÿ Snake pattern ${state.coordinateSnake ? 'enabled' : 'disabled'}`); + Utils.showAlert( + `Snake pattern ${state.coordinateSnake ? 'enabled' : 'disabled'}`, + 'success' + ); + }); + } + + if (blockWidthInput) { + blockWidthInput.value = state.blockWidth; + blockWidthInput.addEventListener('input', (e) => { + const width = parseInt(e.target.value); + if (width >= 1 && width <= 50) { + state.blockWidth = width; + saveBotSettings(); + } + }); + } + + if (blockHeightInput) { + blockHeightInput.value = state.blockHeight; + blockHeightInput.addEventListener('change', (e) => { + const height = parseInt(e.target.value); + if (height >= 1 && height <= 50) { + state.blockHeight = height; + saveBotSettings(); + } + }); + } + + if (compactBtn) { + compactBtn.addEventListener('click', () => { + container.classList.toggle('wplace-compact'); + const isCompact = container.classList.contains('wplace-compact'); + + if (isCompact) { + compactBtn.innerHTML = ''; + compactBtn.title = Utils.t('expandMode'); + } else { + compactBtn.innerHTML = ''; + compactBtn.title = Utils.t('compactMode'); + } + }); + } + + if (minimizeBtn) { + minimizeBtn.addEventListener('click', () => { + state.minimized = !state.minimized; + if (state.minimized) { + container.classList.add('wplace-minimized'); + content.classList.add('wplace-hidden'); + minimizeBtn.innerHTML = ''; + minimizeBtn.title = Utils.t('restore'); + } else { + container.classList.remove('wplace-minimized'); + content.classList.remove('wplace-hidden'); + minimizeBtn.innerHTML = ''; + minimizeBtn.title = Utils.t('minimize'); + } + saveBotSettings(); + }); + } + + if (toggleOverlayBtn) { + toggleOverlayBtn.addEventListener('click', () => { + const isEnabled = overlayManager.toggle(); + toggleOverlayBtn.classList.toggle('active', isEnabled); + toggleOverlayBtn.setAttribute('aria-pressed', isEnabled ? 'true' : 'false'); + Utils.showAlert(isEnabled ? Utils.t('overlayEnabled') : Utils.t('overlayDisabled'), 'info'); + }); + } + + if (state.minimized) { + container.classList.add('wplace-minimized'); + content.classList.add('wplace-hidden'); + if (minimizeBtn) { + minimizeBtn.innerHTML = ''; + minimizeBtn.title = Utils.t('restore'); + } + } else { + container.classList.remove('wplace-minimized'); + content.classList.remove('wplace-hidden'); + if (minimizeBtn) { + minimizeBtn.innerHTML = ''; + minimizeBtn.title = Utils.t('minimize'); + } + } + + if (saveBtn) { + saveBtn.addEventListener('click', () => { + if (!state.imageLoaded) { + Utils.showAlert(Utils.t('missingRequirements'), 'error'); + return; + } + + const success = Utils.saveProgress(); + if (success) { + updateUI('autoSaved', 'success'); + Utils.showAlert(Utils.t('autoSaved'), 'success'); + } else { + Utils.showAlert(Utils.t('errorSavingProgress'), 'error'); + } + }); + } + + if (loadBtn) { + loadBtn.addEventListener('click', () => { + // Check if initial setup is complete + if (!state.initialSetupComplete) { + Utils.showAlert(Utils.t('pleaseWaitInitialSetup'), 'warning'); + return; + } + + const savedData = Utils.loadProgress(); + if (!savedData) { + updateUI('noSavedData', 'warning'); + Utils.showAlert(Utils.t('noSavedData'), 'warning'); + return; + } + + const confirmLoad = confirm( + `${Utils.t('savedDataFound')}\n\n` + + `Saved: ${new Date(savedData.timestamp).toLocaleString()}\n` + + `Progress: ${savedData.state.paintedPixels}/${savedData.state.totalPixels} pixels` + ); + + if (confirmLoad) { + const success = Utils.restoreProgress(savedData); + if (success) { + updateUI('dataLoaded', 'success'); + Utils.showAlert(Utils.t('dataLoaded'), 'success'); + updateDataButtons(); + + updateStats(); + + // Restore overlay if image data was loaded from localStorage + Utils.restoreOverlayFromData().catch((error) => { + console.error('Failed to restore overlay from localStorage:', error); + }); + + if (!state.colorsChecked) { + uploadBtn.disabled = false; + } else { + uploadBtn.disabled = false; + selectPosBtn.disabled = false; + } + + if (state.imageLoaded && state.startPosition && state.region && state.colorsChecked) { + startBtn.disabled = false; + } + } else { + Utils.showAlert(Utils.t('errorLoadingProgress'), 'error'); + } + } + }); + } + + if (saveToFileBtn) { + saveToFileBtn.addEventListener('click', () => { + const success = Utils.saveProgressToFile(); + if (success) { + updateUI('fileSaved', 'success'); + Utils.showAlert(Utils.t('fileSaved'), 'success'); + } else { + Utils.showAlert(Utils.t('fileError'), 'error'); + } + }); + } + + if (loadFromFileBtn) { + loadFromFileBtn.addEventListener('click', async () => { + // Check if initial setup is complete + if (!state.initialSetupComplete) { + Utils.showAlert(Utils.t('pleaseWaitFileSetup'), 'warning'); + return; + } + + try { + const success = await Utils.loadProgressFromFile(); + if (success) { + updateUI('fileLoaded', 'success'); + Utils.showAlert(Utils.t('fileLoaded'), 'success'); + updateDataButtons(); + + await updateStats(); + + // Restore overlay if image data was loaded from file + await Utils.restoreOverlayFromData().catch((error) => { + console.error('Failed to restore overlay from file:', error); + }); + + if (state.colorsChecked) { + uploadBtn.disabled = false; + selectPosBtn.disabled = false; + resizeBtn.disabled = false; + } else { + uploadBtn.disabled = false; + } + + if (state.imageLoaded && state.startPosition && state.region && state.colorsChecked) { + startBtn.disabled = false; + } + } + } catch (error) { + if (error.message === 'Invalid JSON file') { + Utils.showAlert(Utils.t('invalidFileFormat'), 'error'); + } else { + Utils.showAlert(Utils.t('fileError'), 'error'); + } + } + }); + } + + updateUI = (messageKey, type = 'default', params = {}, silent = false) => { + const message = Utils.t(messageKey, params); + statusText.textContent = message; + statusText.className = `wplace-status status-${type}`; + + if (!silent) { + // Trigger animation only when silent = false + statusText.style.animation = 'none'; + void statusText.offsetWidth; // trick to restart the animation + statusText.style.animation = 'slide-in 0.3s ease-out'; + } + }; + + function updateChargeStatsDisplay(intervalMs) { + const currentChargesEl = document.getElementById('wplace-stat-charges-value'); + const fullChargeEl = document.getElementById('wplace-stat-fullcharge-value'); + if (!fullChargeEl && !currentChargesEl) return; + if (!state.fullChargeData) { + fullChargeEl.textContent = '--:--:--'; + return; + } + + const { current, max, cooldownMs, startTime, spentSinceShot } = state.fullChargeData; + const elapsed = Date.now() - startTime; + + // total charges including elapsed time and spent during painting since snapshot + const chargesGained = elapsed / cooldownMs; + const rawCharges = current + chargesGained - spentSinceShot; + const cappedCharges = Math.min(rawCharges, max); + + // rounding with 0.95 threshold + let displayCharges; + const fraction = cappedCharges - Math.floor(cappedCharges); + if (fraction >= 0.95) { + displayCharges = Math.ceil(cappedCharges); + } else { + displayCharges = Math.floor(cappedCharges); + } + + state.displayCharges = Math.max(0, displayCharges); + state.preciseCurrentCharges = cappedCharges; + + const remainingMs = getMsToTargetCharges(cappedCharges, max, state.cooldown, intervalMs); + const timeText = Utils.msToTimeText(remainingMs); + + if (currentChargesEl) { + currentChargesEl.innerHTML = `${state.displayCharges} / ${state.maxCharges}`; + } + + if ( + state.displayCharges < state.cooldownChargeThreshold && + !state.stopFlag && + state.running + ) { + updateChargesThresholdUI(intervalMs); + } + + if (fullChargeEl) { + if (state.displayCharges >= max) { + fullChargeEl.innerHTML = `FULL`; + } else { + fullChargeEl.innerHTML = ` + ${timeText} + `; + } + } + } + + updateStats = async (isManualRefresh = false) => { + const isForcedRefresh = isManualRefresh; + const isFirstCheck = !state.fullChargeData?.startTime; + + const minUpdateInterval = 60_000; + const maxUpdateInterval = 90_000; + const randomUpdateThreshold = + minUpdateInterval + Math.random() * (maxUpdateInterval - minUpdateInterval); + const timeSinceLastUpdate = Date.now() - (state.fullChargeData?.startTime || 0); + const isTimeToUpdate = timeSinceLastUpdate >= randomUpdateThreshold; + + const shouldCallApi = isForcedRefresh || isFirstCheck || isTimeToUpdate; + + if (shouldCallApi) { + const { charges, max, cooldown } = await WPlaceService.getCharges(); + state.displayCharges = Math.floor(charges); + state.preciseCurrentCharges = charges; + state.cooldown = cooldown; + state.maxCharges = Math.floor(max) > 1 ? Math.floor(max) : state.maxCharges; + + state.fullChargeData = { + current: charges, + max: max, + cooldownMs: cooldown, + startTime: Date.now(), + spentSinceShot: 0, + }; + // Evaluate notifications every time we refresh server-side charges + NotificationManager.maybeNotifyChargesReached(); + } + + if (state.fullChargeInterval) { + clearInterval(state.fullChargeInterval); + state.fullChargeInterval = null; + } + const intervalMs = 1000; + state.fullChargeInterval = setInterval( + () => updateChargeStatsDisplay(intervalMs), + intervalMs + ); + + if (cooldownSlider && cooldownSlider.max !== state.maxCharges) { + cooldownSlider.max = state.maxCharges; + } + if (cooldownInput && cooldownInput.max !== state.maxCharges) { + cooldownInput.max = state.maxCharges; + } + + let imageStatsHTML = ''; + if (state.imageLoaded) { + const progress = + state.totalPixels > 0 ? Math.round((state.paintedPixels / state.totalPixels) * 100) : 0; + const remainingPixels = state.totalPixels - state.paintedPixels; + state.estimatedTime = Utils.calculateEstimatedTime( + remainingPixels, + state.displayCharges, + state.cooldown + ); + progressBar.style.width = `${progress}%`; + + imageStatsHTML = ` +
+
${Utils.t('progress')}
+
${progress}%
+
+
+
${Utils.t( + 'pixels' + )}
+
${state.paintedPixels}/${state.totalPixels}
+
+
+
${Utils.t( + 'estimatedTime' + )}
+
${Utils.formatTime(state.estimatedTime)}
+
+ `; + } + + let colorSwatchesHTML = ''; + state.availableColors = state.availableColors.filter( + (c) => c.name !== 'Unknown CoIor NaN' && c.id !== null + ); + + const availableColors = Utils.extractAvailableColors(); + const newCount = Array.isArray(availableColors) ? availableColors.length : 0; + + if (newCount === 0 && isManualRefresh) { + Utils.showAlert(Utils.t('noColorsFound'), 'warning'); + } else if (newCount > 0 && state.availableColors.length < newCount) { + const oldCount = state.availableColors.length; + + Utils.showAlert( + Utils.t('colorsUpdated', { + oldCount, + newCount: newCount, + diffCount: newCount - oldCount, + }), + 'success' + ); + state.availableColors = availableColors; + } + if (state.colorsChecked) { + colorSwatchesHTML = state.availableColors + .map((color) => { + const rgbString = `rgb(${color.rgb.join(',')})`; + return `
`; + }) + .join(''); + } + + statsArea.innerHTML = ` + ${imageStatsHTML} +
+
+ ${Utils.t('charges')} +
+
+ ${state.displayCharges} / ${state.maxCharges} +
+
+
+
+ ${Utils.t('fullChargeIn')} +
+
--:--:--
+
+ ${state.colorsChecked + ? ` +
+
${Utils.t( + 'availableColors', + { count: state.availableColors.length } + )}
+
+ ${colorSwatchesHTML} +
+
+ ` + : '' + } + `; + + // should be after statsArea.innerHTML = '...'. todo make full stats ui update partial + updateChargeStatsDisplay(intervalMs); + }; + + updateDataButtons = () => { + const hasImageData = state.imageLoaded && state.imageData; + saveBtn.disabled = !hasImageData; + saveToFileBtn.disabled = !hasImageData; + }; + + updateDataButtons(); + + function showResizeDialog(processor) { + let baseProcessor = processor; + let width, height; + if (state.originalImage?.dataUrl) { + baseProcessor = new ImageProcessor(state.originalImage.dataUrl); + width = state.originalImage.width; + height = state.originalImage.height; + } else { + const dims = processor.getDimensions(); + width = dims.width; + height = dims.height; + } + const aspectRatio = width / height; + + const rs = state.resizeSettings; + widthSlider.max = width * 2; + heightSlider.max = height * 2; + let initialW = width; + let initialH = height; + if ( + rs && + Number.isFinite(rs.width) && + Number.isFinite(rs.height) && + rs.width > 0 && + rs.height > 0 + ) { + initialW = rs.width; + initialH = rs.height; + } + // Clamp to slider ranges + initialW = Math.max( + parseInt(widthSlider.min, 10) || 10, + Math.min(initialW, parseInt(widthSlider.max, 10)) + ); + initialH = Math.max( + parseInt(heightSlider.min, 10) || 10, + Math.min(initialH, parseInt(heightSlider.max, 10)) + ); + widthSlider.value = initialW; + heightSlider.value = initialH; + widthValue.textContent = initialW; + heightValue.textContent = initialH; + zoomSlider.value = 1; + if (zoomValue) zoomValue.textContent = '100%'; + paintWhiteToggle.checked = state.paintWhitePixels; + paintTransparentToggle.checked = state.paintTransparentPixels; + + let _previewTimer = null; + let _previewJobId = 0; + let _isDraggingSize = false; + let _zoomLevel = 1; + let _ditherWorkBuf = null; + let _ditherEligibleBuf = null; + const ensureDitherBuffers = (n) => { + if (!_ditherWorkBuf || _ditherWorkBuf.length !== n * 3) + _ditherWorkBuf = new Float32Array(n * 3); + if (!_ditherEligibleBuf || _ditherEligibleBuf.length !== n) + _ditherEligibleBuf = new Uint8Array(n); + return { work: _ditherWorkBuf, eligible: _ditherEligibleBuf }; + }; + let _maskImageData = null; + let _maskData = null; + let _dirty = null; + const _resetDirty = () => { + _dirty = { minX: Infinity, minY: Infinity, maxX: -1, maxY: -1 }; + }; + const _markDirty = (x, y) => { + if (!_dirty) _resetDirty(); + if (x < _dirty.minX) _dirty.minX = x; + if (y < _dirty.minY) _dirty.minY = y; + if (x > _dirty.maxX) _dirty.maxX = x; + if (y > _dirty.maxY) _dirty.maxY = y; + }; + const _flushDirty = () => { + if (!_dirty || _dirty.maxX < _dirty.minX || _dirty.maxY < _dirty.minY) return; + const x = Math.max(0, _dirty.minX); + const y = Math.max(0, _dirty.minY); + const w = Math.min(maskCanvas.width - x, _dirty.maxX - x + 1); + const h = Math.min(maskCanvas.height - y, _dirty.maxY - y + 1); + if (w > 0 && h > 0) maskCtx.putImageData(_maskImageData, 0, 0, x, y, w, h); + _resetDirty(); + }; + const _ensureMaskOverlayBuffers = (w, h, rebuildFromMask = false) => { + if (!_maskImageData || _maskImageData.width !== w || _maskImageData.height !== h) { + _maskImageData = maskCtx.createImageData(w, h); + _maskData = _maskImageData.data; + rebuildFromMask = true; + } + if (rebuildFromMask) { + const m = state.resizeIgnoreMask; + const md = _maskData; + md.fill(0); + if (m) { + for (let i = 0; i < m.length; i++) + if (m[i]) { + const p = i * 4; + md[p] = 255; + md[p + 1] = 0; + md[p + 2] = 0; + md[p + 3] = 150; + } + } + maskCtx.putImageData(_maskImageData, 0, 0); + _resetDirty(); + } + }; + const ensureMaskSize = (w, h) => { + if (!state.resizeIgnoreMask || state.resizeIgnoreMask.length !== w * h) { + state.resizeIgnoreMask = new Uint8Array(w * h); + } + baseCanvas.width = w; + baseCanvas.height = h; + maskCanvas.width = w; + maskCanvas.height = h; + maskCtx.clearRect(0, 0, maskCanvas.width, maskCanvas.height); + // Ensure overlay buffers exist and rebuild from mask when dimensions change + _ensureMaskOverlayBuffers(w, h, true); + }; + _updateResizePreview = async () => { + const jobId = ++_previewJobId; + const newWidth = parseInt(widthSlider.value, 10); + const newHeight = parseInt(heightSlider.value, 10); + _zoomLevel = parseFloat(zoomSlider.value); + + widthValue.textContent = newWidth; + heightValue.textContent = newHeight; + + ensureMaskSize(newWidth, newHeight); + canvasStack.style.width = newWidth + 'px'; + canvasStack.style.height = newHeight + 'px'; + baseCtx.imageSmoothingEnabled = false; + if (!state.availableColors || state.availableColors.length === 0) { + if (baseProcessor !== processor && (!baseProcessor.img || !baseProcessor.canvas)) { + await baseProcessor.load(); + } + baseCtx.clearRect(0, 0, newWidth, newHeight); + baseCtx.drawImage(baseProcessor.img, 0, 0, newWidth, newHeight); + // Draw existing mask overlay buffer + maskCtx.clearRect(0, 0, maskCanvas.width, maskCanvas.height); + if (_maskImageData) maskCtx.putImageData(_maskImageData, 0, 0); + updateZoomLayout(); + return; + } + if (baseProcessor !== processor && (!baseProcessor.img || !baseProcessor.canvas)) { + await baseProcessor.load(); + } + baseCtx.clearRect(0, 0, newWidth, newHeight); + baseCtx.drawImage(baseProcessor.img, 0, 0, newWidth, newHeight); + const imgData = baseCtx.getImageData(0, 0, newWidth, newHeight); + const data = imgData.data; + + const tThresh = state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; + + const applyFSDither = () => { + const w = newWidth, + h = newHeight; + const n = w * h; + const { work, eligible } = ensureDitherBuffers(n); + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + const idx = y * w + x; + const i4 = idx * 4; + const r = data[i4], + g = data[i4 + 1], + b = data[i4 + 2], + a = data[i4 + 3]; + const isEligible = + (state.paintTransparentPixels || a >= tThresh) && + (state.paintWhitePixels || !Utils.isWhitePixel(r, g, b)); + eligible[idx] = isEligible ? 1 : 0; + work[idx * 3] = r; + work[idx * 3 + 1] = g; + work[idx * 3 + 2] = b; + if (!isEligible) { + data[i4 + 3] = 0; // transparent in preview overlay + } + } + } + + const diffuse = (nx, ny, er, eg, eb, factor) => { + if (nx < 0 || nx >= w || ny < 0 || ny >= h) return; + const nidx = ny * w + nx; + if (!eligible[nidx]) return; + const base = nidx * 3; + work[base] = Math.min(255, Math.max(0, work[base] + er * factor)); + work[base + 1] = Math.min(255, Math.max(0, work[base + 1] + eg * factor)); + work[base + 2] = Math.min(255, Math.max(0, work[base + 2] + eb * factor)); + }; + + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + const idx = y * w + x; + if (!eligible[idx]) continue; + const base = idx * 3; + const r0 = work[base], + g0 = work[base + 1], + b0 = work[base + 2]; + const [nr, ng, nb] = Utils.findClosestPaletteColor( + r0, + g0, + b0, + state.activeColorPalette + ); + const i4 = idx * 4; + data[i4] = nr; + data[i4 + 1] = ng; + data[i4 + 2] = nb; + data[i4 + 3] = 255; + + const er = r0 - nr; + const eg = g0 - ng; + const eb = b0 - nb; + + diffuse(x + 1, y, er, eg, eb, 7 / 16); + diffuse(x - 1, y + 1, er, eg, eb, 3 / 16); + diffuse(x, y + 1, er, eg, eb, 5 / 16); + diffuse(x + 1, y + 1, er, eg, eb, 1 / 16); + } + } + }; + + // Skip expensive dithering while user is dragging sliders + if (state.ditheringEnabled && !_isDraggingSize) { + applyFSDither(); + } else { + for (let i = 0; i < data.length; i += 4) { + const r = data[i], + g = data[i + 1], + b = data[i + 2], + a = data[i + 3]; + if ( + (!state.paintTransparentPixels && a < tThresh) || + (!state.paintWhitePixels && Utils.isWhitePixel(r, g, b)) + ) { + data[i + 3] = 0; + continue; + } + const [nr, ng, nb] = Utils.findClosestPaletteColor(r, g, b, state.activeColorPalette); + data[i] = nr; + data[i + 1] = ng; + data[i + 2] = nb; + data[i + 3] = 255; + } + } + + if (jobId !== _previewJobId) return; + baseCtx.putImageData(imgData, 0, 0); + maskCtx.clearRect(0, 0, maskCanvas.width, maskCanvas.height); + if (_maskImageData) maskCtx.putImageData(_maskImageData, 0, 0); + updateZoomLayout(); + }; + + const onWidthInput = () => { + if (keepAspect.checked) { + heightSlider.value = Math.round(parseInt(widthSlider.value, 10) / aspectRatio); + } + _updateResizePreview(); + const curW = parseInt(widthSlider.value, 10); + const curH = parseInt(heightSlider.value, 10); + state.resizeSettings = { + baseWidth: width, + baseHeight: height, + width: curW, + height: curH, + }; + saveBotSettings(); + // Auto-fit after size changes + const fit = typeof computeFitZoom === 'function' ? computeFitZoom() : 1; + if (!isNaN(fit) && isFinite(fit)) applyZoom(fit); + }; + + const onHeightInput = () => { + if (keepAspect.checked) { + widthSlider.value = Math.round(parseInt(heightSlider.value, 10) * aspectRatio); + } + _updateResizePreview(); + const curW = parseInt(widthSlider.value, 10); + const curH = parseInt(heightSlider.value, 10); + state.resizeSettings = { + baseWidth: width, + baseHeight: height, + width: curW, + height: curH, + }; + saveBotSettings(); + // Auto-fit after size changes + const fit = typeof computeFitZoom === 'function' ? computeFitZoom() : 1; + if (!isNaN(fit) && isFinite(fit)) applyZoom(fit); + }; + + paintWhiteToggle.onchange = (e) => { + state.paintWhitePixels = e.target.checked; + _updateResizePreview(); + saveBotSettings(); + }; + + paintTransparentToggle.onchange = (e) => { + state.paintTransparentPixels = e.target.checked; + _updateResizePreview(); + saveBotSettings(); + }; + + let panX = 0, + panY = 0; + const clampPan = () => { + const wrapRect = panStage?.getBoundingClientRect() || { + width: 0, + height: 0, + }; + const w = (baseCanvas.width || 1) * _zoomLevel; + const h = (baseCanvas.height || 1) * _zoomLevel; + if (w <= wrapRect.width) { + panX = Math.floor((wrapRect.width - w) / 2); + } else { + const minX = wrapRect.width - w; + panX = Math.min(0, Math.max(minX, panX)); + } + if (h <= wrapRect.height) { + panY = Math.floor((wrapRect.height - h) / 2); + } else { + const minY = wrapRect.height - h; + panY = Math.min(0, Math.max(minY, panY)); + } + }; + let _panRaf = 0; + const applyPan = () => { + if (_panRaf) return; + _panRaf = requestAnimationFrame(() => { + clampPan(); + canvasStack.style.transform = `translate3d(${Math.round( + panX + )}px, ${Math.round(panY)}px, 0) scale(${_zoomLevel})`; + _panRaf = 0; + }); + }; + + const updateZoomLayout = () => { + const w = baseCanvas.width || 1, + h = baseCanvas.height || 1; + baseCanvas.style.width = w + 'px'; + baseCanvas.style.height = h + 'px'; + maskCanvas.style.width = w + 'px'; + maskCanvas.style.height = h + 'px'; + canvasStack.style.width = w + 'px'; + canvasStack.style.height = h + 'px'; + applyPan(); + }; + const applyZoom = (z) => { + _zoomLevel = Math.max(0.05, Math.min(20, z || 1)); + zoomSlider.value = _zoomLevel; + updateZoomLayout(); + if (zoomValue) zoomValue.textContent = `${Math.round(_zoomLevel * 100)}%`; + }; + zoomSlider.addEventListener('input', () => { + applyZoom(parseFloat(zoomSlider.value)); + }); + if (zoomInBtn) + zoomInBtn.addEventListener('click', () => applyZoom(parseFloat(zoomSlider.value) + 0.1)); + if (zoomOutBtn) + zoomOutBtn.addEventListener('click', () => applyZoom(parseFloat(zoomSlider.value) - 0.1)); + const computeFitZoom = () => { + const wrapRect = panStage?.getBoundingClientRect(); + if (!wrapRect) return 1; + const w = baseCanvas.width || 1; + const h = baseCanvas.height || 1; + const margin = 10; + const scaleX = (wrapRect.width - margin) / w; + const scaleY = (wrapRect.height - margin) / h; + return Math.max(0.05, Math.min(20, Math.min(scaleX, scaleY))); + }; + if (zoomFitBtn) + zoomFitBtn.addEventListener('click', () => { + applyZoom(computeFitZoom()); + centerInView(); + }); + if (zoomActualBtn) + zoomActualBtn.addEventListener('click', () => { + applyZoom(1); + centerInView(); + }); + + const centerInView = () => { + if (!panStage) return; + const rect = panStage.getBoundingClientRect(); + const w = (baseCanvas.width || 1) * _zoomLevel; + const h = (baseCanvas.height || 1) * _zoomLevel; + panX = Math.floor((rect.width - w) / 2); + panY = Math.floor((rect.height - h) / 2); + applyPan(); + }; + + let isPanning = false; + let startX = 0, + startY = 0, + startPanX = 0, + startPanY = 0; + let allowPan = false; // Space key + let panMode = false; // Explicit pan mode toggle for touch/one-button mice + const isPanMouseButton = (e) => e.button === 1 || e.button === 2; + const setCursor = (val) => { + if (panStage) panStage.style.cursor = val; + }; + const isPanActive = (e) => panMode || allowPan || isPanMouseButton(e); + const updatePanModeBtn = () => { + if (!panModeBtn) return; + panModeBtn.classList.toggle('active', panMode); + panModeBtn.setAttribute('aria-pressed', panMode ? 'true' : 'false'); + }; + if (panModeBtn) { + updatePanModeBtn(); + panModeBtn.addEventListener('click', () => { + panMode = !panMode; + updatePanModeBtn(); + setCursor(panMode ? 'grab' : ''); + }); + } + if (panStage) { + panStage.addEventListener('contextmenu', (e) => { + if (allowPan) e.preventDefault(); + }); + window.addEventListener('keydown', (e) => { + if (e.code === 'Space') { + allowPan = true; + setCursor('grab'); + } + }); + window.addEventListener('keyup', (e) => { + if (e.code === 'Space') { + allowPan = false; + if (!isPanning) setCursor(''); + } + }); + panStage.addEventListener('mousedown', (e) => { + if (!isPanActive(e)) return; + e.preventDefault(); + isPanning = true; + startX = e.clientX; + startY = e.clientY; + startPanX = panX; + startPanY = panY; + setCursor('grabbing'); + }); + window.addEventListener('mousemove', (e) => { + if (!isPanning) return; + const dx = e.clientX - startX; + const dy = e.clientY - startY; + panX = startPanX + dx; + panY = startPanY + dy; + applyPan(); + }); + window.addEventListener('mouseup', () => { + if (isPanning) { + isPanning = false; + setCursor(allowPan ? 'grab' : ''); + } + }); + panStage.addEventListener( + 'wheel', + (e) => { + if (!e.ctrlKey && !e.metaKey) return; + e.preventDefault(); + const rect = panStage.getBoundingClientRect(); + const cx = e.clientX - rect.left - panX; + const cy = e.clientY - rect.top - panY; + const before = _zoomLevel; + const step = Math.max(0.05, Math.min(0.5, Math.abs(e.deltaY) > 20 ? 0.2 : 0.1)); + const next = Math.max(0.05, Math.min(20, before + (e.deltaY > 0 ? -step : step))); + if (next === before) return; + const scale = next / before; + panX = panX - cx * (scale - 1); + panY = panY - cy * (scale - 1); + applyZoom(next); + }, + { passive: false } + ); + let lastTouchDist = null; + let touchStartTime = 0; + let doubleTapTimer = null; + panStage.addEventListener( + 'touchstart', + (e) => { + if (e.touches.length === 1) { + const t = e.touches[0]; + isPanning = true; + startX = t.clientX; + startY = t.clientY; + startPanX = panX; + startPanY = panY; + setCursor('grabbing'); + const now = Date.now(); + if (now - touchStartTime < 300) { + // double tap -> toggle 100%/fit + const z = Math.abs(_zoomLevel - 1) < 0.01 ? computeFitZoom() : 1; + applyZoom(z); + centerInView(); + if (doubleTapTimer) clearTimeout(doubleTapTimer); + } else { + touchStartTime = now; + doubleTapTimer = setTimeout(() => { + doubleTapTimer = null; + }, 320); + } + } else if (e.touches.length === 2) { + // Pinch start + const [a, b] = e.touches; + lastTouchDist = Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY); + } + }, + { passive: true } + ); + panStage.addEventListener( + 'touchmove', + (e) => { + if (e.touches.length === 1 && isPanning) { + const t = e.touches[0]; + const dx = t.clientX - startX; + const dy = t.clientY - startY; + panX = startPanX + dx; + panY = startPanY + dy; + applyPan(); + } else if (e.touches.length === 2 && lastTouchDist != null) { + e.preventDefault(); + const [a, b] = e.touches; + const dist = Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY); + const rect = panStage.getBoundingClientRect(); + const centerX = (a.clientX + b.clientX) / 2 - rect.left - panX; + const centerY = (a.clientY + b.clientY) / 2 - rect.top - panY; + const before = _zoomLevel; + const scale = dist / (lastTouchDist || dist); + const next = Math.max(0.05, Math.min(20, before * scale)); + if (next !== before) { + panX = panX - centerX * (next / before - 1); + panY = panY - centerY * (next / before - 1); + applyZoom(next); + } + lastTouchDist = dist; + } + }, + { passive: false } + ); + panStage.addEventListener('touchend', () => { + isPanning = false; + lastTouchDist = null; + setCursor(panMode || allowPan ? 'grab' : ''); + }); + } + const schedulePreview = () => { + if (_previewTimer) clearTimeout(_previewTimer); + const run = () => { + _previewTimer = null; + _updateResizePreview(); + }; + if (window.requestIdleCallback) { + _previewTimer = setTimeout(() => requestIdleCallback(run, { timeout: 150 }), 50); + } else { + _previewTimer = setTimeout(() => requestAnimationFrame(run), 50); + } + }; + // Track dragging to reduce work and skip dithering during drag + const markDragStart = () => { + _isDraggingSize = true; + }; + const markDragEnd = () => { + _isDraggingSize = false; + schedulePreview(); + }; + widthSlider.addEventListener('pointerdown', markDragStart); + heightSlider.addEventListener('pointerdown', markDragStart); + widthSlider.addEventListener('pointerup', markDragEnd); + heightSlider.addEventListener('pointerup', markDragEnd); + widthSlider.addEventListener('input', () => { + onWidthInput(); + schedulePreview(); + }); + heightSlider.addEventListener('input', () => { + onHeightInput(); + schedulePreview(); + }); + + // Mask painting UX: brush size, modes, row/column fills, and precise coords + let draggingMask = false; + let lastPaintX = -1, + lastPaintY = -1; + let brushSize = 1; + let rowColSize = 1; + let maskMode = 'ignore'; // 'ignore' | 'unignore' | 'toggle' + const brushEl = resizeContainer.querySelector('#maskBrushSize'); + const brushValEl = resizeContainer.querySelector('#maskBrushSizeValue'); + const btnIgnore = resizeContainer.querySelector('#maskModeIgnore'); + const btnUnignore = resizeContainer.querySelector('#maskModeUnignore'); + const btnToggle = resizeContainer.querySelector('#maskModeToggle'); + const clearIgnoredBtnEl = resizeContainer.querySelector('#clearIgnoredBtn'); + const invertMaskBtn = resizeContainer.querySelector('#invertMaskBtn'); + const rowColSizeEl = resizeContainer.querySelector('#rowColSize'); + const rowColSizeValEl = resizeContainer.querySelector('#rowColSizeValue'); + + const updateModeButtons = () => { + const map = [ + [btnIgnore, 'ignore'], + [btnUnignore, 'unignore'], + [btnToggle, 'toggle'], + ]; + for (const [el, m] of map) { + if (!el) continue; + const active = maskMode === m; + el.classList.toggle('active', active); + el.setAttribute('aria-pressed', active ? 'true' : 'false'); + } + }; + const setMode = (mode) => { + maskMode = mode; + updateModeButtons(); + }; + if (brushEl && brushValEl) { + brushEl.addEventListener('input', () => { + brushSize = parseInt(brushEl.value, 10) || 1; + brushValEl.textContent = brushSize; + }); + brushValEl.textContent = brushEl.value; + brushSize = parseInt(brushEl.value, 10) || 1; + } + if (rowColSizeEl && rowColSizeValEl) { + rowColSizeEl.addEventListener('input', () => { + rowColSize = parseInt(rowColSizeEl.value, 10) || 1; + rowColSizeValEl.textContent = rowColSize; + }); + rowColSizeValEl.textContent = rowColSizeEl.value; + rowColSize = parseInt(rowColSizeEl.value, 10) || 1; + } + if (btnIgnore) btnIgnore.addEventListener('click', () => setMode('ignore')); + if (btnUnignore) btnUnignore.addEventListener('click', () => setMode('unignore')); + if (btnToggle) btnToggle.addEventListener('click', () => setMode('toggle')); + // Initialize button state (default to toggle mode) + updateModeButtons(); + + const mapClientToPixel = (clientX, clientY) => { + // Compute without rounding until final step to avoid drift at higher zoom + const rect = baseCanvas.getBoundingClientRect(); + const scaleX = rect.width / baseCanvas.width; + const scaleY = rect.height / baseCanvas.height; + const dx = (clientX - rect.left) / scaleX; + const dy = (clientY - rect.top) / scaleY; + const x = Math.floor(dx); + const y = Math.floor(dy); + return { x, y }; + }; + + const ensureMask = (w, h) => { + if (!state.resizeIgnoreMask || state.resizeIgnoreMask.length !== w * h) { + state.resizeIgnoreMask = new Uint8Array(w * h); + } + }; + + const paintCircle = (cx, cy, radius, value) => { + const w = baseCanvas.width, + h = baseCanvas.height; + ensureMask(w, h); + const r2 = radius * radius; + for (let yy = cy - radius; yy <= cy + radius; yy++) { + if (yy < 0 || yy >= h) continue; + for (let xx = cx - radius; xx <= cx + radius; xx++) { + if (xx < 0 || xx >= w) continue; + const dx = xx - cx, + dy = yy - cy; + if (dx * dx + dy * dy <= r2) { + const idx = yy * w + xx; + let val = state.resizeIgnoreMask[idx]; + if (maskMode === 'toggle') { + val = val ? 0 : 1; + } else if (maskMode === 'ignore') { + val = 1; + } else { + val = 0; + } + state.resizeIgnoreMask[idx] = val; + if (_maskData) { + const p = idx * 4; + if (val) { + _maskData[p] = 255; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 150; + } else { + _maskData[p] = 0; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 0; + } + _markDirty(xx, yy); + } + } + } + } + }; + + const paintRow = (y, value) => { + const w = baseCanvas.width, + h = baseCanvas.height; + ensureMask(w, h); + if (y < 0 || y >= h) return; + + // Paint multiple rows based on rowColSize + const halfSize = Math.floor(rowColSize / 2); + const startY = Math.max(0, y - halfSize); + const endY = Math.min(h - 1, y + halfSize); + + for (let rowY = startY; rowY <= endY; rowY++) { + for (let x = 0; x < w; x++) { + const idx = rowY * w + x; + let val = state.resizeIgnoreMask[idx]; + if (maskMode === 'toggle') { + val = val ? 0 : 1; + } else if (maskMode === 'ignore') { + val = 1; + } else { + val = 0; + } + state.resizeIgnoreMask[idx] = val; + if (_maskData) { + const p = idx * 4; + if (val) { + _maskData[p] = 255; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 150; + } else { + _maskData[p] = 0; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 0; + } + } + } + if (_maskData) { + _markDirty(0, rowY); + _markDirty(w - 1, rowY); + } + } + }; + + const paintColumn = (x, value) => { + const w = baseCanvas.width, + h = baseCanvas.height; + ensureMask(w, h); + if (x < 0 || x >= w) return; + + // Paint multiple columns based on rowColSize + const halfSize = Math.floor(rowColSize / 2); + const startX = Math.max(0, x - halfSize); + const endX = Math.min(w - 1, x + halfSize); + + for (let colX = startX; colX <= endX; colX++) { + for (let y = 0; y < h; y++) { + const idx = y * w + colX; + let val = state.resizeIgnoreMask[idx]; + if (maskMode === 'toggle') { + val = val ? 0 : 1; + } else if (maskMode === 'ignore') { + val = 1; + } else { + val = 0; + } + state.resizeIgnoreMask[idx] = val; + if (_maskData) { + const p = idx * 4; + if (val) { + _maskData[p] = 255; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 150; + } else { + _maskData[p] = 0; + _maskData[p + 1] = 0; + _maskData[p + 2] = 0; + _maskData[p + 3] = 0; + } + } + } + if (_maskData) { + _markDirty(colX, 0); + _markDirty(colX, h - 1); + } + } + }; + + const redrawMaskOverlay = () => { + // Only flush the dirty region; full rebuild happens on size change + _flushDirty(); + }; + + const handlePaint = (e) => { + // Suppress painting while panning + if ((e.buttons & 4) === 4 || (e.buttons & 2) === 2 || allowPan) return; + const { x, y } = mapClientToPixel(e.clientX, e.clientY); + const w = baseCanvas.width, + h = baseCanvas.height; + if (x < 0 || y < 0 || x >= w || y >= h) return; + const radius = Math.max(1, Math.floor(brushSize / 2)); + if (e.shiftKey) { + paintRow(y); + } else if (e.altKey) { + paintColumn(x); + } else { + paintCircle(x, y, radius); + } + lastPaintX = x; + lastPaintY = y; + redrawMaskOverlay(); + }; + + maskCanvas.addEventListener('mousedown', (e) => { + if (e.button === 1 || e.button === 2 || allowPan) return; // let pan handler manage + draggingMask = true; + handlePaint(e); + }); + // Avoid hijacking touch gestures for panning/zooming + maskCanvas.addEventListener( + 'touchstart', + (e) => { + /* let panStage handle */ + }, + { passive: true } + ); + maskCanvas.addEventListener( + 'touchmove', + (e) => { + /* let panStage handle */ + }, + { passive: true } + ); + maskCanvas.addEventListener( + 'touchend', + (e) => { + /* let panStage handle */ + }, + { passive: true } + ); + window.addEventListener('mousemove', (e) => { + if (draggingMask) handlePaint(e); + }); + window.addEventListener('mouseup', () => { + if (draggingMask) { + draggingMask = false; + saveBotSettings(); + } + }); + + if (clearIgnoredBtnEl) + clearIgnoredBtnEl.addEventListener('click', () => { + const w = baseCanvas.width, + h = baseCanvas.height; + if (state.resizeIgnoreMask) state.resizeIgnoreMask.fill(0); + _ensureMaskOverlayBuffers(w, h, true); + _updateResizePreview(); + saveBotSettings(); + }); + + if (invertMaskBtn) + invertMaskBtn.addEventListener('click', () => { + if (!state.resizeIgnoreMask) return; + for (let i = 0; i < state.resizeIgnoreMask.length; i++) + state.resizeIgnoreMask[i] = state.resizeIgnoreMask[i] ? 0 : 1; + const w = baseCanvas.width, + h = baseCanvas.height; + _ensureMaskOverlayBuffers(w, h, true); + _updateResizePreview(); + saveBotSettings(); + }); + + confirmResize.onclick = async () => { + const newWidth = parseInt(widthSlider.value, 10); + const newHeight = parseInt(heightSlider.value, 10); + + // Generate the final paletted image data + const tempCanvas = document.createElement('canvas'); + const tempCtx = tempCanvas.getContext('2d'); + tempCanvas.width = newWidth; + tempCanvas.height = newHeight; + tempCtx.imageSmoothingEnabled = false; + if (baseProcessor !== processor && (!baseProcessor.img || !baseProcessor.canvas)) { + await baseProcessor.load(); + } + tempCtx.drawImage(baseProcessor.img, 0, 0, newWidth, newHeight); + const imgData = tempCtx.getImageData(0, 0, newWidth, newHeight); + const data = imgData.data; + const tThresh2 = state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; + let totalValidPixels = 0; + const mask = + state.resizeIgnoreMask && state.resizeIgnoreMask.length === newWidth * newHeight + ? state.resizeIgnoreMask + : null; + + const applyFSDitherFinal = async () => { + const w = newWidth, + h = newHeight; + const n = w * h; + const { work, eligible } = ensureDitherBuffers(n); + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + const idx = y * w + x; + const i4 = idx * 4; + const r = data[i4], + g = data[i4 + 1], + b = data[i4 + 2], + a = data[i4 + 3]; + const masked = mask && mask[idx]; + const isEligible = + !masked && + (state.paintTransparentPixels || a >= tThresh2) && + (state.paintWhitePixels || !Utils.isWhitePixel(r, g, b)); + eligible[idx] = isEligible ? 1 : 0; + work[idx * 3] = r; + work[idx * 3 + 1] = g; + work[idx * 3 + 2] = b; + if (!isEligible) { + data[i4 + 3] = 0; + } + } + // Yield to keep UI responsive + if ((y & 15) === 0) await Promise.resolve(); + } + + const diffuse = (nx, ny, er, eg, eb, factor) => { + if (nx < 0 || nx >= w || ny < 0 || ny >= h) return; + const nidx = ny * w + nx; + if (!eligible[nidx]) return; + const base = nidx * 3; + work[base] = Math.min(255, Math.max(0, work[base] + er * factor)); + work[base + 1] = Math.min(255, Math.max(0, work[base + 1] + eg * factor)); + work[base + 2] = Math.min(255, Math.max(0, work[base + 2] + eb * factor)); + }; + + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + const idx = y * w + x; + if (!eligible[idx]) continue; + const base = idx * 3; + const r0 = work[base], + g0 = work[base + 1], + b0 = work[base + 2]; + const [nr, ng, nb] = Utils.findClosestPaletteColor( + r0, + g0, + b0, + state.activeColorPalette + ); + const i4 = idx * 4; + data[i4] = nr; + data[i4 + 1] = ng; + data[i4 + 2] = nb; + data[i4 + 3] = 255; + totalValidPixels++; + + const er = r0 - nr; + const eg = g0 - ng; + const eb = b0 - nb; + + diffuse(x + 1, y, er, eg, eb, 7 / 16); + diffuse(x - 1, y + 1, er, eg, eb, 3 / 16); + diffuse(x, y + 1, er, eg, eb, 5 / 16); + diffuse(x + 1, y + 1, er, eg, eb, 1 / 16); + } + // Yield every row to reduce jank + await Promise.resolve(); + } + }; + + if (state.ditheringEnabled) { + await applyFSDitherFinal(); + } else { + for (let i = 0; i < data.length; i += 4) { + const r = data[i], + g = data[i + 1], + b = data[i + 2], + a = data[i + 3]; + const masked = mask && mask[i >> 2]; + const isTransparent = (!state.paintTransparentPixels && a < tThresh2) || masked; + const isWhiteAndSkipped = !state.paintWhitePixels && Utils.isWhitePixel(r, g, b); + if (isTransparent || isWhiteAndSkipped) { + data[i + 3] = 0; // overlay transparency + continue; + } + totalValidPixels++; + const [nr, ng, nb] = Utils.findClosestPaletteColor(r, g, b, state.activeColorPalette); + data[i] = nr; + data[i + 1] = ng; + data[i + 2] = nb; + data[i + 3] = 255; + } + } + tempCtx.putImageData(imgData, 0, 0); + + // Save the final pixel data for painting + // Persist the paletted (and possibly dithered) pixels so painting uses the same output seen in overlay + const palettedPixels = new Uint8ClampedArray(imgData.data); + state.imageData.pixels = palettedPixels; + state.imageData.width = newWidth; + state.imageData.height = newHeight; + state.imageData.totalPixels = totalValidPixels; + state.totalPixels = totalValidPixels; + state.paintedPixels = 0; + + state.resizeSettings = { + baseWidth: width, + baseHeight: height, + width: newWidth, + height: newHeight, + }; + saveBotSettings(); + + const finalImageBitmap = await createImageBitmap(tempCanvas); + await overlayManager.setImage(finalImageBitmap); + overlayManager.enable(); + toggleOverlayBtn.classList.add('active'); + toggleOverlayBtn.setAttribute('aria-pressed', 'true'); + + // Keep state.imageData.processor as the original-based source; painting uses paletted pixels already stored + + updateStats(); + updateUI('resizeSuccess', 'success', { + width: newWidth, + height: newHeight, + }); + closeResizeDialog(); + }; + + downloadPreviewBtn.onclick = () => { + try { + const w = baseCanvas.width, + h = baseCanvas.height; + const out = document.createElement('canvas'); + out.width = w; + out.height = h; + const octx = out.getContext('2d'); + octx.imageSmoothingEnabled = false; + octx.drawImage(baseCanvas, 0, 0); + octx.drawImage(maskCanvas, 0, 0); + const link = document.createElement('a'); + link.download = 'wplace-preview.png'; + link.href = out.toDataURL(); + link.click(); + } catch (e) { + console.warn('Failed to download preview:', e); + } + }; + + cancelResize.onclick = closeResizeDialog; + + resizeOverlay.style.display = 'block'; + resizeContainer.style.display = 'block'; + + // Reinitialize color palette with current available colors + initializeColorPalette(resizeContainer); + + _updateResizePreview(); + _resizeDialogCleanup = () => { + try { + zoomSlider.replaceWith(zoomSlider.cloneNode(true)); + } catch { } + try { + if (zoomInBtn) zoomInBtn.replaceWith(zoomInBtn.cloneNode(true)); + } catch { } + try { + if (zoomOutBtn) zoomOutBtn.replaceWith(zoomOutBtn.cloneNode(true)); + } catch { } + }; + setTimeout(() => { + if (typeof computeFitZoom === 'function') { + const z = computeFitZoom(); + if (!isNaN(z) && isFinite(z)) { + applyZoom(z); + centerInView(); + } + } else { + centerInView(); + } + }, 0); + } + + function closeResizeDialog() { + try { + if (typeof _resizeDialogCleanup === 'function') { + _resizeDialogCleanup(); + } + } catch { } + resizeOverlay.style.display = 'none'; + resizeContainer.style.display = 'none'; + _updateResizePreview = () => { }; + try { + if (typeof cancelAnimationFrame === 'function' && _panRaf) { + cancelAnimationFrame(_panRaf); + } + } catch { } + try { + if (_previewTimer) { + clearTimeout(_previewTimer); + _previewTimer = null; + } + } catch { } + _maskImageData = null; + _maskData = null; + _dirty = null; + _ditherWorkBuf = null; + _ditherEligibleBuf = null; + _resizeDialogCleanup = null; + } + + if (uploadBtn) { + uploadBtn.addEventListener('click', async () => { + const availableColors = Utils.extractAvailableColors(); + if (availableColors === null || availableColors.length < 10) { + updateUI('noColorsFound', 'error'); + Utils.showAlert(Utils.t('noColorsFound'), 'error'); + return; + } + + if (!state.colorsChecked) { + state.availableColors = availableColors; + state.colorsChecked = true; + updateUI('colorsFound', 'success', { count: availableColors.length }); + updateStats(); + selectPosBtn.disabled = false; + // Only enable resize button if image is also loaded + if (state.imageLoaded) { + resizeBtn.disabled = false; + } + } + + try { + updateUI('loadingImage', 'default'); + const imageSrc = await Utils.createImageUploader(); + if (!imageSrc) { + updateUI('colorsFound', 'success', { + count: state.availableColors.length, + }); + return; + } + + const processor = new ImageProcessor(imageSrc); + await processor.load(); + + const { width, height } = processor.getDimensions(); + const pixels = processor.getPixelData(); + + let totalValidPixels = 0; + for (let i = 0; i < pixels.length; i += 4) { + const isTransparent = + !state.paintTransparentPixels && + pixels[i + 3] < (state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD); + const isWhiteAndSkipped = + !state.paintWhitePixels && + Utils.isWhitePixel(pixels[i], pixels[i + 1], pixels[i + 2]); + if (!isTransparent && !isWhiteAndSkipped) { + totalValidPixels++; + } + } + + state.imageData = { + width, + height, + pixels, + totalPixels: totalValidPixels, + processor, + }; + + state.totalPixels = totalValidPixels; + state.paintedPixels = 0; + state.imageLoaded = true; + state.lastPosition = { x: 0, y: 0 }; + + // Initialize painted map for tracking + Utils.initializePaintedMap(width, height); + + // New image: clear previous resize settings + state.resizeSettings = null; + // Also clear any previous ignore mask + state.resizeIgnoreMask = null; + // Save original image for this browser (dataUrl + dims) + state.originalImage = { dataUrl: imageSrc, width, height }; + saveBotSettings(); + + // Use the original image for the overlay initially + const imageBitmap = await createImageBitmap(processor.img); + await overlayManager.setImage(imageBitmap); + overlayManager.enable(); + toggleOverlayBtn.disabled = false; + toggleOverlayBtn.classList.add('active'); + toggleOverlayBtn.setAttribute('aria-pressed', 'true'); + + // Only enable resize button if colors have also been captured + if (state.colorsChecked) { + resizeBtn.disabled = false; + } + saveBtn.disabled = false; + + if (state.startPosition) { + startBtn.disabled = false; + } + + updateStats(); + updateDataButtons(); + updateUI('imageLoaded', 'success', { count: totalValidPixels }); + } catch { + updateUI('imageError', 'error'); + } + }); + } + + if (resizeBtn) { + resizeBtn.addEventListener('click', () => { + if (state.imageLoaded && state.imageData.processor && state.colorsChecked) { + showResizeDialog(state.imageData.processor); + } else if (!state.colorsChecked) { + Utils.showAlert(Utils.t('uploadImageFirstColors'), 'warning'); + } + }); + } + + if (selectPosBtn) { + selectPosBtn.addEventListener('click', async () => { + if (state.selectingPosition) return; + + state.selectingPosition = true; + state.startPosition = null; + state.region = null; + startBtn.disabled = true; + + Utils.showAlert(Utils.t('selectPositionAlert'), 'info'); + updateUI('waitingPosition', 'default'); + + const tempFetch = async (url, options) => { + if ( + typeof url === 'string' && + url.includes('https://backend.wplace.live/s0/pixel/') && + options?.method?.toUpperCase() === 'POST' + ) { + try { + const response = await originalFetch(url, options); + const clonedResponse = response.clone(); + const data = await clonedResponse.json(); + + if (data?.painted === 1) { + const regionMatch = url.match(/\/pixel\/(\d+)\/(\d+)/); + if (regionMatch && regionMatch.length >= 3) { + state.region = { + x: Number.parseInt(regionMatch[1]), + y: Number.parseInt(regionMatch[2]), + }; + } + + const payload = JSON.parse(options.body); + if (payload?.coords && Array.isArray(payload.coords)) { + state.startPosition = { + x: payload.coords[0], + y: payload.coords[1], + }; + state.lastPosition = { x: 0, y: 0 }; + + await overlayManager.setPosition(state.startPosition, state.region); + + if (state.imageLoaded) { + startBtn.disabled = false; + } + + window.fetch = originalFetch; + state.selectingPosition = false; + updateUI('positionSet', 'success'); + } + } + + return response; + } catch { + return originalFetch(url, options); + } + } + return originalFetch(url, options); + }; + + const originalFetch = window.fetch; + window.fetch = tempFetch; + + setTimeout(() => { + if (state.selectingPosition) { + window.fetch = originalFetch; + state.selectingPosition = false; + updateUI('positionTimeout', 'error'); + Utils.showAlert(Utils.t('positionTimeout'), 'error'); + } + }, 120000); + }); + } + + async function startPainting() { + if (!state.imageLoaded || !state.startPosition || !state.region) { + updateUI('missingRequirements', 'error'); + return; + } + await ensureToken(); + if (!turnstileToken) return; + + state.running = true; + state.stopFlag = false; + startBtn.disabled = true; + stopBtn.disabled = false; + uploadBtn.disabled = true; + selectPosBtn.disabled = true; + resizeBtn.disabled = true; + saveBtn.disabled = true; + toggleOverlayBtn.disabled = true; + + updateUI('startPaintingMsg', 'success'); + + try { + await getAccounts(); + await processImage(); + } catch (e) { + console.error('Unexpected error:', e); + updateUI('paintingError', 'error'); + } finally { + state.running = false; + stopBtn.disabled = true; + saveBtn.disabled = false; + + if (state.stopFlag) { + startBtn.disabled = false; + } else { + startBtn.disabled = true; + uploadBtn.disabled = false; + selectPosBtn.disabled = false; + resizeBtn.disabled = false; + } + toggleOverlayBtn.disabled = false; + } + } + + if (startBtn) { + startBtn.addEventListener('click', startPainting); + } + + if (stopBtn) { + stopBtn.addEventListener('click', () => { + state.stopFlag = true; + state.running = false; + stopBtn.disabled = true; + updateUI('paintingStoppedByUser', 'warning'); + + if (state.imageLoaded && state.paintedPixels > 0) { + Utils.saveProgress(); + Utils.showAlert(Utils.t('autoSaved'), 'success'); + } + }); + } + + const checkSavedProgress = () => { + const savedData = Utils.loadProgress(); + if (savedData && savedData.state.paintedPixels > 0) { + const savedDate = new Date(savedData.timestamp).toLocaleString(); + const progress = Math.round( + (savedData.state.paintedPixels / savedData.state.totalPixels) * 100 + ); + + Utils.showAlert( + `${Utils.t('savedDataFound')}\n\n` + + `Saved: ${savedDate}\n` + + `Progress: ${savedData.state.paintedPixels}/${savedData.state.totalPixels} pixels (${progress}%)\n` + + `${Utils.t('clickLoadToContinue')}`, + 'info' + ); + } + }; + + setTimeout(checkSavedProgress, 1000); + + if (cooldownSlider && cooldownInput && cooldownValue && cooldownDecrease && cooldownIncrease) { + const updateCooldown = (newValue) => { + const threshold = Math.max(1, Math.min(state.maxCharges || 999, parseInt(newValue))); + state.cooldownChargeThreshold = threshold; + + // Update both controls (value shows in input, label shows unit only) + cooldownSlider.value = threshold; + cooldownInput.value = threshold; + cooldownValue.textContent = `${Utils.t('charges')}`; + + saveBotSettings(); + NotificationManager.resetEdgeTracking(); // prevent spurious notify after threshold change + }; + + // Slider event listener + cooldownSlider.addEventListener('input', (e) => { + updateCooldown(e.target.value); + }); + + // Number input event listener + cooldownInput.addEventListener('input', (e) => { + updateCooldown(e.target.value); + }); + + // Decrease button + cooldownDecrease.addEventListener('click', () => { + updateCooldown(parseInt(cooldownInput.value) - 1); + }); + + // Increase button + cooldownIncrease.addEventListener('click', () => { + updateCooldown(parseInt(cooldownInput.value) + 1); + }); + + // Add scroll-to-adjust for cooldown slider + Utils.createScrollToAdjust(cooldownSlider, updateCooldown, 1, state.maxCharges, 1); + } + + loadBotSettings(); + // Ensure notification poller reflects current settings + NotificationManager.syncFromState(); + } + + function getMsToTargetCharges(current, target, cooldown, intervalMs = 0) { + const remainingCharges = target - current; + return Math.max(0, remainingCharges * cooldown - intervalMs); + } + + function updateChargesThresholdUI(intervalMs) { + if (state.stopFlag) return; + + const threshold = state.cooldownChargeThreshold; + const remainingMs = getMsToTargetCharges( + state.preciseCurrentCharges, + threshold, + state.cooldown, + intervalMs + ); + const timeText = Utils.msToTimeText(remainingMs); + + updateUI( + 'noChargesThreshold', + 'warning', + { + threshold, + current: state.displayCharges, + time: timeText, + }, + true + ); + } + + function generateCoordinates(width, height, mode, direction, snake, blockWidth, blockHeight) { + const coords = []; + console.log( + 'Generating coordinates with \n mode:', + mode, + '\n direction:', + direction, + '\n snake:', + snake, + '\n blockWidth:', + blockWidth, + '\n blockHeight:', + blockHeight + ); + // --------- Standard 4 corners traversal ---------- + let xStart, xEnd, xStep; + let yStart, yEnd, yStep; + switch (direction) { + case 'top-left': + xStart = 0; + xEnd = width; + xStep = 1; + yStart = 0; + yEnd = height; + yStep = 1; + break; + case 'top-right': + xStart = width - 1; + xEnd = -1; + xStep = -1; + yStart = 0; + yEnd = height; + yStep = 1; + break; + case 'bottom-left': + xStart = 0; + xEnd = width; + xStep = 1; + yStart = height - 1; + yEnd = -1; + yStep = -1; + break; + case 'bottom-right': + xStart = width - 1; + xEnd = -1; + xStep = -1; + yStart = height - 1; + yEnd = -1; + yStep = -1; + break; + default: + throw new Error(`Unknown direction: ${direction}`); + } + + // --------- Traversal modes ---------- + if (mode === 'rows') { + for (let y = yStart; y !== yEnd; y += yStep) { + if (snake && (y - yStart) % 2 !== 0) { + for (let x = xEnd - xStep; x !== xStart - xStep; x -= xStep) { + coords.push([x, y]); + } + } else { + for (let x = xStart; x !== xEnd; x += xStep) { + coords.push([x, y]); + } + } + } + } else if (mode === 'columns') { + for (let x = xStart; x !== xEnd; x += xStep) { + if (snake && (x - xStart) % 2 !== 0) { + for (let y = yEnd - yStep; y !== yStart - yStep; y -= yStep) { + coords.push([x, y]); + } + } else { + for (let y = yStart; y !== yEnd; y += yStep) { + coords.push([x, y]); + } + } + } + } else if (mode === 'circle-out') { + const cx = Math.floor(width / 2); + const cy = Math.floor(height / 2); + const maxRadius = Math.ceil(Math.sqrt(cx * cx + cy * cy)); + + for (let r = 0; r <= maxRadius; r++) { + for (let y = cy - r; y <= cy + r; y++) { + for (let x = cx - r; x <= cx + r; x++) { + if (x >= 0 && x < width && y >= 0 && y < height) { + const dist = Math.max(Math.abs(x - cx), Math.abs(y - cy)); + if (dist === r) coords.push([x, y]); + } + } + } + } + } else if (mode === 'circle-in') { + const cx = Math.floor(width / 2); + const cy = Math.floor(height / 2); + const maxRadius = Math.ceil(Math.sqrt(cx * cx + cy * cy)); + + for (let r = maxRadius; r >= 0; r--) { + for (let y = cy - r; y <= cy + r; y++) { + for (let x = cx - r; x <= cx + r; x++) { + if (x >= 0 && x < width && y >= 0 && y < height) { + const dist = Math.max(Math.abs(x - cx), Math.abs(y - cy)); + if (dist === r) coords.push([x, y]); + } + } + } + } + } else if (mode === 'blocks' || mode === 'shuffle-blocks') { + const blocks = []; + for (let by = 0; by < height; by += blockHeight) { + for (let bx = 0; bx < width; bx += blockWidth) { + const block = []; + for (let y = by; y < Math.min(by + blockHeight, height); y++) { + for (let x = bx; x < Math.min(bx + blockWidth, width); x++) { + block.push([x, y]); + } + } + blocks.push(block); + } + } + + if (mode === 'shuffle-blocks') { + // Simple Fisher-Yates shuffle + for (let i = blocks.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [blocks[i], blocks[j]] = [blocks[j], blocks[i]]; + } + } + + // Concatenate all blocks + for (const block of blocks) { + coords.push(...block); + } + } else { + throw new Error(`Unknown mode: ${mode}`); + } + + return coords; + } + + async function flushPixelBatch(pixelBatch) { + if (!pixelBatch || pixelBatch.pixels.length === 0) return true; + + const batchSize = pixelBatch.pixels.length; + console.log( + `๐Ÿ“ฆ Sending batch with ${batchSize} pixels (region: ${pixelBatch.regionX},${pixelBatch.regionY})` + ); + const success = await sendBatchWithRetry( + pixelBatch.pixels, + pixelBatch.regionX, + pixelBatch.regionY + ); + if (success) { + pixelBatch.pixels.forEach((p) => { + state.paintedPixels++; + Utils.markPixelPainted(p.x, p.y, pixelBatch.regionX, pixelBatch.regionY); + }); + state.fullChargeData = { + ...state.fullChargeData, + spentSinceShot: state.fullChargeData.spentSinceShot + batchSize, + }; + updateStats(); + updateUI('paintingProgress', 'default', { + painted: state.paintedPixels, + total: state.totalPixels, + }); + Utils.performSmartSave(); + + if (CONFIG.PAINTING_SPEED_ENABLED && state.paintingSpeed > 0 && batchSize > 0) { + const delayPerPixel = 1000 / state.paintingSpeed; + const totalDelay = Math.max(100, delayPerPixel * batchSize); + await Utils.sleep(totalDelay); + } + } else { + console.error(`โŒ Batch failed permanently after retries. Stopping painting.`); + state.stopFlag = true; + updateUI('paintingBatchFailed', 'error'); + } + + pixelBatch.pixels = []; + return success; + } + + async function processImage() { + const { width, height, pixels } = state.imageData; + const { x: startX, y: startY } = state.startPosition; + const { x: regionX, y: regionY } = state.region; + + // todo force load tiles + const tilesReady = await overlayManager.waitForTiles( + regionX, + regionY, + width, + height, + startX, + startY, + 10000 // timeout 10s + ); + + if (!tilesReady) { + updateUI('overlayTilesNotLoaded', 'error'); + state.stopFlag = true; + return; + } + + let pixelBatch = null; + let skippedPixels = { + transparent: 0, + white: 0, + alreadyPainted: 0, + colorUnavailable: 0, + }; + + const transparencyThreshold = + state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; + + function checkPixelEligibility(x, y) { + const idx = (y * width + x) * 4; + const r = pixels[idx], + g = pixels[idx + 1], + b = pixels[idx + 2], + a = pixels[idx + 3]; + + if (!state.paintTransparentPixels && a < transparencyThreshold) + return { + eligible: false, + reason: 'transparent', + }; + if (!state.paintWhitePixels && Utils.isWhitePixel(r, g, b)) + return { + eligible: false, + reason: 'white', + }; + + let targetRgb = Utils.isWhitePixel(r, g, b) + ? [255, 255, 255] + : Utils.findClosestPaletteColor(r, g, b, state.activeColorPalette); + + // Template color ID, normalized/mapped to the nearest available color in our palette. + // Example: template requires "Slate", but we only have "Dark Gray" available + // โ†’ mappedTargetColorId = ID of Dark Gray. + // + // If `state.paintUnavailablePixels` is enabled, the painting would stop earlier + // because "Slate" was not found (null returned). + // + // Else, the template "Slate" is mapped to the closest available color (e.g., "Dark Gray"), + // and we proceed with painting using that mapped color. + // + // In this case, if the canvas pixel is already Slate (mapped to available Dark Gray), + // we skip painting, since template and canvas both resolve to the same available color (Dark Gray). + const mappedTargetColorId = Utils.resolveColor( + targetRgb, + state.availableColors, + !state.paintUnavailablePixels + ); + + // Technically, checking only `!mappedTargetColorId.id` would be enough, + // but combined with `state.paintUnavailablePixels` it makes the logic explicit: + // we only skip when the template color cannot be mapped AND strict mode is on. + if (!state.paintUnavailablePixels && !mappedTargetColorId.id) { + return { + eligible: false, + reason: 'colorUnavailable', + r, + g, + b, + a, + mappedColorId: mappedTargetColorId.id, + }; + } + return { eligible: true, r, g, b, a, mappedColorId: mappedTargetColorId.id }; + } + + function skipPixel(reason, id, rgb, x, y) { + if (reason !== 'transparent') { + console.log(`Skipped pixel for ${reason} (id: ${id}, (${rgb.join(', ')})) at (${x}, ${y})`); + } + skippedPixels[reason]++; + } + + try { + const coords = generateCoordinates( + width, + height, + state.coordinateMode, + state.coordinateDirection, + state.coordinateSnake, + state.blockWidth, + state.blockHeight + ); + + outerLoop: for (const [x, y] of coords) { + if (state.stopFlag) { + if (pixelBatch && pixelBatch.pixels.length > 0) { + console.log( + `๐ŸŽฏ Sending last batch before stop with ${pixelBatch.pixels.length} pixels` + ); + await flushPixelBatch(pixelBatch); + } + state.lastPosition = { x, y }; + updateUI('paintingPaused', 'warning', { x, y }); + // noinspection UnnecessaryLabelOnBreakStatementJS + break outerLoop; + } + + const targetPixelInfo = checkPixelEligibility(x, y); + let absX = startX + x; + let absY = startY + y; + + let adderX = Math.floor(absX / 1000); + let adderY = Math.floor(absY / 1000); + let pixelX = absX % 1000; + let pixelY = absY % 1000; + + // Template color ID, normalized/mapped to the nearest available color in our palette. + // Example: template requires "Slate", but we only have "Dark Gray" available + // โ†’ mappedTargetColorId = ID of Dark Gray. + // + // If `state.paintUnavailablePixels` is enabled, the painting would stop earlier + // because "Slate" was not found (null returned). + // + // Else, the template "Slate" is mapped to the closest available color (e.g., "Dark Gray"), + // and we proceed with painting using that mapped color. + // + // In this case, if the canvas pixel is already Slate (mapped to available Dark Gray), + // we skip painting, since template and canvas both resolve to the same available color (Dark Gray). + const targetMappedColorId = targetPixelInfo.mappedColorId; + + if (!targetPixelInfo.eligible) { + skipPixel( + targetPixelInfo.reason, + targetMappedColorId, + [targetPixelInfo.r, targetPixelInfo.g, targetPixelInfo.b], + pixelX, + pixelY + ); + continue; + } + + // console.log(`[DEBUG] Pixel at (${pixelX}, ${pixelY}) eligible: RGB=${targetPixelInfo.r}, ${targetPixelInfo.g}, ${targetPixelInfo.b}, + // alpha=${targetPixelInfo.a}, mappedColorId=${targetMappedColorId}`); + + if ( + !pixelBatch || + pixelBatch.regionX !== regionX + adderX || + pixelBatch.regionY !== regionY + adderY + ) { + if (pixelBatch && pixelBatch.pixels.length > 0) { + console.log( + `๐ŸŒ Sending region-change batch with ${pixelBatch.pixels.length} pixels (switching to region ${regionX + adderX + },${regionY + adderY})` + ); + const success = await flushPixelBatch(pixelBatch); + + if (success) { + if ( + CONFIG.PAINTING_SPEED_ENABLED && + state.paintingSpeed > 0 && + pixelBatch.pixels.length > 0 + ) { + const batchDelayFactor = Math.max(1, 100 / state.paintingSpeed); + const totalDelay = Math.max(100, batchDelayFactor * pixelBatch.pixels.length); + await Utils.sleep(totalDelay); + } + updateStats(); + } else { + console.error(`โŒ Batch failed permanently after retries. Stopping painting.`); + state.stopFlag = true; + updateUI('paintingBatchFailed', 'error'); + // noinspection UnnecessaryLabelOnBreakStatementJS + break outerLoop; + } + } + + pixelBatch = { + regionX: regionX + adderX, + regionY: regionY + adderY, + pixels: [], + }; + } + + try { + const tileKeyParts = [pixelBatch.regionX, pixelBatch.regionY]; + + const tilePixelRGBA = await overlayManager.getTilePixelColor( + tileKeyParts[0], + tileKeyParts[1], + pixelX, + pixelY + ); + + if (tilePixelRGBA && Array.isArray(tilePixelRGBA)) { + // Resolve the actual canvas pixel color to the closest available color. + // (The raw canvas RGB [er, eg, eb] is mapped into state.availableColors) + // so that comparison is consistent with targetMappedColorId. + const mappedCanvasColor = Utils.resolveColor( + tilePixelRGBA.slice(0, 3), + state.availableColors + ); + const isMatch = mappedCanvasColor.id === targetMappedColorId; + if (isMatch) { + skipPixel( + 'alreadyPainted', + targetMappedColorId, + [targetPixelInfo.r, targetPixelInfo.g, targetPixelInfo.b], + pixelX, + pixelY + ); + continue; + } + console.debug( + `[COMPARE] Pixel at ๐Ÿ“ (${pixelX}, ${pixelY}) in region (${regionX + adderX + }, ${regionY + adderY})\n` + + ` โ”œโ”€โ”€ Current color: rgb(${tilePixelRGBA.slice(0, 3).join(', ')}) (id: ${mappedCanvasColor.id})\n` + + ` โ”œโ”€โ”€ Target color: rgb(${targetPixelInfo.r}, ${targetPixelInfo.g}, ${targetPixelInfo.b}) (id: ${targetMappedColorId})\n` + + ` โ””โ”€โ”€ Status: ${isMatch ? 'โœ… Already painted โ†’ SKIP' : '๐Ÿ”ด Needs paint โ†’ PAINT' + }\n` + ); + } + } catch (e) { + console.error(`[DEBUG] Error checking existing pixel at (${pixelX}, ${pixelY}):`, e); + updateUI('paintingPixelCheckFailed', 'error', { x: pixelX, y: pixelY }); + state.stopFlag = true; + // noinspection UnnecessaryLabelOnBreakStatementJS + break outerLoop; + } + + pixelBatch.pixels.push({ + x: pixelX, + y: pixelY, + color: targetMappedColorId, + localX: x, + localY: y, + }); + + const maxBatchSize = calculateBatchSize(); + if (pixelBatch.pixels.length >= maxBatchSize) { + const modeText = + state.batchMode === 'random' + ? `random (${state.randomBatchMin}-${state.randomBatchMax})` + : 'normal'; + console.log( + `๐Ÿ“ฆ Sending batch with ${pixelBatch.pixels.length} pixels (mode: ${modeText}, target: ${maxBatchSize})` + ); + const success = await flushPixelBatch(pixelBatch); + if (!success) { + console.error(`โŒ Batch failed permanently after retries. Stopping painting.`); + state.stopFlag = true; + updateUI('paintingBatchFailed', 'error'); + // noinspection UnnecessaryLabelOnBreakStatementJS + break outerLoop; + } + + pixelBatch.pixels = []; + } + if (!CONFIG.autoSwap) { + if (state.displayCharges < state.cooldownChargeThreshold && !state.stopFlag) { + await Utils.dynamicSleep(() => { + if (state.displayCharges >= state.cooldownChargeThreshold) { + NotificationManager.maybeNotifyChargesReached(true); + return 0; + } + if (state.stopFlag) return 0; + return getMsToTargetCharges( + state.preciseCurrentCharges, + state.cooldownChargeThreshold, + state.cooldown + ); + }); + } + } + else { + if (state.displayCharges < state.cooldownChargeThreshold && !state.stopFlag) { + console.log("โš ๏ธ Charges too low, swapping to next account..."); + + const accounts = JSON.parse(localStorage.getItem("accounts")) || []; + if (accounts.length === 0) { + console.warn("โŒ No accounts available, stopping painting."); + state.stopFlag = true; + return; + } + + state.accountIndex = (state.accountIndex + 1) % accounts.length; + console.log("๐Ÿ”„ Switching to account index:", state.accountIndex); + + const nextToken = accounts[state.accountIndex]; + console.log("๐Ÿ”‘ Next token:", nextToken); + + if (!nextToken) { + console.warn("โš ๏ธ Invalid token, skipping..."); + return; + } + + swapAccountTrigger(nextToken); + + let maxRetries = 20; + let retryCount = 0; + let swapSuccess = false; + + while (!swapSuccess && retryCount < maxRetries) { + console.log(`โณ Waiting for account swap... (Attempt ${retryCount + 1}/${maxRetries})`); + + // Wait for a short period before checking. + await new Promise(resolve => setTimeout(resolve, 1000)); + + try { + await fetchAccount(); + + console.log("โœ… Account swap confirmed."); + swapSuccess = true; + } catch (error) { + console.warn("โŒ Account swap not yet successful. Retrying...", error); + retryCount++; + } + } + + if (swapSuccess) { + + const { charges, cooldown } = await WPlaceService.getCharges(); + state.displayCharges = Math.floor(charges); + state.cooldown = cooldown; + Utils.performSmartSave(); + updateStats(); + } else { + console.error("โŒ Failed to swap account after multiple retries. Stopping loop."); + state.stopFlag = true; + } + } + } + + if (state.stopFlag) { + // noinspection UnnecessaryLabelOnBreakStatementJS + break outerLoop; + } + } + + if (pixelBatch && pixelBatch.pixels.length > 0 && !state.stopFlag) { + console.log(`๐Ÿ Sending final batch with ${pixelBatch.pixels.length} pixels`); + const success = await flushPixelBatch(pixelBatch); + if (!success) { + console.warn( + `โš ๏ธ Final batch failed with ${pixelBatch.pixels.length} pixels after all retries.` + ); + } + } + } finally { + if (window._chargesInterval) clearInterval(window._chargesInterval); + window._chargesInterval = null; + } + + if (state.stopFlag) { + // Save progress when stopped to preserve painted map + Utils.saveProgress(); + } else { + updateUI('paintingComplete', 'success', { count: state.paintedPixels }); + state.lastPosition = { x: 0, y: 0 }; + // Keep painted map until user starts new project + // state.paintedMap = null // Commented out to preserve data + Utils.saveProgress(); // Save final complete state + overlayManager.clear(); + const toggleOverlayBtn = document.getElementById('toggleOverlayBtn'); + if (toggleOverlayBtn) { + toggleOverlayBtn.classList.remove('active'); + toggleOverlayBtn.disabled = true; + } + } + + // Log skip statistics + console.log(`๐Ÿ“Š Pixel Statistics:`); + console.log(` Painted: ${state.paintedPixels}`); + console.log(` Skipped - Transparent: ${skippedPixels.transparent}`); + console.log(` Skipped - White (disabled): ${skippedPixels.white}`); + console.log(` Skipped - Already painted: ${skippedPixels.alreadyPainted}`); + console.log(` Skipped - Color Unavailable: ${skippedPixels.colorUnavailable}`); + console.log( + ` Total processed: ${state.paintedPixels + + skippedPixels.transparent + + skippedPixels.white + + skippedPixels.alreadyPainted + + skippedPixels.colorUnavailable + }` + ); + + updateStats(); + } + + // Helper function to calculate batch size based on mode + function calculateBatchSize() { + let targetBatchSize; + + if (state.batchMode === 'random') { + // Generate random batch size within the specified range + const min = Math.max(1, state.randomBatchMin); + const max = Math.max(min, state.randomBatchMax); + targetBatchSize = Math.floor(Math.random() * (max - min + 1)) + min; + console.log(`๐ŸŽฒ Random batch size generated: ${targetBatchSize} (range: ${min}-${max})`); + } else { + // Normal mode - use the fixed paintingSpeed value + targetBatchSize = state.paintingSpeed; + } + + // Always limit by available charges + const maxAllowed = state.displayCharges; + const finalBatchSize = Math.min(targetBatchSize, maxAllowed); + + return finalBatchSize; + } + + // Helper function to retry batch until success with exponential backoff + async function sendBatchWithRetry(pixels, regionX, regionY, maxRetries = MAX_BATCH_RETRIES) { + let attempt = 0; + while (attempt < maxRetries && !state.stopFlag) { + attempt++; + console.log( + `๐Ÿ”„ Attempting to send batch (attempt ${attempt}/${maxRetries}) for region ${regionX},${regionY} with ${pixels.length} pixels` + ); + + const result = await sendPixelBatch(pixels, regionX, regionY); + + if (result === true) { + console.log(`โœ… Batch succeeded on attempt ${attempt}`); + return true; + } else if (result === 'token_error') { + console.log(`๐Ÿ”‘ Token error on attempt ${attempt}, regenerating...`); + updateUI('captchaSolving', 'warning'); + try { + await handleCaptcha(); + // Don't count token regeneration as a failed attempt + attempt--; + continue; + } catch (e) { + console.error(`โŒ Token regeneration failed on attempt ${attempt}:`, e); + updateUI('captchaFailed', 'error'); + // Wait longer before retrying after token failure + await Utils.sleep(5000); + } + } else { + console.warn(`โš ๏ธ Batch failed on attempt ${attempt}, retrying...`); + // Exponential backoff with jitter + const baseDelay = Math.min(1000 * Math.pow(2, attempt - 1), 30000); // Max 30s + const jitter = Math.random() * 1000; // Add up to 1s random delay + await Utils.sleep(baseDelay + jitter); + } + } + + if (attempt >= maxRetries) { + console.error( + `โŒ Batch failed after ${maxRetries} attempts (MAX_BATCH_RETRIES=${MAX_BATCH_RETRIES}). This will stop painting to prevent infinite loops.` + ); + updateUI('paintingError', 'error'); + return false; + } + + return false; + } + + async function sendPixelBatch(pixelBatch, regionX, regionY) { + let token = turnstileToken; + + // Generate new token if we don't have one + if (!token) { + try { + console.log('๐Ÿ”‘ Generating Turnstile token for pixel batch...'); + token = await handleCaptcha(); + turnstileToken = token; // Store for potential reuse + } catch (error) { + console.error('โŒ Failed to generate Turnstile token:', error); + tokenPromise = new Promise((resolve) => { + _resolveToken = resolve; + }); + return 'token_error'; + } + } + + const coords = new Array(pixelBatch.length * 2); + const colors = new Array(pixelBatch.length); + for (let i = 0; i < pixelBatch.length; i++) { + const pixel = pixelBatch[i]; + coords[i * 2] = pixel.x; + coords[i * 2 + 1] = pixel.y; + colors[i] = pixel.color; + } + + try { + const payload = { coords, colors, t: token, fp: fpStr32 }; + var wasmtoken = await createWasmToken(regionX, regionY, payload); + const res = await fetch(`https://backend.wplace.live/s0/pixel/${regionX}/${regionY}`, { + method: 'POST', + headers: { 'Content-Type': 'text/plain;charset=UTF-8', "x-pawtect-token": wasmtoken }, + credentials: 'include', + body: JSON.stringify(payload), + }); + + if (res.status === 403) { + let data = null; + try { + data = await res.json(); + } catch (_) { } + console.error('โŒ 403 Forbidden. Turnstile token might be invalid or expired.'); + + // Try to generate a new token and retry once + try { + console.log('๐Ÿ”„ Regenerating Turnstile token after 403...'); + token = await handleCaptcha(); + turnstileToken = token; + + // Retry the request with new token + const retryPayload = { coords, colors, t: token, fp: fpStr32 }; + var wasmtoken = await createWasmToken(regionX, regionY, retryPayload); + const retryRes = await fetch( + `https://backend.wplace.live/s0/pixel/${regionX}/${regionY}`, + { + method: 'POST', + headers: { 'Content-Type': 'text/plain;charset=UTF-8', "x-pawtect-token": wasmtoken }, + credentials: 'include', + body: JSON.stringify(retryPayload), + } + ); + + if (retryRes.status === 403) { + turnstileToken = null; + tokenPromise = new Promise((resolve) => { + _resolveToken = resolve; + }); + return 'token_error'; + } + + const retryData = await retryRes.json(); + return retryData?.painted === pixelBatch.length; + } catch (retryError) { + console.error('โŒ Token regeneration failed:', retryError); + turnstileToken = null; + tokenPromise = new Promise((resolve) => { + _resolveToken = resolve; + }); + return 'token_error'; + } + } + + const data = await res.json(); + return data?.painted === pixelBatch.length; + } catch (e) { + console.error('Batch paint request failed:', e); + return false; + } + } + + function saveBotSettings() { + try { + const settings = { + paintingSpeed: state.paintingSpeed, + paintingSpeedEnabled: document.getElementById('enableSpeedToggle')?.checked, + batchMode: state.batchMode, // "normal" or "random" + randomBatchMin: state.randomBatchMin, + randomBatchMax: state.randomBatchMax, + cooldownChargeThreshold: state.cooldownChargeThreshold, + tokenSource: state.tokenSource, // "generator", "hybrid", or "manual" + minimized: state.minimized, + overlayOpacity: state.overlayOpacity, + blueMarbleEnabled: document.getElementById('enableBlueMarbleToggle')?.checked, + ditheringEnabled: state.ditheringEnabled, + colorMatchingAlgorithm: state.colorMatchingAlgorithm, + enableChromaPenalty: state.enableChromaPenalty, + chromaPenaltyWeight: state.chromaPenaltyWeight, + customTransparencyThreshold: state.customTransparencyThreshold, + customWhiteThreshold: state.customWhiteThreshold, + paintWhitePixels: state.paintWhitePixels, + paintTransparentPixels: state.paintTransparentPixels, + resizeSettings: state.resizeSettings, + paintUnavailablePixels: state.paintUnavailablePixels, + coordinateMode: state.coordinateMode, + coordinateDirection: state.coordinateDirection, + coordinateSnake: state.coordinateSnake, + blockWidth: state.blockWidth, + blockHeight: state.blockHeight, // Save ignore mask (as base64) with its dimensions + resizeIgnoreMask: + state.resizeIgnoreMask && + state.resizeSettings && + state.resizeSettings.width * state.resizeSettings.height === state.resizeIgnoreMask.length + ? { + w: state.resizeSettings.width, + h: state.resizeSettings.height, + data: btoa(String.fromCharCode(...state.resizeIgnoreMask)), + } + : null, // Notifications + notificationsEnabled: state.notificationsEnabled, + notifyOnChargesReached: state.notifyOnChargesReached, + notifyOnlyWhenUnfocused: state.notifyOnlyWhenUnfocused, + notificationIntervalMinutes: state.notificationIntervalMinutes, + originalImage: state.originalImage, + }; + CONFIG.PAINTING_SPEED_ENABLED = settings.paintingSpeedEnabled; + // AUTO_CAPTCHA_ENABLED is always true - no need to save/load + + localStorage.setItem('wplace-bot-settings', JSON.stringify(settings)); + } catch (e) { + console.warn('Could not save bot settings:', e); + } + } + + function loadBotSettings() { + try { + const saved = localStorage.getItem('wplace-bot-settings'); + if (!saved) return; + const settings = JSON.parse(saved); + + state.paintingSpeed = settings.paintingSpeed || CONFIG.PAINTING_SPEED.DEFAULT; + state.batchMode = settings.batchMode || CONFIG.BATCH_MODE; // Default to "normal" + state.randomBatchMin = settings.randomBatchMin || CONFIG.RANDOM_BATCH_RANGE.MIN; + state.randomBatchMax = settings.randomBatchMax || CONFIG.RANDOM_BATCH_RANGE.MAX; + state.cooldownChargeThreshold = + settings.cooldownChargeThreshold || CONFIG.COOLDOWN_CHARGE_THRESHOLD; + state.tokenSource = settings.tokenSource || CONFIG.TOKEN_SOURCE; // Default to "generator" + state.minimized = settings.minimized ?? false; + CONFIG.PAINTING_SPEED_ENABLED = settings.paintingSpeedEnabled ?? false; + CONFIG.AUTO_CAPTCHA_ENABLED = settings.autoCaptchaEnabled ?? false; + state.overlayOpacity = settings.overlayOpacity ?? CONFIG.OVERLAY.OPACITY_DEFAULT; + state.blueMarbleEnabled = settings.blueMarbleEnabled ?? CONFIG.OVERLAY.BLUE_MARBLE_DEFAULT; + state.ditheringEnabled = settings.ditheringEnabled ?? false; + state.colorMatchingAlgorithm = settings.colorMatchingAlgorithm || 'lab'; + state.enableChromaPenalty = settings.enableChromaPenalty ?? true; + state.chromaPenaltyWeight = settings.chromaPenaltyWeight ?? 0.15; + state.customTransparencyThreshold = + settings.customTransparencyThreshold ?? CONFIG.TRANSPARENCY_THRESHOLD; + state.customWhiteThreshold = settings.customWhiteThreshold ?? CONFIG.WHITE_THRESHOLD; + state.paintWhitePixels = settings.paintWhitePixels ?? true; + state.paintTransparentPixels = settings.paintTransparentPixels ?? false; + state.resizeSettings = settings.resizeSettings ?? null; + state.originalImage = settings.originalImage ?? null; + state.paintUnavailablePixels = settings.paintUnavailablePixels ?? CONFIG.PAINT_UNAVAILABLE; + state.coordinateMode = settings.coordinateMode ?? CONFIG.COORDINATE_MODE; + state.coordinateDirection = settings.coordinateDirection ?? CONFIG.COORDINATE_DIRECTION; + state.coordinateSnake = settings.coordinateSnake ?? CONFIG.COORDINATE_SNAKE; + state.blockWidth = settings.blockWidth ?? CONFIG.COORDINATE_BLOCK_WIDTH; + state.blockHeight = settings.blockHeight ?? CONFIG.COORDINATE_BLOCK_HEIGHT; + // Notifications + state.notificationsEnabled = settings.notificationsEnabled ?? CONFIG.NOTIFICATIONS.ENABLED; + state.notifyOnChargesReached = + settings.notifyOnChargesReached ?? CONFIG.NOTIFICATIONS.ON_CHARGES_REACHED; + state.notifyOnlyWhenUnfocused = + settings.notifyOnlyWhenUnfocused ?? CONFIG.NOTIFICATIONS.ONLY_WHEN_UNFOCUSED; + state.notificationIntervalMinutes = + settings.notificationIntervalMinutes ?? CONFIG.NOTIFICATIONS.REPEAT_MINUTES; + // Restore ignore mask if dims match current resizeSettings + if ( + settings.resizeIgnoreMask && + settings.resizeIgnoreMask.data && + state.resizeSettings && + settings.resizeIgnoreMask.w === state.resizeSettings.width && + settings.resizeIgnoreMask.h === state.resizeSettings.height + ) { + try { + const bin = atob(settings.resizeIgnoreMask.data); + const arr = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i); + state.resizeIgnoreMask = arr; + } catch { + state.resizeIgnoreMask = null; + } + } else { + state.resizeIgnoreMask = null; + } + // Initialize coordinate generation UI + const coordinateModeSelect = document.getElementById('coordinateModeSelect'); + if (coordinateModeSelect) coordinateModeSelect.value = state.coordinateMode; + + const coordinateDirectionSelect = document.getElementById('coordinateDirectionSelect'); + if (coordinateDirectionSelect) coordinateDirectionSelect.value = state.coordinateDirection; + + const coordinateSnakeToggle = document.getElementById('coordinateSnakeToggle'); + if (coordinateSnakeToggle) coordinateSnakeToggle.checked = state.coordinateSnake; + + const settingsContainer = document.getElementById('wplace-settings-container'); + const directionControls = settingsContainer.querySelector('#directionControls'); + const snakeControls = settingsContainer.querySelector('#snakeControls'); + const blockControls = settingsContainer.querySelector('#blockControls'); + Utils.updateCoordinateUI({ + mode: state.coordinateMode, + directionControls, + snakeControls, + blockControls, + }); + + const paintUnavailablePixelsToggle = document.getElementById('paintUnavailablePixelsToggle'); + if (paintUnavailablePixelsToggle) { + paintUnavailablePixelsToggle.checked = state.paintUnavailablePixels; + } + + const settingsPaintWhiteToggle = settingsContainer.querySelector('#settingsPaintWhiteToggle'); + if (settingsPaintWhiteToggle) { + settingsPaintWhiteToggle.checked = state.paintWhitePixels; + } + + const settingsPaintTransparentToggle = settingsContainer.querySelector( + '#settingsPaintTransparentToggle' + ); + if (settingsPaintTransparentToggle) { + settingsPaintTransparentToggle.checked = state.paintTransparentPixels; + } + + const speedSlider = document.getElementById('speedSlider'); + const speedInput = document.getElementById('speedInput'); + const speedValue = document.getElementById('speedValue'); + if (speedSlider) speedSlider.value = state.paintingSpeed; + if (speedInput) speedInput.value = state.paintingSpeed; + if (speedValue) speedValue.textContent = `pixels`; + + const enableSpeedToggle = document.getElementById('enableSpeedToggle'); + if (enableSpeedToggle) enableSpeedToggle.checked = CONFIG.PAINTING_SPEED_ENABLED; + + // Batch mode UI initialization + const batchModeSelect = document.getElementById('batchModeSelect'); + if (batchModeSelect) batchModeSelect.value = state.batchMode; + + const normalBatchControls = document.getElementById('normalBatchControls'); + const randomBatchControls = document.getElementById('randomBatchControls'); + + // Show/hide appropriate controls based on batch mode + if (normalBatchControls && randomBatchControls) { + if (state.batchMode === 'random') { + normalBatchControls.style.display = 'none'; + randomBatchControls.style.display = 'block'; + } else { + normalBatchControls.style.display = 'block'; + randomBatchControls.style.display = 'none'; + } + } + + const randomBatchMin = document.getElementById('randomBatchMin'); + if (randomBatchMin) randomBatchMin.value = state.randomBatchMin; + + const randomBatchMax = document.getElementById('randomBatchMax'); + if (randomBatchMax) randomBatchMax.value = state.randomBatchMax; + + // AUTO_CAPTCHA_ENABLED is always true - no toggle to set + + const cooldownSlider = document.getElementById('cooldownSlider'); + const cooldownInput = document.getElementById('cooldownInput'); + const cooldownValue = document.getElementById('cooldownValue'); + if (cooldownSlider) cooldownSlider.value = state.cooldownChargeThreshold; + if (cooldownInput) cooldownInput.value = state.cooldownChargeThreshold; + if (cooldownValue) cooldownValue.textContent = `${Utils.t('charges')}`; + + const overlayOpacitySlider = document.getElementById('overlayOpacitySlider'); + if (overlayOpacitySlider) overlayOpacitySlider.value = state.overlayOpacity; + const overlayOpacityValue = document.getElementById('overlayOpacityValue'); + if (overlayOpacityValue) + overlayOpacityValue.textContent = `${Math.round(state.overlayOpacity * 100)}%`; + const enableBlueMarbleToggle = document.getElementById('enableBlueMarbleToggle'); + if (enableBlueMarbleToggle) enableBlueMarbleToggle.checked = state.blueMarbleEnabled; + + const tokenSourceSelect = document.getElementById('tokenSourceSelect'); + if (tokenSourceSelect) tokenSourceSelect.value = state.tokenSource; + + const colorAlgorithmSelect = document.getElementById('colorAlgorithmSelect'); + if (colorAlgorithmSelect) colorAlgorithmSelect.value = state.colorMatchingAlgorithm; + const enableChromaPenaltyToggle = document.getElementById('enableChromaPenaltyToggle'); + if (enableChromaPenaltyToggle) enableChromaPenaltyToggle.checked = state.enableChromaPenalty; + const chromaPenaltyWeightSlider = document.getElementById('chromaPenaltyWeightSlider'); + if (chromaPenaltyWeightSlider) chromaPenaltyWeightSlider.value = state.chromaPenaltyWeight; + const chromaWeightValue = document.getElementById('chromaWeightValue'); + if (chromaWeightValue) chromaWeightValue.textContent = state.chromaPenaltyWeight; + const transparencyThresholdInput = document.getElementById('transparencyThresholdInput'); + if (transparencyThresholdInput) + transparencyThresholdInput.value = state.customTransparencyThreshold; + const whiteThresholdInput = document.getElementById('whiteThresholdInput'); + if (whiteThresholdInput) whiteThresholdInput.value = state.customWhiteThreshold; + // Notifications UI + const notifEnabledToggle = document.getElementById('notifEnabledToggle'); + if (notifEnabledToggle) notifEnabledToggle.checked = state.notificationsEnabled; + const notifOnChargesToggle = document.getElementById('notifOnChargesToggle'); + if (notifOnChargesToggle) notifOnChargesToggle.checked = state.notifyOnChargesReached; + const notifOnlyUnfocusedToggle = document.getElementById('notifOnlyUnfocusedToggle'); + if (notifOnlyUnfocusedToggle) + notifOnlyUnfocusedToggle.checked = state.notifyOnlyWhenUnfocused; + const notifIntervalInput = document.getElementById('notifIntervalInput'); + if (notifIntervalInput) notifIntervalInput.value = state.notificationIntervalMinutes; + NotificationManager.resetEdgeTracking(); + } catch (e) { + console.warn('Could not load bot settings:', e); + } + } + + // Initialize Turnstile generator integration + console.log('๐Ÿš€ WPlace Auto-Image with Turnstile Token Generator loaded'); + console.log('๐Ÿ”‘ Turnstile token generator: ALWAYS ENABLED (Background mode)'); + console.log('๐ŸŽฏ Manual pixel captcha solving: Available as fallback/alternative'); + console.log('๐Ÿ“ฑ Turnstile widgets: DISABLED - pure background token generation only!'); + + // Function to enable file operations after initial startup setup is complete + function enableFileOperations() { + state.initialSetupComplete = true; + + const loadBtn = document.querySelector('#loadBtn'); + const loadFromFileBtn = document.querySelector('#loadFromFileBtn'); + const uploadBtn = document.querySelector('#uploadBtn'); + + if (loadBtn) { + loadBtn.disabled = false; + loadBtn.title = ''; + // Add a subtle animation to indicate the button is now available + loadBtn.style.animation = 'pulse 0.6s ease-in-out'; + setTimeout(() => { + if (loadBtn) loadBtn.style.animation = ''; + }, 600); + console.log('โœ… Load Progress button enabled after initial setup'); + } + + if (loadFromFileBtn) { + loadFromFileBtn.disabled = false; + loadFromFileBtn.title = ''; + // Add a subtle animation to indicate the button is now available + loadFromFileBtn.style.animation = 'pulse 0.6s ease-in-out'; + setTimeout(() => { + if (loadFromFileBtn) loadFromFileBtn.style.animation = ''; + }, 600); + console.log('โœ… Load from File button enabled after initial setup'); + } + + if (uploadBtn) { + uploadBtn.disabled = false; + uploadBtn.title = ''; + // Add a subtle animation to indicate the button is now available + uploadBtn.style.animation = 'pulse 0.6s ease-in-out'; + setTimeout(() => { + if (uploadBtn) uploadBtn.style.animation = ''; + }, 600); + console.log('โœ… Upload Image button enabled after initial setup'); + } + + // Show a notification that file operations are now available + Utils.showAlert(Utils.t('fileOperationsAvailable'), 'success'); + } + + // Optimized token initialization with better timing and error handling + async function initializeTokenGenerator() { + // Skip if already have valid token + if (isTokenValid()) { + console.log('โœ… Valid token already available, skipping initialization'); + updateUI('tokenReady', 'success'); + enableFileOperations(); // Enable file operations since initial setup is complete + return; + } + + try { + console.log('๐Ÿ”ง Initializing Turnstile token generator...'); + updateUI('initializingToken', 'default'); + + console.log('Attempting to load Turnstile script...'); + await Utils.loadTurnstile(); + console.log('Turnstile script loaded. Attempting to generate token...'); + + const token = await handleCaptchaWithRetry(); + if (token) { + setTurnstileToken(token); + console.log('โœ… Startup token generated successfully'); + updateUI('tokenReady', 'success'); + Utils.showAlert(Utils.t('tokenGeneratorReady'), 'success'); + enableFileOperations(); // Enable file operations since initial setup is complete + } else { + console.warn( + 'โš ๏ธ Startup token generation failed (no token received), will retry when needed' + ); + updateUI('tokenRetryLater', 'warning'); + // Still enable file operations even if initial token generation fails + // Users can load progress and use manual/hybrid modes + enableFileOperations(); + } + } catch (error) { + console.error('โŒ Critical error during Turnstile initialization:', error); // More specific error + updateUI('tokenRetryLater', 'warning'); + // Still enable file operations even if initial setup fails + // Users can load progress and use manual/hybrid modes + enableFileOperations(); + // Don't show error alert for initialization failures, just log them + } + } + + // Load theme preference immediately on startup before creating UI + loadThemePreference(); + applyTheme(); + + var pawtect_chunk = null; + + //find module if pawtect_chunk is null + pawtect_chunk ??= await findTokenModule("pawtect_wasm_bg.wasm"); + + async function createWasmToken(regionX, regionY, payload) { + try { + // Load the Pawtect module and WASM + const mod = await import(new URL('/_app/immutable/chunks/' + pawtect_chunk, location.origin).href); + let wasm; + try { + wasm = await mod._(); + console.log('โœ… WASM initialized successfully'); + } catch (wasmError) { + console.error('โŒ WASM initialization failed:', wasmError); + return null; + } + try { + try { + const me = await fetch(`https://backend.wplace.live/me`, { credentials: 'include' }).then(r => r.ok ? r.json() : null); + if (me?.id) { + mod.i(me.id); + console.log('โœ… user ID set:', me.id); + } + } catch { } + } catch (userIdError) { + console.log('โš ๏ธ Error setting user ID:', userIdError.message); + } + try { + const testUrl = `https://backend.wplace.live/s0/pixel/${regionX}/${regionY}`; + if (mod.r) { + mod.r(testUrl); + console.log('โœ… Request URL set:', testUrl); + } else { + console.log('โš ๏ธ request_url function (mod.r) not available'); + } + } catch (urlError) { + console.log('โš ๏ธ Error setting request URL:', urlError.message); + } + + // Create test payload + + console.log('๐Ÿ“ payload:', payload); + + // Encode payload + const enc = new TextEncoder(); + const dec = new TextDecoder(); + const bodyStr = JSON.stringify(payload); + const bytes = enc.encode(bodyStr); + console.log('๐Ÿ“ Payload size:', bytes.length, 'bytes'); + console.log('๐Ÿ“„ Payload string:', bodyStr); + + // Allocate WASM memory with validation + let inPtr; + try { + if (!wasm.__wbindgen_malloc) { + console.error('โŒ __wbindgen_malloc function not found'); + return null; + } + + inPtr = wasm.__wbindgen_malloc(bytes.length, 1); + console.log('โœ… WASM memory allocated, pointer:', inPtr); + + // Copy data to WASM memory + const wasmBuffer = new Uint8Array(wasm.memory.buffer, inPtr, bytes.length); + wasmBuffer.set(bytes); + console.log('โœ… Data copied to WASM memory'); + } catch (memError) { + console.error('โŒ Memory allocation error:', memError); + return null; + } + + // Call the WASM function + console.log('๐Ÿš€ Calling get_pawtected_endpoint_payload...'); + let outPtr, outLen, token; + try { + const result = wasm.get_pawtected_endpoint_payload(inPtr, bytes.length); + console.log('โœ… Function called, result type:', typeof result, result); + + if (Array.isArray(result) && result.length === 2) { + [outPtr, outLen] = result; + console.log('โœ… Got output pointer:', outPtr, 'length:', outLen); + + // Decode the result + const outputBuffer = new Uint8Array(wasm.memory.buffer, outPtr, outLen); + token = dec.decode(outputBuffer); + console.log('โœ… Token decoded successfully'); + } else { + console.error('โŒ Unexpected function result format:', result); + return null; + } + } catch (funcError) { + console.error('โŒ Function call error:', funcError); + console.error('Stack trace:', funcError.stack); + return null; + } + + // Cleanup memory + try { + if (wasm.__wbindgen_free && outPtr && outLen) { + wasm.__wbindgen_free(outPtr, outLen, 1); + console.log('โœ… Output memory freed'); + } + if (wasm.__wbindgen_free && inPtr) { + wasm.__wbindgen_free(inPtr, bytes.length, 1); + console.log('โœ… Input memory freed'); + } + } catch (cleanupError) { + console.log('โš ๏ธ Cleanup warning:', cleanupError.message); + } + + // Display results + console.log(''); + console.log('๐ŸŽ‰ SUCCESS!'); + console.log('๐Ÿ”‘ Full token:'); + console.log(token); + return token; + } catch (error) { + console.error('โŒ Failed to generate fp parameter:', error); + return null; + } + } + + async function findTokenModule(str) { + console.log('๐Ÿ”Ž Searching for wasm Module...'); + const links = Array.from(document.querySelectorAll('link[rel="modulepreload"][href$=".js"]')); + + for (const link of links) { + try { + const url = new URL(link.getAttribute("href"), location.origin).href; + const code = await fetch(url).then(r => r.text()); + if (code.includes(str)) { + console.log('โœ… Found wasm Module...'); + return url.split('/').pop(); + } + } catch { } + } + console.error(`โŒ Could not find Pawtect chunk: `, error); + } + + async function purchase(type) { + // loadThemePreference() + let id; + let chargeMultiplier; + if (type === "max_charges") { + id = 70; + chargeMultiplier = 5; + } else if (type === "paint_charges") { + id = 80; + chargeMultiplier = 30; + } else { + console.error("Error: Invalid purchase type provided."); + return; + } + const { droplets } = await WPlaceService.getCharges(); + console.log("There are currently : ", droplets, "droplets."); + try { + const amounts = Math.floor(droplets / 500); + if (amounts < 1) { + console.log("Not enough droplets to purchase."); + return; + } + const payload = { + "product": { + "id": id, + "amount": amounts + } + }; + const res = fetch("https://backend.wplace.live/purchase", { + method: "POST", + headers: { + "Content-Type": "text/plain;charset=UTF-8" + }, + body: JSON.stringify(payload), + credentials: "include" + }); + console.log("Fetch POST return :", res); + const { droplets: newDroplets } = await WPlaceService.getCharges(); + if (droplets != newDroplets) { + console.log("Successfully bought", amounts * chargeMultiplier, type.replace('_', ' '), "."); + } + else { + console.log("Failed to buy charges"); + } + } catch (e) { + console.error("An error occurred during the purchase:", e); + } + } + function swapAccountTrigger(token) { + localStorage.removeItem("lp"); + if (!token) return; + console.log("Sending token to extension..."); + window.postMessage({ + source: 'my-userscript', + type: 'setCookie', + value: token + }, '*'); + } + async function getAccounts() { + return new Promise((resolve, reject) => { + console.log("Requesting accounts from extension..."); + // Ask extension for accounts + window.postMessage({ + source: "my-userscript", + type: "getAccounts" + }, "*"); + function handler(event) { + if (event.source !== window) return; + if (event.data.source !== "extension") return; + if (event.data.type === "accountsData") { + window.removeEventListener("message", handler); + // Save to localStorage + try { + localStorage.setItem("accounts", JSON.stringify(event.data.accounts)); + console.log("โœ… Accounts saved to localStorage:", event.data.accounts); + } catch (e) { + console.error("โŒ Failed to save accounts:", e); + } + resolve(event.data.accounts); + } + } + window.addEventListener("message", handler); + }); + } + async function fetchAccount() { + const { ID, Charges, Max, Droplets } = await WPlaceService.fetchCheck(); + console.log("User's ID :", ID); + console.log("User's Charges :", Charges, "/", Max); + console.log("User's Droplets :", Droplets); + } + + createUI().then(() => { + // Generate token automatically after UI is ready + setTimeout(initializeTokenGenerator, 1000); + + // Attach advanced color matching listeners (resize dialog) + const advancedInit = () => { + const chromaSlider = document.getElementById('chromaPenaltyWeightSlider'); + const chromaValue = document.getElementById('chromaWeightValue'); + const resetBtn = document.getElementById('resetAdvancedColorBtn'); + const algoSelect = document.getElementById('colorAlgorithmSelect'); + const chromaToggle = document.getElementById('enableChromaPenaltyToggle'); + const transInput = document.getElementById('transparencyThresholdInput'); + const whiteInput = document.getElementById('whiteThresholdInput'); + const ditherToggle = document.getElementById('enableDitheringToggle'); + if (algoSelect) + algoSelect.addEventListener('change', (e) => { + state.colorMatchingAlgorithm = e.target.value; + saveBotSettings(); + _updateResizePreview(); + }); + if (chromaToggle) + chromaToggle.addEventListener('change', (e) => { + state.enableChromaPenalty = e.target.checked; + saveBotSettings(); + _updateResizePreview(); + }); + if (chromaSlider && chromaValue) + chromaSlider.addEventListener('input', (e) => { + state.chromaPenaltyWeight = parseFloat(e.target.value) || 0.15; + chromaValue.textContent = state.chromaPenaltyWeight.toFixed(2); + saveBotSettings(); + _updateResizePreview(); + }); + if (transInput) + transInput.addEventListener('change', (e) => { + const v = parseInt(e.target.value, 10); + if (!isNaN(v) && v >= 0 && v <= 255) { + state.customTransparencyThreshold = v; + CONFIG.TRANSPARENCY_THRESHOLD = v; + saveBotSettings(); + _updateResizePreview(); + } + }); + if (whiteInput) + whiteInput.addEventListener('change', (e) => { + const v = parseInt(e.target.value, 10); + if (!isNaN(v) && v >= 200 && v <= 255) { + state.customWhiteThreshold = v; + CONFIG.WHITE_THRESHOLD = v; + saveBotSettings(); + _updateResizePreview(); + } + }); + if (ditherToggle) + ditherToggle.addEventListener('change', (e) => { + state.ditheringEnabled = e.target.checked; + saveBotSettings(); + _updateResizePreview(); + }); + if (resetBtn) + resetBtn.addEventListener('click', () => { + state.colorMatchingAlgorithm = 'lab'; + state.enableChromaPenalty = true; + state.chromaPenaltyWeight = 0.15; + state.customTransparencyThreshold = CONFIG.TRANSPARENCY_THRESHOLD = 100; + state.customWhiteThreshold = CONFIG.WHITE_THRESHOLD = 250; + saveBotSettings(); + const a = document.getElementById('colorAlgorithmSelect'); + if (a) a.value = 'lab'; + const ct = document.getElementById('enableChromaPenaltyToggle'); + if (ct) ct.checked = true; + if (chromaSlider) chromaSlider.value = 0.15; + if (chromaValue) chromaValue.textContent = '0.15'; + if (transInput) transInput.value = 100; + if (whiteInput) whiteInput.value = 250; + _updateResizePreview(); + Utils.showAlert(Utils.t('advancedColorSettingsReset'), 'success'); + }); + }; + // Delay to ensure resize UI built + setTimeout(advancedInit, 500); + + // Add cleanup on page unload + window.addEventListener('beforeunload', () => { + Utils.cleanupTurnstile(); + }); + }); +})(); diff --git a/Extension/scripts/Auto-Image.js b/Extension/scripts/Auto-Image.js index c4cdd71..d6c3daa 100644 --- a/Extension/scripts/Auto-Image.js +++ b/Extension/scripts/Auto-Image.js @@ -9,7 +9,48 @@ // @icon // ==/UserScript== localStorage.removeItem("lp"); + +// Fallback translation function for when utils manager isn't loaded +function getText(key, params) { + // Try to get translation from loadedTranslations + try { + if (window.loadedTranslations && window.loadedTranslations[key]) { + let text = window.loadedTranslations[key]; + if (params) { + Object.keys(params).forEach(paramKey => { + text = text.replace(new RegExp(`{{${paramKey}}}`, 'g'), params[paramKey]); + }); + } + return text; + } + + // Try with state.language if available + if (window.state && window.state.language && window.loadedTranslations && window.loadedTranslations[window.state.language] && window.loadedTranslations[window.state.language][key]) { + let text = window.loadedTranslations[window.state.language][key]; + if (params) { + Object.keys(params).forEach(paramKey => { + text = text.replace(new RegExp(`{{${paramKey}}}`, 'g'), params[paramKey]); + }); + } + return text; + } + } catch (error) { + console.warn('Error in getText fallback:', error); + } + + return key; // Fallback to key if no translation found +} + ; (async () => { + // Prevent multiple instances of this script from running + if (window.WPLACE_AUTO_IMAGE_LOADED) { + console.log('%cโš ๏ธ Auto-Image script already loaded, skipping duplicate execution', 'color: #ff9800; font-weight: bold;'); + return; + } + window.WPLACE_AUTO_IMAGE_LOADED = true; + + console.log('%c๐Ÿš€ WPlace AutoBot Auto-Image Starting...', 'color: #00ff41; font-weight: bold; font-size: 16px;'); + // CONFIGURATION CONSTANTS const CONFIG = { COOLDOWN_DEFAULT: 31000, @@ -280,6 +321,9 @@ localStorage.removeItem("lp"); autoSwap: true, }; + // Expose CONFIG globally for the utils manager and other modules + window.CONFIG = CONFIG; + const getCurrentTheme = () => CONFIG.THEMES[CONFIG.currentTheme]; const switchTheme = (themeName) => { @@ -401,11 +445,8 @@ localStorage.removeItem("lp"); } }; - // Simple translation cache - const translationCache = new Map(); - // Dynamically loaded translations - let loadedTranslations = {}; + window.loadedTranslations = {}; // Available languages const AVAILABLE_LANGUAGES = [ @@ -425,8 +466,8 @@ localStorage.removeItem("lp"); // Function to load translations from JSON file with retry mechanism const loadTranslations = async (language, retryCount = 0) => { - if (loadedTranslations[language]) { - return loadedTranslations[language]; + if (window.loadedTranslations[language]) { + return window.loadedTranslations[language]; } console.group(`%c๐ŸŒ Loading ${language.toUpperCase()} translations`, 'color: #06b6d4; font-weight: bold;'); @@ -445,7 +486,7 @@ localStorage.removeItem("lp"); translations !== null && Object.keys(translations).length > 0 ) { - loadedTranslations[language] = translations; + window.loadedTranslations[language] = translations; console.log(`%cโœ… Loaded ${language} translations from EXTENSION LOCAL FILES`, 'color: #10b981; font-weight: bold;'); console.log(` ๐Ÿ“ Source: Extension local storage (chrome-extension://)`); console.log(` ๐Ÿ“ Keys count: ${Object.keys(translations).length}`); @@ -472,7 +513,7 @@ localStorage.removeItem("lp"); translations !== null && Object.keys(translations).length > 0 ) { - loadedTranslations[language] = translations; + window.loadedTranslations[language] = translations; console.log(`%cโœ… Loaded ${language} translations via extension helper`, 'color: #10b981; font-weight: bold;'); console.log(` ๐Ÿ“ Source: Extension getLanguage() function`); console.log(` ๐Ÿ“ Keys count: ${Object.keys(translations).length}`); @@ -509,7 +550,7 @@ localStorage.removeItem("lp"); translations !== null && Object.keys(translations).length > 0 ) { - loadedTranslations[language] = translations; + window.loadedTranslations[language] = translations; console.log( `%c๐Ÿ“š Loaded ${language} translations from CDN (${Object.keys(translations).length} keys)`, 'color: #f59e0b; font-weight: bold;' ); @@ -583,7 +624,7 @@ localStorage.removeItem("lp"); state.language = selectedLanguage; // Only load translations if not already loaded and not English (which should already be loaded) - if (selectedLanguage !== 'en' && !loadedTranslations[selectedLanguage]) { + if (selectedLanguage !== 'en' && !window.loadedTranslations[selectedLanguage]) { const loaded = await loadTranslations(selectedLanguage); if (!loaded) { console.warn( @@ -632,7 +673,7 @@ localStorage.removeItem("lp"); console.log('๐ŸŒ Initializing translation system...'); // Always ensure English is loaded as fallback first - if (!loadedTranslations['en']) { + if (!window.loadedTranslations['en']) { const englishLoaded = await loadTranslations('en'); if (!englishLoaded) { console.warn('โš ๏ธ Failed to load English translations from CDN, using fallback'); @@ -689,11 +730,11 @@ localStorage.removeItem("lp"); // Safe translation function with multiple fallback levels const getText = (key, replacements = {}) => { // Try current language first - let text = loadedTranslations[state.language]?.[key]; + let text = window.loadedTranslations[state.language]?.[key]; // Fallback to English translations if (!text && state.language !== 'en') { - text = loadedTranslations['en']?.[key]; + text = window.loadedTranslations['en']?.[key]; } // Fallback to hardcoded English @@ -781,607 +822,68 @@ localStorage.removeItem("lp"); accountIndex: -1, }; + // Expose state globally for the utils manager and other modules + window.state = state; + let _updateResizePreview = () => { }; let _resizeDialogCleanup = null; // --- OVERLAY UPDATE: Optimized OverlayManager class with performance improvements --- - class OverlayManager { - constructor() { - this.isEnabled = false; - this.startCoords = null; // { region: {x, y}, pixel: {x, y} } - this.imageBitmap = null; - this.chunkedTiles = new Map(); // Map<"tileX,tileY", ImageBitmap> - this.originalTiles = new Map(); // Map<"tileX,tileY", ImageBitmap> store latest original tile bitmaps - this.originalTilesData = new Map(); // Map<"tileX,tileY", {w,h,data:Uint8ClampedArray}> cache full ImageData for fast pixel reads - this.tileSize = 1000; - this.processPromise = null; // Track ongoing processing - this.lastProcessedHash = null; // Cache invalidation - this.workerPool = null; // Web worker pool for heavy processing - } + // OverlayManager class extracted to overlay-manager.js module - toggle() { - this.isEnabled = !this.isEnabled; - console.log(`Overlay ${this.isEnabled ? 'enabled' : 'disabled'}.`); - return this.isEnabled; - } - - enable() { - this.isEnabled = true; - } - - disable() { - this.isEnabled = false; - } - - clear() { - this.disable(); - this.imageBitmap = null; - this.chunkedTiles.clear(); - this.originalTiles.clear(); - this.originalTilesData.clear(); - this.lastProcessedHash = null; - if (this.processPromise) { - this.processPromise = null; - } - } - - async setImage(imageBitmap) { - this.imageBitmap = imageBitmap; - this.lastProcessedHash = null; // Invalidate cache - if (this.imageBitmap && this.startCoords) { - await this.processImageIntoChunks(); - } - } - - async setPosition(startPosition, region) { - if (!startPosition || !region) { - this.startCoords = null; - this.chunkedTiles.clear(); - this.lastProcessedHash = null; - return; - } - this.startCoords = { region, pixel: startPosition }; - this.lastProcessedHash = null; // Invalidate cache - if (this.imageBitmap) { - await this.processImageIntoChunks(); - } - } - - // Generate hash for cache invalidation - _generateProcessHash() { - if (!this.imageBitmap || !this.startCoords) return null; - const { width, height } = this.imageBitmap; - const { x: px, y: py } = this.startCoords.pixel; - const { x: rx, y: ry } = this.startCoords.region; - return `${width}x${height}_${px},${py}_${rx},${ry}_${state.blueMarbleEnabled}_${state.overlayOpacity}`; - } - - // --- OVERLAY UPDATE: Optimized chunking with caching and batch processing --- - async processImageIntoChunks() { - if (!this.imageBitmap || !this.startCoords) return; - - // Check if we're already processing to avoid duplicate work - if (this.processPromise) { - return this.processPromise; - } - - // Check cache validity - const currentHash = this._generateProcessHash(); - if (this.lastProcessedHash === currentHash && this.chunkedTiles.size > 0) { - console.log(`๐Ÿ“ฆ Using cached overlay chunks (${this.chunkedTiles.size} tiles)`); - return; - } - - // Start processing - this.processPromise = this._doProcessImageIntoChunks(); - try { - await this.processPromise; - this.lastProcessedHash = currentHash; - } finally { - this.processPromise = null; - } - } - - async _doProcessImageIntoChunks() { - const startTime = performance.now(); - this.chunkedTiles.clear(); - - const { width: imageWidth, height: imageHeight } = this.imageBitmap; - const { x: startPixelX, y: startPixelY } = this.startCoords.pixel; - const { x: startRegionX, y: startRegionY } = this.startCoords.region; - - const { startTileX, startTileY, endTileX, endTileY } = Utils.calculateTileRange( - startRegionX, - startRegionY, - startPixelX, - startPixelY, - imageWidth, - imageHeight, - this.tileSize - ); - - const totalTiles = (endTileX - startTileX + 1) * (endTileY - startTileY + 1); - console.log(`๐Ÿ”„ Processing ${totalTiles} overlay tiles...`); - - // Process tiles in batches to avoid blocking the main thread - const batchSize = 4; // Process 4 tiles at a time - const tilesToProcess = []; - - for (let ty = startTileY; ty <= endTileY; ty++) { - for (let tx = startTileX; tx <= endTileX; tx++) { - tilesToProcess.push({ tx, ty }); - } - } - - // Process tiles in batches with yielding - for (let i = 0; i < tilesToProcess.length; i += batchSize) { - const batch = tilesToProcess.slice(i, i + batchSize); - - await Promise.all( - batch.map(async ({ tx, ty }) => { - const tileKey = `${tx},${ty}`; - const chunkBitmap = await this._processTile( - tx, - ty, - imageWidth, - imageHeight, - startPixelX, - startPixelY, - startRegionX, - startRegionY - ); - if (chunkBitmap) { - this.chunkedTiles.set(tileKey, chunkBitmap); - } - }) - ); - - // Yield control to prevent blocking - if (i + batchSize < tilesToProcess.length) { - await new Promise((resolve) => setTimeout(resolve, 0)); - } - } - - const processingTime = performance.now() - startTime; - console.log( - `โœ… Overlay processed ${this.chunkedTiles.size} tiles in ${Math.round(processingTime)}ms` - ); - } - - async _processTile( - tx, - ty, - imageWidth, - imageHeight, - startPixelX, - startPixelY, - startRegionX, - startRegionY - ) { - const tileKey = `${tx},${ty}`; - - // Calculate the portion of the image that overlaps with this tile - const imgStartX = (tx - startRegionX) * this.tileSize - startPixelX; - const imgStartY = (ty - startRegionY) * this.tileSize - startPixelY; - - // Crop coordinates within the source image - const sX = Math.max(0, imgStartX); - const sY = Math.max(0, imgStartY); - const sW = Math.min(imageWidth - sX, this.tileSize - (sX - imgStartX)); - const sH = Math.min(imageHeight - sY, this.tileSize - (sY - imgStartY)); - - if (sW <= 0 || sH <= 0) return null; - - // Destination coordinates on the new chunk canvas - const dX = Math.max(0, -imgStartX); - const dY = Math.max(0, -imgStartY); - - const chunkCanvas = new OffscreenCanvas(this.tileSize, this.tileSize); - const chunkCtx = chunkCanvas.getContext('2d'); - chunkCtx.imageSmoothingEnabled = false; - - chunkCtx.drawImage(this.imageBitmap, sX, sY, sW, sH, dX, dY, sW, sH); - - // --- OPTIMIZED: Blue marble effect with faster pixel manipulation --- - if (state.blueMarbleEnabled) { - const imageData = chunkCtx.getImageData(dX, dY, sW, sH); - const data = imageData.data; - - // Faster pixel manipulation using typed arrays - for (let i = 0; i < data.length; i += 4) { - const pixelIndex = i / 4; - const pixelY = Math.floor(pixelIndex / sW); - const pixelX = pixelIndex % sW; - - if ((pixelX + pixelY) % 2 === 0 && data[i + 3] > 0) { - data[i + 3] = 0; // Set alpha to 0 - } - } - - chunkCtx.putImageData(imageData, dX, dY); - } - - return await chunkCanvas.transferToImageBitmap(); - } - - // --- OVERLAY UPDATE: Optimized compositing with caching --- - async processAndRespondToTileRequest(eventData) { - const { endpoint, blobID, blobData } = eventData; - - let finalBlob = blobData; - - if (this.isEnabled && this.chunkedTiles.size > 0) { - const tileMatch = endpoint.match(/(\d+)\/(\d+)\.png/); - if (tileMatch) { - const tileX = parseInt(tileMatch[1], 10); - const tileY = parseInt(tileMatch[2], 10); - const tileKey = `${tileX},${tileY}`; - - const chunkBitmap = this.chunkedTiles.get(tileKey); - // Also store the original tile bitmap for later pixel color checks - try { - const originalBitmap = await createImageBitmap(blobData); - this.originalTiles.set(tileKey, originalBitmap); - // Cache full ImageData for fast pixel access (avoid repeated drawImage/getImageData) - try { - let canvas, ctx; - if (typeof OffscreenCanvas !== 'undefined') { - canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); - ctx = canvas.getContext('2d'); - } else { - canvas = document.createElement('canvas'); - canvas.width = originalBitmap.width; - canvas.height = originalBitmap.height; - ctx = canvas.getContext('2d'); - } - ctx.imageSmoothingEnabled = false; - ctx.drawImage(originalBitmap, 0, 0); - const imgData = ctx.getImageData(0, 0, originalBitmap.width, originalBitmap.height); - // Store typed array copy to avoid retaining large canvas - this.originalTilesData.set(tileKey, { - w: originalBitmap.width, - h: originalBitmap.height, - data: new Uint8ClampedArray(imgData.data), - }); - } catch (e) { - // If ImageData extraction fails, still keep the bitmap as fallback - console.warn('OverlayManager: could not cache ImageData for', tileKey, e); - } - } catch (e) { - console.warn('OverlayManager: could not create original bitmap for', tileKey, e); - } - if (chunkBitmap) { - try { - // Use faster compositing for better performance - finalBlob = await this._compositeTileOptimized(blobData, chunkBitmap); - } catch (e) { - console.error('Error compositing overlay:', e); - // Fallback to original tile on error - finalBlob = blobData; - } - } - } - } - - // Send the (possibly modified) blob back to the injected script - window.postMessage( - { - source: 'auto-image-overlay', - blobID: blobID, - blobData: finalBlob, - }, - '*' - ); - } - - // Returns [r,g,b,a] for a pixel inside a region tile (tileX, tileY are region coords) - async getTilePixelColor(tileX, tileY, pixelX, pixelY) { - const tileKey = `${tileX},${tileY}`; - const alphaThresh = state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; - - // 1. Prefer cached ImageData if available - const cached = this.originalTilesData.get(tileKey); - if (cached && cached.data && cached.w > 0 && cached.h > 0) { - const x = Math.max(0, Math.min(cached.w - 1, pixelX)); - const y = Math.max(0, Math.min(cached.h - 1, pixelY)); - const idx = (y * cached.w + x) * 4; - const d = cached.data; - const a = d[idx + 3]; - - if (!state.paintTransparentPixels && a < alphaThresh) { - // Treat as transparent / unavailable - // Lightweight debug: show when transparency causes skip (only if verbose enabled) - if (window._overlayDebug) - console.debug('OverlayManager: pixel transparent (cached), skipping', tileKey, x, y, a); - return null; - } - return [d[idx], d[idx + 1], d[idx + 2], a]; - } - - // 2. Fallback: use bitmap, with retry - const maxRetries = 3; - for (let attempt = 1; attempt <= maxRetries; attempt++) { - const bitmap = this.originalTiles.get(tileKey); - if (!bitmap) { - if (attempt === maxRetries) { - console.warn('OverlayManager: no bitmap for', tileKey, 'after', maxRetries, 'attempts'); - } else { - await Utils.sleep(50 * attempt); // exponential delay - } - continue; - } - - try { - let canvas, ctx; - if (typeof OffscreenCanvas !== 'undefined') { - canvas = new OffscreenCanvas(bitmap.width, bitmap.height); - ctx = canvas.getContext('2d'); - } else { - canvas = document.createElement('canvas'); - canvas.width = bitmap.width; - canvas.height = bitmap.height; - ctx = canvas.getContext('2d'); - } - ctx.imageSmoothingEnabled = false; - ctx.drawImage(bitmap, 0, 0); - - const x = Math.max(0, Math.min(bitmap.width - 1, pixelX)); - const y = Math.max(0, Math.min(bitmap.height - 1, pixelY)); - const data = ctx.getImageData(x, y, 1, 1).data; - const a = data[3]; - - if (!state.paintTransparentPixels && a < alphaThresh) { - if (window._overlayDebug) - console.debug('OverlayManager: pixel transparent (fallback)', tileKey, x, y, a); - return null; - } - - return [data[0], data[1], data[2], a]; - } catch (e) { - console.warn('OverlayManager: failed to read pixel (attempt', attempt, ')', tileKey, e); - if (attempt < maxRetries) { - await Utils.sleep(50 * attempt); - } else { - console.error( - 'OverlayManager: failed to read pixel after', - maxRetries, - 'attempts', - tileKey - ); - } - } - } - - // 3. If everything fails โ€” you can return null or [0,0,0,0] - // Prefer null โ€” to avoid misleading - return null; - } - - async _compositeTileOptimized(originalBlob, overlayBitmap) { - const originalBitmap = await createImageBitmap(originalBlob); - const canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); - const ctx = canvas.getContext('2d'); - - // Disable antialiasing for pixel-perfect rendering - ctx.imageSmoothingEnabled = false; - - // Draw original tile first - ctx.drawImage(originalBitmap, 0, 0); - - // Set opacity and draw overlay with optimized blend mode - ctx.globalAlpha = state.overlayOpacity; - ctx.globalCompositeOperation = 'source-over'; - ctx.drawImage(overlayBitmap, 0, 0); - - // Use faster blob conversion with compression settings - return await canvas.convertToBlob({ - type: 'image/png', - quality: 0.95, // Slight compression for faster processing - }); - } - - /** - * Wait until all required tiles are loaded and cached - * @param {number} startRegionX - * @param {number} startRegionY - * @param {number} pixelWidth - * @param {number} pixelHeight - * @param {number} startPixelX - * @param {number} startPixelY - * @param {number} timeoutMs - * @returns {Promise} true if tiles are ready - */ - async waitForTiles( - startRegionX, - startRegionY, - pixelWidth, - pixelHeight, - startPixelX = 0, - startPixelY = 0, - timeoutMs = 10000 - ) { - const { startTileX, startTileY, endTileX, endTileY } = Utils.calculateTileRange( - startRegionX, - startRegionY, - startPixelX, - startPixelY, - pixelWidth, - pixelHeight, - this.tileSize - ); - - const requiredTiles = []; - for (let ty = startTileY; ty <= endTileY; ty++) { - for (let tx = startTileX; tx <= endTileX; tx++) { - requiredTiles.push(`${tx},${ty}`); - } - } - - if (requiredTiles.length === 0) return true; - - const startTime = Date.now(); - - while (Date.now() - startTime < timeoutMs) { - if (state.stopFlag) { - console.log('waitForTiles: stopped by user'); - return false; - } - - const missing = requiredTiles.filter((key) => !this.originalTiles.has(key)); - if (missing.length === 0) { - console.log(`โœ… All ${requiredTiles.length} required tiles are loaded`); - return true; - } - - await Utils.sleep(100); - } - - console.warn(`โŒ Timeout waiting for tiles: ${requiredTiles.length} required, - ${requiredTiles.filter((k) => this.originalTiles.has(k)).length} loaded`); - return false; - } + // Overlay management is now handled by the OverlayManager module + // Check for overlay manager availability + if (!window.WPlaceOverlayManager) { + console.error('โŒ WPlaceOverlayManager not available - please ensure overlay-manager.js is loaded first'); + throw new Error('OverlayManager dependency not found'); + } + + // Ensure we only have ONE overlay manager instance globally + let overlayManager; + if (!window.autoImageOverlayManager) { + overlayManager = new window.WPlaceOverlayManager(); + window.autoImageOverlayManager = overlayManager; + console.log('๐ŸŽฏ Created NEW overlay manager instance'); + } else { + overlayManager = window.autoImageOverlayManager; + console.log('๐ŸŽฏ Using EXISTING overlay manager instance'); } - const overlayManager = new OverlayManager(); + // Token management is now handled by the TokenManager module + // Global references for backward compatibility + if (!window.WPlaceTokenManager) { + console.error('โŒ WPlaceTokenManager not available - please ensure token-manager.js is loaded first'); + throw new Error('TokenManager dependency not found'); + } + + const tokenManager = window.WPlaceTokenManager; + const setTurnstileToken = (token) => tokenManager.setTurnstileToken(token); + const isTokenValid = () => tokenManager.isTokenValid(); + const invalidateToken = () => tokenManager.invalidateToken(); + const ensureToken = (forceRefresh = false) => tokenManager.ensureToken(forceRefresh); + + // Getter for the current token value + const getTurnstileToken = () => tokenManager.turnstileToken; + + // Token promise management + const createTokenPromise = () => { + tokenManager.tokenPromise = new Promise((resolve) => { + tokenManager._resolveToken = resolve; + }); + }; - // Optimized Turnstile token handling with improved caching and retry logic - let turnstileToken = null; - let tokenExpiryTime = 0; - let tokenGenerationInProgress = false; - let _resolveToken = null; - let tokenPromise = new Promise((resolve) => { - _resolveToken = resolve; - }); + // Create global image processor instance for utility functions + if (!window.WPlaceImageProcessor) { + console.error('โŒ WPlaceImageProcessor not available - please ensure image-processor.js is loaded first'); + throw new Error('ImageProcessor dependency not found'); + } + + const globalImageProcessor = new window.WPlaceImageProcessor(); + + // Keep these constants for compatibility with other parts of the script let retryCount = 0; const MAX_RETRIES = 10; const MAX_BATCH_RETRIES = 10; // Maximum attempts for batch sending - const TOKEN_LIFETIME = 240000; // 4 minutes (tokens typically last 5 min, use 4 for safety) - - function setTurnstileToken(token) { - if (_resolveToken) { - _resolveToken(token); - _resolveToken = null; - } - turnstileToken = token; - tokenExpiryTime = Date.now() + TOKEN_LIFETIME; - console.log('โœ… Turnstile token set successfully'); - } - - function isTokenValid() { - return turnstileToken && Date.now() < tokenExpiryTime; - } - - function invalidateToken() { - turnstileToken = null; - tokenExpiryTime = 0; - console.log('๐Ÿ—‘๏ธ Token invalidated, will force fresh generation'); - } - - async function ensureToken(forceRefresh = false) { - // Return cached token if still valid and not forcing refresh - if (isTokenValid() && !forceRefresh) { - return turnstileToken; - } - - // Invalidate token if forcing refresh - if (forceRefresh) invalidateToken(); - - // Avoid multiple simultaneous token generations - if (tokenGenerationInProgress) { - console.log('๐Ÿ”„ Token generation already in progress, waiting...'); - await Utils.sleep(2000); - return isTokenValid() ? turnstileToken : null; - } - - tokenGenerationInProgress = true; - - try { - console.log('๐Ÿ”„ Token expired or missing, generating new one...'); - const token = await handleCaptchaWithRetry(); - if (token && token.length > 20) { - setTurnstileToken(token); - console.log('โœ… Token captured and cached successfully'); - return token; - } - - console.log('โš ๏ธ Invisible Turnstile failed, forcing browser automation...'); - const fallbackToken = await handleCaptchaFallback(); - if (fallbackToken && fallbackToken.length > 20) { - setTurnstileToken(fallbackToken); - console.log('โœ… Fallback token captured successfully'); - return fallbackToken; - } - - console.log('โŒ All token generation methods failed'); - return null; - } finally { - tokenGenerationInProgress = false; - } - } - - async function handleCaptchaWithRetry() { - const startTime = performance.now(); - - try { - const { sitekey, token: preGeneratedToken } = await Utils.obtainSitekeyAndToken(); - - if (!sitekey) { - throw new Error('No valid sitekey found'); - } - - console.log('๐Ÿ”‘ Using sitekey:', sitekey); - - if (typeof window !== 'undefined' && window.navigator) { - console.log( - '๐Ÿงญ UA:', - window.navigator.userAgent.substring(0, 50) + '...', - 'Platform:', - window.navigator.platform - ); - } - - let token = null; - - if ( - preGeneratedToken && - typeof preGeneratedToken === 'string' && - preGeneratedToken.length > 20 - ) { - console.log('โ™ป๏ธ Reusing pre-generated Turnstile token'); - token = preGeneratedToken; - } else { - if (isTokenValid()) { - console.log('โ™ป๏ธ Using existing cached token (from previous session)'); - token = turnstileToken; - } else { - console.log('๐Ÿ” Generating new token with executeTurnstile...'); - token = await Utils.executeTurnstile(sitekey, 'paint'); - if (token) setTurnstileToken(token); - } - } - - if (token && typeof token === 'string' && token.length > 20) { - const elapsed = Math.round(performance.now() - startTime); - console.log(`โœ… Turnstile token generated successfully in ${elapsed}ms`); - return token; - } else { - throw new Error(`Invalid or empty token received - Length: ${token?.length || 0}`); - } - } catch (error) { - const elapsed = Math.round(performance.now() - startTime); - console.error(`โŒ Turnstile token generation failed after ${elapsed}ms:`, error); - throw error; - } - } - const randStr = (len, chars = 'abcdefghijklmnopqrstuvwxyz0123456789') => - [...Array(len)].map(() => chars[(crypto?.getRandomValues?.(new Uint32Array(1))[0] % chars.length) || Math.floor(Math.random() * chars.length)]).join('') - const fpStr32 = randStr(32); - async function handleCaptchaFallback() { - // Implementation for fallback token generation would go here - // This is a placeholder for browser automation fallback - console.log('๐Ÿ”„ Attempting fallback token generation...'); - return null; - } function inject(callback) { const script = document.createElement('script'); @@ -1405,16 +907,22 @@ localStorage.removeItem("lp"); }); const originalFetch = window.fetch; + // Setup fetch interception + window.fetch = async function (...args) { const response = await originalFetch.apply(this, args); const url = args[0] instanceof Request ? args[0].url : args[0]; + // Debug: Log ALL tile requests to see if fetch interception is working + if (typeof url === 'string' && url.includes('.png') && url.match(/\/\d+\/\d+\.png/)) { + console.log(`๐Ÿ” TILE REQUEST: ${url} at ${Date.now()}`); + } + if (typeof url === 'string') { if (url.includes('https://backend.wplace.live/s0/pixel/')) { try { const payload = JSON.parse(args[1].body); if (payload.t) { - // ๐Ÿ“Š Debug log console.log( `๐Ÿ”โœ… Turnstile Token Captured - Type: ${typeof payload.t}, Value: ${payload.t ? typeof payload.t === 'string' @@ -1467,19 +975,14 @@ localStorage.removeItem("lp"); }); window.addEventListener('message', (event) => { - const { source, endpoint, blobID, blobData, token } = event.data; + const { source, endpoint, blobID, blobData } = event.data; if (source === 'auto-image-tile' && endpoint && blobID && blobData) { overlayManager.processAndRespondToTileRequest(event.data); } - if (source === 'turnstile-capture' && token) { - setTurnstileToken(token); - if (document.querySelector('#statusText')?.textContent.includes('CAPTCHA')) { - Utils.showAlert(Utils.t('tokenCapturedSuccess'), 'success'); - updateUI('colorsFound', 'success', { count: state.availableColors.length }); - } - } + // Token capture is now handled by TokenManager module + // No need to handle 'turnstile-capture' events here }); async function detectLanguage() { @@ -1494,851 +997,86 @@ localStorage.removeItem("lp"); } } - // UTILITY FUNCTIONS + // UTILITY FUNCTIONS WRAPPER - Uses WPlaceUtilsManager for modular functionality const Utils = { - sleep: (ms) => new Promise((r) => setTimeout(r, ms)), - - dynamicSleep: async function (tickAndGetRemainingMs) { - let remaining = Math.max(0, await tickAndGetRemainingMs()); - while (remaining > 0) { - const interval = remaining > 5000 ? 2000 : remaining > 1000 ? 500 : 100; - await this.sleep(Math.min(interval, remaining)); - remaining = Math.max(0, await tickAndGetRemainingMs()); + // Basic utilities + sleep: (ms) => window.globalUtilsManager ? window.globalUtilsManager.sleep(ms) : new Promise(r => setTimeout(r, ms)), + dynamicSleep: (tickAndGetRemainingMs) => window.globalUtilsManager ? window.globalUtilsManager.dynamicSleep(tickAndGetRemainingMs) : Promise.resolve(), + waitForSelector: (selector, interval, timeout) => window.globalUtilsManager ? window.globalUtilsManager.waitForSelector(selector, interval, timeout) : Promise.resolve(null), + msToTimeText: (ms) => window.globalUtilsManager ? window.globalUtilsManager.msToTimeText(ms) : `${Math.ceil(ms/1000)}s`, + createScrollToAdjust: (element, updateCallback, min, max, step) => window.globalUtilsManager ? window.globalUtilsManager.createScrollToAdjust(element, updateCallback, min, max, step) : () => {}, + + // Tile calculation + calculateTileRange: (startRegionX, startRegionY, startPixelX, startPixelY, width, height, tileSize) => + window.globalUtilsManager ? window.globalUtilsManager.calculateTileRange(startRegionX, startRegionY, startPixelX, startPixelY, width, height, tileSize) : {}, + + // Token management + loadTurnstile: () => window.globalUtilsManager ? window.globalUtilsManager.loadTurnstile() : Promise.resolve(), + ensureTurnstileContainer: () => window.globalUtilsManager ? window.globalUtilsManager.ensureTurnstileContainer() : Promise.resolve(), + ensureTurnstileOverlayContainer: () => window.globalUtilsManager ? window.globalUtilsManager.ensureTurnstileOverlayContainer() : Promise.resolve(), + executeTurnstile: (sitekey, action) => window.globalUtilsManager ? window.globalUtilsManager.executeTurnstile(sitekey, action) : Promise.resolve(null), + createTurnstileWidget: (sitekey, action) => window.globalUtilsManager ? window.globalUtilsManager.createTurnstileWidget(sitekey, action) : Promise.resolve(), + createTurnstileWidgetInteractive: (sitekey, action) => window.globalUtilsManager ? window.globalUtilsManager.createTurnstileWidgetInteractive(sitekey, action) : Promise.resolve(), + cleanupTurnstile: () => window.globalUtilsManager ? window.globalUtilsManager.cleanupTurnstile() : Promise.resolve(), + obtainSitekeyAndToken: (fallback) => window.globalUtilsManager ? window.globalUtilsManager.obtainSitekeyAndToken(fallback) : Promise.resolve(fallback), + + // DOM utilities + createElement: (tag, props, children) => window.globalUtilsManager ? window.globalUtilsManager.createElement(tag, props, children) : document.createElement(tag), + createButton: (id, text, icon, onClick, style) => { + if (window.globalUtilsManager) { + return window.globalUtilsManager.createButton(id, text, icon, onClick, style); } + const btn = document.createElement('button'); + btn.id = id; + btn.innerHTML = `${icon ? `` : ''}${text}`; + if (onClick) btn.addEventListener('click', onClick); + return btn; }, - - waitForSelector: async (selector, interval = 200, timeout = 5000) => { - const start = Date.now(); - while (Date.now() - start < timeout) { - const el = document.querySelector(selector); - if (el) return el; - await Utils.sleep(interval); + + // Translation with fallback + t: (key, params) => { + if (window.globalUtilsManager) { + return window.globalUtilsManager.t(key, params); } - return null; + return getText(key, params); }, - - msToTimeText(ms) { - const totalSeconds = Math.ceil(ms / 1000); - const hours = Math.floor(totalSeconds / 3600); - const minutes = Math.floor((totalSeconds % 3600) / 60); - const seconds = totalSeconds % 60; - - if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`; - if (minutes > 0) return `${minutes}m ${seconds}s`; - return `${seconds}s`; - }, - - // Debounced scroll-to-adjust handler for sliders - createScrollToAdjust: (element, updateCallback, min, max, step = 1) => { - let debounceTimer = null; - - const handleWheel = (e) => { - // Only trigger when hovering over the slider - if (e.target !== element) return; - - e.preventDefault(); - e.stopPropagation(); - - // Clear existing debounce timer - if (debounceTimer) { - clearTimeout(debounceTimer); - } - - // Debounce the adjustment to make it precise - debounceTimer = setTimeout(() => { - const currentValue = parseInt(element.value) || 0; - const delta = e.deltaY > 0 ? -step : step; - const newValue = Math.max(min, Math.min(max, currentValue + delta)); - - if (newValue !== currentValue) { - element.value = newValue; - updateCallback(newValue); - } - }, 50); // 50ms debounce for precise control - }; - - element.addEventListener('wheel', handleWheel, { passive: false }); - - // Return cleanup function - return () => { - if (debounceTimer) clearTimeout(debounceTimer); - element.removeEventListener('wheel', handleWheel); - }; - }, - - /** - * Calculate the range of tile coordinates (in region space) that cover a given image area. - * @param {number} startRegionX - Base region X - * @param {number} startRegionY - Base region Y - * @param {number} startPixelX - Starting pixel X within the region grid - * @param {number} startPixelY - Starting pixel Y within the region grid - * @param {number} width - Image width in pixels - * @param {number} height - Image height in pixels - * @param {number} tileSize - Size of a tile (default 1000) - * @returns {{ startTileX: number, startTileY: number, endTileX: number, endTileY: number }} - */ - calculateTileRange( - startRegionX, - startRegionY, - startPixelX, - startPixelY, - width, - height, - tileSize = 1000 - ) { - const endPixelX = startPixelX + width; - const endPixelY = startPixelY + height; - - return { - startTileX: startRegionX + Math.floor(startPixelX / tileSize), - startTileY: startRegionY + Math.floor(startPixelY / tileSize), - endTileX: startRegionX + Math.floor((endPixelX - 1) / tileSize), - endTileY: startRegionY + Math.floor((endPixelY - 1) / tileSize), - }; - }, // Turnstile Generator Integration - Optimized with widget reuse and proper cleanup - turnstileLoaded: false, - _turnstileContainer: null, - _turnstileOverlay: null, - _turnstileWidgetId: null, - _lastSitekey: null, - - async loadTurnstile() { - // If Turnstile is already present, just resolve. - if (window.turnstile) { - this.turnstileLoaded = true; - return Promise.resolve(); - } - - return new Promise((resolve, reject) => { - // Avoid adding the script twice - if ( - document.querySelector( - 'script[src^="https://challenges.cloudflare.com/turnstile/v0/api.js"]' - ) - ) { - const checkReady = () => { - if (window.turnstile) { - this.turnstileLoaded = true; - resolve(); - } else { - setTimeout(checkReady, 100); - } - }; - return checkReady(); - } - - const script = document.createElement('script'); - script.src = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'; - script.async = true; - script.defer = true; - script.onload = () => { - this.turnstileLoaded = true; - console.log('โœ… Turnstile script loaded successfully'); - resolve(); - }; - script.onerror = () => { - console.error('โŒ Failed to load Turnstile script'); - reject(new Error('Failed to load Turnstile')); - }; - document.head.appendChild(script); - }); - }, - - // Create or reuse the turnstile container - completely hidden for token generation - ensureTurnstileContainer() { - if (!this._turnstileContainer || !document.body.contains(this._turnstileContainer)) { - // Clean up old container if it exists - if (this._turnstileContainer) { - this._turnstileContainer.remove(); - } - - this._turnstileContainer = document.createElement('div'); - this._turnstileContainer.className = 'wplace-turnstile-hidden'; - this._turnstileContainer.setAttribute('aria-hidden', 'true'); - this._turnstileContainer.id = 'turnstile-widget-container'; - document.body.appendChild(this._turnstileContainer); - } - return this._turnstileContainer; - }, - - // Interactive overlay container for visible widgets when needed - ensureTurnstileOverlayContainer() { - if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { - return this._turnstileOverlay; - } - - const overlay = document.createElement('div'); - overlay.id = 'turnstile-overlay-container'; - overlay.className = 'wplace-turnstile-overlay wplace-overlay-hidden'; - - const title = document.createElement('div'); - title.textContent = Utils.t('turnstileInstructions'); - title.className = 'wplace-turnstile-title'; - - const host = document.createElement('div'); - host.id = 'turnstile-overlay-host'; - host.className = 'wplace-turnstile-host'; - - const hideBtn = document.createElement('button'); - hideBtn.textContent = Utils.t('hideTurnstileBtn'); - hideBtn.className = 'wplace-turnstile-hide-btn'; - hideBtn.addEventListener('click', () => overlay.remove()); - - overlay.appendChild(title); - overlay.appendChild(host); - overlay.appendChild(hideBtn); - document.body.appendChild(overlay); - - this._turnstileOverlay = overlay; - return overlay; - }, - - async executeTurnstile(sitekey, action = 'paint') { - await this.loadTurnstile(); - - // Try reusing existing widget first if sitekey matches - if (this._turnstileWidgetId && this._lastSitekey === sitekey && window.turnstile?.execute) { - try { - console.log('๐Ÿ”„ Reusing existing Turnstile widget...'); - const token = await Promise.race([ - window.turnstile.execute(this._turnstileWidgetId, { action }), - new Promise((_, reject) => - setTimeout(() => reject(new Error('Execute timeout')), 15000) - ), - ]); - if (token && token.length > 20) { - console.log('โœ… Token generated via widget reuse'); - return token; - } - } catch (error) { - console.log('๏ฟฝ Widget reuse failed, will create a fresh widget:', error.message); - } - } - - // Try invisible widget first - const invisibleToken = await this.createTurnstileWidget(sitekey, action); - if (invisibleToken && invisibleToken.length > 20) { - return invisibleToken; - } - - console.log('๏ฟฝ Falling back to interactive Turnstile (visible).'); - return await this.createTurnstileWidgetInteractive(sitekey, action); - }, - - async createTurnstileWidget(sitekey, action) { - return new Promise((resolve) => { - try { - // Force cleanup of any existing widget - if (this._turnstileWidgetId && window.turnstile?.remove) { - try { - window.turnstile.remove(this._turnstileWidgetId); - console.log('๐Ÿงน Cleaned up existing Turnstile widget'); - } catch (e) { - console.warn('โš ๏ธ Widget cleanup warning:', e.message); - } - } - - const container = this.ensureTurnstileContainer(); - container.innerHTML = ''; - - // Verify Turnstile is available - if (!window.turnstile?.render) { - console.error('โŒ Turnstile not available for rendering'); - resolve(null); - return; - } - - console.log('๐Ÿ”ง Creating invisible Turnstile widget...'); - const widgetId = window.turnstile.render(container, { - sitekey, - action, - size: 'invisible', - retry: 'auto', - 'retry-interval': 8000, - callback: (token) => { - console.log('โœ… Invisible Turnstile callback'); - resolve(token); - }, - 'error-callback': () => resolve(null), - 'timeout-callback': () => resolve(null), - }); - - this._turnstileWidgetId = widgetId; - this._lastSitekey = sitekey; - - if (!widgetId) { - return resolve(null); - } - - // Execute the widget and race with timeout - Promise.race([ - window.turnstile.execute(widgetId, { action }), - new Promise((_, reject) => - setTimeout(() => reject(new Error('Invisible execute timeout')), 12000) - ), - ]) - .then(resolve) - .catch(() => resolve(null)); - } catch (e) { - console.error('โŒ Invisible Turnstile creation failed:', e); - resolve(null); - } - }); - }, - - async createTurnstileWidgetInteractive(sitekey, action) { - // Create a visible widget that users can interact with if needed - console.log('๐Ÿ”„ Creating interactive Turnstile widget (visible)'); - - return new Promise((resolve) => { - try { - // Force cleanup of any existing widget - if (this._turnstileWidgetId && window.turnstile?.remove) { - try { - window.turnstile.remove(this._turnstileWidgetId); - } catch (e) { - console.warn('โš ๏ธ Widget cleanup warning:', e.message); - } - } - - const overlay = this.ensureTurnstileOverlayContainer(); - overlay.classList.remove('wplace-overlay-hidden'); - overlay.style.display = 'block'; - - const host = overlay.querySelector('#turnstile-overlay-host'); - host.innerHTML = ''; - - // Set a timeout for interactive mode - const timeout = setTimeout(() => { - console.warn('โฐ Interactive Turnstile widget timeout'); - overlay.classList.add('wplace-overlay-hidden'); - overlay.style.display = 'none'; - resolve(null); - }, 60000); // 60 seconds for user interaction - - const widgetId = window.turnstile.render(host, { - sitekey, - action, - size: 'normal', - theme: 'light', - callback: (token) => { - clearTimeout(timeout); - overlay.classList.add('wplace-overlay-hidden'); - overlay.style.display = 'none'; - console.log('โœ… Interactive Turnstile completed successfully'); - - if (typeof token === 'string' && token.length > 20) { - resolve(token); - } else { - console.warn('โŒ Invalid token from interactive widget'); - resolve(null); - } - }, - 'error-callback': (error) => { - clearTimeout(timeout); - overlay.classList.add('wplace-overlay-hidden'); - overlay.style.display = 'none'; - console.warn('โŒ Interactive Turnstile error:', error); - resolve(null); - }, - }); - - this._turnstileWidgetId = widgetId; - this._lastSitekey = sitekey; - - if (!widgetId) { - clearTimeout(timeout); - overlay.classList.add('wplace-overlay-hidden'); - overlay.style.display = 'none'; - console.warn('โŒ Failed to create interactive Turnstile widget'); - resolve(null); - } else { - console.log('โœ… Interactive Turnstile widget created, waiting for user interaction...'); - } - } catch (e) { - console.error('โŒ Interactive Turnstile creation failed:', e); - resolve(null); - } - }); - }, - - // Cleanup method for when the script is disabled/reloaded - cleanupTurnstile() { - if (this._turnstileWidgetId && window.turnstile?.remove) { - try { - window.turnstile.remove(this._turnstileWidgetId); - } catch (e) { - console.warn('Failed to cleanup Turnstile widget:', e); - } - } - - if (this._turnstileContainer && document.body.contains(this._turnstileContainer)) { - this._turnstileContainer.remove(); - } - - if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { - this._turnstileOverlay.remove(); - } - - this._turnstileWidgetId = null; - this._turnstileContainer = null; - this._turnstileOverlay = null; - this._lastSitekey = null; - }, - - async obtainSitekeyAndToken(fallback = '0x4AAAAAABpqJe8FO0N84q0F') { - // Cache sitekey to avoid repeated DOM queries - if (this._cachedSitekey) { - console.log('๐Ÿ” Using cached sitekey:', this._cachedSitekey); - - return isTokenValid() - ? { - sitekey: this._cachedSitekey, - token: turnstileToken, - } - : { sitekey: this._cachedSitekey, token: null }; - } - - // List of potential sitekeys to try - const potentialSitekeys = [ - '0x4AAAAAABpqJe8FO0N84q0F', // WPlace common sitekey - '0x4AAAAAAAJ7xjKAp6Mt_7zw', // Alternative WPlace sitekey - '0x4AAAAAADm5QWx6Ov2LNF2g', // Another common sitekey - ]; - const trySitekey = async (sitekey, source) => { - if (!sitekey || sitekey.length < 10) return null; - - console.log(`๐Ÿ” Testing sitekey from ${source}:`, sitekey); - const token = await this.executeTurnstile(sitekey); - - if (token && token.length >= 20) { - console.log(`โœ… Valid token generated from ${source} sitekey`); - setTurnstileToken(token); - this._cachedSitekey = sitekey; - return { sitekey, token }; - } else { - console.log(`โŒ Failed to get token from ${source} sitekey`); - return null; - } - }; - - try { - // 1๏ธโƒฃ data-sitekey attribute - const sitekeySel = document.querySelector('[data-sitekey]'); - if (sitekeySel) { - const sitekey = sitekeySel.getAttribute('data-sitekey'); - const result = await trySitekey(sitekey, 'data attribute'); - if (result) { - return result; - } - } - - // 2๏ธโƒฃ Turnstile element - const turnstileEl = document.querySelector('.cf-turnstile'); - if (turnstileEl?.dataset?.sitekey) { - const sitekey = turnstileEl.dataset.sitekey; - const result = await trySitekey(sitekey, 'turnstile element'); - if (result) { - return result; - } - } - - // 3๏ธโƒฃ Meta tags - const metaTags = document.querySelectorAll( - 'meta[name*="turnstile"], meta[property*="turnstile"]' - ); - for (const meta of metaTags) { - const content = meta.getAttribute('content'); - const result = await trySitekey(content, 'meta tag'); - if (result) { - return result; - } - } - - // 4๏ธโƒฃ Global variable - if (window.__TURNSTILE_SITEKEY) { - const result = await trySitekey(window.__TURNSTILE_SITEKEY, 'global variable'); - if (result) { - return result; - } - } - - // 5๏ธโƒฃ Script tags - const scripts = document.querySelectorAll('script'); - for (const script of scripts) { - const content = script.textContent || script.innerHTML; - const match = content.match( - /(?:sitekey|data-sitekey)['"\s\[\]:\=\(]*['"]?([0-9a-zA-Z_-]{20,})['"]?/i - ); - if (match && match[1]) { - const extracted = match[1].replace(/['"]/g, ''); - const result = await trySitekey(extracted, 'script content'); - if (result) { - return result; - } - } - } - - // 6๏ธโƒฃ Known potential sitekeys - console.log('๐Ÿ” Testing known potential sitekeys...'); - for (const testSitekey of potentialSitekeys) { - const result = await trySitekey(testSitekey, 'known list'); - if (result) { - return result; - } - } - } catch (error) { - console.warn('โš ๏ธ Error during sitekey detection:', error); - } - - // 7๏ธโƒฃ Fallback - console.log('๐Ÿ”ง Trying fallback sitekey:', fallback); - const fallbackResult = await trySitekey(fallback, 'fallback'); - if (fallbackResult) { - return fallbackResult; - } - - console.error('โŒ No working sitekey or token found.'); - return { sitekey: null, token: null }; - }, - - createElement: (tag, props = {}, children = []) => { - const element = document.createElement(tag); - - Object.entries(props).forEach(([key, value]) => { - if (key === 'style' && typeof value === 'object') { - Object.assign(element.style, value); - } else if (key === 'className') { - element.className = value; - } else if (key === 'innerHTML') { - element.innerHTML = value; - } else { - element.setAttribute(key, value); - } - }); - - if (typeof children === 'string') { - element.textContent = children; - } else if (Array.isArray(children)) { - children.forEach((child) => { - if (typeof child === 'string') { - element.appendChild(document.createTextNode(child)); - } else { - element.appendChild(child); - } - }); - } - - return element; - }, - - createButton: (id, text, icon, onClick, style = CONFIG.CSS_CLASSES.BUTTON_PRIMARY) => { - const button = Utils.createElement('button', { - id: id, - style: style, - innerHTML: `${icon ? `` : ''}${text}`, - }); - if (onClick) button.addEventListener('click', onClick); - return button; - }, - - // Synchronous translation function for UI rendering - t: (key, params = {}) => { - // Try to get from cache first - const cacheKey = `${state.language}_${key}`; - if (translationCache.has(cacheKey)) { - let text = translationCache.get(cacheKey); - Object.keys(params).forEach((param) => { - text = text.replace(`{${param}}`, params[param]); - }); - return text; - } - - // Try dynamically loaded translations (already loaded) - if (loadedTranslations[state.language]?.[key]) { - let text = loadedTranslations[state.language][key]; - // Cache for future use - translationCache.set(cacheKey, text); - Object.keys(params).forEach((param) => { - text = text.replace(`{${param}}`, params[param]); - }); - return text; - } - - // Fallback to English if current language failed - if (state.language !== 'en' && loadedTranslations['en']?.[key]) { - let text = loadedTranslations['en'][key]; - Object.keys(params).forEach((param) => { - text = text.replace(`{${param}}`, params[param]); - }); - return text; - } - - // Final fallback to emergency fallback or key - let text = FALLBACK_TEXT[state.language]?.[key] || FALLBACK_TEXT.en?.[key] || key; - Object.keys(params).forEach((param) => { - text = text.replace(new RegExp(`\\{${param}\\}`, 'g'), params[param]); - }); - - // Log missing translations for debugging - if (text === key && key !== 'undefined') { - console.warn(`โš ๏ธ Missing translation for key: ${key} (language: ${state.language})`); - } - - return text; - }, - - showAlert: (message, type = 'info') => { - const alertDiv = document.createElement('div'); - alertDiv.className = `wplace-alert-base wplace-alert-${type}`; - - alertDiv.textContent = message; - document.body.appendChild(alertDiv); - - setTimeout(() => { - alertDiv.style.animation = 'slide-down 0.3s ease-out reverse'; - setTimeout(() => { - document.body.removeChild(alertDiv); - }, 300); - }, 4000); - }, - - colorDistance: (a, b) => - Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2) + Math.pow(a[2] - b[2], 2)), - _labCache: new Map(), // key: (r<<16)|(g<<8)|b value: [L,a,b] - _rgbToLab: (r, g, b) => { - // sRGB -> linear - const srgbToLinear = (v) => { - v /= 255; - return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); - }; - const rl = srgbToLinear(r); - const gl = srgbToLinear(g); - const bl = srgbToLinear(b); - let X = rl * 0.4124 + gl * 0.3576 + bl * 0.1805; - let Y = rl * 0.2126 + gl * 0.7152 + bl * 0.0722; - let Z = rl * 0.0193 + gl * 0.1192 + bl * 0.9505; - X /= 0.95047; - Y /= 1.0; - Z /= 1.08883; - const f = (t) => (t > 0.008856 ? Math.cbrt(t) : 7.787 * t + 16 / 116); - const fX = f(X), - fY = f(Y), - fZ = f(Z); - const L = 116 * fY - 16; - const a = 500 * (fX - fY); - const b2 = 200 * (fY - fZ); - return [L, a, b2]; - }, - _lab: (r, g, b) => { - const key = (r << 16) | (g << 8) | b; - let v = Utils._labCache.get(key); - if (!v) { - v = Utils._rgbToLab(r, g, b); - Utils._labCache.set(key, v); - } - return v; - }, - findClosestPaletteColor: (r, g, b, palette) => { - // Use provided palette or derive from COLOR_MAP - if (!palette || palette.length === 0) { - palette = Object.values(CONFIG.COLOR_MAP) - .filter((c) => c.rgb) - .map((c) => [c.rgb.r, c.rgb.g, c.rgb.b]); - } - if (state.colorMatchingAlgorithm === 'legacy') { - let menorDist = Infinity; - let cor = [0, 0, 0]; - for (let i = 0; i < palette.length; i++) { - const [pr, pg, pb] = palette[i]; - const rmean = (pr + r) / 2; - const rdiff = pr - r; - const gdiff = pg - g; - const bdiff = pb - b; - const dist = Math.sqrt( - (((512 + rmean) * rdiff * rdiff) >> 8) + - 4 * gdiff * gdiff + - (((767 - rmean) * bdiff * bdiff) >> 8) - ); - if (dist < menorDist) { - menorDist = dist; - cor = [pr, pg, pb]; - } - } - return cor; - } - // LAB algorithm - const [Lt, at, bt] = Utils._lab(r, g, b); - const targetChroma = Math.sqrt(at * at + bt * bt); - let best = null; - let bestDist = Infinity; - for (let i = 0; i < palette.length; i++) { - const [pr, pg, pb] = palette[i]; - const [Lp, ap, bp] = Utils._lab(pr, pg, pb); - const dL = Lt - Lp; - const da = at - ap; - const db = bt - bp; - let dist = dL * dL + da * da + db * db; - if (state.enableChromaPenalty && targetChroma > 20) { - const candChroma = Math.sqrt(ap * ap + bp * bp); - if (candChroma < targetChroma) { - const chromaDiff = targetChroma - candChroma; - dist += chromaDiff * chromaDiff * state.chromaPenaltyWeight; - } - } - if (dist < bestDist) { - bestDist = dist; - best = palette[i]; - if (bestDist === 0) break; - } - } - return best || [0, 0, 0]; - }, - - isWhitePixel: (r, g, b) => { - const wt = state.customWhiteThreshold || CONFIG.WHITE_THRESHOLD; - return r >= wt && g >= wt && b >= wt; - }, - - resolveColor(targetRgb, availableColors, exactMatch = false) { - if (!availableColors || availableColors.length === 0) { - return { - id: null, - rgb: targetRgb, - }; - } - - const cacheKey = `${targetRgb[0]},${targetRgb[1]},${targetRgb[2]}|${state.colorMatchingAlgorithm}|${state.enableChromaPenalty ? 'c' : 'nc' - }|${state.chromaPenaltyWeight}|${exactMatch ? 'exact' : 'closest'}`; - - if (colorCache.has(cacheKey)) return colorCache.get(cacheKey); - - // Check for an exact color match in availableColors. - // If found, return the matched color with its ID. - // If not found, return the target color with null ID. - // Cache the result for future lookups. - if (exactMatch) { - const match = availableColors.find( - (c) => c.rgb[0] === targetRgb[0] && c.rgb[1] === targetRgb[1] && c.rgb[2] === targetRgb[2] - ); - const result = match ? { id: match.id, rgb: [...match.rgb] } : { id: null, rgb: targetRgb }; - colorCache.set(cacheKey, result); - return result; - } - - // check for white using threshold - const whiteThreshold = state.customWhiteThreshold || CONFIG.WHITE_THRESHOLD; - if ( - targetRgb[0] >= whiteThreshold && - targetRgb[1] >= whiteThreshold && - targetRgb[2] >= whiteThreshold - ) { - const whiteEntry = availableColors.find( - (c) => - c.rgb[0] >= whiteThreshold && c.rgb[1] >= whiteThreshold && c.rgb[2] >= whiteThreshold - ); - if (whiteEntry) { - const result = { id: whiteEntry.id, rgb: [...whiteEntry.rgb] }; - colorCache.set(cacheKey, result); - return result; - } - } - - // find nearest color - let bestId = availableColors[0].id; - let bestRgb = [...availableColors[0].rgb]; - let bestScore = Infinity; - - if (state.colorMatchingAlgorithm === 'legacy') { - for (let i = 0; i < availableColors.length; i++) { - const c = availableColors[i]; - const [r, g, b] = c.rgb; - const rmean = (r + targetRgb[0]) / 2; - const rdiff = r - targetRgb[0]; - const gdiff = g - targetRgb[1]; - const bdiff = b - targetRgb[2]; - const dist = Math.sqrt( - (((512 + rmean) * rdiff * rdiff) >> 8) + - 4 * gdiff * gdiff + - (((767 - rmean) * bdiff * bdiff) >> 8) - ); - if (dist < bestScore) { - bestScore = dist; - bestId = c.id; - bestRgb = [...c.rgb]; - if (dist === 0) break; - } - } + showAlert: (message, type) => { + if (window.globalUtilsManager) { + window.globalUtilsManager.showAlert(message, type); } else { - const [Lt, at, bt] = Utils._lab(targetRgb[0], targetRgb[1], targetRgb[2]); - const targetChroma = Math.sqrt(at * at + bt * bt); - const penaltyWeight = state.enableChromaPenalty ? state.chromaPenaltyWeight || 0.15 : 0; - - for (let i = 0; i < availableColors.length; i++) { - const c = availableColors[i]; - const [r, g, b] = c.rgb; - const [L2, a2, b2] = Utils._lab(r, g, b); - const dL = Lt - L2, - da = at - a2, - db = bt - b2; - let dist = dL * dL + da * da + db * db; - - if (penaltyWeight > 0 && targetChroma > 20) { - const candChroma = Math.sqrt(a2 * a2 + b2 * b2); - if (candChroma < targetChroma) { - const cd = targetChroma - candChroma; - dist += cd * cd * penaltyWeight; - } - } - - if (dist < bestScore) { - bestScore = dist; - bestId = c.id; - bestRgb = [...c.rgb]; - if (dist === 0) break; - } - } + console.log(`Alert [${type}]: ${message}`); } - - const result = { id: bestId, rgb: bestRgb }; - colorCache.set(cacheKey, result); - - // limit the size of the cache - if (colorCache.size > 15000) { - const firstKey = colorCache.keys().next().value; - colorCache.delete(firstKey); - } - - return result; }, - - createImageUploader: () => - new Promise((resolve) => { + + // Color utilities + colorDistance: (a, b) => window.globalUtilsManager ? window.globalUtilsManager.colorDistance(a, b) : Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2) + Math.pow(a[2] - b[2], 2)), + findClosestPaletteColor: (r, g, b, palette) => window.globalUtilsManager ? window.globalUtilsManager.findClosestPaletteColor(r, g, b, palette) : [r, g, b], + isWhitePixel: (r, g, b) => window.globalUtilsManager ? window.globalUtilsManager.isWhitePixel(r, g, b) : (r > 240 && g > 240 && b > 240), + resolveColor: (targetRgb, availableColors, exactMatch) => window.globalUtilsManager ? window.globalUtilsManager.resolveColor(targetRgb, availableColors, exactMatch) : targetRgb, + + // CRITICAL FUNCTIONS - Direct implementations to ensure they work + createImageUploader: () => { + return new Promise((resolve, reject) => { const input = document.createElement('input'); input.type = 'file'; - input.accept = 'image/png,image/jpeg'; - input.onchange = () => { - const fr = new FileReader(); - fr.onload = () => resolve(fr.result); - fr.readAsDataURL(input.files[0]); + input.accept = 'image/*'; + input.onchange = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.onerror = () => reject(new Error('File reading error')); + reader.readAsDataURL(file); + } else { + reject(new Error('No file selected')); + } }; input.click(); - }), - - createFileDownloader: (data, filename) => { - const blob = new Blob([data], { type: 'application/json' }); - const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = filename; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - URL.revokeObjectURL(url); + }); }, - - createFileUploader: () => - new Promise((resolve, reject) => { + + createFileUploader: () => { + return new Promise((resolve, reject) => { const input = document.createElement('input'); input.type = 'file'; input.accept = '.json'; @@ -2361,497 +1099,150 @@ localStorage.removeItem("lp"); } }; input.click(); - }), - - extractAvailableColors: () => { - const colorElements = document.querySelectorAll('.tooltip button[id^="color-"]'); - if (colorElements.length === 0) { - console.log('โŒ No color elements found on page'); + }); + }, + + createFileDownloader: (data, filename) => { + const blob = new Blob([data], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }, + + loadProgress: () => { + try { + const saved = localStorage.getItem('wplace-bot-progress'); + if (!saved) return null; + return JSON.parse(saved); + } catch (error) { + console.error('Error loading progress:', error); return null; } - // Separate available and unavailable colors - const availableColors = []; - const unavailableColors = []; - - Array.from(colorElements).forEach((el) => { - const id = Number.parseInt(el.id.replace('color-', '')); - if (id === 0) return; // Skip transparent color - - const rgbStr = el.style.backgroundColor.match(/\d+/g); - if (!rgbStr || rgbStr.length < 3) { - console.warn(`Skipping color element ${el.id} โ€” cannot parse RGB`); - return; - } - const rgb = rgbStr.map(Number); - - // Find color name from COLOR_MAP - const colorInfo = Object.values(CONFIG.COLOR_MAP).find((color) => color.id === id); - const name = colorInfo ? colorInfo.name : `Unknown Color ${id}`; - - const colorData = { id, name, rgb }; - - // Check if color is available (no SVG overlay means available) - if (!el.querySelector('svg')) { - availableColors.push(colorData); - } else { - unavailableColors.push(colorData); - } - }); - - // Console log detailed color information - console.log('=== CAPTURED COLORS STATUS ==='); - console.log(`Total available colors: ${availableColors.length}`); - console.log(`Total unavailable colors: ${unavailableColors.length}`); - console.log(`Total colors scanned: ${availableColors.length + unavailableColors.length}`); - - if (availableColors.length > 0) { - console.log('\n--- AVAILABLE COLORS ---'); - availableColors.forEach((color, index) => { - console.log( - `${index + 1 - }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]})` - ); - }); - } - - if (unavailableColors.length > 0) { - console.log('\n--- UNAVAILABLE COLORS ---'); - unavailableColors.forEach((color, index) => { - console.log( - `${index + 1 - }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]}) [LOCKED]` - ); - }); - } - - console.log('=== END COLOR STATUS ==='); - - return availableColors; }, - - formatTime: (ms) => { - const seconds = Math.floor((ms / 1000) % 60); - const minutes = Math.floor((ms / (1000 * 60)) % 60); - const hours = Math.floor((ms / (1000 * 60 * 60)) % 24); - const days = Math.floor(ms / (1000 * 60 * 60 * 24)); - - let result = ''; - if (days > 0) result += `${days}d `; - if (hours > 0 || days > 0) result += `${hours}h `; - if (minutes > 0 || hours > 0 || days > 0) result += `${minutes}m `; - result += `${seconds}s`; - - return result; - }, - - calculateEstimatedTime: (remainingPixels, charges, cooldown) => { - if (remainingPixels <= 0) return 0; - - const paintingSpeedDelay = state.paintingSpeed > 0 ? 1000 / state.paintingSpeed : 1000; - const timeFromSpeed = remainingPixels * paintingSpeedDelay; - - const cyclesNeeded = Math.ceil(remainingPixels / Math.max(charges, 1)); - const timeFromCharges = cyclesNeeded * cooldown; - - return timeFromSpeed + timeFromCharges; // combine instead of taking max - }, - - // --- Painted pixel tracking helpers --- - initializePaintedMap: (width, height) => { - if (!state.paintedMap || state.paintedMap.length !== height) { - state.paintedMap = Array(height) - .fill() - .map(() => Array(width).fill(false)); - console.log(`๐Ÿ“‹ Initialized painted map: ${width}x${height}`); - } - }, - - markPixelPainted: (x, y, regionX = 0, regionY = 0) => { - const actualX = x + regionX; - const actualY = y + regionY; - - if ( - state.paintedMap && - state.paintedMap[actualY] && - actualX >= 0 && - actualX < state.paintedMap[actualY].length - ) { - state.paintedMap[actualY][actualX] = true; - } - }, - - isPixelPainted: (x, y, regionX = 0, regionY = 0) => { - const actualX = x + regionX; - const actualY = y + regionY; - - if ( - state.paintedMap && - state.paintedMap[actualY] && - actualX >= 0 && - actualX < state.paintedMap[actualY].length - ) { - return state.paintedMap[actualY][actualX]; - } - return false; - }, - - // Smart save - only save if significant changes - shouldAutoSave: () => { - const now = Date.now(); - const pixelsSinceLastSave = state.paintedPixels - state._lastSavePixelCount; - const timeSinceLastSave = now - state._lastSaveTime; - - // Save conditions: - // 1. Every 25 pixels (reduced from 50 for more frequent saves) - // 2. At least 30 seconds since last save (prevent spam) - // 3. Not already saving - return !state._saveInProgress && pixelsSinceLastSave >= 25 && timeSinceLastSave >= 30000; - }, - - performSmartSave: () => { - if (!Utils.shouldAutoSave()) return false; - - state._saveInProgress = true; - const success = Utils.saveProgress(); - - if (success) { - state._lastSavePixelCount = state.paintedPixels; - state._lastSaveTime = Date.now(); - console.log(`๐Ÿ’พ Auto-saved at ${state.paintedPixels} pixels`); - } - - state._saveInProgress = false; - return success; - }, - - // --- Data management helpers --- - - // Base64 compression helpers for efficient storage - packPaintedMapToBase64: (paintedMap, width, height) => { - if (!paintedMap || !width || !height) return null; - const totalBits = width * height; - const byteLen = Math.ceil(totalBits / 8); - const bytes = new Uint8Array(byteLen); - let bitIndex = 0; - for (let y = 0; y < height; y++) { - const row = paintedMap[y]; - for (let x = 0; x < width; x++) { - const bit = row && row[x] ? 1 : 0; - const b = bitIndex >> 3; // byte index - const o = bitIndex & 7; // bit offset - if (bit) bytes[b] |= 1 << o; - bitIndex++; - } - } - let binary = ''; - const chunk = 0x8000; - for (let i = 0; i < bytes.length; i += chunk) { - binary += String.fromCharCode.apply( - null, - bytes.subarray(i, Math.min(i + chunk, bytes.length)) - ); - } - return btoa(binary); - }, - - unpackPaintedMapFromBase64: (base64, width, height) => { - if (!base64 || !width || !height) return null; - const binary = atob(base64); - const bytes = new Uint8Array(binary.length); - for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i); - const map = Array(height) - .fill() - .map(() => Array(width).fill(false)); - let bitIndex = 0; - for (let y = 0; y < height; y++) { - for (let x = 0; x < width; x++) { - const b = bitIndex >> 3; - const o = bitIndex & 7; - map[y][x] = ((bytes[b] >> o) & 1) === 1; - bitIndex++; - } - } - return map; - }, - - // Migration helpers for backward compatibility - migrateProgressToV2: (saved) => { - if (!saved) return saved; - const isV1 = - !saved.version || - saved.version === '1' || - saved.version === '1.0' || - saved.version === '1.1'; - if (!isV1) return saved; - - try { - const migrated = { ...saved }; - const width = migrated.imageData?.width; - const height = migrated.imageData?.height; - if (migrated.paintedMap && width && height) { - const data = Utils.packPaintedMapToBase64(migrated.paintedMap, width, height); - migrated.paintedMapPacked = { width, height, data }; - } - delete migrated.paintedMap; - migrated.version = '2'; - return migrated; - } catch (e) { - console.warn('Migration to v2 failed, using original data:', e); - return saved; - } - }, - - migrateProgressToV21: (saved) => { - if (!saved) return saved; - if (saved.version === '2.1') return saved; - const isV2 = saved.version === '2' || saved.version === '2.0'; - const isV1 = - !saved.version || - saved.version === '1' || - saved.version === '1.0' || - saved.version === '1.1'; - if (!isV2 && !isV1) return saved; // save this for future - try { - const migrated = { ...saved }; - // First migrate to v2 if needed - if (isV1) { - const width = migrated.imageData?.width; - const height = migrated.imageData?.height; - if (migrated.paintedMap && width && height) { - const data = Utils.packPaintedMapToBase64(migrated.paintedMap, width, height); - migrated.paintedMapPacked = { width, height, data }; - } - delete migrated.paintedMap; - } - migrated.version = '2.1'; - return migrated; - } catch (e) { - console.warn('Migration to v2.1 failed, using original data:', e); - return saved; - } - }, - - migrateProgressToV22: (data) => { - try { - const migrated = { ...data }; - migrated.version = '2.2'; - - // Add new fields with default values - if (!migrated.state.coordinateMode) { - migrated.state.coordinateMode = CONFIG.COORDINATE_MODE; - } - if (!migrated.state.coordinateDirection) { - migrated.state.coordinateDirection = CONFIG.COORDINATE_DIRECTION; - } - if (!migrated.state.coordinateSnake) { - migrated.state.coordinateSnake = CONFIG.COORDINATE_SNAKE; - } - if (!migrated.state.blockWidth) { - migrated.state.blockWidth = CONFIG.COORDINATE_BLOCK_WIDTH; - } - if (!migrated.state.blockHeight) { - migrated.state.blockHeight = CONFIG.COORDINATE_BLOCK_HEIGHT; - } - - return migrated; - } catch (e) { - console.warn('Migration to v2.2 failed, using original data:', e); - return data; - } - }, - - buildPaintedMapPacked() { - if (state.paintedMap && state.imageData) { - const data = Utils.packPaintedMapToBase64( - state.paintedMap, - state.imageData.width, - state.imageData.height - ); - if (data) { - return { - width: state.imageData.width, - height: state.imageData.height, - data: data, - }; - } - } - return null; - }, - - buildProgressData() { - return { - timestamp: Date.now(), - version: '2.2', - state: { - totalPixels: state.totalPixels, - paintedPixels: state.paintedPixels, - lastPosition: state.lastPosition, - startPosition: state.startPosition, - region: state.region, - imageLoaded: state.imageLoaded, - colorsChecked: state.colorsChecked, - coordinateMode: state.coordinateMode, - coordinateDirection: state.coordinateDirection, - coordinateSnake: state.coordinateSnake, - blockWidth: state.blockWidth, - blockHeight: state.blockHeight, - availableColors: state.availableColors, - }, - imageData: state.imageData - ? { - width: state.imageData.width, - height: state.imageData.height, - pixels: Array.from(state.imageData.pixels), - totalPixels: state.imageData.totalPixels, - } - : null, - paintedMapPacked: Utils.buildPaintedMapPacked(), - }; - }, - - migrateProgress(saved) { - if (!saved) return null; - - let data = saved; - const ver = data.version; - - // If version is missing or โ‰ค 1.x โ†’ first migrate to v2 - if (!ver || ver === '1' || ver === '1.0' || ver === '1.1') { - data = Utils.migrateProgressToV2(data); - } - - // If still older than v2.1 โ†’ migrate to 2.1 - if (data.version === '2' || data.version === '2.0') { - data = Utils.migrateProgressToV21(data); - } - - // If still older than v2.2 โ†’ migrate to 2.2 - if (data.version === '2.1') { - data = Utils.migrateProgressToV22(data); - } - - // Now data is guaranteed to be the latest version - return data; - }, - + saveProgress: () => { try { - const progressData = Utils.buildProgressData(state); - - localStorage.setItem('wplace-bot-progress', JSON.stringify(progressData)); + // Use utils manager to build proper save structure like old version + const data = window.globalUtilsManager ? + window.globalUtilsManager.buildProgressData() : + { + timestamp: Date.now(), + version: '2.2', + state: { + totalPixels: window.state.totalPixels, + paintedPixels: window.state.paintedPixels, + lastPosition: window.state.lastPosition, + startPosition: window.state.startPosition, + region: window.state.region, + imageLoaded: window.state.imageLoaded, + colorsChecked: window.state.colorsChecked, + coordinateMode: window.state.coordinateMode, + coordinateDirection: window.state.coordinateDirection, + coordinateSnake: window.state.coordinateSnake, + blockWidth: window.state.blockWidth, + blockHeight: window.state.blockHeight, + availableColors: window.state.availableColors, + }, + imageData: window.state.imageData ? { + width: window.state.imageData.width, + height: window.state.imageData.height, + pixels: Array.from(window.state.imageData.pixels), + totalPixels: window.state.imageData.totalPixels, + } : null, + paintedMapPacked: window.globalUtilsManager ? + window.globalUtilsManager.buildPaintedMapPacked() : null + }; + + localStorage.setItem('wplace-bot-progress', JSON.stringify(data)); return true; } catch (error) { console.error('Error saving progress:', error); return false; } }, - - loadProgress: () => { - try { - const saved = localStorage.getItem('wplace-bot-progress'); - if (!saved) return null; - let data = JSON.parse(saved); - const migrated = Utils.migrateProgress(data); - - if (migrated && migrated !== data) { - try { - localStorage.setItem('wplace-bot-progress', JSON.stringify(migrated)); - } catch { } - } - return migrated; - } catch (error) { - console.error('Error loading progress:', error); - return null; - } - }, - + clearProgress: () => { try { localStorage.removeItem('wplace-bot-progress'); - // Also clear painted map from memory - state.paintedMap = null; - state._lastSavePixelCount = 0; - state._lastSaveTime = 0; - // Reset coordinate generation settings to their default values - state.coordinateMode = CONFIG.COORDINATE_MODE; - state.coordinateDirection = CONFIG.COORDINATE_DIRECTION; - state.coordinateSnake = CONFIG.COORDINATE_SNAKE; - state.blockWidth = CONFIG.COORDINATE_BLOCK_WIDTH; - state.blockHeight = CONFIG.COORDINATE_BLOCK_HEIGHT; - console.log('๐Ÿ“‹ Progress and painted map cleared'); + if (window.state) { + window.state.paintedMap = null; + window.state._lastSavePixelCount = 0; + window.state._lastSaveTime = 0; + } return true; } catch (error) { console.error('Error clearing progress:', error); return false; } }, - + restoreProgress: (savedData) => { try { - Object.assign(state, savedData.state); - - // Restore coordinate generation settings - if (savedData.state.coordinateMode) { - state.coordinateMode = savedData.state.coordinateMode; + if (!savedData || !savedData.state) return false; + Object.assign(window.state, savedData.state); + + // Restore available colors from old save files (backward compatibility) + if (savedData.state.availableColors && Array.isArray(savedData.state.availableColors)) { + window.state.availableColors = savedData.state.availableColors; + window.state.colorsChecked = true; // Mark colors as checked } - if (savedData.state.coordinateDirection) { - state.coordinateDirection = savedData.state.coordinateDirection; - } - if (savedData.state.coordinateSnake !== undefined) { - state.coordinateSnake = savedData.state.coordinateSnake; - } - if (savedData.state.blockWidth) { - state.blockWidth = savedData.state.blockWidth; - } - if (savedData.state.blockHeight) { - state.blockHeight = savedData.state.blockHeight; - } - + if (savedData.imageData) { - state.imageData = { + window.state.imageData = { ...savedData.imageData, pixels: new Uint8ClampedArray(savedData.imageData.pixels), }; - - try { - const canvas = document.createElement('canvas'); - canvas.width = state.imageData.width; - canvas.height = state.imageData.height; - const ctx = canvas.getContext('2d'); - const imageData = new ImageData( - state.imageData.pixels, - state.imageData.width, - state.imageData.height - ); - ctx.putImageData(imageData, 0, 0); - const proc = new ImageProcessor(''); - proc.img = canvas; - proc.canvas = canvas; - proc.ctx = ctx; - state.imageData.processor = proc; - } catch (e) { - console.warn('Could not rebuild processor from saved image data:', e); - } } - - // Prefer packed form if available; fallback to legacy paintedMap array for backward compatibility - if (savedData.paintedMapPacked && savedData.paintedMapPacked.data) { - const { width, height, data } = savedData.paintedMapPacked; - state.paintedMap = Utils.unpackPaintedMapFromBase64(data, width, height); - } else if (savedData.paintedMap) { - state.paintedMap = savedData.paintedMap.map((row) => Array.from(row)); + + if (savedData.paintedMap) { + window.state.paintedMap = savedData.paintedMap.map((row) => Array.from(row)); } - + return true; } catch (error) { console.error('Error restoring progress:', error); return false; } }, - + saveProgressToFile: () => { try { - const progressData = Utils.buildProgressData(); + // Use utils manager to build proper save structure like old version + const progressData = window.globalUtilsManager ? + window.globalUtilsManager.buildProgressData() : + { + timestamp: Date.now(), + version: '2.2', + state: { + totalPixels: window.state.totalPixels, + paintedPixels: window.state.paintedPixels, + lastPosition: window.state.lastPosition, + startPosition: window.state.startPosition, + region: window.state.region, + imageLoaded: window.state.imageLoaded, + colorsChecked: window.state.colorsChecked, + coordinateMode: window.state.coordinateMode, + coordinateDirection: window.state.coordinateDirection, + coordinateSnake: window.state.coordinateSnake, + blockWidth: window.state.blockWidth, + blockHeight: window.state.blockHeight, + availableColors: window.state.availableColors, + }, + imageData: window.state.imageData ? { + width: window.state.imageData.width, + height: window.state.imageData.height, + pixels: Array.from(window.state.imageData.pixels), + totalPixels: window.state.imageData.totalPixels, + } : null, + paintedMapPacked: window.globalUtilsManager ? + window.globalUtilsManager.buildPaintedMapPacked() : null + }; + const filename = `wplace-bot-progress-${new Date() .toISOString() .slice(0, 19) @@ -2863,75 +1254,57 @@ localStorage.removeItem("lp"); return false; } }, - + loadProgressFromFile: async () => { try { const data = await Utils.createFileUploader(); if (!data || !data.state) { throw new Error('Invalid file format'); } - const migrated = Utils.migrateProgress(data); - - const success = Utils.restoreProgress(migrated); + const success = Utils.restoreProgress(data); return success; } catch (error) { console.error('Error loading from file:', error); - throw error; - } - }, - - // Helper function to restore overlay from loaded data - restoreOverlayFromData: async () => { - if (!state.imageLoaded || !state.imageData || !state.startPosition || !state.region) { - return false; - } - - try { - // Recreate ImageBitmap from loaded pixel data - const imageData = new ImageData( - state.imageData.pixels, - state.imageData.width, - state.imageData.height - ); - - const canvas = new OffscreenCanvas(state.imageData.width, state.imageData.height); - const ctx = canvas.getContext('2d'); - ctx.putImageData(imageData, 0, 0); - const imageBitmap = await canvas.transferToImageBitmap(); - - // Set up overlay with restored data - await overlayManager.setImage(imageBitmap); - await overlayManager.setPosition(state.startPosition, state.region); - overlayManager.enable(); - - // Update overlay button state - const toggleOverlayBtn = document.getElementById('toggleOverlayBtn'); - if (toggleOverlayBtn) { - toggleOverlayBtn.disabled = false; - toggleOverlayBtn.classList.add('active'); - } - - console.log('Overlay restored from data'); - return true; - } catch (error) { - console.error('Failed to restore overlay from data:', error); return false; } }, - - updateCoordinateUI({ mode, directionControls, snakeControls, blockControls }) { - const isLinear = mode === 'rows' || mode === 'columns'; - const isBlock = mode === 'blocks' || mode === 'shuffle-blocks'; - - if (directionControls) directionControls.style.display = isLinear ? 'block' : 'none'; - if (snakeControls) snakeControls.style.display = isLinear ? 'block' : 'none'; - if (blockControls) blockControls.style.display = isBlock ? 'block' : 'none'; + + // Other utilities - delegate to globalUtilsManager or provide simple fallbacks + extractAvailableColors: () => { + if (window.globalUtilsManager) { + return window.globalUtilsManager.extractAvailableColors(); + } else if (window.globalImageProcessor) { + return window.globalImageProcessor.extractAvailableColors(window.CONFIG.COLOR_MAP); + } else { + return []; + } }, + formatTime: (ms) => window.globalUtilsManager ? window.globalUtilsManager.formatTime(ms) : `${Math.floor(ms/1000)}s`, + calculateEstimatedTime: (remainingPixels, charges, cooldown) => window.globalUtilsManager ? window.globalUtilsManager.calculateEstimatedTime(remainingPixels, charges, cooldown) : 0, + initializePaintedMap: (width, height) => window.globalUtilsManager ? window.globalUtilsManager.initializePaintedMap(width, height) : console.log('Painted map not available'), + markPixelPainted: (x, y, regionX, regionY) => window.globalUtilsManager ? window.globalUtilsManager.markPixelPainted(x, y, regionX, regionY) : false, + isPixelPainted: (x, y, regionX, regionY) => window.globalUtilsManager ? window.globalUtilsManager.isPixelPainted(x, y, regionX, regionY) : false, + shouldAutoSave: () => window.globalUtilsManager ? window.globalUtilsManager.shouldAutoSave() : false, + performSmartSave: () => window.globalUtilsManager ? window.globalUtilsManager.performSmartSave() : false, + packPaintedMapToBase64: (paintedMap, width, height) => window.globalUtilsManager ? window.globalUtilsManager.packPaintedMapToBase64(paintedMap, width, height) : null, + unpackPaintedMapFromBase64: (base64, width, height) => window.globalUtilsManager ? window.globalUtilsManager.unpackPaintedMapFromBase64(base64, width, height) : null, + migrateProgressToV2: (saved) => window.globalUtilsManager ? window.globalUtilsManager.migrateProgressToV2(saved) : saved, + migrateProgressToV21: (saved) => window.globalUtilsManager ? window.globalUtilsManager.migrateProgressToV21(saved) : saved, + migrateProgressToV22: (data) => window.globalUtilsManager ? window.globalUtilsManager.migrateProgressToV22(data) : data, + buildPaintedMapPacked: () => window.globalUtilsManager ? window.globalUtilsManager.buildPaintedMapPacked() : null, + buildProgressData: () => window.globalUtilsManager ? window.globalUtilsManager.buildProgressData() : {}, + migrateProgress: (saved) => window.globalUtilsManager ? window.globalUtilsManager.migrateProgress(saved) : saved, + restoreOverlayFromData: () => window.globalUtilsManager ? window.globalUtilsManager.restoreOverlayFromData() : Promise.resolve(false), + updateCoordinateUI: (config) => window.globalUtilsManager ? window.globalUtilsManager.updateCoordinateUI(config) : console.log('Coordinate UI update not available'), }; - // IMAGE PROCESSOR CLASS + // IMAGE PROCESSOR WRAPPER - Uses WPlaceImageProcessor for modular functionality class ImageProcessor { constructor(imageSrc) { + // Create instance of the modular ImageProcessor + this._processor = new window.WPlaceImageProcessor(imageSrc); + + // Legacy compatibility properties this.imageSrc = imageSrc; this.img = null; this.canvas = null; @@ -2939,62 +1312,42 @@ localStorage.removeItem("lp"); } async load() { - return new Promise((resolve, reject) => { - this.img = new Image(); - this.img.crossOrigin = 'anonymous'; - this.img.onload = () => { - this.canvas = document.createElement('canvas'); - this.ctx = this.canvas.getContext('2d'); - this.canvas.width = this.img.width; - this.canvas.height = this.img.height; - this.ctx.drawImage(this.img, 0, 0); - resolve(); - }; - this.img.onerror = reject; - this.img.src = this.imageSrc; - }); + await this._processor.load(); + + // Update legacy properties for compatibility + this.img = this._processor.img; + this.canvas = this._processor.canvas; + this.ctx = this._processor.ctx; } getDimensions() { - return { - width: this.canvas.width, - height: this.canvas.height, - }; + return this._processor.getDimensions(); } getPixelData() { - return this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height).data; + return this._processor.getPixelData(); } resize(newWidth, newHeight) { - const tempCanvas = document.createElement('canvas'); - const tempCtx = tempCanvas.getContext('2d'); - - tempCanvas.width = newWidth; - tempCanvas.height = newHeight; - - tempCtx.imageSmoothingEnabled = false; - tempCtx.drawImage(this.canvas, 0, 0, newWidth, newHeight); - - this.canvas.width = newWidth; - this.canvas.height = newHeight; - this.ctx.imageSmoothingEnabled = false; - this.ctx.drawImage(tempCanvas, 0, 0); - - return this.ctx.getImageData(0, 0, newWidth, newHeight).data; + const result = this._processor.resize(newWidth, newHeight); + + // Update legacy properties + this.img = this._processor.img; + this.canvas = this._processor.canvas; + this.ctx = this._processor.ctx; + + return result; } generatePreview(width, height) { - const previewCanvas = document.createElement('canvas'); - const previewCtx = previewCanvas.getContext('2d'); + return this._processor.generatePreview(width, height); + } - previewCanvas.width = width; - previewCanvas.height = height; - - previewCtx.imageSmoothingEnabled = false; - previewCtx.drawImage(this.img, 0, 0, width, height); - - return previewCanvas.toDataURL(); + // Cleanup method + cleanup() { + if (this._processor) { + this._processor.cleanup(); + } } } @@ -3003,11 +1356,11 @@ localStorage.removeItem("lp"); async paintPixelInRegion(regionX, regionY, pixelX, pixelY, color) { try { await ensureToken(); - if (!turnstileToken) return 'token_error'; + if (!getTurnstileToken()) return 'token_error'; const payload = { coords: [pixelX, pixelY], colors: [color], - t: turnstileToken, + t: getTurnstileToken(), fp: fpStr32, }; var token = await createWasmToken(regionX, regionY, payload); @@ -3019,10 +1372,8 @@ localStorage.removeItem("lp"); }); if (res.status === 403) { console.error('โŒ 403 Forbidden. Turnstile token might be invalid or expired.'); - turnstileToken = null; - tokenPromise = new Promise((resolve) => { - _resolveToken = resolve; - }); + setTurnstileToken(null); + createTokenPromise(); return 'token_error'; } const data = await res.json(); @@ -3186,7 +1537,7 @@ localStorage.removeItem("lp"); // UI UPDATE FUNCTIONS (declared early to avoid reference errors) let updateUI = () => { }; - let updateStats = (isManualRefresh) => { }; + let updateStats = () => { }; let updateDataButtons = () => { }; function updateActiveColorPalette() { @@ -3349,7 +1700,7 @@ localStorage.removeItem("lp"); // Check user's token source preference if (state.tokenSource === 'manual') { console.log('๐ŸŽฏ Manual token source selected - using pixel placement automation'); - return await handleCaptchaFallback(); + return await tokenManager.handleCaptchaFallback(); } // Generator mode (pure) or Hybrid mode - try generator first @@ -3388,7 +1739,7 @@ localStorage.removeItem("lp"); // โœ… Or use globally cached token if still valid else if (isTokenValid()) { console.log('โ™ป๏ธ Using existing cached token (from previous operation)'); - token = turnstileToken; + token = getTurnstileToken(); } // โœ… Otherwise generate a new one else { @@ -3399,7 +1750,6 @@ localStorage.removeItem("lp"); } } - // ๐Ÿ“Š Debug log console.log( `๐Ÿ” Token received - Type: ${typeof token}, Value: ${token ? typeof token === 'string' @@ -3432,7 +1782,7 @@ localStorage.removeItem("lp"); console.log( '๐Ÿ”„ Hybrid mode: Generator failed, automatically switching to manual pixel placement...' ); - const fbToken = await handleCaptchaFallback(); + const fbToken = await tokenManager.handleCaptchaFallback(); return fbToken; } else { // Pure generator mode - don't fallback, just fail @@ -3441,103 +1791,6 @@ localStorage.removeItem("lp"); } } - // Keep original method as fallback - async function handleCaptchaFallback() { - return new Promise(async (resolve, reject) => { - try { - // Ensure we have a fresh promise to await for a new token capture - if (!_resolveToken) { - tokenPromise = new Promise((res) => { - _resolveToken = res; - }); - } - const timeoutPromise = Utils.sleep(20000).then(() => - reject(new Error('Auto-CAPTCHA timed out.')) - ); - - const solvePromise = (async () => { - const mainPaintBtn = await Utils.waitForSelector( - 'button.btn.btn-primary.btn-lg, button.btn-primary.sm\\:btn-xl', - 200, - 10000 - ); - if (!mainPaintBtn) throw new Error('Could not find the main paint button.'); - mainPaintBtn.click(); - await Utils.sleep(500); - - const transBtn = await Utils.waitForSelector('button#color-0', 200, 5000); - if (!transBtn) throw new Error('Could not find the transparent color button.'); - transBtn.click(); - await Utils.sleep(500); - - const canvas = await Utils.waitForSelector('canvas', 200, 5000); - if (!canvas) throw new Error('Could not find the canvas element.'); - - canvas.setAttribute('tabindex', '0'); - canvas.focus(); - const rect = canvas.getBoundingClientRect(); - const centerX = Math.round(rect.left + rect.width / 2); - const centerY = Math.round(rect.top + rect.height / 2); - - canvas.dispatchEvent( - new MouseEvent('mousemove', { - clientX: centerX, - clientY: centerY, - bubbles: true, - }) - ); - canvas.dispatchEvent( - new KeyboardEvent('keydown', { - key: ' ', - code: 'Space', - bubbles: true, - }) - ); - await Utils.sleep(50); - canvas.dispatchEvent( - new KeyboardEvent('keyup', { - key: ' ', - code: 'Space', - bubbles: true, - }) - ); - await Utils.sleep(500); - - // 800ms delay before sending confirmation - await Utils.sleep(800); - - // Keep confirming until token is captured - const confirmLoop = async () => { - while (!turnstileToken) { - let confirmBtn = await Utils.waitForSelector( - 'button.btn.btn-primary.btn-lg, button.btn.btn-primary.sm\\:btn-xl' - ); - if (!confirmBtn) { - const allPrimary = Array.from(document.querySelectorAll('button.btn-primary')); - confirmBtn = allPrimary.length ? allPrimary[allPrimary.length - 1] : null; - } - if (confirmBtn) { - confirmBtn.click(); - } - await Utils.sleep(500); // 500ms delay between confirmation attempts - } - }; - - // Start confirmation loop and wait for token - confirmLoop(); - const token = await tokenPromise; - await Utils.sleep(300); // small delay after token is captured - resolve(token); - })(); - - await Promise.race([solvePromise, timeoutPromise]); - } catch (error) { - console.error('Auto-CAPTCHA process failed:', error); - reject(error); - } - }); - } - async function createUI() { await detectLanguage(); @@ -4746,7 +2999,7 @@ localStorage.removeItem("lp"); refreshChargesBtn.disabled = true; try { - await updateStats(true); + await updateStats(); } catch (error) { console.error('Error refreshing charges:', error); } finally { @@ -5265,12 +3518,6 @@ localStorage.removeItem("lp"); if (loadBtn) { loadBtn.addEventListener('click', () => { - // Check if initial setup is complete - if (!state.initialSetupComplete) { - Utils.showAlert(Utils.t('pleaseWaitInitialSetup'), 'warning'); - return; - } - const savedData = Utils.loadProgress(); if (!savedData) { updateUI('noSavedData', 'warning'); @@ -5278,6 +3525,17 @@ localStorage.removeItem("lp"); return; } + // CRITICAL FIX: If save file contains complete data, bypass initial setup check + // This matches old version behavior where save files could be loaded immediately + const hasCompleteData = savedData.state && savedData.imageData && + savedData.state.availableColors && + savedData.state.availableColors.length > 0; + + if (!state.initialSetupComplete && !hasCompleteData) { + Utils.showAlert(Utils.t('pleaseWaitInitialSetup'), 'warning'); + return; + } + const confirmLoad = confirm( `${Utils.t('savedDataFound')}\n\n` + `Saved: ${new Date(savedData.timestamp).toLocaleString()}\n` + @@ -5287,11 +3545,26 @@ localStorage.removeItem("lp"); if (confirmLoad) { const success = Utils.restoreProgress(savedData); if (success) { + // CRITICAL FIX: Set initial setup complete if save had complete data + if (hasCompleteData) { + state.initialSetupComplete = true; + } + updateUI('dataLoaded', 'success'); Utils.showAlert(Utils.t('dataLoaded'), 'success'); updateDataButtons(); + // CRITICAL FIX: Force immediate stats update after save loading updateStats(); + + // Force stats display refresh by updating the stats container + const statsContainer = document.getElementById('wplace-stats-container'); + if (statsContainer && typeof updateStats === 'function') { + // Trigger a forced visual refresh of the stats + setTimeout(() => { + updateStats(); + }, 100); + } // Restore overlay if image data was loaded from localStorage Utils.restoreOverlayFromData().catch((error) => { @@ -5329,15 +3602,31 @@ localStorage.removeItem("lp"); if (loadFromFileBtn) { loadFromFileBtn.addEventListener('click', async () => { - // Check if initial setup is complete - if (!state.initialSetupComplete) { - Utils.showAlert(Utils.t('pleaseWaitFileSetup'), 'warning'); - return; - } - try { - const success = await Utils.loadProgressFromFile(); + // First check if we can load the file - this will tell us if it has complete data + const fileData = await Utils.createFileUploader(); + if (!fileData || !fileData.state) { + Utils.showAlert(Utils.t('invalidFileFormat'), 'error'); + return; + } + + // CRITICAL FIX: If file contains complete data, bypass initial setup check + const hasCompleteData = fileData.state && fileData.imageData && + fileData.state.availableColors && + fileData.state.availableColors.length > 0; + + if (!state.initialSetupComplete && !hasCompleteData) { + Utils.showAlert(Utils.t('pleaseWaitFileSetup'), 'warning'); + return; + } + + const success = Utils.restoreProgress(fileData); if (success) { + // CRITICAL FIX: Set initial setup complete if file had complete data + if (hasCompleteData) { + state.initialSetupComplete = true; + } + updateUI('fileLoaded', 'success'); Utils.showAlert(Utils.t('fileLoaded'), 'success'); updateDataButtons(); @@ -5440,7 +3729,6 @@ localStorage.removeItem("lp"); } updateStats = async (isManualRefresh = false) => { - const isForcedRefresh = isManualRefresh; const isFirstCheck = !state.fullChargeData?.startTime; const minUpdateInterval = 60_000; @@ -5450,7 +3738,7 @@ localStorage.removeItem("lp"); const timeSinceLastUpdate = Date.now() - (state.fullChargeData?.startTime || 0); const isTimeToUpdate = timeSinceLastUpdate >= randomUpdateThreshold; - const shouldCallApi = isForcedRefresh || isFirstCheck || isTimeToUpdate; + const shouldCallApi = isFirstCheck || isTimeToUpdate; if (shouldCallApi) { const { charges, max, cooldown } = await WPlaceService.getCharges(); @@ -6896,7 +5184,7 @@ localStorage.removeItem("lp"); return; } await ensureToken(); - if (!turnstileToken) return; + if (!getTurnstileToken()) return; state.running = true; state.stopFlag = false; @@ -7233,21 +5521,30 @@ localStorage.removeItem("lp"); const { x: startX, y: startY } = state.startPosition; const { x: regionX, y: regionY } = state.region; - // todo force load tiles - const tilesReady = await overlayManager.waitForTiles( - regionX, - regionY, - width, - height, - startX, - startY, - 10000 // timeout 10s - ); + // Check if we're working with restored data by looking for existing availableColors + // If availableColors exists and colorsChecked is true, we don't need to wait for tiles + const isRestoredData = state.availableColors && state.availableColors.length > 0 && state.colorsChecked; + + if (!isRestoredData) { + // Only wait for tiles if this is not restored data + // Wait for original tiles to load if needed + const tilesReady = await overlayManager.waitForTiles( + regionX, + regionY, + width, + height, + startX, + startY, + 10000 // timeout 10s + ); - if (!tilesReady) { - updateUI('overlayTilesNotLoaded', 'error'); - state.stopFlag = true; - return; + if (!tilesReady) { + updateUI('overlayTilesNotLoaded', 'error'); + state.stopFlag = true; + return; + } + } else { + // Using restored data - skipping tile wait } let pixelBatch = null; @@ -7262,6 +5559,15 @@ localStorage.removeItem("lp"); state.customTransparencyThreshold || CONFIG.TRANSPARENCY_THRESHOLD; function checkPixelEligibility(x, y) { + // CRITICAL FIX: Check module availability before processing + if (!Utils || typeof Utils.isWhitePixel !== 'function') { + console.error('โŒ Utils module not available for pixel eligibility check'); + return { + eligible: false, + reason: 'moduleUnavailable', + }; + } + const idx = (y * width + x) * 4; const r = pixels[idx], g = pixels[idx + 1], @@ -7384,9 +5690,6 @@ localStorage.removeItem("lp"); continue; } - // console.log(`[DEBUG] Pixel at (${pixelX}, ${pixelY}) eligible: RGB=${targetPixelInfo.r}, ${targetPixelInfo.g}, ${targetPixelInfo.b}, - // alpha=${targetPixelInfo.a}, mappedColorId=${targetMappedColorId}`); - if ( !pixelBatch || pixelBatch.regionX !== regionX + adderX || @@ -7427,6 +5730,13 @@ localStorage.removeItem("lp"); } try { + // CRITICAL FIX: Check overlay manager availability + if (!overlayManager || typeof overlayManager.getTilePixelColor !== 'function') { + console.error('โŒ Overlay manager not available for pixel color check'); + state.log(`โŒ Overlay manager unavailable - skipping pixel (${pixelX}, ${pixelY})`); + continue; + } + const tileKeyParts = [pixelBatch.regionX, pixelBatch.regionY]; const tilePixelRGBA = await overlayManager.getTilePixelColor( @@ -7455,17 +5765,9 @@ localStorage.removeItem("lp"); ); continue; } - console.debug( - `[COMPARE] Pixel at ๐Ÿ“ (${pixelX}, ${pixelY}) in region (${regionX + adderX - }, ${regionY + adderY})\n` + - ` โ”œโ”€โ”€ Current color: rgb(${tilePixelRGBA.slice(0, 3).join(', ')}) (id: ${mappedCanvasColor.id})\n` + - ` โ”œโ”€โ”€ Target color: rgb(${targetPixelInfo.r}, ${targetPixelInfo.g}, ${targetPixelInfo.b}) (id: ${targetMappedColorId})\n` + - ` โ””โ”€โ”€ Status: ${isMatch ? 'โœ… Already painted โ†’ SKIP' : '๐Ÿ”ด Needs paint โ†’ PAINT' - }\n` - ); } } catch (e) { - console.error(`[DEBUG] Error checking existing pixel at (${pixelX}, ${pixelY}):`, e); + console.error(`Error checking existing pixel at (${pixelX}, ${pixelY}):`, e); updateUI('paintingPixelCheckFailed', 'error', { x: pixelX, y: pixelY }); state.stopFlag = true; // noinspection UnnecessaryLabelOnBreakStatementJS @@ -7702,19 +6004,17 @@ localStorage.removeItem("lp"); } async function sendPixelBatch(pixelBatch, regionX, regionY) { - let token = turnstileToken; + let token = getTurnstileToken(); // Generate new token if we don't have one if (!token) { try { console.log('๐Ÿ”‘ Generating Turnstile token for pixel batch...'); token = await handleCaptcha(); - turnstileToken = token; // Store for potential reuse + setTurnstileToken(token); // Store for potential reuse } catch (error) { console.error('โŒ Failed to generate Turnstile token:', error); - tokenPromise = new Promise((resolve) => { - _resolveToken = resolve; - }); + createTokenPromise(); return 'token_error'; } } @@ -7749,7 +6049,7 @@ localStorage.removeItem("lp"); try { console.log('๐Ÿ”„ Regenerating Turnstile token after 403...'); token = await handleCaptcha(); - turnstileToken = token; + setTurnstileToken(token); // Retry the request with new token const retryPayload = { coords, colors, t: token, fp: fpStr32 }; @@ -7765,10 +6065,8 @@ localStorage.removeItem("lp"); ); if (retryRes.status === 403) { - turnstileToken = null; - tokenPromise = new Promise((resolve) => { - _resolveToken = resolve; - }); + setTurnstileToken(null); + createTokenPromise(); return 'token_error'; } @@ -7776,10 +6074,8 @@ localStorage.removeItem("lp"); return retryData?.painted === pixelBatch.length; } catch (retryError) { console.error('โŒ Token regeneration failed:', retryError); - turnstileToken = null; - tokenPromise = new Promise((resolve) => { - _resolveToken = resolve; - }); + setTurnstileToken(null); + createTokenPromise(); return 'token_error'; } } @@ -8034,6 +6330,14 @@ localStorage.removeItem("lp"); console.log('๐ŸŽฏ Manual pixel captcha solving: Available as fallback/alternative'); console.log('๐Ÿ“ฑ Turnstile widgets: DISABLED - pure background token generation only!'); + // Generate fingerprint string for requests + if (!window.WPlaceTokenManager) { + console.error('โŒ WPlaceTokenManager not available - dependency loading issue'); + return; + } + const fpStr32 = tokenManager._randStr(32); + console.log('๐Ÿ”‘ Generated fingerprint string for API requests'); + // Function to enable file operations after initial startup setup is complete function enableFileOperations() { state.initialSetupComplete = true; @@ -8097,7 +6401,8 @@ localStorage.removeItem("lp"); await Utils.loadTurnstile(); console.log('Turnstile script loaded. Attempting to generate token...'); - const token = await handleCaptchaWithRetry(); + // Use TokenManager's handleCaptchaWithRetry method instead + const token = await tokenManager.handleCaptchaWithRetry(); if (token) { setTurnstileToken(token); console.log('โœ… Startup token generated successfully'); @@ -8303,7 +6608,7 @@ localStorage.removeItem("lp"); body: JSON.stringify(payload), credentials: "include" }); - console.log("Fetch POST return :", res); + // POST request completed const { droplets: newDroplets } = await WPlaceService.getCharges(); if (droplets != newDroplets) { console.log("Successfully bought", amounts * chargeMultiplier, type.replace('_', ' '), "."); @@ -8358,7 +6663,48 @@ localStorage.removeItem("lp"); console.log("User's Droplets :", Droplets); } - createUI().then(() => { + // Wait for dependencies before initializing UI + async function waitForDependenciesAndInitialize() { + // Wait for all global managers to be available + let attempts = 0; + const maxAttempts = 50; // 5 seconds max wait + + while (attempts < maxAttempts) { + const managers = { + utilsManager: window.globalUtilsManager, + imageProcessor: window.globalImageProcessor, + overlayManager: window.globalOverlayManager, + tokenManager: window.globalTokenManager + }; + + const missingManagers = Object.entries(managers) + .filter(([name, manager]) => !manager) + .map(([name]) => name); + + if (missingManagers.length === 0) { + console.log('โœ… All global managers are available, initializing UI...'); + break; + } + + console.log(`โณ Waiting for managers: ${missingManagers.join(', ')} (attempt ${attempts + 1}/${maxAttempts})`); + await new Promise(resolve => setTimeout(resolve, 100)); + attempts++; + } + + if (attempts >= maxAttempts) { + console.warn('โš ๏ธ Some global managers not available after waiting, proceeding anyway...'); + console.log('Available managers:', { + utilsManager: !!window.globalUtilsManager, + imageProcessor: !!window.globalImageProcessor, + overlayManager: !!window.globalOverlayManager, + tokenManager: !!window.globalTokenManager + }); + } + + return createUI(); + } + + waitForDependenciesAndInitialize().then(() => { // Generate token automatically after UI is ready setTimeout(initializeTokenGenerator, 1000); diff --git a/Extension/scripts/Auto-Repair.js b/Extension/scripts/Auto-Repair.js index 7cd9677..cde5232 100644 --- a/Extension/scripts/Auto-Repair.js +++ b/Extension/scripts/Auto-Repair.js @@ -1637,27 +1637,34 @@ const damagedPixels = []; const { width, height, pixels } = state.imageData; - const ready = await overlayManager.waitForTiles( - state.region.x, - state.region.y, - width, - height, - state.startPosition.x, - state.startPosition.y, - state.autonomousMode ? 20000 : 15000 - ); + // Check if we're working with restored data - skip tile waiting for restored saves + const isRestoredData = state.availableColors && state.availableColors.length > 0 && state.colorsChecked; + + if (!isRestoredData) { + const ready = await overlayManager.waitForTiles( + state.region.x, + state.region.y, + width, + height, + state.startPosition.x, + state.startPosition.y, + state.autonomousMode ? 20000 : 15000 + ); - if (!ready) { - Utils.addDebugLog('Failed to load required tiles for scanning', 'error'); - if (state.autonomousMode) { - Utils.addDebugLog('Autonomous mode: will retry scan in 30 seconds', 'warning'); - setTimeout(() => { - if (state.autoRepairEnabled && !state.stopFlag) { - scanForDamage(); - } - }, 30000); + if (!ready) { + Utils.addDebugLog('Failed to load required tiles for scanning', 'error'); + if (state.autonomousMode) { + Utils.addDebugLog('Autonomous mode: will retry scan in 30 seconds', 'warning'); + setTimeout(() => { + if (state.autoRepairEnabled && !state.stopFlag) { + scanForDamage(); + } + }, 30000); + } + return []; } - return []; + } else { + Utils.addDebugLog('Using restored data - skipping tile wait for damage scan', 'info'); } Utils.addDebugLog(`Scanning ${width}x${height} image for damage (transparent detection: ${state.paintTransparentPixels})...`, 'info'); diff --git a/Extension/scripts/image-processor.js b/Extension/scripts/image-processor.js new file mode 100644 index 0000000..f25e22f --- /dev/null +++ b/Extension/scripts/image-processor.js @@ -0,0 +1,741 @@ +// ==UserScript== +// @name WPlace Image Processor +// @namespace http://tampermonkey.net/ +// @version 2025-09-16.1 +// @description Image processing and color management for WPlace AutoBot +// @author Wbot +// @match https://wplace.live/* +// @grant none +// ==/UserScript== + +/** + * ImageProcessor - Handles image loading, processing, color conversion, and dithering for WPlace AutoBot + * Extracted from Auto-Image.js for better modularity and reusability + */ +class ImageProcessor { + constructor(imageSrc = null) { + this.imageSrc = imageSrc; + this.img = null; + this.canvas = null; + this.ctx = null; + + // Dithering buffers + this._ditherWorkBuf = null; + this._ditherEligibleBuf = null; + + // Color cache for performance optimization + this._colorCache = new Map(); + this._labCache = new Map(); + + // Configuration constants + this.TRANSPARENCY_THRESHOLD = 128; + this.WHITE_THRESHOLD = 230; + this.COLOR_CACHE_LIMIT = 15000; + } + + /** + * Load image from source + * @returns {Promise} + */ + async load() { + if (!this.imageSrc) { + throw new Error('No image source provided'); + } + + return new Promise((resolve, reject) => { + this.img = new Image(); + this.img.crossOrigin = 'anonymous'; + this.img.onload = () => { + this.canvas = document.createElement('canvas'); + this.ctx = this.canvas.getContext('2d'); + this.canvas.width = this.img.width; + this.canvas.height = this.img.height; + this.ctx.drawImage(this.img, 0, 0); + resolve(); + }; + this.img.onerror = reject; + this.img.src = this.imageSrc; + }); + } + + /** + * Get image dimensions + * @returns {{width: number, height: number}} + */ + getDimensions() { + if (!this.canvas) { + throw new Error('Image not loaded. Call load() first.'); + } + return { + width: this.canvas.width, + height: this.canvas.height, + }; + } + + /** + * Get pixel data from the image + * @returns {Uint8ClampedArray} RGBA pixel data + */ + getPixelData() { + if (!this.ctx) { + throw new Error('Image not loaded. Call load() first.'); + } + return this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height).data; + } + + /** + * Resize image to new dimensions + * @param {number} newWidth - Target width + * @param {number} newHeight - Target height + * @returns {Uint8ClampedArray} Resized image data + */ + resize(newWidth, newHeight) { + if (!this.canvas || !this.ctx) { + throw new Error('Image not loaded. Call load() first.'); + } + + const tempCanvas = document.createElement('canvas'); + const tempCtx = tempCanvas.getContext('2d'); + + tempCanvas.width = newWidth; + tempCanvas.height = newHeight; + + tempCtx.imageSmoothingEnabled = false; + tempCtx.drawImage(this.canvas, 0, 0, newWidth, newHeight); + + this.canvas.width = newWidth; + this.canvas.height = newHeight; + this.ctx.imageSmoothingEnabled = false; + this.ctx.drawImage(tempCanvas, 0, 0); + + return this.ctx.getImageData(0, 0, newWidth, newHeight).data; + } + + /** + * Generate preview with resizing + * @param {number} width - Preview width + * @param {number} height - Preview height + * @returns {string} Base64 data URL of the preview + */ + generatePreview(width, height) { + if (!this.canvas) { + throw new Error('Image not loaded. Call load() first.'); + } + + const previewCanvas = document.createElement('canvas'); + const previewCtx = previewCanvas.getContext('2d'); + previewCanvas.width = width; + previewCanvas.height = height; + + previewCtx.imageSmoothingEnabled = false; + previewCtx.drawImage(this.canvas, 0, 0, width, height); + + return previewCanvas.toDataURL(); + } + + // ============================================= + // COLOR PROCESSING METHODS + // ============================================= + + /** + * Convert RGB to LAB color space + * @param {number} r - Red value (0-255) + * @param {number} g - Green value (0-255) + * @param {number} b - Blue value (0-255) + * @returns {number[]} LAB values [L, a, b] + * @private + */ + _rgbToLab(r, g, b) { + // Normalize RGB values + let x = r / 255.0; + let y = g / 255.0; + let z = b / 255.0; + + // Apply gamma correction + x = x > 0.04045 ? Math.pow((x + 0.055) / 1.055, 2.4) : x / 12.92; + y = y > 0.04045 ? Math.pow((y + 0.055) / 1.055, 2.4) : y / 12.92; + z = z > 0.04045 ? Math.pow((z + 0.055) / 1.055, 2.4) : z / 12.92; + + // Convert to XYZ using sRGB matrix + let X = x * 0.4124564 + y * 0.3575761 + z * 0.1804375; + let Y = x * 0.2126729 + y * 0.7151522 + z * 0.0721750; + let Z = x * 0.0193339 + y * 0.1191920 + z * 0.9503041; + + // Normalize for D65 illuminant + X /= 0.95047; + Y /= 1.00000; + Z /= 1.08883; + + // Convert to LAB + X = X > 0.008856 ? Math.pow(X, 1/3) : (7.787 * X + 16/116); + Y = Y > 0.008856 ? Math.pow(Y, 1/3) : (7.787 * Y + 16/116); + Z = Z > 0.008856 ? Math.pow(Z, 1/3) : (7.787 * Z + 16/116); + + const L = 116 * Y - 16; + const a = 500 * (X - Y); + const b2 = 200 * (Y - Z); + + return [L, a, b2]; + } + + /** + * Get LAB values with caching + * @param {number} r - Red value + * @param {number} g - Green value + * @param {number} b - Blue value + * @returns {number[]} Cached LAB values + * @private + */ + _getLab(r, g, b) { + const key = (r << 16) | (g << 8) | b; + let v = this._labCache.get(key); + if (!v) { + v = this._rgbToLab(r, g, b); + this._labCache.set(key, v); + } + return v; + } + + /** + * Find closest color in palette using specified algorithm + * @param {number} r - Red value + * @param {number} g - Green value + * @param {number} b - Blue value + * @param {Array} palette - Array of RGB arrays [[r,g,b], ...] + * @param {string} algorithm - 'legacy' or 'lab' + * @param {Object} options - Additional options for color matching + * @returns {number[]} Closest RGB color [r, g, b] + */ + findClosestPaletteColor(r, g, b, palette, algorithm = 'lab', options = {}) { + if (!palette || palette.length === 0) { + return [0, 0, 0]; + } + + const { enableChromaPenalty = false, chromaPenaltyWeight = 0.15 } = options; + + if (algorithm === 'legacy') { + let menorDist = Infinity; + let cor = [0, 0, 0]; + for (let i = 0; i < palette.length; i++) { + const [pr, pg, pb] = palette[i]; + const rmean = (pr + r) / 2; + const rdiff = pr - r; + const gdiff = pg - g; + const bdiff = pb - b; + const dist = Math.sqrt( + (((512 + rmean) * rdiff * rdiff) >> 8) + + 4 * gdiff * gdiff + + (((767 - rmean) * bdiff * bdiff) >> 8) + ); + if (dist < menorDist) { + menorDist = dist; + cor = [pr, pg, pb]; + } + } + return cor; + } + + // LAB algorithm + const [Lt, at, bt] = this._getLab(r, g, b); + const targetChroma = Math.sqrt(at * at + bt * bt); + let best = null; + let bestDist = Infinity; + + for (let i = 0; i < palette.length; i++) { + const [pr, pg, pb] = palette[i]; + const [Lp, ap, bp] = this._getLab(pr, pg, pb); + const dL = Lt - Lp; + const da = at - ap; + const db = bt - bp; + let dist = dL * dL + da * da + db * db; + + if (enableChromaPenalty && targetChroma > 20) { + const candChroma = Math.sqrt(ap * ap + bp * bp); + if (candChroma < targetChroma) { + const chromaDiff = targetChroma - candChroma; + dist += chromaDiff * chromaDiff * chromaPenaltyWeight; + } + } + + if (dist < bestDist) { + bestDist = dist; + best = palette[i]; + if (bestDist === 0) break; + } + } + + return best || [0, 0, 0]; + } + + /** + * Check if a pixel is considered white based on threshold + * @param {number} r - Red value + * @param {number} g - Green value + * @param {number} b - Blue value + * @param {number} threshold - White threshold (default: 230) + * @returns {boolean} True if pixel is white + */ + isWhitePixel(r, g, b, threshold = this.WHITE_THRESHOLD) { + return r >= threshold && g >= threshold && b >= threshold; + } + + /** + * Resolve target RGB to closest available color with caching + * @param {number[]} targetRgb - Target RGB array [r, g, b] + * @param {Array} availableColors - Available colors with id and rgb properties + * @param {Object} options - Matching options + * @returns {Object} {id: number|null, rgb: number[]} + */ + resolveColor(targetRgb, availableColors, options = {}) { + const { + exactMatch = false, + algorithm = 'lab', + enableChromaPenalty = false, + chromaPenaltyWeight = 0.15, + whiteThreshold = this.WHITE_THRESHOLD + } = options; + + if (!availableColors || availableColors.length === 0) { + return { id: null, rgb: targetRgb }; + } + + const cacheKey = `${targetRgb[0]},${targetRgb[1]},${targetRgb[2]}|${algorithm}|${enableChromaPenalty ? 'c' : 'nc'}|${chromaPenaltyWeight}|${exactMatch ? 'exact' : 'closest'}`; + + if (this._colorCache.has(cacheKey)) { + return this._colorCache.get(cacheKey); + } + + // Check for exact match + if (exactMatch) { + const match = availableColors.find( + (c) => c.rgb[0] === targetRgb[0] && c.rgb[1] === targetRgb[1] && c.rgb[2] === targetRgb[2] + ); + const result = match ? { id: match.id, rgb: [...match.rgb] } : { id: null, rgb: targetRgb }; + this._colorCache.set(cacheKey, result); + return result; + } + + // Check for white pixel matching + if ( + targetRgb[0] >= whiteThreshold && + targetRgb[1] >= whiteThreshold && + targetRgb[2] >= whiteThreshold + ) { + const whiteEntry = availableColors.find( + (c) => c.rgb[0] >= whiteThreshold && c.rgb[1] >= whiteThreshold && c.rgb[2] >= whiteThreshold + ); + if (whiteEntry) { + const result = { id: whiteEntry.id, rgb: [...whiteEntry.rgb] }; + this._colorCache.set(cacheKey, result); + return result; + } + } + + // Find nearest color + let bestId = availableColors[0].id; + let bestRgb = [...availableColors[0].rgb]; + let bestScore = Infinity; + + if (algorithm === 'legacy') { + for (let i = 0; i < availableColors.length; i++) { + const c = availableColors[i]; + const [r, g, b] = c.rgb; + const rmean = (r + targetRgb[0]) / 2; + const rdiff = r - targetRgb[0]; + const gdiff = g - targetRgb[1]; + const bdiff = b - targetRgb[2]; + const dist = Math.sqrt( + (((512 + rmean) * rdiff * rdiff) >> 8) + + 4 * gdiff * gdiff + + (((767 - rmean) * bdiff * bdiff) >> 8) + ); + if (dist < bestScore) { + bestScore = dist; + bestId = c.id; + bestRgb = [...c.rgb]; + if (dist === 0) break; + } + } + } else { + const [Lt, at, bt] = this._getLab(targetRgb[0], targetRgb[1], targetRgb[2]); + const targetChroma = Math.sqrt(at * at + bt * bt); + const penaltyWeight = enableChromaPenalty ? chromaPenaltyWeight : 0; + + for (let i = 0; i < availableColors.length; i++) { + const c = availableColors[i]; + const [r, g, b] = c.rgb; + const [L2, a2, b2] = this._getLab(r, g, b); + const dL = Lt - L2; + const da = at - a2; + const db = bt - b2; + let dist = dL * dL + da * da + db * db; + + if (penaltyWeight > 0 && targetChroma > 20) { + const candChroma = Math.sqrt(a2 * a2 + b2 * b2); + if (candChroma < targetChroma) { + const cd = targetChroma - candChroma; + dist += cd * cd * penaltyWeight; + } + } + + if (dist < bestScore) { + bestScore = dist; + bestId = c.id; + bestRgb = [...c.rgb]; + if (dist === 0) break; + } + } + } + + const result = { id: bestId, rgb: bestRgb }; + this._colorCache.set(cacheKey, result); + + // Limit cache size + if (this._colorCache.size > this.COLOR_CACHE_LIMIT) { + const firstKey = this._colorCache.keys().next().value; + this._colorCache.delete(firstKey); + } + + return result; + } + + // ============================================= + // DITHERING METHODS (Floyd-Steinberg) + // ============================================= + + /** + * Ensure dithering buffers are properly sized + * @param {number} n - Number of pixels + * @returns {Object} {work: Float32Array, eligible: Uint8Array} + * @private + */ + _ensureDitherBuffers(n) { + if (!this._ditherWorkBuf || this._ditherWorkBuf.length !== n * 3) { + this._ditherWorkBuf = new Float32Array(n * 3); + } + if (!this._ditherEligibleBuf || this._ditherEligibleBuf.length !== n) { + this._ditherEligibleBuf = new Uint8Array(n); + } + return { work: this._ditherWorkBuf, eligible: this._ditherEligibleBuf }; + } + + /** + * Apply Floyd-Steinberg dithering to image data + * @param {Uint8ClampedArray} imageData - RGBA image data + * @param {number} width - Image width + * @param {number} height - Image height + * @param {Array} palette - Color palette for dithering + * @param {Object} options - Dithering options + * @returns {Object} {data: Uint8ClampedArray, totalValidPixels: number} + */ + applyFloydSteinbergDithering(imageData, width, height, palette, options = {}) { + const { + paintTransparentPixels = false, + paintWhitePixels = true, + transparencyThreshold = this.TRANSPARENCY_THRESHOLD, + whiteThreshold = this.WHITE_THRESHOLD, + algorithm = 'lab', + enableChromaPenalty = false, + chromaPenaltyWeight = 0.15, + mask = null + } = options; + + const data = new Uint8ClampedArray(imageData); + const n = width * height; + const { work, eligible } = this._ensureDitherBuffers(n); + let totalValidPixels = 0; + + // Initialize working buffers + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const idx = y * width + x; + const i4 = idx * 4; + const r = data[i4]; + const g = data[i4 + 1]; + const b = data[i4 + 2]; + const a = data[i4 + 3]; + const masked = mask && mask[idx]; + + const isEligible = + !masked && + (paintTransparentPixels || a >= transparencyThreshold) && + (paintWhitePixels || !this.isWhitePixel(r, g, b, whiteThreshold)); + + eligible[idx] = isEligible ? 1 : 0; + work[idx * 3] = r; + work[idx * 3 + 1] = g; + work[idx * 3 + 2] = b; + + if (!isEligible) { + data[i4 + 3] = 0; // Make ineligible pixels transparent + } + } + } + + // Error diffusion function + const diffuse = (nx, ny, er, eg, eb, factor) => { + if (nx < 0 || nx >= width || ny < 0 || ny >= height) return; + const nidx = ny * width + nx; + if (!eligible[nidx]) return; + const base = nidx * 3; + work[base] = Math.min(255, Math.max(0, work[base] + er * factor)); + work[base + 1] = Math.min(255, Math.max(0, work[base + 1] + eg * factor)); + work[base + 2] = Math.min(255, Math.max(0, work[base + 2] + eb * factor)); + }; + + // Apply Floyd-Steinberg dithering + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const idx = y * width + x; + if (!eligible[idx]) continue; + + const base = idx * 3; + const r0 = work[base]; + const g0 = work[base + 1]; + const b0 = work[base + 2]; + + const [nr, ng, nb] = this.findClosestPaletteColor( + r0, g0, b0, palette, algorithm, { enableChromaPenalty, chromaPenaltyWeight } + ); + + const i4 = idx * 4; + data[i4] = nr; + data[i4 + 1] = ng; + data[i4 + 2] = nb; + data[i4 + 3] = 255; + totalValidPixels++; + + // Calculate and diffuse error + const er = r0 - nr; + const eg = g0 - ng; + const eb = b0 - nb; + + diffuse(x + 1, y, er, eg, eb, 7 / 16); + diffuse(x - 1, y + 1, er, eg, eb, 3 / 16); + diffuse(x, y + 1, er, eg, eb, 5 / 16); + diffuse(x + 1, y + 1, er, eg, eb, 1 / 16); + } + } + + return { data, totalValidPixels }; + } + + /** + * Apply simple color quantization without dithering + * @param {Uint8ClampedArray} imageData - RGBA image data + * @param {number} width - Image width + * @param {number} height - Image height + * @param {Array} palette - Color palette for quantization + * @param {Object} options - Quantization options + * @returns {Object} {data: Uint8ClampedArray, totalValidPixels: number} + */ + applySimpleQuantization(imageData, width, height, palette, options = {}) { + const { + paintTransparentPixels = false, + paintWhitePixels = true, + transparencyThreshold = this.TRANSPARENCY_THRESHOLD, + whiteThreshold = this.WHITE_THRESHOLD, + algorithm = 'lab', + enableChromaPenalty = false, + chromaPenaltyWeight = 0.15 + } = options; + + const data = new Uint8ClampedArray(imageData); + let totalValidPixels = 0; + + for (let i = 0; i < data.length; i += 4) { + const r = data[i]; + const g = data[i + 1]; + const b = data[i + 2]; + const a = data[i + 3]; + + const isEligible = + (paintTransparentPixels || a >= transparencyThreshold) && + (paintWhitePixels || !this.isWhitePixel(r, g, b, whiteThreshold)); + + if (!isEligible) { + data[i + 3] = 0; // Make ineligible pixels transparent + continue; + } + + const [nr, ng, nb] = this.findClosestPaletteColor( + r, g, b, palette, algorithm, { enableChromaPenalty, chromaPenaltyWeight } + ); + + data[i] = nr; + data[i + 1] = ng; + data[i + 2] = nb; + data[i + 3] = 255; + totalValidPixels++; + } + + return { data, totalValidPixels }; + } + + // ============================================= + // UTILITY METHODS + // ============================================= + + /** + * Extract available colors from DOM elements + * @returns {Array|null} Array of color objects with id and rgb properties + */ + extractAvailableColors() { + const colorElements = document.querySelectorAll('.color-option, [data-color-id]'); + if (colorElements.length === 0) return null; + + const colors = []; + colorElements.forEach((element) => { + const colorId = element.dataset.colorId || element.getAttribute('data-color-id'); + const computedStyle = window.getComputedStyle(element); + const backgroundColor = computedStyle.backgroundColor; + + if (backgroundColor && colorId) { + const rgbMatch = backgroundColor.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + if (rgbMatch) { + colors.push({ + id: parseInt(colorId), + rgb: [parseInt(rgbMatch[1]), parseInt(rgbMatch[2]), parseInt(rgbMatch[3])] + }); + } + } + }); + + return colors.length > 0 ? colors : null; + } + + /** + * Create file uploader for images + * @returns {Promise} Promise resolving to image data URL + */ + createImageUploader() { + return new Promise((resolve) => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = 'image/png,image/jpeg'; + input.onchange = () => { + if (input.files && input.files[0]) { + const fr = new FileReader(); + fr.onload = () => resolve(fr.result); + fr.readAsDataURL(input.files[0]); + } else { + resolve(null); + } + }; + input.click(); + }); + } + + /** + * Extract available colors from DOM palette + * @param {Object} colorMap - The color map object (optional, will use window.CONFIG if not provided) + * @returns {Array|null} Array of available colors or null if none found + */ + extractAvailableColors(colorMap = null) { + const colorElements = document.querySelectorAll('.tooltip button[id^="color-"]'); + if (colorElements.length === 0) { + console.log('โŒ No color elements found on page'); + return null; + } + + // Use provided colorMap or fallback to window.CONFIG + const effectiveColorMap = colorMap || (window.CONFIG?.COLOR_MAP); + + // Separate available and unavailable colors + const availableColors = []; + const unavailableColors = []; + + Array.from(colorElements).forEach((el) => { + const id = Number.parseInt(el.id.replace('color-', '')); + if (id === 0) return; // Skip transparent color + + const rgbStr = el.style.backgroundColor.match(/\d+/g); + if (!rgbStr || rgbStr.length < 3) { + console.warn(`Skipping color element ${el.id} โ€” cannot parse RGB`); + return; + } + const rgb = rgbStr.map(Number); + + // Find color name from COLOR_MAP + let name = `Unknown Color ${id}`; + if (effectiveColorMap) { + const colorInfo = Object.values(effectiveColorMap).find((color) => color.id === id); + name = colorInfo ? colorInfo.name : name; + } + + const colorData = { id, name, rgb }; + + // Check if color is available (no SVG overlay means available) + if (!el.querySelector('svg')) { + availableColors.push(colorData); + } else { + unavailableColors.push(colorData); + } + }); + + // Console log detailed color information + console.log('=== CAPTURED COLORS STATUS ==='); + console.log(`Total available colors: ${availableColors.length}`); + console.log(`Total unavailable colors: ${unavailableColors.length}`); + console.log(`Total colors scanned: ${availableColors.length + unavailableColors.length}`); + + if (availableColors.length > 0) { + console.log('\n--- AVAILABLE COLORS ---'); + availableColors.forEach((color, index) => { + console.log( + `${index + 1 + }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]})` + ); + }); + } + + if (unavailableColors.length > 0) { + console.log('\n--- UNAVAILABLE COLORS ---'); + unavailableColors.forEach((color, index) => { + console.log( + `${index + 1 + }. ID: ${color.id}, Name: "${color.name}", RGB: (${color.rgb[0]}, ${color.rgb[1]}, ${color.rgb[2]}) [LOCKED]` + ); + }); + } + + console.log('=== END COLOR STATUS ==='); + + return availableColors; + } + + /** + * Clear all caches to free memory + */ + clearCaches() { + this._colorCache.clear(); + this._labCache.clear(); + this._ditherWorkBuf = null; + this._ditherEligibleBuf = null; + } + + /** + * Clean up resources + */ + cleanup() { + this.clearCaches(); + if (this.canvas) { + this.canvas.width = 0; + this.canvas.height = 0; + } + this.img = null; + this.canvas = null; + this.ctx = null; + } +} + +// Create global instance +window.WPlaceImageProcessor = ImageProcessor; + +// Create global instance for Auto-Image.js compatibility +window.globalImageProcessor = new ImageProcessor(); + +// Legacy compatibility - expose key methods globally for backward compatibility +window.ImageProcessor = ImageProcessor; + +console.log('โœ… WPlace Image Processor loaded and ready'); \ No newline at end of file diff --git a/Extension/scripts/overlay-manager.js b/Extension/scripts/overlay-manager.js new file mode 100644 index 0000000..c7f3fa5 --- /dev/null +++ b/Extension/scripts/overlay-manager.js @@ -0,0 +1,837 @@ +// ==UserScript== +// @name WPlace Overlay Manager +// @namespace http://tampermonkey.net/ +// @version 2025-09-16.1 +// @description Overlay management for WPlace AutoBot - handles tile processing, chunking, and rendering +// @author Wbot +// @match https://wplace.live/* +// @grant none +// ==/UserScript== + +/** + * OverlayManager - Handles overlay processing, tile chunking, and canvas operations for WPlace AutoBot + * Extracted from Auto-Image.js for better modularity and reusability + */ +class OverlayManager { + constructor() { + this.isEnabled = false; + this.startCoords = null; // { region: {x, y}, pixel: {x, y} } + this.imageBitmap = null; + this.chunkedTiles = new Map(); // Map<"tileX,tileY", ImageBitmap> + this.originalTiles = new Map(); // Map<"tileX,ttileY", ImageBitmap> store latest original tile bitmaps + this.originalTilesData = new Map(); // Map<"tileX,tileY", {w,h,data:Uint8ClampedArray}> cache full ImageData for fast pixel reads + this.tileSize = 1000; + this.processPromise = null; // Track ongoing processing + this.lastProcessedHash = null; // Cache invalidation + this.workerPool = null; // Web worker pool for heavy processing + this.neededTilesForSave = null; // Set of tiles needed for save file restoration + } + + /** + * Toggle overlay enabled state + * @returns {boolean} New enabled state + */ + toggle() { + this.isEnabled = !this.isEnabled; + console.log(`Overlay ${this.isEnabled ? 'enabled' : 'disabled'}.`); + return this.isEnabled; + } + + /** + * Enable overlay + */ + enable() { + this.isEnabled = true; + + // Force canvas refresh if script was loaded manually (not on startup) + // This ensures overlay works even when tiles are already cached + this._triggerCanvasRefreshIfNeeded(); + + // Also try direct canvas overlay approach as backup + this._attemptDirectCanvasOverlay(); + } + + /** + * Attempt to directly overlay on the existing canvas + * @private + */ + _attemptDirectCanvasOverlay() { + // Only try this if we have overlay data and it's been more than 5 seconds since page load + const timeSinceLoad = Date.now() - (window.performance?.timing?.navigationStart || 0); + + if (timeSinceLoad > 5000 && this.chunkedTiles.size > 0) { + setTimeout(() => { + this._drawDirectOverlay(); + }, 500); + } + } + + /** + * Draw overlay directly on the main canvas + * @private + */ + _drawDirectOverlay() { + try { + const canvas = document.querySelector('canvas'); + if (!canvas) { + return; + } + + const ctx = canvas.getContext('2d'); + if (!ctx) { + return; + } + + // Store original composite operation + const originalComposite = ctx.globalCompositeOperation; + const originalAlpha = ctx.globalAlpha; + + // Set overlay blending + ctx.globalCompositeOperation = 'source-over'; + ctx.globalAlpha = window.state?.overlayOpacity || 0.6; + + // Draw overlay chunks directly on canvas + this.chunkedTiles.forEach((bitmap, tileKey) => { + const [tileX, tileY] = tileKey.split(',').map(Number); + + // Convert tile coordinates to canvas coordinates + // This assumes WPlace uses 1000px tiles + const canvasX = tileX * 1000; + const canvasY = tileY * 1000; + + try { + ctx.drawImage(bitmap, canvasX, canvasY); + } catch (error) { + // Ignore individual tile draw errors + } + }); + + // Restore original settings + ctx.globalCompositeOperation = originalComposite; + ctx.globalAlpha = originalAlpha; + + } catch (error) { + // Ignore direct overlay errors silently + } + } + + /** + * Trigger canvas refresh for manual script execution + * @private + */ + _triggerCanvasRefreshIfNeeded() { + // Only trigger refresh if we have overlay data and it's been more than 5 seconds since page load + // (indicates manual execution rather than startup execution) + const timeSinceLoad = Date.now() - (window.performance?.timing?.navigationStart || 0); + + if (timeSinceLoad > 5000 && this.chunkedTiles.size > 0) { + // Try multiple methods to refresh the canvas tiles + setTimeout(() => { + this._attemptCanvasRefresh(); + }, 100); + } + } + + /** + * Attempt to refresh canvas tiles using various methods + * @private + */ + _attemptCanvasRefresh() { + try { + // Method 1: Clear browser cache for tile URLs + if ('caches' in window) { + caches.keys().then(cacheNames => { + cacheNames.forEach(cacheName => { + caches.delete(cacheName); + }); + }); + } + + // Method 2: Force browser to bypass cache by adding cache-busting parameter + // We need to intercept and modify tile requests to add cache-busting + const originalFetch = window.fetch; + let fetchOverrideActive = true; + + window.fetch = async function(...args) { + const url = args[0] instanceof Request ? args[0].url : args[0]; + + if (fetchOverrideActive && typeof url === 'string' && url.match(/\/\d+\/\d+\.png/)) { + // Add cache-busting parameter + const separator = url.includes('?') ? '&' : '?'; + const cacheBustUrl = `${url}${separator}_cb=${Date.now()}`; + + if (args[0] instanceof Request) { + args[0] = new Request(cacheBustUrl, args[0]); + } else { + args[0] = cacheBustUrl; + } + } + + return originalFetch.apply(this, args); + }; + + // Disable cache-busting after 10 seconds + setTimeout(() => { + fetchOverrideActive = false; + }, 10000); + + // Method 3: Try to trigger a slight zoom change + const canvas = document.querySelector('canvas'); + if (canvas) { + // Dispatch a wheel event to trigger tile refresh + const wheelEvent = new WheelEvent('wheel', { + deltaY: 1, + deltaMode: 0, + bubbles: true, + cancelable: true, + view: window + }); + + canvas.dispatchEvent(wheelEvent); + + // Immediately counter it + setTimeout(() => { + const counterEvent = new WheelEvent('wheel', { + deltaY: -1, + deltaMode: 0, + bubbles: true, + cancelable: true, + view: window + }); + canvas.dispatchEvent(counterEvent); + }, 50); + } + + // Method 4: Try to trigger resize event + window.dispatchEvent(new Event('resize')); + + } catch (error) { + console.warn('โš ๏ธ Could not trigger canvas refresh:', error); + } + } + + /** + * Disable overlay + */ + disable() { + this.isEnabled = false; + } + + /** + * Clear all overlay data and disable + */ + clear() { + this.disable(); + this.imageBitmap = null; + this.chunkedTiles.clear(); + this.originalTiles.clear(); + this.originalTilesData.clear(); + this.lastProcessedHash = null; + if (this.processPromise) { + this.processPromise = null; + } + } + + /** + * Set the image bitmap for overlay processing + * @param {ImageBitmap} imageBitmap - The image to use for overlay + */ + async setImage(imageBitmap) { + this.imageBitmap = imageBitmap; + this.lastProcessedHash = null; // Invalidate cache + if (this.imageBitmap && this.startCoords) { + await this.processImageIntoChunks(); + } + } + + /** + * Set the position for overlay rendering + * @param {Object} startPosition - Starting pixel position {x, y} + * @param {Object} region - Region coordinates {x, y} + */ + async setPosition(startPosition, region) { + if (!startPosition || !region) { + this.startCoords = null; + this.chunkedTiles.clear(); + this.lastProcessedHash = null; + return; + } + this.startCoords = { region, pixel: startPosition }; + this.lastProcessedHash = null; // Invalidate cache + if (this.imageBitmap) { + await this.processImageIntoChunks(); + } + } + + /** + * Generate hash for cache invalidation + * @returns {string|null} Hash string or null if no data + * @private + */ + _generateProcessHash() { + if (!this.imageBitmap || !this.startCoords) return null; + const { width, height } = this.imageBitmap; + const { x: px, y: py } = this.startCoords.pixel; + const { x: rx, y: ry } = this.startCoords.region; + + // Access global state for overlay settings + const blueMarbleEnabled = window.state?.blueMarbleEnabled || false; + const overlayOpacity = window.state?.overlayOpacity || 0.6; + + return `${width}x${height}_${px},${py}_${rx},${ry}_${blueMarbleEnabled}_${overlayOpacity}`; + } + + /** + * Process image into chunks with caching and batch processing + */ + async processImageIntoChunks() { + if (!this.imageBitmap || !this.startCoords) { + console.warn('๐Ÿšซ Cannot process chunks - missing imageBitmap or startCoords'); + return; + } + + console.log('๐Ÿ”„ Processing image into chunks...', { + imageSize: `${this.imageBitmap.width}x${this.imageBitmap.height}`, + startCoords: this.startCoords + }); + + // Check if we're already processing to avoid duplicate work + if (this.processPromise) { + console.log('โณ Already processing chunks - waiting...'); + return this.processPromise; + } + + // Check cache validity + const currentHash = this._generateProcessHash(); + if (this.lastProcessedHash === currentHash && this.chunkedTiles.size > 0) { + // Using cached overlay chunks + return; + } + + // Start processing + console.log('๐Ÿš€ Starting new chunk processing...'); + this.processPromise = this._doProcessImageIntoChunks(); + try { + await this.processPromise; + this.lastProcessedHash = currentHash; + console.log(`โœ… Chunk processing complete - ${this.chunkedTiles.size} tiles created`); + } finally { + this.processPromise = null; + } + } + + /** + * Internal method to process image into chunks + * @private + */ + async _doProcessImageIntoChunks() { + const startTime = performance.now(); + this.chunkedTiles.clear(); + + const { width: imageWidth, height: imageHeight } = this.imageBitmap; + const { x: startPixelX, y: startPixelY } = this.startCoords.pixel; + const { x: startRegionX, y: startRegionY } = this.startCoords.region; + + const { startTileX, startTileY, endTileX, endTileY } = this.calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + imageWidth, + imageHeight, + this.tileSize + ); + + const totalTiles = (endTileX - startTileX + 1) * (endTileY - startTileY + 1); + console.log(`๐Ÿ”„ Processing ${totalTiles} overlay tiles...`); + + // Process tiles in batches to avoid blocking the main thread + const batchSize = 4; // Process 4 tiles at a time + const tilesToProcess = []; + + for (let ty = startTileY; ty <= endTileY; ty++) { + for (let tx = startTileX; tx <= endTileX; tx++) { + tilesToProcess.push({ tx, ty }); + } + } + + // Process tiles in batches with yielding + for (let i = 0; i < tilesToProcess.length; i += batchSize) { + const batch = tilesToProcess.slice(i, i + batchSize); + + await Promise.all( + batch.map(async ({ tx, ty }) => { + const tileKey = `${tx},${ty}`; + const chunkBitmap = await this._processTile( + tx, + ty, + imageWidth, + imageHeight, + startPixelX, + startPixelY, + startRegionX, + startRegionY + ); + if (chunkBitmap) { + this.chunkedTiles.set(tileKey, chunkBitmap); + } + }) + ); + + // Yield control to prevent blocking + if (i + batchSize < tilesToProcess.length) { + await new Promise((resolve) => setTimeout(resolve, 0)); + } + } + + const processingTime = performance.now() - startTime; + console.log( + `โœ… Overlay processed ${this.chunkedTiles.size} tiles in ${Math.round(processingTime)}ms` + ); + } + + /** + * Process a single tile + * @param {number} tx - Tile X coordinate + * @param {number} ty - Tile Y coordinate + * @param {number} imageWidth - Image width + * @param {number} imageHeight - Image height + * @param {number} startPixelX - Starting pixel X + * @param {number} startPixelY - Starting pixel Y + * @param {number} startRegionX - Starting region X + * @param {number} startRegionY - Starting region Y + * @returns {Promise} Processed tile bitmap + * @private + */ + async _processTile( + tx, + ty, + imageWidth, + imageHeight, + startPixelX, + startPixelY, + startRegionX, + startRegionY + ) { + const tileKey = `${tx},${ty}`; + + // Calculate the portion of the image that overlaps with this tile + const imgStartX = (tx - startRegionX) * this.tileSize - startPixelX; + const imgStartY = (ty - startRegionY) * this.tileSize - startPixelY; + + // Crop coordinates within the source image + const sX = Math.max(0, imgStartX); + const sY = Math.max(0, imgStartY); + const sW = Math.min(imageWidth - sX, this.tileSize - (sX - imgStartX)); + const sH = Math.min(imageHeight - sY, this.tileSize - (sY - imgStartY)); + + if (sW <= 0 || sH <= 0) return null; + + // Destination coordinates on the new chunk canvas + const dX = Math.max(0, -imgStartX); + const dY = Math.max(0, -imgStartY); + + const chunkCanvas = new OffscreenCanvas(this.tileSize, this.tileSize); + const chunkCtx = chunkCanvas.getContext('2d'); + chunkCtx.imageSmoothingEnabled = false; + + chunkCtx.drawImage(this.imageBitmap, sX, sY, sW, sH, dX, dY, sW, sH); + + // Blue marble effect with faster pixel manipulation + const blueMarbleEnabled = window.state?.blueMarbleEnabled || false; + if (blueMarbleEnabled) { + const imageData = chunkCtx.getImageData(dX, dY, sW, sH); + const data = imageData.data; + + // Faster pixel manipulation using typed arrays + for (let i = 0; i < data.length; i += 4) { + const pixelIndex = i / 4; + const pixelY = Math.floor(pixelIndex / sW); + const pixelX = pixelIndex % sW; + + if ((pixelX + pixelY) % 2 === 0 && data[i + 3] > 0) { + data[i + 3] = 0; // Set alpha to 0 + } + } + + chunkCtx.putImageData(imageData, dX, dY); + } + + return await chunkCanvas.transferToImageBitmap(); + } + + /** + * Process and respond to tile requests with overlay compositing + * @param {Object} eventData - Event data containing endpoint, blobID, and blobData + */ + async processAndRespondToTileRequest(eventData) { + const { endpoint, blobID, blobData } = eventData; + + let finalBlob = blobData; + + if (this.isEnabled && this.chunkedTiles.size > 0) { + const tileMatch = endpoint.match(/(\d+)\/(\d+)\.png/); + if (tileMatch) { + const tileX = parseInt(tileMatch[1], 10); + const tileY = parseInt(tileMatch[2], 10); + const tileKey = `${tileX},${tileY}`; + + const chunkBitmap = this.chunkedTiles.get(tileKey); + // Also store the original tile bitmap for later pixel color checks + try { + const originalBitmap = await createImageBitmap(blobData); + this.originalTiles.set(tileKey, originalBitmap); + // Cache full ImageData for fast pixel access (avoid repeated drawImage/getImageData) + try { + let canvas, ctx; + if (typeof OffscreenCanvas !== 'undefined') { + canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); + ctx = canvas.getContext('2d'); + } else { + canvas = document.createElement('canvas'); + canvas.width = originalBitmap.width; + canvas.height = originalBitmap.height; + ctx = canvas.getContext('2d'); + } + ctx.imageSmoothingEnabled = false; + ctx.drawImage(originalBitmap, 0, 0); + const imgData = ctx.getImageData(0, 0, originalBitmap.width, originalBitmap.height); + // Store typed array copy to avoid retaining large canvas + this.originalTilesData.set(tileKey, { + w: originalBitmap.width, + h: originalBitmap.height, + data: new Uint8ClampedArray(imgData.data), + }); + } catch (e) { + // If ImageData extraction fails, still keep the bitmap as fallback + console.warn('OverlayManager: could not cache ImageData for', tileKey, e); + } + } catch (e) { + console.warn('OverlayManager: could not create original bitmap for', tileKey, e); + } + + if (chunkBitmap) { + try { + // Use faster compositing for better performance + finalBlob = await this._compositeTileOptimized(blobData, chunkBitmap); + } catch (e) { + console.error('Error compositing overlay:', e); + // Fallback to original tile on error + finalBlob = blobData; + } + } + } + } + + // Send the (possibly modified) blob back to the injected script + window.postMessage( + { + source: 'auto-image-overlay', + blobID: blobID, + blobData: finalBlob, + }, + '*' + ); + } + + /** + * Get pixel color from a tile + * @param {number} tileX - Tile X coordinate + * @param {number} tileY - Tile Y coordinate + * @param {number} pixelX - Pixel X within tile + * @param {number} pixelY - Pixel Y within tile + * @returns {Promise} [r,g,b,a] or null + */ + async getTilePixelColor(tileX, tileY, pixelX, pixelY) { + const tileKey = `${tileX},${tileY}`; + + // Get transparency threshold from global state or config + const alphaThresh = window.state?.customTransparencyThreshold || + window.CONFIG?.TRANSPARENCY_THRESHOLD || 10; + + // 1. Prefer cached ImageData if available + const cached = this.originalTilesData.get(tileKey); + if (cached && cached.data && cached.w > 0 && cached.h > 0) { + const x = Math.max(0, Math.min(cached.w - 1, pixelX)); + const y = Math.max(0, Math.min(cached.h - 1, pixelY)); + const idx = (y * cached.w + x) * 4; + const d = cached.data; + const a = d[idx + 3]; + + const paintTransparentPixels = window.state?.paintTransparentPixels || false; + if (!paintTransparentPixels && a < alphaThresh) { + // Treat as transparent / unavailable + return null; + } + return [d[idx], d[idx + 1], d[idx + 2], a]; + } + + // 2. Fallback: use bitmap, with retry + const maxRetries = 3; + for (let attempt = 1; attempt <= maxRetries; attempt++) { + const bitmap = this.originalTiles.get(tileKey); + if (!bitmap) { + if (attempt === maxRetries) { + console.warn('OverlayManager: no bitmap for', tileKey, 'after', maxRetries, 'attempts'); + } else { + await this._sleep(50 * attempt); // exponential delay + } + continue; + } + + try { + let canvas, ctx; + if (typeof OffscreenCanvas !== 'undefined') { + canvas = new OffscreenCanvas(bitmap.width, bitmap.height); + ctx = canvas.getContext('2d'); + } else { + canvas = document.createElement('canvas'); + canvas.width = bitmap.width; + canvas.height = bitmap.height; + ctx = canvas.getContext('2d'); + } + ctx.imageSmoothingEnabled = false; + ctx.drawImage(bitmap, 0, 0); + + const x = Math.max(0, Math.min(bitmap.width - 1, pixelX)); + const y = Math.max(0, Math.min(bitmap.height - 1, pixelY)); + const data = ctx.getImageData(x, y, 1, 1).data; + const a = data[3]; + + const paintTransparentPixels = window.state?.paintTransparentPixels || false; + if (!paintTransparentPixels && a < alphaThresh) { + return null; + } + + return [data[0], data[1], data[2], a]; + } catch (e) { + console.warn('OverlayManager: failed to read pixel (attempt', attempt, ')', tileKey, e); + if (attempt < maxRetries) { + await this._sleep(50 * attempt); + } else { + console.error( + 'OverlayManager: failed to read pixel after', + maxRetries, + 'attempts', + tileKey + ); + } + } + } + + // 3. If everything fails, return null + return null; + } + + /** + * Composite tile with overlay using optimized rendering + * @param {Blob} originalBlob - Original tile blob + * @param {ImageBitmap} overlayBitmap - Overlay bitmap + * @returns {Promise} Composited tile blob + * @private + */ + async _compositeTileOptimized(originalBlob, overlayBitmap) { + const originalBitmap = await createImageBitmap(originalBlob); + const canvas = new OffscreenCanvas(originalBitmap.width, originalBitmap.height); + const ctx = canvas.getContext('2d'); + + // Disable antialiasing for pixel-perfect rendering + ctx.imageSmoothingEnabled = false; + + // Draw original tile first + ctx.drawImage(originalBitmap, 0, 0); + + // Set opacity and draw overlay with optimized blend mode + const overlayOpacity = window.state?.overlayOpacity || 0.6; + ctx.globalAlpha = overlayOpacity; + ctx.globalCompositeOperation = 'source-over'; + ctx.drawImage(overlayBitmap, 0, 0); + + // Use faster blob conversion with compression settings + return await canvas.convertToBlob({ + type: 'image/png', + quality: 0.95, // Slight compression for faster processing + }); + } + + /** + * Wait until all required tiles are loaded and cached + * @param {number} startRegionX - Starting region X + * @param {number} startRegionY - Starting region Y + * @param {number} pixelWidth - Image width in pixels + * @param {number} pixelHeight - Image height in pixels + * @param {number} startPixelX - Starting pixel X offset + * @param {number} startPixelY - Starting pixel Y offset + * @param {number} timeoutMs - Timeout in milliseconds + * @returns {Promise} True if tiles are ready + */ + async waitForTiles( + startRegionX, + startRegionY, + pixelWidth, + pixelHeight, + startPixelX = 0, + startPixelY = 0, + timeoutMs = 10000 + ) { + const { startTileX, startTileY, endTileX, endTileY } = this.calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + pixelWidth, + pixelHeight, + this.tileSize + ); + + const requiredTiles = []; + for (let ty = startTileY; ty <= endTileY; ty++) { + for (let tx = startTileX; tx <= endTileX; tx++) { + requiredTiles.push(`${tx},${ty}`); + } + } + + if (requiredTiles.length === 0) return true; + + const startTime = Date.now(); + + while (Date.now() - startTime < timeoutMs) { + const stopFlag = window.state?.stopFlag || false; + if (stopFlag) { + console.log('waitForTiles: stopped by user'); + return false; + } + + const missing = requiredTiles.filter((key) => !this.originalTiles.has(key)); + if (missing.length === 0) { + console.log(`โœ… All ${requiredTiles.length} required tiles are loaded`); + return true; + } + + await this._sleep(100); + } + + console.warn(`โŒ Timeout waiting for tiles: ${requiredTiles.length} required, + ${requiredTiles.filter((k) => this.originalTiles.has(k)).length} loaded`); + return false; + } + + /** + * Calculate tile range for given parameters + * @param {number} startRegionX - Starting region X + * @param {number} startRegionY - Starting region Y + * @param {number} startPixelX - Starting pixel X + * @param {number} startPixelY - Starting pixel Y + * @param {number} width - Width in pixels + * @param {number} height - Height in pixels + * @param {number} tileSize - Size of each tile (default 1000) + * @returns {{startTileX: number, startTileY: number, endTileX: number, endTileY: number}} + */ + calculateTileRange( + startRegionX, + startRegionY, + startPixelX, + startPixelY, + width, + height, + tileSize = 1000 + ) { + const endPixelX = startPixelX + width; + const endPixelY = startPixelY + height; + + return { + startTileX: startRegionX + Math.floor(startPixelX / tileSize), + startTileY: startRegionY + Math.floor(startPixelY / tileSize), + endTileX: startRegionX + Math.floor((endPixelX - 1) / tileSize), + endTileY: startRegionY + Math.floor((endPixelY - 1) / tileSize), + }; + } + + /** + * Preload tiles for save file coordinates to populate originalTiles cache + * This fixes the "no bitmap" error when loading save files + * @param {Object} startPosition - The start position from save file + * @param {Object} region - The region from save file + * @param {number} width - Image width + * @param {number} height - Image height + */ + /** + * Preload tiles for save file coordinates to populate originalTiles cache + * This fixes the "no bitmap" error when loading save files + * For WPlace, we can't manually fetch tiles like r/place - we need to trigger natural tile loading + * @param {Object} startPosition - The start position from save file + * @param {Object} region - The region from save file + * @param {number} width - Image width + * @param {number} height - Image height + */ + async preloadTilesForSaveFile(startPosition, region, width, height) { + if (!startPosition || !region || !width || !height) { + console.warn('OverlayManager: Missing parameters for tile preload'); + return; + } + + try { + // Calculate tiles that need to be loaded based on image area + const tileSize = 1000; // WPlace uses 1000px tiles, not 256px like r/place + const tiles = this.calculateTileRange( + region.x, region.y, + startPosition.x, startPosition.y, + width, height, + tileSize + ); + + console.log(`๐Ÿ”„ WPlace: Need to preload ${(tiles.endTileX - tiles.startTileX + 1) * (tiles.endTileY - tiles.startTileY + 1)} tiles for save file...`); + + // For WPlace, instead of manually fetching tiles, we need to wait for natural tile loading + // The browser will request tiles as the user navigates, and we intercept them + // For now, just log the tiles we need and let the overlay work with what's available + const neededTiles = []; + for (let tileX = tiles.startTileX; tileX <= tiles.endTileX; tileX++) { + for (let tileY = tiles.startTileY; tileY <= tiles.endTileY; tileY++) { + neededTiles.push(`${tileX},${tileY}`); + } + } + + console.log(`๐Ÿ“ WPlace: Will use tiles when available: ${neededTiles.slice(0, 5).join(', ')}${neededTiles.length > 5 ? ` and ${neededTiles.length - 5} more...` : ''}`); + + // Store the needed tiles list for reference + this.neededTilesForSave = new Set(neededTiles); + + console.log('โœ… WPlace: Tile preload setup complete - tiles will populate as user navigates'); + } catch (error) { + console.error('โŒ Failed to setup tile preload for save file:', error); + } + } + + /** + * Sleep utility + * @param {number} ms - Milliseconds to sleep + * @returns {Promise} + * @private + */ + _sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + + /** + * Clean up resources + */ + cleanup() { + this.clear(); + if (this.workerPool) { + // Clean up worker pool if implemented + this.workerPool = null; + } + } +} + +// Create global instance +window.WPlaceOverlayManager = OverlayManager; + +// Create global instance for Auto-Image.js compatibility +window.globalOverlayManager = new OverlayManager(); + +// Legacy compatibility - expose key methods globally for backward compatibility +window.OverlayManager = OverlayManager; + +console.log('โœ… WPlace Overlay Manager loaded and ready'); \ No newline at end of file diff --git a/Extension/scripts/token-manager.js b/Extension/scripts/token-manager.js new file mode 100644 index 0000000..6e07a7f --- /dev/null +++ b/Extension/scripts/token-manager.js @@ -0,0 +1,846 @@ +// ==UserScript== +// @name WPlace Token Manager +// @namespace http://tampermonkey.net/ +// @version 2025-09-16.1 +// @description Turnstile token management for WPlace AutoBot +// @author Wbot +// @match https://wplace.live/* +// @grant none +// ==/UserScript== + +/** + * TokenManager - Handles Turnstile token generation, caching, and validation for WPlace AutoBot + * Extracted from Auto-Image.js for better modularity and reusability + */ +class TokenManager { + constructor() { + // Token state + this.turnstileToken = null; + this.tokenExpiryTime = 0; + this.tokenGenerationInProgress = false; + this._resolveToken = null; + this.tokenPromise = new Promise((resolve) => { + this._resolveToken = resolve; + }); + + // Configuration constants + this.TOKEN_LIFETIME = 240000; // 4 minutes (tokens typically last 5 min, use 4 for safety) + this.MAX_RETRIES = 10; + this.MAX_BATCH_RETRIES = 10; // Maximum attempts for batch sending + + // Turnstile widget state + this.turnstileLoaded = false; + this._turnstileContainer = null; + this._turnstileOverlay = null; + this._turnstileWidgetId = null; + this._lastSitekey = null; + this._cachedSitekey = null; + + // Retry counter + this.retryCount = 0; + + // Initialize message listener for token capture + this._initializeTokenCapture(); + } + + /** + * Initialize token capture from injected script + */ + _initializeTokenCapture() { + window.addEventListener('message', (event) => { + const { source, token } = event.data; + if (source === 'turnstile-capture' && token) { + this.setTurnstileToken(token); + // Show success message if UI is expecting it + if (document.querySelector('#statusText')?.textContent.includes('CAPTCHA')) { + this._showAlert('Token captured successfully', 'success'); + } + } + }); + } + + /** + * Set a new Turnstile token with expiry + * @param {string} token - The Turnstile token + */ + setTurnstileToken(token) { + if (this._resolveToken) { + this._resolveToken(token); + this._resolveToken = null; + } + this.turnstileToken = token; + this.tokenExpiryTime = Date.now() + this.TOKEN_LIFETIME; + console.log('โœ… Turnstile token set successfully'); + } + + /** + * Check if current token is valid + * @returns {boolean} True if token exists and not expired + */ + isTokenValid() { + return this.turnstileToken && Date.now() < this.tokenExpiryTime; + } + + /** + * Invalidate current token + */ + invalidateToken() { + this.turnstileToken = null; + this.tokenExpiryTime = 0; + console.log('๐Ÿ—‘๏ธ Token invalidated, will force fresh generation'); + } + + /** + * Ensure a valid token is available, generating if necessary + * @param {boolean} forceRefresh - Force generation of new token + * @returns {Promise} The token or null if failed + */ + async ensureToken(forceRefresh = false) { + // Return cached token if still valid and not forcing refresh + if (this.isTokenValid() && !forceRefresh) { + return this.turnstileToken; + } + + // Invalidate token if forcing refresh + if (forceRefresh) this.invalidateToken(); + + // Avoid multiple simultaneous token generations + if (this.tokenGenerationInProgress) { + console.log('๐Ÿ”„ Token generation already in progress, waiting...'); + await this._sleep(2000); + return this.isTokenValid() ? this.turnstileToken : null; + } + + this.tokenGenerationInProgress = true; + + try { + console.log('๐Ÿ”„ Token expired or missing, generating new one...'); + const token = await this.handleCaptchaWithRetry(); + if (token && token.length > 20) { + this.setTurnstileToken(token); + console.log('โœ… Token captured and cached successfully'); + return token; + } + + console.log('โš ๏ธ Invisible Turnstile failed, forcing browser automation...'); + const fallbackToken = await this.handleCaptchaFallback(); + if (fallbackToken && fallbackToken.length > 20) { + this.setTurnstileToken(fallbackToken); + console.log('โœ… Fallback token captured successfully'); + return fallbackToken; + } + + console.log('โŒ All token generation methods failed'); + return null; + } finally { + this.tokenGenerationInProgress = false; + } + } + + /** + * Handle captcha generation with retry logic + * @returns {Promise} The token or null if failed + */ + async handleCaptchaWithRetry() { + const startTime = performance.now(); + + try { + const { sitekey, token: preGeneratedToken } = await this.obtainSitekeyAndToken(); + + if (!sitekey) { + throw new Error('No valid sitekey found'); + } + + console.log('๐Ÿ”‘ Using sitekey:', sitekey); + + if (typeof window !== 'undefined' && window.navigator) { + console.log( + '๐Ÿงญ UA:', + window.navigator.userAgent.substring(0, 50) + '...', + 'Platform:', + window.navigator.platform + ); + } + + let token = null; + + if ( + preGeneratedToken && + typeof preGeneratedToken === 'string' && + preGeneratedToken.length > 20 + ) { + console.log('โ™ป๏ธ Reusing pre-generated Turnstile token'); + token = preGeneratedToken; + } else { + if (this.isTokenValid()) { + console.log('โ™ป๏ธ Using existing cached token (from previous session)'); + token = this.turnstileToken; + } else { + console.log('๐Ÿ” Generating new token with executeTurnstile...'); + token = await this.executeTurnstile(sitekey, 'paint'); + if (token) this.setTurnstileToken(token); + } + } + + if (token && typeof token === 'string' && token.length > 20) { + const elapsed = Math.round(performance.now() - startTime); + console.log(`โœ… Turnstile token generated successfully in ${elapsed}ms`); + return token; + } else { + throw new Error(`Invalid or empty token received - Length: ${token?.length || 0}`); + } + } catch (error) { + const elapsed = Math.round(performance.now() - startTime); + console.error(`โŒ Turnstile token generation failed after ${elapsed}ms:`, error); + throw error; + } + } + + /** + * Fallback token generation method using pixel placement automation + * @returns {Promise} The token or null if failed + */ + async handleCaptchaFallback() { + return new Promise(async (resolve, reject) => { + try { + // Ensure we have a fresh promise to await for a new token capture + if (!this._resolveToken) { + this.tokenPromise = new Promise((res) => { + this._resolveToken = res; + }); + } + + const timeoutPromise = this._sleep(20000).then(() => + reject(new Error('Auto-CAPTCHA timed out.')) + ); + + const solvePromise = (async () => { + // Wait for main paint button + const mainPaintBtn = await this._waitForSelector( + 'button.btn.btn-primary.btn-lg, button.btn.btn-primary.sm\\:btn-xl', + 200, + 10000 + ); + if (!mainPaintBtn) throw new Error('Could not find the main paint button.'); + mainPaintBtn.click(); + await this._sleep(500); + + // Click transparent color button + const transBtn = await this._waitForSelector('button#color-0', 200, 5000); + if (!transBtn) throw new Error('Could not find the transparent color button.'); + transBtn.click(); + await this._sleep(500); + + // Find canvas and simulate painting + const canvas = await this._waitForSelector('canvas', 200, 5000); + if (!canvas) throw new Error('Could not find the canvas element.'); + + canvas.setAttribute('tabindex', '0'); + canvas.focus(); + const rect = canvas.getBoundingClientRect(); + const centerX = Math.round(rect.left + rect.width / 2); + const centerY = Math.round(rect.top + rect.height / 2); + + // Simulate mouse movement and spacebar press + canvas.dispatchEvent( + new MouseEvent('mousemove', { + clientX: centerX, + clientY: centerY, + bubbles: true, + }) + ); + canvas.dispatchEvent( + new KeyboardEvent('keydown', { + key: ' ', + code: 'Space', + bubbles: true, + }) + ); + await this._sleep(50); + canvas.dispatchEvent( + new KeyboardEvent('keyup', { + key: ' ', + code: 'Space', + bubbles: true, + }) + ); + await this._sleep(500); + + // Delay before sending confirmation + await this._sleep(800); + + // Keep confirming until token is captured + const confirmLoop = async () => { + while (!this.turnstileToken) { + let confirmBtn = await this._waitForSelector( + 'button.btn.btn-primary.btn-lg, button.btn.btn-primary.sm\\:btn-xl' + ); + if (!confirmBtn) { + const allPrimary = Array.from(document.querySelectorAll('button.btn-primary')); + confirmBtn = allPrimary.length ? allPrimary[allPrimary.length - 1] : null; + } + if (confirmBtn) { + confirmBtn.click(); + } + await this._sleep(500); // 500ms delay between confirmation attempts + } + }; + + // Start confirmation loop and wait for token + confirmLoop(); + const token = await this.tokenPromise; + await this._sleep(300); // small delay after token is captured + resolve(token); + })(); + + await Promise.race([solvePromise, timeoutPromise]); + } catch (error) { + console.error('Auto-CAPTCHA process failed:', error); + reject(error); + } + }); + } + + /** + * Load Turnstile script if not already loaded + * @returns {Promise} + */ + async loadTurnstile() { + // If Turnstile is already present, just resolve. + if (window.turnstile) { + this.turnstileLoaded = true; + return Promise.resolve(); + } + + return new Promise((resolve, reject) => { + // Avoid adding the script twice + if ( + document.querySelector( + 'script[src^="https://challenges.cloudflare.com/turnstile/v0/api.js"]' + ) + ) { + const checkReady = () => { + if (window.turnstile) { + this.turnstileLoaded = true; + resolve(); + } else { + setTimeout(checkReady, 100); + } + }; + return checkReady(); + } + + const script = document.createElement('script'); + script.src = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'; + script.async = true; + script.defer = true; + script.onload = () => { + this.turnstileLoaded = true; + console.log('โœ… Turnstile script loaded successfully'); + resolve(); + }; + script.onerror = () => { + console.error('โŒ Failed to load Turnstile script'); + reject(new Error('Failed to load Turnstile')); + }; + document.head.appendChild(script); + }); + } + + /** + * Create or reuse the turnstile container - completely hidden for token generation + * @returns {HTMLElement} The container element + */ + ensureTurnstileContainer() { + if (!this._turnstileContainer || !document.body.contains(this._turnstileContainer)) { + // Clean up old container if it exists + if (this._turnstileContainer) { + this._turnstileContainer.remove(); + } + + this._turnstileContainer = document.createElement('div'); + this._turnstileContainer.className = 'wplace-turnstile-hidden'; + this._turnstileContainer.setAttribute('aria-hidden', 'true'); + this._turnstileContainer.id = 'turnstile-widget-container'; + document.body.appendChild(this._turnstileContainer); + } + return this._turnstileContainer; + } + + /** + * Interactive overlay container for visible widgets when needed + * @returns {HTMLElement} The overlay element + */ + ensureTurnstileOverlayContainer() { + if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { + return this._turnstileOverlay; + } + + const overlay = document.createElement('div'); + overlay.id = 'turnstile-overlay-container'; + overlay.className = 'wplace-turnstile-overlay wplace-overlay-hidden'; + + const title = document.createElement('div'); + title.textContent = this._getText('turnstileInstructions', 'Complete the verification'); + title.className = 'wplace-turnstile-title'; + + const host = document.createElement('div'); + host.id = 'turnstile-overlay-host'; + host.className = 'wplace-turnstile-host'; + + const hideBtn = document.createElement('button'); + hideBtn.textContent = this._getText('hideTurnstileBtn', 'Hide'); + hideBtn.className = 'wplace-turnstile-hide-btn'; + hideBtn.addEventListener('click', () => overlay.remove()); + + overlay.appendChild(title); + overlay.appendChild(host); + overlay.appendChild(hideBtn); + document.body.appendChild(overlay); + + this._turnstileOverlay = overlay; + return overlay; + } + + /** + * Execute Turnstile widget to generate token + * @param {string} sitekey - The site key + * @param {string} action - The action name (default: 'paint') + * @returns {Promise} The token or null if failed + */ + async executeTurnstile(sitekey, action = 'paint') { + await this.loadTurnstile(); + + // Try reusing existing widget first if sitekey matches + if (this._turnstileWidgetId && this._lastSitekey === sitekey && window.turnstile?.execute) { + try { + console.log('๐Ÿ”„ Reusing existing Turnstile widget...'); + const token = await Promise.race([ + window.turnstile.execute(this._turnstileWidgetId, { action }), + new Promise((_, reject) => + setTimeout(() => reject(new Error('Execute timeout')), 15000) + ), + ]); + if (token && token.length > 20) { + console.log('โœ… Token generated via widget reuse'); + return token; + } + } catch (error) { + console.log('โš ๏ธ Widget reuse failed, will create a fresh widget:', error.message); + } + } + + // Try invisible widget first + const invisibleToken = await this.createTurnstileWidget(sitekey, action); + if (invisibleToken && invisibleToken.length > 20) { + return invisibleToken; + } + + console.log('โš ๏ธ Falling back to interactive Turnstile (visible).'); + return await this.createTurnstileWidgetInteractive(sitekey, action); + } + + /** + * Create invisible Turnstile widget + * @param {string} sitekey - The site key + * @param {string} action - The action name + * @returns {Promise} The token or null if failed + */ + async createTurnstileWidget(sitekey, action) { + return new Promise((resolve) => { + try { + // Force cleanup of any existing widget + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + console.log('๐Ÿงน Cleaned up existing Turnstile widget'); + } catch (e) { + console.warn('โš ๏ธ Widget cleanup warning:', e.message); + } + } + + const container = this.ensureTurnstileContainer(); + container.innerHTML = ''; + + // Verify Turnstile is available + if (!window.turnstile?.render) { + console.error('โŒ Turnstile not available for rendering'); + resolve(null); + return; + } + + console.log('๐Ÿ”ง Creating invisible Turnstile widget...'); + const widgetId = window.turnstile.render(container, { + sitekey, + action, + size: 'invisible', + retry: 'auto', + 'retry-interval': 8000, + callback: (token) => { + console.log('โœ… Invisible Turnstile callback'); + resolve(token); + }, + 'error-callback': () => resolve(null), + 'timeout-callback': () => resolve(null), + }); + + this._turnstileWidgetId = widgetId; + this._lastSitekey = sitekey; + + if (!widgetId) { + return resolve(null); + } + + // Execute the widget and race with timeout + Promise.race([ + window.turnstile.execute(widgetId, { action }), + new Promise((_, reject) => + setTimeout(() => reject(new Error('Invisible execute timeout')), 12000) + ), + ]) + .then(resolve) + .catch(() => resolve(null)); + } catch (e) { + console.error('โŒ Invisible Turnstile creation failed:', e); + resolve(null); + } + }); + } + + /** + * Create interactive Turnstile widget (visible) + * @param {string} sitekey - The site key + * @param {string} action - The action name + * @returns {Promise} The token or null if failed + */ + async createTurnstileWidgetInteractive(sitekey, action) { + // Create a visible widget that users can interact with if needed + console.log('๐Ÿ”„ Creating interactive Turnstile widget (visible)'); + + return new Promise((resolve) => { + try { + // Force cleanup of any existing widget + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + } catch (e) { + console.warn('โš ๏ธ Widget cleanup warning:', e.message); + } + } + + const overlay = this.ensureTurnstileOverlayContainer(); + overlay.classList.remove('wplace-overlay-hidden'); + overlay.style.display = 'block'; + + const host = overlay.querySelector('#turnstile-overlay-host'); + host.innerHTML = ''; + + // Set a timeout for interactive mode + const timeout = setTimeout(() => { + console.warn('โฐ Interactive Turnstile widget timeout'); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + resolve(null); + }, 60000); // 60 seconds for user interaction + + const widgetId = window.turnstile.render(host, { + sitekey, + action, + size: 'normal', + theme: 'light', + callback: (token) => { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.log('โœ… Interactive Turnstile completed successfully'); + + if (typeof token === 'string' && token.length > 20) { + resolve(token); + } else { + console.warn('โŒ Invalid token from interactive widget'); + resolve(null); + } + }, + 'error-callback': (error) => { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.warn('โŒ Interactive Turnstile error:', error); + resolve(null); + }, + }); + + this._turnstileWidgetId = widgetId; + this._lastSitekey = sitekey; + + if (!widgetId) { + clearTimeout(timeout); + overlay.classList.add('wplace-overlay-hidden'); + overlay.style.display = 'none'; + console.warn('โŒ Failed to create interactive Turnstile widget'); + resolve(null); + } else { + console.log('โœ… Interactive Turnstile widget created, waiting for user interaction...'); + } + } catch (e) { + console.error('โŒ Interactive Turnstile creation failed:', e); + resolve(null); + } + }); + } + + /** + * Cleanup method for when the script is disabled/reloaded + */ + cleanupTurnstile() { + if (this._turnstileWidgetId && window.turnstile?.remove) { + try { + window.turnstile.remove(this._turnstileWidgetId); + } catch (e) { + console.warn('Failed to cleanup Turnstile widget:', e); + } + } + + if (this._turnstileContainer && document.body.contains(this._turnstileContainer)) { + this._turnstileContainer.remove(); + } + + if (this._turnstileOverlay && document.body.contains(this._turnstileOverlay)) { + this._turnstileOverlay.remove(); + } + + this._turnstileWidgetId = null; + this._turnstileContainer = null; + this._turnstileOverlay = null; + this._lastSitekey = null; + } + + /** + * Obtain sitekey and token + * @param {string} fallback - Fallback sitekey + * @returns {Promise<{sitekey: string, token: string|null}>} + */ + async obtainSitekeyAndToken(fallback = '0x4AAAAAABpqJe8FO0N84q0F') { + // Cache sitekey to avoid repeated DOM queries + if (this._cachedSitekey) { + console.log('๐Ÿ” Using cached sitekey:', this._cachedSitekey); + + return this.isTokenValid() + ? { + sitekey: this._cachedSitekey, + token: this.turnstileToken, + } + : { sitekey: this._cachedSitekey, token: null }; + } + + // List of potential sitekeys to try + const potentialSitekeys = [ + '0x4AAAAAABpqJe8FO0N84q0F', // WPlace common sitekey + '0x4AAAAAAAJ7xjKAp6Mt_7zw', // Alternative WPlace sitekey + '0x4AAAAAADm5QWx6Ov2LNF2g', // Another common sitekey + ]; + + const trySitekey = async (sitekey, source) => { + if (!sitekey || sitekey.length < 10) return null; + + console.log(`๐Ÿ” Testing sitekey from ${source}:`, sitekey); + const token = await this.executeTurnstile(sitekey); + + if (token && token.length >= 20) { + console.log(`โœ… Valid token generated from ${source} sitekey`); + this.setTurnstileToken(token); + this._cachedSitekey = sitekey; + return { sitekey, token }; + } else { + console.log(`โŒ Failed to get token from ${source} sitekey`); + return null; + } + }; + + try { + // 1๏ธโƒฃ data-sitekey attribute + const sitekeySel = document.querySelector('[data-sitekey]'); + if (sitekeySel) { + const sitekey = sitekeySel.getAttribute('data-sitekey'); + const result = await trySitekey(sitekey, 'data attribute'); + if (result) { + return result; + } + } + + // 2๏ธโƒฃ Turnstile element + const turnstileEl = document.querySelector('.cf-turnstile'); + if (turnstileEl?.dataset?.sitekey) { + const sitekey = turnstileEl.dataset.sitekey; + const result = await trySitekey(sitekey, 'turnstile element'); + if (result) { + return result; + } + } + + // 3๏ธโƒฃ Meta tags + const metaTags = document.querySelectorAll( + 'meta[name*="turnstile"], meta[property*="turnstile"]' + ); + for (const meta of metaTags) { + const content = meta.getAttribute('content'); + const result = await trySitekey(content, 'meta tag'); + if (result) { + return result; + } + } + + // 4๏ธโƒฃ Global variable + if (window.__TURNSTILE_SITEKEY) { + const result = await trySitekey(window.__TURNSTILE_SITEKEY, 'global variable'); + if (result) { + return result; + } + } + + // 5๏ธโƒฃ Script tags + const scripts = document.querySelectorAll('script'); + for (const script of scripts) { + const content = script.textContent || script.innerHTML; + const match = content.match( + /(?:sitekey|data-sitekey)['"\s\[\]:\=\(]*['"]?([0-9a-zA-Z_-]{20,})['"]?/i + ); + if (match && match[1]) { + const extracted = match[1].replace(/['"]/g, ''); + const result = await trySitekey(extracted, 'script content'); + if (result) { + return result; + } + } + } + + // 6๏ธโƒฃ Known potential sitekeys + console.log('๐Ÿ” Testing known potential sitekeys...'); + for (const testSitekey of potentialSitekeys) { + const result = await trySitekey(testSitekey, 'known list'); + if (result) { + return result; + } + } + } catch (error) { + console.warn('โš ๏ธ Error during sitekey detection:', error); + } + + // 7๏ธโƒฃ Fallback + console.log('๐Ÿ”ง Trying fallback sitekey:', fallback); + const fallbackResult = await trySitekey(fallback, 'fallback'); + if (fallbackResult) { + return fallbackResult; + } + + // 8๏ธโƒฃ Ultimate fallback with no token + console.warn('โŒ All sitekey detection methods failed, using fallback without token validation'); + this._cachedSitekey = fallback; + return { sitekey: fallback, token: null }; + } + + // ============================================= + // UTILITY METHODS + // ============================================= + + /** + * Sleep utility + * @param {number} ms - Milliseconds to sleep + * @returns {Promise} + */ + _sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + + /** + * Wait for DOM element to appear + * @param {string} selector - CSS selector + * @param {number} pollInterval - Polling interval in ms + * @param {number} timeout - Timeout in ms + * @returns {Promise} The element or null if timeout + * @private + */ + _waitForSelector(selector, pollInterval = 200, timeout = 10000) { + return new Promise((resolve) => { + const endTime = Date.now() + timeout; + const poll = () => { + const element = document.querySelector(selector); + if (element) { + resolve(element); + } else if (Date.now() < endTime) { + setTimeout(poll, pollInterval); + } else { + resolve(null); + } + }; + poll(); + }); + } + + /** + * Simple translation helper (fallback to English) + * @param {string} key - Translation key + * @param {string} fallback - Fallback text + * @returns {string} Translated text or fallback + */ + _getText(key, fallback = '') { + // Try to use external translation function if available + if (typeof window.Utils?.t === 'function') { + return window.Utils.t(key); + } + + // Fallback translations + const translations = { + turnstileInstructions: 'Complete the verification', + hideTurnstileBtn: 'Hide', + tokenCapturedSuccess: 'Token captured successfully' + }; + + return translations[key] || fallback || key; + } + + /** + * Show alert helper (uses external alert if available) + * @param {string} message - Message to show + * @param {string} type - Alert type + */ + _showAlert(message, type = 'info') { + // Try to use external alert function if available + if (typeof window.Utils?.showAlert === 'function') { + window.Utils.showAlert(message, type); + } else { + console.log(`${type.toUpperCase()}: ${message}`); + } + } + + /** + * Generate random string utility + * @param {number} len - Length of string + * @param {string} chars - Character set + * @returns {string} Random string + */ + _randStr(len, chars = 'abcdefghijklmnopqrstuvwxyz0123456789') { + return [...Array(len)] + .map(() => + chars[ + (crypto?.getRandomValues?.(new Uint32Array(1))[0] % chars.length) || + Math.floor(Math.random() * chars.length) + ] + ) + .join(''); + } +} + +// Create global instance +window.WPlaceTokenManager = new TokenManager(); + +// Create global instance alias for Auto-Image.js compatibility +window.globalTokenManager = window.WPlaceTokenManager; + +// Legacy compatibility - expose key methods globally for backward compatibility +window.setTurnstileToken = (token) => window.WPlaceTokenManager.setTurnstileToken(token); +window.ensureToken = (forceRefresh) => window.WPlaceTokenManager.ensureToken(forceRefresh); +window.isTokenValid = () => window.WPlaceTokenManager.isTokenValid(); +window.invalidateToken = () => window.WPlaceTokenManager.invalidateToken(); + +console.log('โœ… WPlace Token Manager loaded and ready'); \ No newline at end of file diff --git a/Extension/scripts/utils-manager.js b/Extension/scripts/utils-manager.js new file mode 100644 index 0000000..c1bf6e4 --- /dev/null +++ b/Extension/scripts/utils-manager.js @@ -0,0 +1,1224 @@ +/** + * WPlace AutoBOT - Utils Manager + * Centralized utility functions for the WPlace automation system + */ + +class WPlaceUtilsManager { + constructor() { + this.translationCache = new Map(); + this._labCache = new Map(); + + // Available languages + this.AVAILABLE_LANGUAGES = [ + 'en', 'ru', 'pt', 'vi', 'fr', 'id', 'tr', + 'zh-CN', 'zh-TW', 'ja', 'ko', 'uk' + ]; + } + + // Basic utility functions + sleep = (ms) => new Promise((r) => setTimeout(r, ms)); + + async dynamicSleep(tickAndGetRemainingMs) { + let remaining = Math.max(0, await tickAndGetRemainingMs()); + while (remaining > 0) { + const interval = remaining > 5000 ? 2000 : remaining > 1000 ? 500 : 100; + await this.sleep(Math.min(interval, remaining)); + remaining = Math.max(0, await tickAndGetRemainingMs()); + } + } + + async waitForSelector(selector, interval = 200, timeout = 5000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + const el = document.querySelector(selector); + if (el) return el; + await this.sleep(interval); + } + return null; + } + + msToTimeText(ms) { + const totalSeconds = Math.ceil(ms / 1000); + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + const seconds = totalSeconds % 60; + + if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`; + if (minutes > 0) return `${minutes}m ${seconds}s`; + return `${seconds}s`; + } + + // Debounced scroll-to-adjust handler for sliders + createScrollToAdjust(element, updateCallback, min, max, step = 1) { + let debounceTimer = null; + + const handleWheel = (e) => { + if (e.target !== element) return; + + e.preventDefault(); + e.stopPropagation(); + + if (debounceTimer) { + clearTimeout(debounceTimer); + } + + debounceTimer = setTimeout(() => { + const currentValue = parseInt(element.value) || 0; + const delta = e.deltaY > 0 ? -step : step; + const newValue = Math.max(min, Math.min(max, currentValue + delta)); + + if (newValue !== currentValue) { + element.value = newValue; + updateCallback(newValue); + } + }, 50); + }; + + element.addEventListener('wheel', handleWheel, { passive: false }); + + return () => { + if (debounceTimer) clearTimeout(debounceTimer); + element.removeEventListener('wheel', handleWheel); + }; + } + + // Tile range calculation delegation + calculateTileRange(startRegionX, startRegionY, startPixelX, startPixelY, width, height, tileSize = 1000) { + return window.globalOverlayManager.calculateTileRange( + startRegionX, startRegionY, startPixelX, startPixelY, width, height, tileSize + ); + } + + // Token management delegation + loadTurnstile() { return window.globalTokenManager.loadTurnstile(); } + ensureTurnstileContainer() { return window.globalTokenManager.ensureTurnstileContainer(); } + ensureTurnstileOverlayContainer() { return window.globalTokenManager.ensureTurnstileOverlayContainer(); } + executeTurnstile(sitekey, action) { return window.globalTokenManager.executeTurnstile(sitekey, action); } + createTurnstileWidget(sitekey, action) { return window.globalTokenManager.createTurnstileWidget(sitekey, action); } + createTurnstileWidgetInteractive(sitekey, action) { return window.globalTokenManager.createTurnstileWidgetInteractive(sitekey, action); } + cleanupTurnstile() { return window.globalTokenManager.cleanupTurnstile(); } + obtainSitekeyAndToken(fallback) { return window.globalTokenManager.obtainSitekeyAndToken(fallback); } + + // DOM utilities + createElement(tag, props = {}, children = []) { + const element = document.createElement(tag); + + Object.entries(props).forEach(([key, value]) => { + if (key === 'style' && typeof value === 'object') { + Object.assign(element.style, value); + } else if (key === 'className') { + element.className = value; + } else if (key === 'innerHTML') { + element.innerHTML = value; + } else { + element.setAttribute(key, value); + } + }); + + if (typeof children === 'string') { + element.textContent = children; + } else if (Array.isArray(children)) { + children.forEach((child) => { + if (typeof child === 'string') { + element.appendChild(document.createTextNode(child)); + } else { + element.appendChild(child); + } + }); + } + + return element; + } + + createButton(id, text, icon, onClick, style = window.CONFIG.CSS_CLASSES.BUTTON_PRIMARY) { + const button = this.createElement('button', { + id: id, + style: style, + innerHTML: `${icon ? `` : ''}${text}`, + }); + if (onClick) button.addEventListener('click', onClick); + return button; + } + + // Translation function + t(key, params = {}) { + const state = window.state; + const translationCache = this.translationCache; + const loadedTranslations = window.loadedTranslations || {}; + + // Safety check: ensure state and language exist + if (!state || !state.language) { + // Fallback: try to get translation directly or return key + if (loadedTranslations[key]) { + let text = loadedTranslations[key]; + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + return key; // Return the key as fallback + } + + const cacheKey = `${state.language}_${key}`; + if (translationCache.has(cacheKey)) { + let text = translationCache.get(cacheKey); + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + if (loadedTranslations[state.language]?.[key]) { + let text = loadedTranslations[state.language][key]; + translationCache.set(cacheKey, text); + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + // Try English fallback if available and not using English + if (state.language && state.language !== 'en' && loadedTranslations['en']?.[key]) { + let text = loadedTranslations['en'][key]; + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + // Final fallback to FALLBACK_TEXT or key + const language = state.language || 'en'; + let text = window.FALLBACK_TEXT?.[language]?.[key] || window.FALLBACK_TEXT?.en?.[key] || key; + Object.keys(params).forEach((param) => { + text = text.replace(new RegExp(`\\{${param}\\}`, 'g'), params[param]); + }); + + if (text === key && key !== 'undefined') { + console.warn(`โš ๏ธ Missing translation for key: ${key} (language: ${language})`); + } + + return text; + } + + showAlert(message, type = 'info') { + const alertDiv = document.createElement('div'); + alertDiv.className = `wplace-alert-base wplace-alert-${type}`; + alertDiv.textContent = message; + document.body.appendChild(alertDiv); + + setTimeout(() => { + alertDiv.style.animation = 'slide-down 0.3s ease-out reverse'; + setTimeout(() => { + document.body.removeChild(alertDiv); + }, 300); + }, 4000); + } + + // Color utilities + colorDistance(a, b) { + return Math.sqrt(Math.pow(a[0] - b[0], 2) + Math.pow(a[1] - b[1], 2) + Math.pow(a[2] - b[2], 2)); + } + + _rgbToLab(r, g, b) { + const srgbToLinear = (v) => { + v /= 255; + return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); + }; + const rl = srgbToLinear(r); + const gl = srgbToLinear(g); + const bl = srgbToLinear(b); + let X = rl * 0.4124 + gl * 0.3576 + bl * 0.1805; + let Y = rl * 0.2126 + gl * 0.7152 + bl * 0.0722; + let Z = rl * 0.0193 + gl * 0.1192 + bl * 0.9505; + X /= 0.95047; + Y /= 1.0; + Z /= 1.08883; + const f = (t) => (t > 0.008856 ? Math.cbrt(t) : 7.787 * t + 16 / 116); + const fX = f(X), fY = f(Y), fZ = f(Z); + const L = 116 * fY - 16; + const a = 500 * (fX - fY); + const b2 = 200 * (fY - fZ); + return [L, a, b2]; + } + + _lab(r, g, b) { + const key = (r << 16) | (g << 8) | b; + let v = this._labCache.get(key); + if (!v) { + v = this._rgbToLab(r, g, b); + this._labCache.set(key, v); + } + return v; + } + + findClosestPaletteColor(r, g, b, palette) { + // Use provided palette or derive from COLOR_MAP + if (!palette || palette.length === 0) { + palette = Object.values(window.CONFIG.COLOR_MAP) + .filter((c) => c.rgb) + .map((c) => [c.rgb.r, c.rgb.g, c.rgb.b]); + } + + // Use modular ImageProcessor for color matching if available + if (window.globalImageProcessor) { + return window.globalImageProcessor.findClosestPaletteColor( + r, g, b, palette, + window.state.colorMatchingAlgorithm || 'lab', + { + enableChromaPenalty: window.state.enableChromaPenalty || false, + chromaPenaltyWeight: window.state.chromaPenaltyWeight || 0.15 + } + ); + } + + // Fallback: simple color distance matching + let closestColor = null; + let minDistance = Infinity; + + for (const color of palette) { + const distance = this.colorDistance([r, g, b], color); + if (distance < minDistance) { + minDistance = distance; + closestColor = color; + } + } + + return closestColor || [r, g, b]; + } + + isWhitePixel(r, g, b) { + const wt = window.state.customWhiteThreshold || window.CONFIG.WHITE_THRESHOLD; + if (window.globalImageProcessor) { + return window.globalImageProcessor.isWhitePixel(r, g, b, wt); + } + // Fallback calculation if image processor not available + return r >= wt && g >= wt && b >= wt; + } + + resolveColor(targetRgb, availableColors, exactMatch = false) { + if (window.globalImageProcessor) { + return window.globalImageProcessor.resolveColor(targetRgb, availableColors, { + exactMatch, + algorithm: window.state.colorMatchingAlgorithm || 'lab', + enableChromaPenalty: window.state.enableChromaPenalty || false, + chromaPenaltyWeight: window.state.chromaPenaltyWeight || 0.15, + whiteThreshold: window.state.customWhiteThreshold || window.CONFIG.WHITE_THRESHOLD + }); + } + + // Fallback: simple distance-based matching + if (!availableColors || availableColors.length === 0) return null; + + let closestColor = null; + let minDistance = Infinity; + + for (const color of availableColors) { + const distance = this.colorDistance(targetRgb, color.rgb || [color.rgb.r, color.rgb.g, color.rgb.b]); + if (distance < minDistance) { + minDistance = distance; + closestColor = color; + } + } + + return closestColor; + } + + createImageUploader() { + if (window.globalImageProcessor) { + return window.globalImageProcessor.createImageUploader(); + } + + // Fallback implementation if image processor not available + return new Promise((resolve, reject) => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = 'image/*'; + input.onchange = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.onerror = () => reject(new Error('File reading error')); + reader.readAsDataURL(file); + } else { + reject(new Error('No file selected')); + } + }; + input.click(); + }); + } + + // File utilities + createFileDownloader(data, filename) { + const blob = new Blob([data], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + } + + createFileUploader() { + return new Promise((resolve, reject) => { + const input = document.createElement('input'); + input.type = 'file'; + input.accept = '.json'; + input.onchange = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = () => { + try { + const data = JSON.parse(reader.result); + resolve(data); + } catch (error) { + reject(new Error('Invalid JSON file')); + } + }; + reader.onerror = () => reject(new Error('File reading error')); + reader.readAsText(file); + } else { + reject(new Error('No file selected')); + } + }; + input.click(); + }); + } + + extractAvailableColors() { + if (window.globalImageProcessor) { + return window.globalImageProcessor.extractAvailableColors(window.CONFIG.COLOR_MAP); + } + + // Fallback: extract colors directly from CONFIG if image processor not available + if (window.CONFIG && window.CONFIG.COLOR_MAP) { + return Object.values(window.CONFIG.COLOR_MAP) + .filter(color => color.rgb !== null) + .map(color => ({ + id: color.id, + name: color.name, + rgb: [color.rgb.r, color.rgb.g, color.rgb.b] + })); + } + + return []; + } + + formatTime(ms) { + const seconds = Math.floor((ms / 1000) % 60); + const minutes = Math.floor((ms / (1000 * 60)) % 60); + const hours = Math.floor((ms / (1000 * 60 * 60)) % 24); + const days = Math.floor(ms / (1000 * 60 * 60 * 24)); + + let result = ''; + if (days > 0) result += `${days}d `; + if (hours > 0 || days > 0) result += `${hours}h `; + if (minutes > 0 || hours > 0 || days > 0) result += `${minutes}m `; + result += `${seconds}s`; + + return result; + } + + calculateEstimatedTime(remainingPixels, charges, cooldown) { + if (remainingPixels <= 0) return 0; + + const paintingSpeedDelay = window.state.paintingSpeed > 0 ? 1000 / window.state.paintingSpeed : 1000; + const timeFromSpeed = remainingPixels * paintingSpeedDelay; + + const cyclesNeeded = Math.ceil(remainingPixels / Math.max(charges, 1)); + const timeFromCharges = cyclesNeeded * cooldown; + + return timeFromSpeed + timeFromCharges; + } + + // Painted pixel tracking helpers + initializePaintedMap(width, height) { + if (!window.state.paintedMap || window.state.paintedMap.length !== height) { + window.state.paintedMap = Array(height) + .fill() + .map(() => Array(width).fill(false)); + } + } + + markPixelPainted(x, y, regionX = 0, regionY = 0) { + const actualX = x + regionX; + const actualY = y + regionY; + + if ( + window.state.paintedMap && + window.state.paintedMap[actualY] && + actualX >= 0 && + actualX < window.state.paintedMap[actualY].length + ) { + window.state.paintedMap[actualY][actualX] = true; + } + } + + isPixelPainted(x, y, regionX = 0, regionY = 0) { + const actualX = x + regionX; + const actualY = y + regionY; + + if ( + window.state.paintedMap && + window.state.paintedMap[actualY] && + actualX >= 0 && + actualX < window.state.paintedMap[actualY].length + ) { + return window.state.paintedMap[actualY][actualX]; + } + return false; + } + + // Smart save + shouldAutoSave() { + const now = Date.now(); + const pixelsSinceLastSave = window.state.paintedPixels - window.state._lastSavePixelCount; + const timeSinceLastSave = now - window.state._lastSaveTime; + + return !window.state._saveInProgress && pixelsSinceLastSave >= 25 && timeSinceLastSave >= 30000; + } + + performSmartSave() { + if (!this.shouldAutoSave()) return false; + + window.state._saveInProgress = true; + const success = this.saveProgress(); + + if (success) { + window.state._lastSavePixelCount = window.state.paintedPixels; + window.state._lastSaveTime = Date.now(); + } + + window.state._saveInProgress = false; + return success; + } + + // Data compression helpers + packPaintedMapToBase64(paintedMap, width, height) { + if (!paintedMap || !width || !height) return null; + const totalBits = width * height; + const byteLen = Math.ceil(totalBits / 8); + const bytes = new Uint8Array(byteLen); + let bitIndex = 0; + for (let y = 0; y < height; y++) { + const row = paintedMap[y]; + for (let x = 0; x < width; x++) { + const bit = row && row[x] ? 1 : 0; + const b = bitIndex >> 3; + const o = bitIndex & 7; + if (bit) bytes[b] |= 1 << o; + bitIndex++; + } + } + let binary = ''; + const chunk = 0x8000; + for (let i = 0; i < bytes.length; i += chunk) { + binary += String.fromCharCode.apply( + null, + bytes.subarray(i, Math.min(i + chunk, bytes.length)) + ); + } + return btoa(binary); + } + + unpackPaintedMapFromBase64(base64, width, height) { + if (!base64 || !width || !height) return null; + const binary = atob(base64); + const bytes = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i); + const map = Array(height) + .fill() + .map(() => Array(width).fill(false)); + let bitIndex = 0; + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const b = bitIndex >> 3; + const o = bitIndex & 7; + map[y][x] = ((bytes[b] >> o) & 1) === 1; + bitIndex++; + } + } + return map; + } + + // Migration helpers + migrateProgressToV2(saved) { + if (!saved) return saved; + const isV1 = !saved.version || saved.version === '1' || saved.version === '1.0' || saved.version === '1.1'; + if (!isV1) return saved; + + try { + const migrated = { ...saved }; + const width = migrated.imageData?.width; + const height = migrated.imageData?.height; + if (migrated.paintedMap && width && height) { + const data = this.packPaintedMapToBase64(migrated.paintedMap, width, height); + migrated.paintedMapPacked = { width, height, data }; + } + delete migrated.paintedMap; + migrated.version = '2'; + return migrated; + } catch (e) { + console.warn('Migration to v2 failed, using original data:', e); + return saved; + } + } + + migrateProgressToV21(saved) { + if (!saved) return saved; + if (saved.version === '2.1') return saved; + const isV2 = saved.version === '2' || saved.version === '2.0'; + const isV1 = !saved.version || saved.version === '1' || saved.version === '1.0' || saved.version === '1.1'; + if (!isV2 && !isV1) return saved; + try { + const migrated = { ...saved }; + if (isV1) { + const width = migrated.imageData?.width; + const height = migrated.imageData?.height; + if (migrated.paintedMap && width && height) { + const data = this.packPaintedMapToBase64(migrated.paintedMap, width, height); + migrated.paintedMapPacked = { width, height, data }; + } + delete migrated.paintedMap; + } + migrated.version = '2.1'; + return migrated; + } catch (e) { + console.warn('Migration to v2.1 failed, using original data:', e); + return saved; + } + } + + migrateProgressToV22(data) { + try { + const migrated = { ...data }; + migrated.version = '2.2'; + + if (!migrated.state.coordinateMode) { + migrated.state.coordinateMode = window.CONFIG.COORDINATE_MODE; + } + if (!migrated.state.coordinateDirection) { + migrated.state.coordinateDirection = window.CONFIG.COORDINATE_DIRECTION; + } + if (!migrated.state.coordinateSnake) { + migrated.state.coordinateSnake = window.CONFIG.COORDINATE_SNAKE; + } + if (!migrated.state.blockWidth) { + migrated.state.blockWidth = window.CONFIG.COORDINATE_BLOCK_WIDTH; + } + if (!migrated.state.blockHeight) { + migrated.state.blockHeight = window.CONFIG.COORDINATE_BLOCK_HEIGHT; + } + + return migrated; + } catch (e) { + console.warn('Migration to v2.2 failed, using original data:', e); + return data; + } + } + + buildPaintedMapPacked() { + if (window.state.paintedMap && window.state.imageData) { + const data = this.packPaintedMapToBase64( + window.state.paintedMap, + window.state.imageData.width, + window.state.imageData.height + ); + if (data) { + return { + width: window.state.imageData.width, + height: window.state.imageData.height, + data: data, + }; + } + } + return null; + } + + buildProgressData() { + return { + timestamp: Date.now(), + version: '2.2', + state: { + totalPixels: window.state.totalPixels, + paintedPixels: window.state.paintedPixels, + lastPosition: window.state.lastPosition, + startPosition: window.state.startPosition, + region: window.state.region, + imageLoaded: window.state.imageLoaded, + colorsChecked: window.state.colorsChecked, + coordinateMode: window.state.coordinateMode, + coordinateDirection: window.state.coordinateDirection, + coordinateSnake: window.state.coordinateSnake, + blockWidth: window.state.blockWidth, + blockHeight: window.state.blockHeight, + availableColors: window.state.availableColors, + }, + imageData: window.state.imageData + ? { + width: window.state.imageData.width, + height: window.state.imageData.height, + pixels: Array.from(window.state.imageData.pixels), + totalPixels: window.state.imageData.totalPixels, + } + : null, + paintedMapPacked: this.buildPaintedMapPacked(), + }; + } + + migrateProgress(saved) { + if (!saved) return null; + + let data = saved; + const ver = data.version; + + if (!ver || ver === '1' || ver === '1.0' || ver === '1.1') { + data = this.migrateProgressToV2(data); + } + + if (data.version === '2' || data.version === '2.0') { + data = this.migrateProgressToV21(data); + } + + if (data.version === '2.1') { + data = this.migrateProgressToV22(data); + } + + return data; + } + + saveProgress() { + try { + const progressData = this.buildProgressData(); + localStorage.setItem('wplace-bot-progress', JSON.stringify(progressData)); + return true; + } catch (error) { + console.error('Error saving progress:', error); + return false; + } + } + + loadProgress() { + try { + const saved = localStorage.getItem('wplace-bot-progress'); + if (!saved) return null; + let data = JSON.parse(saved); + const migrated = this.migrateProgress(data); + + if (migrated && migrated !== data) { + try { + localStorage.setItem('wplace-bot-progress', JSON.stringify(migrated)); + } catch { } + } + return migrated; + } catch (error) { + console.error('Error loading progress:', error); + return null; + } + } + + clearProgress() { + try { + localStorage.removeItem('wplace-bot-progress'); + window.state.paintedMap = null; + window.state._lastSavePixelCount = 0; + window.state._lastSaveTime = 0; + window.state.coordinateMode = window.CONFIG.COORDINATE_MODE; + window.state.coordinateDirection = window.CONFIG.COORDINATE_DIRECTION; + window.state.coordinateSnake = window.CONFIG.COORDINATE_SNAKE; + window.state.blockWidth = window.CONFIG.COORDINATE_BLOCK_WIDTH; + window.state.blockHeight = window.CONFIG.COORDINATE_BLOCK_HEIGHT; + return true; + } catch (error) { + console.error('Error clearing progress:', error); + return false; + } + } + + restoreProgress(savedData) { + try { + Object.assign(window.state, savedData.state); + + // Restore coordinate generation settings + if (savedData.state.coordinateMode) { + window.state.coordinateMode = savedData.state.coordinateMode; + } + if (savedData.state.coordinateDirection) { + window.state.coordinateDirection = savedData.state.coordinateDirection; + } + if (savedData.state.coordinateSnake !== undefined) { + window.state.coordinateSnake = savedData.state.coordinateSnake; + } + if (savedData.state.blockWidth) { + window.state.blockWidth = savedData.state.blockWidth; + } + if (savedData.state.blockHeight) { + window.state.blockHeight = savedData.state.blockHeight; + } + + // Restore available colors from old save files (backward compatibility) + if (savedData.state.availableColors && Array.isArray(savedData.state.availableColors)) { + window.state.availableColors = savedData.state.availableColors; + window.state.colorsChecked = true; // Mark colors as checked + } + + if (savedData.imageData) { + window.state.imageData = { + width: savedData.imageData.width, + height: savedData.imageData.height, + pixels: savedData.imageData.pixels, // Keep as Array - will convert in ImageData constructor + totalPixels: savedData.imageData.totalPixels, + }; + + try { + const canvas = document.createElement('canvas'); + canvas.width = window.state.imageData.width; + canvas.height = window.state.imageData.height; + const ctx = canvas.getContext('2d'); + const imageData = new ImageData( + window.state.imageData.pixels, + window.state.imageData.width, + window.state.imageData.height + ); + ctx.putImageData(imageData, 0, 0); + + // Create ImageProcessor directly like the original - no delegation + if (window.ImageProcessor) { + const proc = new window.ImageProcessor(''); + proc.img = canvas; + proc.canvas = canvas; + proc.ctx = ctx; + window.state.imageData.processor = proc; + } else if (window.WPlaceImageProcessor) { + const proc = new window.WPlaceImageProcessor(''); + proc.img = canvas; + proc.canvas = canvas; + proc.ctx = ctx; + window.state.imageData.processor = proc; + } + } catch (e) { + console.warn('Could not rebuild processor from saved image data:', e); + } + } + + // Prefer packed form if available; fallback to legacy paintedMap array for backward compatibility + if (savedData.paintedMapPacked && savedData.paintedMapPacked.data) { + const { width, height, data } = savedData.paintedMapPacked; + window.state.paintedMap = this.unpackPaintedMapFromBase64(data, width, height); + } else if (savedData.paintedMap) { + window.state.paintedMap = savedData.paintedMap.map((row) => Array.from(row)); + } + + // CRITICAL FIX: Notify all modules that state has been restored + this._syncModulesAfterStateRestore(); + + return true; + } catch (error) { + console.error('Error restoring progress:', error); + return false; + } + } + + /** + * Synchronize all modules after state restore to prevent timing issues + * This ensures modules reflect the updated state properly + * @private + */ + _syncModulesAfterStateRestore() { + try { + console.log('๐Ÿ”„ Synchronizing modules after state restore...'); + + // Sync image processor if available + if (window.globalImageProcessor && window.state.imageData) { + // Force refresh image processor state + if (typeof window.globalImageProcessor.updateState === 'function') { + window.globalImageProcessor.updateState(window.state); + } + } + + // Sync overlay manager if available + if (window.globalOverlayManager) { + // Force refresh overlay state - this ensures overlay knows about the new state + if (typeof window.globalOverlayManager.updateState === 'function') { + window.globalOverlayManager.updateState(window.state); + } + } + + // Extract available colors if not already set (required for color palette functionality) + if (!window.state.availableColors || window.state.availableColors.length === 0) { + console.log('๐ŸŽจ Extracting available colors for save file...'); + try { + const availableColors = this.extractAvailableColors(); + if (availableColors && availableColors.length > 0) { + window.state.availableColors = availableColors; + window.state.colorsChecked = true; + console.log(`โœ… Extracted ${availableColors.length} available colors`); + } else { + console.warn('โš ๏ธ No colors available - this might cause issues with overlay display'); + } + } catch (error) { + console.warn('โš ๏ธ Failed to extract colors:', error); + } + } + + // Force window.state reference update for any stale references + window.state = window.state; // Trigger any watchers + + console.log('โœ… Module synchronization complete'); + } catch (error) { + console.warn('โš ๏ธ Module synchronization failed:', error); + } + } + + /** + * Force navigation to saved position to display overlay immediately + * @param {Object} region - The region coordinates + * @param {Object} position - The pixel position within region + * @private + */ + async _forceNavigateToSavedPosition(region, position) { + try { + console.log(`๐Ÿงญ Forcing navigation to region (${region.x}, ${region.y}) pixel (${position.x}, ${position.y})...`); + + // Calculate world coordinates (region * 1000 + pixel position) + const worldX = region.x * 1000 + position.x; + const worldY = region.y * 1000 + position.y; + + console.log(`๐ŸŒ World coordinates: (${worldX}, ${worldY})`); + + // Method 1: Try to find WPlace's camera/viewport controls + const attemptCameraControl = () => { + // Look for WPlace's camera control functions in global scope + const possibleControls = [ + 'camera', 'viewport', 'map', 'game', 'wplace', 'app' + ]; + + for (const control of possibleControls) { + if (window[control]) { + console.log(`๐ŸŽฏ Found potential control: ${control}`, window[control]); + + // Try common navigation method names + const methods = ['setPosition', 'moveTo', 'panTo', 'setView', 'goTo', 'navigate']; + for (const method of methods) { + if (typeof window[control][method] === 'function') { + console.log(`๐Ÿ“ Attempting ${control}.${method}(${worldX}, ${worldY})`); + try { + window[control][method](worldX, worldY); + return true; + } catch (e) { + console.warn(`โŒ ${control}.${method} failed:`, e); + } + } + } + } + } + return false; + }; + + // Method 2: Try updating URL hash (common for canvas-based apps) + const attemptUrlNavigation = () => { + try { + const newHash = `#${worldX},${worldY}`; + console.log(`๐Ÿ”— Attempting URL navigation: ${newHash}`); + window.location.hash = newHash; + + // Also try alternative formats + setTimeout(() => { + const altHash = `#x=${worldX}&y=${worldY}`; + console.log(`๐Ÿ”— Attempting alternative URL: ${altHash}`); + window.location.hash = altHash; + }, 100); + + return true; + } catch (e) { + console.warn('โŒ URL navigation failed:', e); + return false; + } + }; + + // Method 3: Try triggering scroll/wheel events to force tile loading + const attemptScrollTrigger = () => { + try { + console.log('๐Ÿ–ฑ๏ธ Attempting scroll trigger to force tile loading...'); + + // Find canvas or main container + const canvas = document.querySelector('canvas') || document.body; + + // Simulate mouse events at target coordinates + ['mousedown', 'mousemove', 'mouseup', 'wheel'].forEach(eventType => { + const event = new MouseEvent(eventType, { + bubbles: true, + clientX: worldX % window.innerWidth, + clientY: worldY % window.innerHeight, + deltaY: eventType === 'wheel' ? 1 : 0 + }); + canvas.dispatchEvent(event); + }); + + return true; + } catch (e) { + console.warn('โŒ Scroll trigger failed:', e); + return false; + } + }; + + // Try all methods + const success = attemptCameraControl() || attemptUrlNavigation() || attemptScrollTrigger(); + + if (success) { + console.log('โœ… Navigation triggered - overlay should display in a moment'); + + // Wait a bit for tiles to load, then show success message + setTimeout(() => { + if (typeof this.showAlert === 'function') { + this.showAlert('โœ… Overlay loaded and positioned automatically!', 'success'); + } + }, 1000); + } else { + console.warn('โš ๏ธ Automatic navigation failed - showing manual instruction'); + if (typeof this.showAlert === 'function') { + this.showAlert(`๐Ÿ“ Navigate to region (${region.x}, ${region.y}) to see your restored overlay`, 'info'); + } + } + + } catch (error) { + console.error('โŒ Failed to force navigation:', error); + if (typeof this.showAlert === 'function') { + this.showAlert(`๐Ÿ“ Navigate to region (${region.x}, ${region.y}) to see your overlay`, 'info'); + } + } + } + + saveProgressToFile() { + try { + const progressData = this.buildProgressData(); + const filename = `wplace-bot-progress-${new Date() + .toISOString() + .slice(0, 19) + .replace(/:/g, '-')}.json`; + this.createFileDownloader(JSON.stringify(progressData, null, 2), filename); + return true; + } catch (error) { + console.error('Error saving to file:', error); + return false; + } + } + + async loadProgressFromFile() { + try { + const data = await this.createFileUploader(); + if (!data || !data.state) { + throw new Error('Invalid file format'); + } + const migrated = this.migrateProgress(data); + const success = this.restoreProgress(migrated); + return success; + } catch (error) { + console.error('Error loading from file:', error); + throw error; + } + } + + async restoreOverlayFromData() { + if (!window.state.imageLoaded || !window.state.imageData || !window.state.startPosition || !window.state.region) { + console.warn('โŒ Missing required data for overlay restoration'); + return false; + } + + try { + console.log('๐Ÿ”„ Restoring overlay from saved data...'); + + // Recreate ImageBitmap from loaded pixel data (match old version exactly) + const imageData = new ImageData( + window.state.imageData.pixels, + window.state.imageData.width, + window.state.imageData.height + ); + + const canvas = new OffscreenCanvas(window.state.imageData.width, window.state.imageData.height); + const ctx = canvas.getContext('2d'); + ctx.putImageData(imageData, 0, 0); + const imageBitmap = await canvas.transferToImageBitmap(); + + // Set up overlay with restored data (use the Auto-Image.js overlayManager instance) + if (window.autoImageOverlayManager) { + console.log('๐Ÿ“‹ Setting image bitmap...'); + await window.autoImageOverlayManager.setImage(imageBitmap); + + console.log('๐Ÿ“ Setting position and region...'); + await window.autoImageOverlayManager.setPosition(window.state.startPosition, window.state.region); + + console.log('๏ฟฝ Enabling overlay...'); + window.autoImageOverlayManager.enable(); + + // Update overlay button state + const toggleOverlayBtn = document.getElementById('toggleOverlayBtn'); + if (toggleOverlayBtn) { + toggleOverlayBtn.disabled = false; + toggleOverlayBtn.classList.add('active'); + } + + console.log('โœ… Overlay restored from data'); + return true; + } else { + console.error('โŒ autoImageOverlayManager not available'); + return false; + } + } catch (error) { + console.error('โŒ Failed to restore overlay from data:', error); + return false; + } + } + + updateCoordinateUI({ mode, directionControls, snakeControls, blockControls }) { + const isLinear = mode === 'rows' || mode === 'columns'; + const isBlock = mode === 'blocks' || mode === 'shuffle-blocks'; + + if (directionControls) directionControls.style.display = isLinear ? 'block' : 'none'; + if (snakeControls) snakeControls.style.display = isLinear ? 'block' : 'none'; + if (blockControls) blockControls.style.display = isBlock ? 'block' : 'none'; + } + + /** + * Force navigation to saved position to display overlay immediately + * @param {Object} region - The region coordinates + * @param {Object} position - The pixel position within region + * @private + */ + async _forceNavigateToSavedPosition(region, position) { + try { + console.log(`๐Ÿงญ Forcing navigation to region (${region.x}, ${region.y}) pixel (${position.x}, ${position.y})...`); + + // Calculate world coordinates (region * 1000 + pixel position) + const worldX = region.x * 1000 + position.x; + const worldY = region.y * 1000 + position.y; + + console.log(`๐ŸŒ World coordinates: (${worldX}, ${worldY})`); + + // Method 1: Try to find WPlace's camera/viewport controls + const attemptCameraControl = () => { + // Look for WPlace's camera control functions in global scope + const possibleControls = [ + 'camera', 'viewport', 'map', 'game', 'wplace', 'app' + ]; + + for (const control of possibleControls) { + if (window[control]) { + console.log(`๐ŸŽฏ Found potential control: ${control}`, window[control]); + + // Try common navigation method names + const methods = ['setPosition', 'moveTo', 'panTo', 'setView', 'goTo', 'navigate']; + for (const method of methods) { + if (typeof window[control][method] === 'function') { + console.log(`๐Ÿ“ Attempting ${control}.${method}(${worldX}, ${worldY})`); + try { + window[control][method](worldX, worldY); + return true; + } catch (e) { + console.warn(`โŒ ${control}.${method} failed:`, e); + } + } + } + } + } + return false; + }; + + // Method 2: Try updating URL hash (common for canvas-based apps) + const attemptUrlNavigation = () => { + try { + const newHash = `#${worldX},${worldY}`; + console.log(`๐Ÿ”— Attempting URL navigation: ${newHash}`); + window.location.hash = newHash; + + // Also try alternative formats + setTimeout(() => { + const altHash = `#x=${worldX}&y=${worldY}`; + console.log(`๐Ÿ”— Attempting alternative URL: ${altHash}`); + window.location.hash = altHash; + }, 100); + + return true; + } catch (e) { + console.warn('โŒ URL navigation failed:', e); + return false; + } + }; + + // Method 3: Try triggering scroll/wheel events to force tile loading + const attemptScrollTrigger = () => { + try { + console.log('๐Ÿ–ฑ๏ธ Attempting scroll trigger to force tile loading...'); + + // Find canvas or main container + const canvas = document.querySelector('canvas') || document.body; + + // Simulate mouse events at target coordinates + ['mousedown', 'mousemove', 'mouseup', 'wheel'].forEach(eventType => { + const event = new MouseEvent(eventType, { + bubbles: true, + clientX: worldX % window.innerWidth, + clientY: worldY % window.innerHeight, + deltaY: eventType === 'wheel' ? 1 : 0 + }); + canvas.dispatchEvent(event); + }); + + return true; + } catch (e) { + console.warn('โŒ Scroll trigger failed:', e); + return false; + } + }; + + // Try all methods + const success = attemptCameraControl() || attemptUrlNavigation() || attemptScrollTrigger(); + + if (success) { + console.log('โœ… Navigation triggered - overlay should display in a moment'); + + // Wait a bit for tiles to load, then show success message + setTimeout(() => { + if (typeof this.showAlert === 'function') { + this.showAlert('โœ… Overlay loaded and positioned automatically!', 'success'); + } + }, 1000); + } else { + console.warn('โš ๏ธ Automatic navigation failed - showing manual instruction'); + if (typeof this.showAlert === 'function') { + this.showAlert(`๐Ÿ“ Navigate to region (${region.x}, ${region.y}) to see your restored overlay`, 'info'); + } + } + + } catch (error) { + console.error('โŒ Failed to force navigation:', error); + if (typeof this.showAlert === 'function') { + this.showAlert(`๐Ÿ“ Navigate to region (${region.x}, ${region.y}) to see your overlay`, 'info'); + } + } + } +} + +// Global instance with safety checks +try { + window.globalUtilsManager = new WPlaceUtilsManager(); + console.log('โœ… WPlaceUtilsManager initialized successfully'); +} catch (error) { + console.error('โŒ Failed to initialize WPlaceUtilsManager:', error); +} + +// Additional safety: ensure the instance is available for other scripts +if (!window.globalUtilsManager) { + console.warn('โš ๏ธ globalUtilsManager not available, attempting to reinitialize...'); + setTimeout(() => { + try { + window.globalUtilsManager = new WPlaceUtilsManager(); + console.log('โœ… WPlaceUtilsManager reinitialized successfully'); + } catch (error) { + console.error('โŒ Failed to reinitialize WPlaceUtilsManager:', error); + } + }, 100); +} \ No newline at end of file