diff --git a/docs/dev/3D渲染管线.md b/docs/dev/3D渲染管线.md new file mode 100644 index 00000000..f0fc7c14 --- /dev/null +++ b/docs/dev/3D渲染管线.md @@ -0,0 +1,403 @@ +# 3D 渲染管线(buffers / 数据流 / 函数 / shader) + +> 面向调试:启动时怎么建 Vulkan 对象、一帧里 GPU 上有哪些图、谁写入、谁采样、CPU 调用顺序、以及帧间异步怎么提交。 +> 后端:`src/modules/graphics/vulkan/Graphics.cpp`。底层构造器:`third-party/VKBuilder/include/vkbuilder.hpp`(`vkb::`)。投影:`perspectiveVulkanRH_ZO`(RH、ZO、Vulkan Y 向下,见 `ClipSpace.h`)。 + +关联:[`环境光遮蔽模块设计.md`](./环境光遮蔽模块设计.md)、[`全局光照模块设计.md`](./全局光照模块设计.md)、[`抗锯齿模块设计.md`](./抗锯齿模块设计.md)、[`模块设计.md`](./模块设计.md) §4、[`2D渲染API设计.md`](./2D渲染API设计.md) §4。 + +--- + +## 1. 一帧谁调用谁 + +典型游戏 / ClassicScenes: + +``` +RenderSystem3D::render(gfx) // 3D:shadow → gbuffer → scene color → 排队 AO +RenderSystem::render(gfx) // 2D sprite + gfx.present() +``` + +脚本侧 `gfx.render3D()` 只包一层 `RenderSystem3D::render`,**不会 present**。真正提交 swapchain 的是 `RenderSystem::render` 末尾的 `Graphics::present()` → `flushToSwapchain()`。 + +```mermaid +sequenceDiagram + participant RS3 as RenderSystem3D + participant G as vulkan::Graphics + participant RS2 as RenderSystem + participant GPU as CommandBuffer + + RS3->>G: beginShadowPass / drawMeshShadow / endShadowPass + Note over G: 只入队 CPU 列表,尚未录 GPU + RS3->>G: beginGBufferPass / drawMeshGBuffer / endGBufferPass + Note over G: 同样只入队 + RS3->>G: begin3DFrame + G->>GPU: acquire swapchain + G->>GPU: recordPendingShadowPasses + G->>GPU: recordPendingGBufferPass + G->>GPU: beginSceneColorRenderPass + RS3->>G: drawMeshShader(前向 / clustered / hair) + G->>GPU: 写入 scene color + RS3->>G: AmbientOcclusion.applyFromGBuffer + Note over G: 入队 texturedBatches,等 present + RS2->>G: drawTexturedRect*(2D / HUD) + RS2->>G: present → flushToSwapchain + G->>GPU: endSceneColor + FXAA resolve 到 swapchain + G->>GPU: 画 AO overlay + 2D + G->>GPU: submit + present +``` + +**CPU 入队 vs GPU 录制**:shadow / GBuffer 的 `begin*Pass` 不立刻 `vkCmdBeginRenderPass`。真正录进当前帧 command buffer 的时机是 `begin3DFrame()` 里的 `recordPendingShadowPasses()` / `recordPendingGBufferPass()`,保证和 scene color 同一份 submit,shadow map / GBuffer 在前向采样前已经写完。 + +--- + +## 2. GPU 图(当前默认 3D) + +资源按帧槽双缓冲:`kAsyncResourceCopies = 2`(`vulkan/Graphics.h`)。索引随 swapchain `current_frame`。 + +| 名称 | 格式 / 尺寸 | 写入 | 采样 | 查询 API | +|------|-------------|------|------|----------| +| **CSM shadow** | `D32Sfloat` 2D array,3 cascade × 1024² | Shadow pass | mesh3d `shadowMap` (binding 5) | `RenderControl.hasPass("shadow")`(不是 GBuffer Texture) | +| **GBuffer normal** | RGBA8,swapchain 像素尺寸 | GBuffer MRT0 | 3D AO `NormalTex` | `GBuffer.getNormalTexture()` | +| **GBuffer depthColor** | RGBA8,R=线性 0..1 | GBuffer MRT1 | Canvas / volumetric / 图像审计 | `GBuffer.getDepthTexture()` | +| **GBuffer albedo** | RGBA8,RGB=albedo,A=线性深度 | GBuffer MRT2 | 可选(SSGI 回退) | `GBuffer.getAlbedoTexture()` | +| **GBuffer hwDepth** | `D32Sfloat`,`Sampled`,`.r`=Vulkan NDC z(0 近 1 远) | GBuffer depth attachment,`storeOp=Store`,final `ShaderReadOnlyOptimal` | 3D AO(及手动 SSGI) | `GBuffer.getHwDepthTexture()` | +| **scene color** | swapchain 同格式 RGBA,A=1 清屏(天空),mesh 写 A=线性深度 | 前向 mesh | FXAA `MainTex`;手动 `getSceneColorTexture()` | `Graphics.getSceneColorTexture()` | +| **scene color depth** | 与 swapchain 相同的 HW depth | 前向 z-test | **不采样**(`storeOp=DontCare`) | — | +| **swapchain** | WSI 图像 | FXAA resolve + AO overlay + 2D | present / 可选 CPU readback | `newImageData` / `getPixel`(需 `setScreenReadbackEnabled(true)`) | + +深度约定(调试时最容易混): + +| 用途 | 通道 | 含义 | +|------|------|------| +| HW D32 / `getHwDepthTexture().r` | NDC z | `ndcToViewZ`:`viewZ = near*far / (far - ndc*(far-near))` | +| `getDepthTexture().r`、scene color A、albedo A | 线性 0..1 | `(viewZ-near)/(far-near)`,**不能**当 clip.z 重建世界坐标 | + +--- + +## 3. Pass 顺序与代码入口 + +`RenderControl::compile()` 产出有序 pass 名:`shadow` → `gbuffer` → `forward` → `hair`。`aa` / `ao` / `gi` 不是独立 pass 名,而是在 forward 之后由 Graphics / RenderSystem3D 插入。 + +| 顺序 | 开关 | CPU 入口 | GPU 录制 | Shader | +|------|------|----------|----------|--------| +| 1 Shadow | `"shadow"` | `RenderSystem3D::render` → `beginShadowPass(c)` / `drawMeshShadow` / `endShadowPass` | `recordPendingShadowPasses` | `mesh3d_shadow.vert` + `.frag` | +| 2 GBuffer | `"gbuffer"`(`ao`/`gi` 会强制打开) | `beginGBufferPass` / `drawMeshGBuffer` / `endGBufferPass` | `recordPendingGBufferPass` | `mesh3d_gbuffer.vert` + `.frag` | +| 3 Scene color | `"forward"` / `"hair"` | `begin3DFrame` → `drawMeshShader` | `beginSceneColorRenderPass` 内直接 draw | 见下表 mesh | +| 4 FXAA resolve | `"aa"`(关则阈值拉满≈拷贝) | `flushToSwapchain` → `queueSceneColorResolve` | swapchain pass 第一张全屏四边形 | `aa_fxaa.frag`(`textured.vert`) | +| 5 AO overlay | `"ao"` | `AmbientOcclusion::applyFromGBuffer`(仍在 scene color 打开时**入队**) | swapchain pass,FXAA 之后 | `ao_from_depth.frag` | +| 6 2D / HUD | — | `RenderSystem::render` | 同 swapchain pass | `textured.*` / `lit2d.*` / `color.*` | +| 7 Present | — | `Graphics::present` | `presentModel.end` + `drawFrame` | — | + +**当前 3D 默认不叠 fullscreen SSGI。** `"gi"` 仍默认开(隐含 `gbuffer`+`gbufferAlbedo`),间接光走 mesh 半球天空/地面 + wrap(`mesh3d.frag`)。`GlobalIllumination::applyFromScene` 仅手动/测试调用;直接采样 lit scene color 会把邻物印到地面上。 + +--- + +## 4. Mesh 前向:函数与 shader + +选择逻辑在 `RenderSystem3D::drawMeshWithMaterial` / `applyLighting`: + +| 条件 | Pipeline | Vert | Frag | +|------|----------|------|------| +| 默认 PBR,灯数 ≤ 8 | `mesh3dPipeline` | `mesh3d.vert` | `mesh3d.frag` | +| 默认 PBR,灯数 > 8 且 `"clustered"` | `mesh3dClusteredPipeline` | `mesh3d_clustered.vert` | `mesh3d_clustered.frag` | +| `Material` 自定义 / toon / hair | `Shader::mesh3dPipeline` | `mesh3d_toon.vert` / `mesh3d_hair.vert` 等 | 对应 frag | +| 阴影 caster | `shadowPipeline` | `mesh3d_shadow.vert` | `mesh3d_shadow.frag` | +| GBuffer | `gbufferPipeline` | `mesh3d_gbuffer.vert` | `mesh3d_gbuffer.frag` | +| 体素实例 | `voxelRectPipeline` | `voxel_rect.vert` | `voxel_rect.frag` | + +`mesh3d.frag` 额外做:Cook-Torrance、CSM 采样、半球 GI、wrap fill、可选 IBL cubemap、`tonemapPeak`。输出 `outColor.a = linear01`(给旧 SSGI 打包路径,3D AO 不读它)。 + +--- + +## 5. 数据怎么传到 GPU + +### 5.1 后处理全屏四边形(`texSetLayout`) + +2D textured / FXAA / AO / 手动 GI 共用 **2 个 combined-image sampler**: + +| Binding | 典型 | AO 3D | 手动 SSGI | +|---------|------|-------|-----------| +| 0 | 颜色 `MainTex` | HW D32 | scene color | +| 1 | 第二张(无则绑自身占位) | GBuffer world normal | HW D32 | + +调用:`drawTexturedRectShader` / `drawTexturedRectShaderDepth`。参数走 **push constants**(`Shader::kPushConstantBytes`,最多 32 个 float)。AO `ao_from_depth`:`invViewProj` + near/far/radius/bias/intensity/power/sampleCount/texel/hasNormal。 + +入队对象:`texturedBatches`。`queueSceneColorResolve` 把 FXAA **插到队列头**,保证先 resolve 再叠 AO/2D。 + +### 5.2 Mesh3D descriptor(`mesh3dSetLayout`) + +| Set0 binding | 类型 | 内容 | +|--------------|------|------| +| 0 | UBO std140 `Frame` | mvp/model/view、主光、最多 8 盏 `Light3D`、ambient、texBomb、parallax、clip | +| 1 | sampler2D | albedo | +| 2 | sampler2D | normal(无则 1×1 flat) | +| 3 | samplerCube | env(无则黑 cubemap) | +| 4 | UBO std140 `ShadowFrame` | 3× `lightVP`、splits、bias | +| 5 | sampler2DArray | CSM | +| 6 | sampler2D | height / POM(无则 flat) | + +Clustered 变体:binding 4/5 为 light SSBO + cluster 表,shadow 后移;见 `mesh3d_clustered.frag`。CPU 建簇:`buildClusteredLighting`(`ClusteredLight.cpp`),网格 16×9×24,最多 256 灯、每簇 32。 + +每 draw 一份 host-visible UBO(`mesh3dSetFor`),`updateLocal` 后 bind。Shadow UBO 来自 `setMesh3DShadows(buildDirectionalCSM(...))`。 + +### 5.3 Shadow / GBuffer push + +- Shadow:`pushConstants` 一个 `mat4` = `lightVP[cascade] * model` +- GBuffer:push `mvp` + model 三行 + `clip(near, far, packedTint)` + +### 5.4 相机 / 投影 + +`RenderSystem3D` 每 mesh: + +``` +view = lookAtRH(eye, target, up) +proj = perspectiveVulkanRH_ZO(fov, aspect, near, far) +setMesh3DViewProj(proj * view) +``` + +AO:`AmbientOcclusion::setCamera` 算同一套 `inv(proj*view)` 送进 shader。重建世界坐标必须用 **NDC z(D32)**,不要用 8-bit 线性深度当 clip.z。 + +CSM:`buildDirectionalCSM`,级联按 **view-space +Z**(`max(-viewPos.z,0)`)选,最远 `ShadowConfig::kMaxDistance`(64m)。 + +--- + +## 6. 关键文件索引 + +| 主题 | 文件 | +|------|------| +| 帧编排 | `src/modules/graphics/RenderSystem3D.cpp` `render()` | +| 2D + present | `src/modules/graphics/RenderSystem.cpp` `drawItems(..., present=true)` | +| 特性 / pass 列表 | `src/modules/graphics/RenderControl.cpp` | +| GBuffer 包装 | `src/modules/graphics/GBuffer.h` | +| Vulkan 录制 / 资源 | `src/modules/graphics/vulkan/Graphics.cpp`:`initWithWindow`、`createSwapchainAndPipeline`、`begin3DFrame`、`createGBufferResources`、`createSceneColorResources`、`flushToSwapchain` | +| VKBuilder | `third-party/VKBuilder/include/vkbuilder.hpp`:`Present` / `PresentBuilder` / `PipelineBuilder` / `executeImmediately` | +| 投影 | `src/modules/graphics/ClipSpace.h` | +| CSM CPU | `src/modules/graphics/Shadow.cpp` | +| Clustered CPU | `src/modules/graphics/ClusteredLight.cpp` | +| AO | `AmbientOcclusion.cpp` + `shaders/ao_from_depth.frag` | +| FXAA | `AntiAliasing.cpp` + `shaders/aa_fxaa.frag` | +| SSGI(手动) | `GlobalIllumination.cpp` + `shaders/gi_ssgi.frag` | +| 前向 PBR | `shaders/mesh3d.vert` / `mesh3d.frag` | +| GBuffer MRT | `shaders/mesh3d_gbuffer.vert` / `.frag` | +| SPIR-V 生成 | `scripts/compile_graphics_*_shaders.py` → `shaders/*_spv.inc` | + +--- + +## 7. 调试检查清单 + +1. **3D 没画上**:`begin3DFrame` 在 surface 未就绪时 soft-fail。查 `had3DThisFrame()`,不要只看 CTest 通过。 +2. **AO 条纹 / 错深度**:3D 必须采 `getHwDepthTexture()`(D32)。`getDepthTexture()` 是 8-bit 线性,当 clip.z 会花屏。 +3. **地面邻物鬼影**:fullscreen SSGI 不要自动叠。若手动 `applyFromScene`,会从 scene color 把帘子/柱子印到地上。 +4. **AO 画在锯齿上**:AO 在 FXAA resolve **之后**叠到 swapchain,这是故意的。 +5. **阴影大块错**:CSM 是 nearest 采样 + shader 里比较,不是 HW PCF。级联距离用 view +Z,不要用欧氏距离。 +6. **改 shader 不生效**:改 `.frag` 后跑对应 `scripts/compile_graphics_*_shaders.py`(需 `glslc`),再编 `EVGraphics`。 +7. **读像素是旧帧**:`setScreenReadbackEnabled(true)` 且在 `present` 之后;MAILBOX present **不会**卡住 CPU 循环。打开 readback 会装 `after_render_before_present`,**强制** `drawFrame` 等本帧 fence,异步重叠消失。 +8. **多测连续开窗失败**:`vk::PhysicalDevice::getSurfaceCapabilitiesKHR: ErrorUnknown` 多半是 GPU/surface 耗尽,不是逻辑断言。 +9. **改 sampler / 换贴图像素 / morph 网格后 TDR**:这些路径会 `waitForAllFrames()` 再改共享资源。若跳过等待,in-flight 帧仍在读旧 image / VBO。 +10. **Canvas 离屏卡顿**:`flushToOffscreen` 先 `waitForAllFrames` 再 `executeImmediately`(单图,不能 ping-pong),会把 CPU 和 GPU 串起来。 + +ClassicScenes 飞掠 PNG:`build/win32-debug/test/out/classic_scenes/`。观感节奏:`EVENGINE_VIEW_SECONDS` / `EVENGINE_VIEW_HZ`。 + +--- + +## 8. 管线初始化 + +入口:`Graphics::initWithWindow(SDL_Window*)`。只跑一次;resize / 后台恢复走 `createSwapchainAndPipeline` / `recreateSurfaceForResume`,**不会**重建 mesh3d / textured 管线。 + +```mermaid +sequenceDiagram + participant SDL as SDL_Window + participant IB as vkb::InstanceBuilder + participant PD as vkb::PhysicalDeviceSelector + participant DB as vkb::DeviceBuilder + participant SB as vkb::SwapchainBuilder + participant PB as vkb::PresentBuilder + participant G as vulkan::Graphics + + SDL->>IB: SDL_Vulkan_GetInstanceExtensions + IB->>G: builder.build() → inst + SDL->>G: SDL_Vulkan_CreateSurface + G->>PD: set_surface + set_minimum_version(1,0) + PD->>DB: select() + DB->>G: deviceBuilder.build() + G->>G: device.createCommandPool() → uploadPool + G->>SB: set_desired_extent / format / present_mode + SB->>G: swapchain + G->>G: DepthStencilImage + RenderPassBuilder + PipelineBuilder + PB->>G: presentBuilder.build(renderpass, depthView) + Note over G: presentModel.synchronous_frames = false + G->>G: createTexturedPipeline / createMesh3D* / createVoxelRect + G->>G: initialized = true + G->>G: createShadowResources + 1×1 whiteTexture +``` + +### 8.1 启动时立刻创建 + +| 步骤 | 函数 | VKBuilder | 产物 | +|------|------|-----------|------| +| Instance | `initWithWindow` | `InstanceBuilder.require_api_version(1,0)` + SDL 扩展;可选 `request_validation_layers` / `use_default_debug_messenger`(`EVENGINE_VULKAN_VALIDATION`) | `vkb::Instance` | +| 设备 | 同上 | `PhysicalDeviceSelector.set_surface` → `DeviceBuilder.build`;各向异性 feature 按物理设备打开 | `vkb::Device`、`uploadPool` | +| Swapchain | `createSwapchainAndPipeline` | `SwapchainBuilder.set_desired_extent` / `set_desired_format(B8G8R8A8Unorm)` / `set_desired_present_mode` / `add_image_usage_flags(TransferSrc)` / `set_old_swapchain` / `build` | `vkb::Swapchain` | +| Swapchain depth | 同上 | `DepthStencilImage{device, w, h, D32}` | 给 Present framebuffer 的 depth view | +| Swapchain pass | 同上(只建一次) | `RenderPassBuilder.addPresentAttachment` + `addDepthAttachment` + `SubpassBuilder` + `addDependency` | `renderpass` | +| 2D 顶点色管线 | 同上(只建一次) | `PipelineBuilder.useClassicPipeline` + `VertexInputStateBuilder.addInputBinding` + `setDynamicStatesViewportScissor` + `setRasterizer(..., CullMode::eNone)` + `build(renderpass)` | `pipeline` | +| Present | 同上(每次重建 swapchain) | `PresentBuilder.build(renderpass, depthView)` | `presentModel`:2 个 CB / fence / acquire+present semaphore、swapchain framebuffer | +| 2D textured | `createTexturedPipeline` | `DescriptorSetLayoutBuilder.image(0).image(1).createUnique`;shader 模块 `PipelineBuilder::createShaderModule`;自己填 `vk::GraphicsPipelineCreateInfo` | `texSetLayout`、`descriptorPool`、`texPipeline`、`shaderPipelineLayout`(push constants) | +| Lit 2D | `createLit2DPipeline` | 同上 layout builder(再加 UBO binding 2) | `lit2dPipeline` | +| Mesh3D | `createMesh3DPipeline` | layout builder:UBO+4 张图+shadow UBO+CSM;`createShaderModule` + 手写 PSO | `mesh3dPipeline` | +| Clustered | `createMesh3DClusteredPipeline` | layout 含 SSBO | `mesh3dClusteredPipeline` | +| Voxel | `createVoxelRectPipeline` | layout + `createShaderModule` | `voxelRectPipeline` | +| Shadow | `createShadowResources` | 手写 2D array image / RP / PSO;`SamplerBuilder`(shadow compare);`executeImmediately` 清每一层 | `shadowMaps[2]` | +| 白贴图 | `newTexture(1,1,…)` | `TextureImage2D` + `upload` + `SamplerBuilder` + `DescriptorSetBuilder` | 缺 albedo 时的占位 | + +Present 模式:vsync 开 → 优先 `MAILBOX`,回退 `FIFO`;关 vsync → `IMMEDIATE`,再 `MAILBOX` / `FIFO`。MAILBOX 不阻塞 CPU 循环,所以必须双缓冲可变 GPU 资源(见 §10)。 + +### 8.2 懒创建(第一次用到才建) + +| 资源 | 触发 | 说明 | +|------|------|------| +| GBuffer MRT + hwDepth | `beginGBufferPass` → `createGBufferResources` | `kAsyncResourceCopies` 套;手写 image / RP / PSO,**不用** `ColorAttachmentImage` | +| Scene color | `begin3DFrame` → `createSceneColorResources` | 同上,格式跟 swapchain | +| Offscreen 2D | 第一次 `Canvas` flush → `ensureOffscreenPipelines` | `RenderPassBuilder.addColorAttachment` + `PipelineBuilder` 顶点色管线 | +| 自定义 Shader PSO | `newShader` / `ensureShaderOffscreenPipeline` | `createTexturedStylePipeline` 或 mesh3d 变体 | +| 每 draw UBO / descriptor | `mesh3dSetFor` / `currentLighting2dUbo` | `GenericBuffer.allocate`(够大就复用 handle)+ `DescriptorSetBuilder` + `DescriptorSetUpdater` | +| 2D 批顶点缓冲 | `flushToSwapchain` | 每帧槽一份 `HostVertexBuffer`,`allocate` 后 `updateLocal` | + +GBuffer / scene color / shadow 的 **image 本身**走 `device->createImage`(需要 Sampled+Attachment、MRT、2D array)。VKBuilder 的 `ColorAttachmentImage` 只给 Canvas 离屏用。 + +Swapchain 重建(`swapchainDirty` / `needs_recreate` / 后台恢复):`device->waitIdle` → 拆 Present / depth / 2D 帧缓冲 → 新建 swapchain + Present。mesh3d / textured PSO **保留**。GBuffer / scene color 若分辨率变了,下一帧 `create*` 会 `destroy` 再分配。 + +--- + +## 9. VKBuilder 调用表 + +头文件:`vkbuilder.hpp`。Graphics 里 `#include "vkbuilder.hpp"`,实现文件定义 `VKB_IMPL` 一次。 + +### 9.1 启动 / 呈现 + +| `vkb::` | 引擎调用 | 作用 | +|---------|----------|------| +| `SystemInfo::query().is_extension_available` | macOS/iOS 检测 portability | 决定是否 `enable_extension(PORTABILITY_ENUMERATION)` | +| `InstanceBuilder` | `require_api_version` / `enable_extension` / `set_headless` / `add_flags` / `build` | VkInstance | +| `PhysicalDeviceSelector` | `set_surface` / `set_minimum_version` / `add_required_extension` / `select` | 选 GPU | +| `DeviceBuilder` | `build` | 逻辑设备 + 队列 | +| `Device::createCommandPool` | `uploadPool`、Present 内部 | 上传用 vs 每帧录制用,**两套 pool** | +| `Device::getQueue(QueueType::graphics)` | 纹理 upload、`executeImmediately` | graphics 队列 | +| `SwapchainBuilder` | 见 §8.1 | WSI 图像 | +| `DepthStencilImage` | swapchain depth | Present framebuffer 附件 | +| `RenderPassBuilder` / `SubpassBuilder` | swapchain pass、offscreen Canvas | 2D present / 离屏色附件 | +| `PipelineBuilder` | **仅** 2D `color` 管线 + offscreen solid | `useClassicPipeline` 会自己建一个**空 layout** 的 PSO | +| `PipelineBuilder::createShaderModule` | textured / mesh3d / gbuffer / shadow / voxel / hair | 只编 SPIR-V;PSO 手写(需要自定义 layout、MRT、无 color) | +| `VertexInputStateBuilder` | `addInputBinding` / `addAttributeDescription` | `T::getBindingDescription` | +| `PresentBuilder::build` | 每次新建 swapchain | CB×FIF、fence×FIF、semaphore×FIF、framebuffer×image_count | +| `Present` | 见 §10 | acquire / record / submit / present | + +`PipelineBuilder.build()` 内部 `createPipelineLayout` 不带 descriptor set。3D / textured 必须自己 `device->createPipelineLayout` + `createGraphicsPipeline`。 + +### 9.2 描述符 / 采样 / 缓冲 / 图 + +| `vkb::` | 方法 | 引擎用法 | +|---------|------|----------| +| `DescriptorSetLayoutBuilder` | `.buffer(binding, type, stages, count)` / `.image(...)` / `.createUnique(device)` | `texSetLayout`(2 sampler)、`mesh3dSetLayout`、clustered、lit2d、voxel | +| `DescriptorSetBuilder` | `.layout(layout).build(device, pool)` | 每张 Texture、每组 mesh3d (albedo,normal,env,height)、post2 组合 | +| `DescriptorSetUpdater` | `.beginDescriptorSet` / `.beginImages` / `.image(sampler, view, layout)` / `.beginBuffers` / `.buffer` / `.update` | `writeCombinedImageDescriptor`、`mesh3dSetFor`、GBuffer 采样包装 | +| `SamplerBuilder` | `.magFilter` / `.minFilter` / `.addressModeU/V` / `.anisotropyEnable` / `.build` | `createVkSampler`;GBuffer/scene color 包装用 nearest+clamp | +| `TextureImage2D` | 构造 `(device, w, h, mips)` → `.upload(pool, queue, bytes)` | `newTexture`;upload 内部 `executeImmediately` | +| `TextureImageCube` | 构造 + `.upload` | `newCubemap` | +| `ColorAttachmentImage` | Canvas | 离屏 2D;`setLayout` 在 `executeImmediately` 里切 attachment ↔ sampled | +| `GenericBuffer` | `.allocate(device, usage, size, HostVisible\|HostCoherent)` / `.updateLocal` / `.release` | mesh UBO、shadow UBO、clustered SSBO、2D lighting UBO。**无析构**,swapchain 拆时必须 `release()` | +| `HostVertexBuffer` | `.allocate(device, verts)` | 2D 批、mesh VBO;host-visible,直接 map 写 | +| `executeImmediately` | `(device, pool, queue, lambda)` | **同步**:单独 CB + fence,等完才返回。纹理上传、shadow 首次 clear、Canvas 离屏、swapchain readback | + +### 9.3 每帧 Present API(热路径) + +`flushToSwapchain` / `begin3DFrame` 实际打到: + +``` +presentModel.begin() // acquireForFrame + begin CB + recordPendingShadowPasses() // 同一份 CB,swapchain pass 之前 + recordPendingGBufferPass() + beginSceneColorRenderPass() // 手写 RP,不是 Present 的 beginRenderPass + … drawMeshShader … +presentModel.beginRenderPass(...) // FXAA / AO / 2D 画到 swapchain +presentModel.endRenderPass() +presentModel.end() // vkEndCommandBuffer +presentModel.drawFrame() // submit + presentKHR;默认不等本帧 fence +``` + +`getCurrentCommandBuffer()` 按 `swapchain.current_frame`(0/1)取槽,**不是** WSI image index。 + +--- + +## 10. 异步:两帧重叠怎么完成 + +不是线程池,也不是 `vkQueueSubmit` 后立刻 `waitIdle`。模型是 **CPU 录 N+1,GPU 画 N**,同步点只有「这个帧槽上次提交的 fence」。 + +### 10.1 槽位 + +``` +Present::frames_in_flight = min(2, image_count) // PresentBuilder 写死上限 2 +Graphics::kAsyncResourceCopies = 2 // shadow / GBuffer / scene color +swapchain.current_frame ∈ {0, 1} // drawFrame 末尾 +1 % FIF +``` + +FIF 故意 **不等于** swapchain 图像数:present 用的 semaphore 若在 WSI 还握着时被下一帧复用,驱动容易 TDR。 + +可变 GPU 资源都按槽索引,避免写正在被上一帧采样的图: + +| 资源 | 选槽 | +|------|------| +| Present CB / fence / semaphore | `swapchain.current_frame` | +| 2D `HostVertexBuffer`、lit2d UBO | `currentFrameSlot()` | +| mesh3d / clustered UBO 池 | 同上,每帧 `drawIndex = 0` 从头复用 | +| clustered SSBO、voxel instance | 同上 | +| shadow map / GBuffer / scene color | `currentFrameSlot() % kAsyncResourceCopies` | + +`acquireForFrame` 已经 `waitForFences(in_flight_fences[slot])`,所以 **覆盖本槽** 的 UBO / 顶点缓冲是安全的。不能覆盖的是 **另一槽** 仍在飞的那份。 + +### 10.2 一帧时间线 + +`synchronous_frames = false`(`createSwapchainAndPipeline` 里设置): + +```mermaid +sequenceDiagram + participant CPU + participant Q as graphics queue + participant WSI as present + + Note over CPU: slot 0 + CPU->>CPU: wait fence[0](槽 0 上一次提交已完成) + CPU->>WSI: acquireNextImageKHR(availableSem[0]) + CPU->>CPU: 录 CB[0]:shadow → GBuffer → scene color → FXAA/AO/2D + CPU->>Q: submit(wait acquire, signal finished[0], fence[0]) + CPU->>WSI: presentKHR(wait finished[0]) + Note over CPU: 不等 fence[0],立刻开始 slot 1 + CPU->>CPU: wait fence[1] + CPU->>CPU: 录 CB[1](写 shadowMaps[1] / gbufferSlots[1] …) + Note over Q: 此时 GPU 可能还在画 CB[0](读 shadowMaps[0]) +``` + +`drawFrame` 里 **会** 等的情况: + +1. `synchronous_frames == true`(引擎已关掉) +2. `after_render_before_present` 非空 → `setScreenReadbackEnabled(true)` 装的 capture hook。hook 里再 `executeImmediately` 做 `copyImageToBuffer` + +否则 CPU 在 present 返回后就可以改 **下一个槽** 的资源。 + +### 10.3 两种「立刻执行」 + +| 路径 | 同步 | 用途 | +|------|------|------| +| Present CB + `drawFrame` | 异步(只等本槽旧 fence) | 游戏帧:shadow / GBuffer / 前向 / FXAA / 2D | +| `vkb::executeImmediately` | 提交后 `waitForFences` 本 submission | 纹理 upload、shadow 初始化 clear、Canvas 离屏、读回 swapchain | +| `presentModel.waitForAllFrames()` | 等 **两个** in-flight fence | 改共享资源前:换 sampler、换贴图像素、morph VBO、Canvas 切回 attachment | + +`executeImmediately` **不会** `device.waitIdle()`(那会排空另一帧)。它只等自己那次 submit。但 Canvas 离屏仍要先 `waitForAllFrames`:离屏色图只有一份,上一帧 swapchain 可能还在采样它。 + +Shadow / GBuffer 的 `begin*Pass` 只往 CPU 列表塞 draw。GPU 命令写进 **当前 Present CB**,和 scene color 一次 submit。这样前向采样时,同一 CB 里的 shadow/GBuffer 已经 `endRenderPass`,靠 render pass `finalLayout = ShaderReadOnlyOptimal` + subpass dependency,不需要额外 queue 同步。 + +### 10.4 和「看起来在异步」相关的坑 + +- **MAILBOX / IMMEDIATE**:CPU 可以远快于刷新率,必须 FIF=2 + 资源双缓冲。FIFO 会在 present 卡住,问题被掩盖。 +- **Validation 层**:`EVENGINE_VULKAN_VALIDATION=1` 时每 draw 校验,CPU 侧会慢一个数量级,重叠仍在,只是更难测出 CPU-bound。 +- **`GenericBuffer` / `Present` 无析构**:拆 swapchain 必须 `presentModel.destroy()`(内部 `waitIdle`,因为 presentKHR 的 semaphore 没有 fence 覆盖)和 `HostVertexBuffer.release()`。 +- **descriptor 不能在飞的 CB 上 `vkUpdateDescriptorSets`**:所以 mesh3d 是「每 draw 新 UBO + 缓存的 set」,而不是改绑定中的那份。 diff --git a/docs/dev/README.md b/docs/dev/README.md index f9c144f7..b5faf1e9 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -14,6 +14,7 @@ ## 功能设计 - [2D 渲染 API](2D渲染API设计.md) +- [3D 渲染管线](3D渲染管线.md)(初始化 / VKBuilder / 异步帧、buffers、数据流、函数与 shader) - [体积光模块](体积光模块设计.md) - [抗锯齿模块](抗锯齿模块设计.md) - [风格化渲染模块](风格化渲染模块设计.md) diff --git a/docs/dev/全局光照模块设计.md b/docs/dev/全局光照模块设计.md new file mode 100644 index 00000000..7b63f708 --- /dev/null +++ b/docs/dev/全局光照模块设计.md @@ -0,0 +1,62 @@ +# 全局光照(Global Illumination)设计 + +> 状态:前向半球/wrap 已落地。Fullscreen SSGI API 可用,但 3D 默认不自动叠加(会把邻物印到地面)。 +> API:`eve.Graphics().newGlobalIllumination()` → `GlobalIllumination` +> 管线开关:`RenderControl` 特性 `"gi"`(默认开,隐含 `gbuffer` + `gbufferAlbedo`) + +关联:[`模块设计.md`](./模块设计.md) §4 graphics、[`3D渲染管线.md`](./3D渲染管线.md)、[`环境光遮蔽模块设计.md`](./环境光遮蔽模块设计.md)、[`抗锯齿模块设计.md`](./抗锯齿模块设计.md)。 + +## 1. 目标观感 + +室内/箱体场景要有邻面染色(Cornell 红墙打到盒子)和阴影里的天空填充,而不是只有直射 + 常数环境光。 + +| 层 | 技术 | 何时 | +|----|------|------| +| 前向 mesh | 半球天空/地面 irradiance + wrap fill | 每像素,不依赖 GBuffer | +| 屏幕空间 | SSGI:邻像素 lit color × 接收端余弦 | 手动 `applyFromScene`;3D 默认关闭 | + +## 2. 架构 + +3D 画进可采样的 scene color(与 FXAA 共用)。GBuffer 仍在同一 command buffer 里先于 scene color 录制。3D SSGI 用两个 sampler: + +``` +MainTex = scene color RGB(lit radiance) +DepthTex = GBuffer D32(.r = Vulkan NDC z) +``` + +Canvas / 单测仍可走打包路径:`applyFromDepth` 读 `MainTex.a` 作为线性深度。 + +`applyFromScene` 在 swapchain pass 里画全屏四边形(scene color 已 resolve 之后、HUD 之前),SrcAlpha 把场景混向反弹色。 + +## 3. API + +```squirrel +gi <- gfx.newGlobalIllumination(); +gi.setQuality("medium"); +gi.setCamera(eye..., target..., up..., fov, aspect, near, far); +gi.setLightDirection(0.4, 1.0, 0.3); +gi.setLightColor(1.0, 0.95, 0.85); +gi.applyFromScene(gfx, gfx.getSceneColorTexture(), gb.getHwDepthTexture()); +``` + +3D 默认路径不必手动调用:`RenderSystem3D` 在 hair 之后对 pipeline 实例调用 `applyFromScene`。 + +## 4. 着色器 + +| 文件 | 数组 | +|------|------| +| `gi_ssgi.frag` | `gi_ssgi_frag_spv.inc` | +| `ao_from_depth.frag` | 3D 路径的 SSAO overlay(同 Pass) | + +```sh +python3 scripts/compile_graphics_gi_shaders.py +python3 scripts/compile_graphics_ao_shaders.py +``` + +## 5. 后续 + +- [x] 采样 lit scene color(与 AA 共用 3D color target) +- [x] 3D 后处理采样 GBuffer D32(不再用 8-bit 线性深度重建世界坐标) +- [x] 3D 默认不叠 fullscreen SSGI(会把邻物印到地面);mesh 半球/wrap 保留。SSGI shader 改为世界空间半球采样 +- [ ] 双边模糊 GI buffer 后再开 3D overlay +- [ ] 探针 / irradiance volume diff --git a/docs/dev/抗锯齿模块设计.md b/docs/dev/抗锯齿模块设计.md index e181fffe..eff3b54b 100644 --- a/docs/dev/抗锯齿模块设计.md +++ b/docs/dev/抗锯齿模块设计.md @@ -1,9 +1,10 @@ # 抗锯齿(Anti-Aliasing)设计 > 状态:图像空间经典 AA(FXAA / SMAA / SSAA / NFAA)已落地。 -> API:`eve.Graphics().newAntiAliasing()` → `AntiAliasing` +> API:`eve.Graphics().newAntiAliasing()` → `AntiAliasing` +> 管线开关:`RenderControl` 特性 `"aa"`(默认开;3D 对 scene color 做 FXAA resolve) -关联:[`模块设计.md`](./模块设计.md) §4 graphics、现有 `Canvas` / `Shader` / `Volumetric` 后处理路径。 +关联:[`模块设计.md`](./模块设计.md) §4 graphics、[`3D渲染管线.md`](./3D渲染管线.md)、现有 `Canvas` / `Shader` / `Volumetric` 后处理路径。 ## 1. 目标 @@ -22,11 +23,13 @@ ```mermaid flowchart LR - Scene["Scene → Canvas"] --> AA["AntiAliasing.apply*"] - AA --> FXAA["aa_fxaa.frag"] - AA --> SMAA["aa_smaa.frag"] - AA --> SSAA["aa_ssaa.frag"] - AA --> NFAA["aa_nfaa.frag"] + Scene["3D → scene color"] --> AA["FXAA resolve"] + Canvas["Scene → Canvas"] --> Apply["AntiAliasing.apply*"] + AA --> Swap["swapchain + AO/GI/HUD"] + Apply --> FXAA["aa_fxaa.frag"] + Apply --> SMAA["aa_smaa.frag"] + Apply --> SSAA["aa_ssaa.frag"] + Apply --> NFAA["aa_nfaa.frag"] FXAA --> Out["Screen / next Canvas"] SMAA --> Out SSAA --> Out @@ -73,6 +76,7 @@ python3 scripts/compile_graphics_aa_shaders.py # 需要 PATH 上的 glslc ## 5. 后续 +- [x] 3D 画到可采样 Color Target 后再自动套 FXAA(`RenderControl "aa"`) - [ ] Vulkan 硬件 MSAA(swapchain / offscreen sample count + resolve) - [ ] 多贴图 SMAA 1x(edge / blend weight + area/search LUT) - [ ] TAA(历史缓冲 + 相机 jitter / velocity) diff --git a/docs/dev/模块设计.md b/docs/dev/模块设计.md index dd16391c..3ebb9bd1 100644 --- a/docs/dev/模块设计.md +++ b/docs/dev/模块设计.md @@ -57,7 +57,7 @@ 核心渲染、显卡、shader。对外为**声明式**(ECS 组件 + C++ `RenderSystem`),而非脚本每帧命令式 draw。 -**设计文档:** 详见 [2D渲染API设计.md](./2D渲染API设计.md)。 +**设计文档:** [2D渲染API设计.md](./2D渲染API设计.md)、[3D渲染管线.md](./3D渲染管线.md)(初始化与 VKBuilder、异步帧、buffers / 数据流 / 函数与 shader)。 架构:ECS.hpp 实体/组件 → `RenderSystem` → 内部 Batcher → VKBuilder。 Love2D 风格即时模式仅作 C++/DevTools 内部逃生舱。 分期:**A** = 下列「基础能力」;**B** = 「高级能力」。 @@ -93,8 +93,9 @@ Love2D 风格即时模式仅作 C++/DevTools 内部逃生舱。 - [x] 屏幕空间体积光(`Volumetric`:God Rays + 尘雾;质量档 low/medium/high;Drawable 遮挡) - [x] 体积光 Ray March(线性深度 + 屏空间遮挡近似 CSM;`setMode("raymarch")`) - [x] 体积雾(高度指数 + 距离 ramp;`setMode("fog")` / `applyFog`) -- [x] 屏幕空间环境光遮蔽(`AmbientOcclusion`:SSAO / HBAO / GTAO + 双边模糊 + overlay) -- [x] 经典抗锯齿(`AntiAliasing`:FXAA / SMAA / SSAA / NFAA;质量档 low/medium/high) +- [x] 屏幕空间环境光遮蔽(`AmbientOcclusion`:SSAO / HBAO / GTAO + 双边模糊 + overlay + 3D `applyFromDepth`) +- [x] 经典抗锯齿(`AntiAliasing`:FXAA / SMAA / SSAA / NFAA;3D 经 scene color 自动 FXAA,`RenderControl "aa"` 默认开) +- [x] 屏幕空间全局光照(`GlobalIllumination`:SSGI 采样 lit scene color + mesh 半球/wrap;`RenderControl` `"ao"`/`"gi"`/`"aa"` 默认开) - [x] `Material` + `ModelPart`(着色参数打包,挂到模型部件) - [x] `RenderControl`(特性编译为 Pass:shadow / gbuffer / forward / hair) - [x] 可采样 GBuffer(线性深度 + 世界法线,可选 albedo;HW z-test 仍用于前向) @@ -336,7 +337,7 @@ NPR / 风格化后处理与网格着色:卡通、手绘水彩、水墨、像 - [x] CPU `processImage`(RGBA8,测试与离线工具) - [x] 预编译 SPIR-V(`scripts/compile_stylize_shaders.py`) - [x] `Material`:打包着色模型 + 贴图/PBR,可挂到 `Renderable3D` / `ModelPart` -- [x] `RenderControl`:特性开关编译为有序 Pass(shadow → gbuffer → forward → hair) +- [x] `RenderControl`:特性开关编译为有序 Pass(shadow → gbuffer → forward → hair;`ao`/`gi`/`aa` 默认开) - [x] GBuffer 深度/法线(线性深度 R + 编码法线),可选 albedo - [ ] (后续)GBuffer 驱动风格描边、风格动态注册、可分离渗色多 Pass 实现 diff --git a/docs/dev/环境光遮蔽模块设计.md b/docs/dev/环境光遮蔽模块设计.md index cf6aed15..7cc8589d 100644 --- a/docs/dev/环境光遮蔽模块设计.md +++ b/docs/dev/环境光遮蔽模块设计.md @@ -3,7 +3,7 @@ > 状态:屏幕空间 SSAO / HBAO / GTAO + 双边模糊 + 暗化叠加已落地。 > API:`eve.Graphics().newAmbientOcclusion()` → `AmbientOcclusion` -关联:[`模块设计.md`](./模块设计.md) §4 graphics、现有 `Volumetric` / `Canvas` / `Shader`。 +关联:[`模块设计.md`](./模块设计.md) §4 graphics、[`3D渲染管线.md`](./3D渲染管线.md)、现有 `Volumetric` / `Canvas` / `Shader`。 ## 1. 目标观感 @@ -17,6 +17,8 @@ 输入为线性深度纹理(R 通道,与 `Volumetric::newLinearDepthTexture` 相同约定)。法线由深度差分重建,因此不依赖 GBuffer。 +3D 默认路径的 `applyFromGBuffer` 采 GBuffer D32(`.r` = Vulkan NDC z)和世界法线;固定螺旋核 + 软遮挡,不再做逐像素 `hash12` 旋转。前景剪影用厚度衰减,避免把附近物体印到地面上。Canvas 上的 `compute` / `blur` / `overlay` 仍用 8-bit 线性深度。 + ## 2. 公开技术对照 | 路线 | 代表 | 状态 | diff --git a/docs/usr/modules/graphics.md b/docs/usr/modules/graphics.md index f02d4712..297ae61c 100644 --- a/docs/usr/modules/graphics.md +++ b/docs/usr/modules/graphics.md @@ -71,13 +71,16 @@ rc.compile(); gfx.render3D(); local gb = rc.getGBuffer(); if (gb.isValid()) { - local depth = gb.getDepthTexture(); // R = 线性深度 0..1 - local nrm = gb.getNormalTexture(); // RGB = 法线*0.5+0.5 + local depth = gb.getDepthTexture(); // RGBA8,R = 线性深度 0..1(Canvas / 体积雾) + local hwDepth = gb.getHwDepthTexture(); // D32,.r = Vulkan NDC z(3D AO / GI) + local nrm = gb.getNormalTexture(); // RGB = 法线*0.5+0.5 } ``` 3D 前向仍启用硬件 z-buffer;GBuffer 是给 AO / 体积雾 / 风格描边等中后期用的采样目标。阴影仍走 CSM shadow map。 +一帧里各 buffer 谁写谁读、对应函数和 shader,见开发文档 [`3D渲染管线.md`](../../dev/3D渲染管线.md)。 + 大面积平铺 albedo(地面、墙面)若出现明显重复,可对实体调用 `setTexCellBomb(cellScale, strength, rotAmount=1)`:按 UV 划分 cell,对邻接 cell 做随机偏移/旋转并混合。`strength=0`(默认)关闭,行为与原先一致;`cellScale` 一般为 2~16。 砖墙、石板等需要假深度时,用 `setHeightTexture(heightTex)` + `setParallax(scale, minLayers=8, maxLayers=32)` 开启视差遮蔽贴图(POM)。高度图取 **R 通道**(白=凸起朝向观察者);`scale=0`(默认)关闭。典型 `scale` 为 0.02~0.08;掠射角下层数会自适应增加。 @@ -121,8 +124,22 @@ hair.setCastShadow(false) // 发片通常不参与阴影投射 3. 可选 `blur` / `blurTo`(双边) 4. `applyOverlay` 以黑 + `alpha=(1-ao)*intensity` 叠到已有场景 +3D 默认路径:`RenderControl` 特性 `"ao"`(默认开)会在 forward 之后对 GBuffer 的 D32 + 法线做 `applyFromGBuffer`,不必手动建 Canvas。Canvas 上的 `compute` 仍用 8-bit 线性深度。 + 细节见 [`环境光遮蔽模块设计.md`](../../dev/环境光遮蔽模块设计.md)。 +### 屏幕空间全局光照(SSGI) + +`gi <- gfx.newGlobalIllumination()`。`setQuality` 控制采样数与半径;`setLightDirection` / `setLightColor` 提供反弹用的太阳光。 + +3D 默认路径:`RenderControl` 特性 `"gi"` 仍默认开(mesh 半球天空/地面 + wrap fill)。fullscreen `applyFromScene` 不会自动叠到 3D 回读:从 lit scene color 采样会把帘子/花盆印到地面上形成游走鬼影。需要时仍可手动 `applyFromScene` / `applyFromDepth`。Canvas 测试仍可用打包的 `applyFromDepth`(A=线性深度)。 + +```squirrel +local rc = gfx.getRenderControl(); +rc.enable("gi"); // 默认已开 +rc.compile(); +``` + ### 经典抗锯齿(FXAA / SMAA / SSAA / NFAA) `aa <- gfx.newAntiAliasing()`。`setQuality("low"|"medium"|"high")` 调整阈值与搜索;`setMode` 选择算法: @@ -132,7 +149,9 @@ hair.setCastShadow(false) // 发片通常不参与阴影投射 - **ssaa**:超采样 Resolve(先画到 `resolutionFor` 尺寸的 Canvas) - **nfaa**:沿亮度梯度切向的 Normal Filter AA -典型流程:场景 → Canvas → `aa.applyCanvas` / `applyCanvasTo` → 屏幕。细节见 [`抗锯齿模块设计.md`](../../dev/抗锯齿模块设计.md)。 +典型流程:场景 → Canvas → `aa.applyCanvas` / `applyCanvasTo` → 屏幕。 + +3D 默认路径:`begin3DFrame` 画到可采样的 scene color,present 时按 `RenderControl "aa"`(默认开)做 FXAA resolve 再叠 AO/HUD。手动 Canvas 路径仍然可用。细节见 [`抗锯齿模块设计.md`](../../dev/抗锯齿模块设计.md)。 ### 2D 屏幕拾取 @@ -159,7 +178,7 @@ hair.setCastShadow(false) // 发片通常不参与阴影投射 - `getScreenRayOriginY()`、`getScreenRayOriginZ()`、`getShader()`、`getShadowBias()`、`getShadowStrength()`、`getType()`、`getUniformIndex()`、`getVertexCount()` - `getVolumetric()`、`getVolumetricIntensity()`、`getWidth()`、`getX()`、`getY()`、`getYaw()`、`getZ()`、`getZoom()`、`hasMorph()`、`hasMorphData()` - `hasUniform()`、`isEnabled()`、`isMorphDirty()`、`newHairShader()`、`newMeshCylinder()`、`newMeshShader()`、`newMeshSphere()`、`newQuad()`、`newShader()` -- `newShaderFromSpvFile()`、`newTexture()`、`newTextureWithSampler()`、`setTextureSampler()`、`getMaxAnisotropy()`、`newVolumetric()`、`newAmbientOcclusion()`、`newAntiAliasing()`、`present()`、`render3D()`、`reset()`、`screenToRay()`、`screenToWorldX()`、`screenToWorldY()` +- `newShaderFromSpvFile()`、`newTexture()`、`newTextureWithSampler()`、`setTextureSampler()`、`getMaxAnisotropy()`、`newVolumetric()`、`newAmbientOcclusion()`、`newGlobalIllumination()`、`newAntiAliasing()`、`present()`、`render3D()`、`reset()`、`screenToRay()`、`screenToWorldX()`、`screenToWorldY()` - `sendFloat()`、`sendVec2()`、`sendVec3()`、`sendVec4()`、`setActive()`、`setAmbient()`、`setBackgroundColor()`、`setCamera()` - `setCanvas()`、`setCastOcclusion()`、`setCastShadow()`、`setColor()`、`setDirection()`、`setDirectionalLight()`、`setEnabled()`、`setEnvIntensity()`、`setEnvMap()` - `setEye()`、`setFov()`、`setMesh()`、`setMeshLod()`、`clearMeshLod()`、`getMeshLodCount()`、`getMeshLodLevelAtDistance()`、`setMetallic()`、`setMorphWeight()`、`setNormalTexture()`、`setHeightTexture()`、`setPosition()`、`setRadius()` @@ -167,7 +186,8 @@ hair.setCastShadow(false) // 发片通常不参与阴影投射 - `setTarget()`、`setTexCellBomb()`、`getTexCellBombScale()`、`getTexCellBombStrength()`、`getTexCellBombRotation()`、`setParallax()`、`getParallaxScale()`、`getParallaxMinLayers()`、`getParallaxMaxLayers()`、`setTexture()`、`setTint()`、`setType()`、`setUp()`、`setViewport()`、`setVisible()`、`setVolumetric()`、`setVolumetricIntensity()`、`setYaw()` - `setZoom()`、`worldToScreenX()`、`worldToScreenY()`、`Texture.getMipmapCount()` - `Volumetric`:`setQuality`、`setMode`、`scatter`、`applyFromScene`、`rayMarch`、`applyFog`、`setFogHeight`、`setFogStart`、`setFogEnd`、`setCamera`、`setLightDirection`、`setDensity` 等 -- `AmbientOcclusion`:`setQuality`、`setMode`、`setCamera`、`setRadius`、`setBias`、`setIntensity`、`setPower`、`compute`、`blur`、`applyOverlay`、`resolutionFor` 等 +- `AmbientOcclusion`:`setQuality`、`setMode`、`setCamera`、`setRadius`、`setBias`、`setIntensity`、`setPower`、`compute`、`blur`、`applyOverlay`、`applyFromDepth`、`resolutionFor` 等 +- `GlobalIllumination`:`setQuality`、`setCamera`、`setRadius`、`setIntensity`、`setLightDirection`、`setLightColor`、`applyFromDepth`、`getSampleCount` 等 - `AntiAliasing`:`setQuality`、`setMode`、`apply`、`applyTo`、`applyCanvas`、`applyCanvasTo`、`suggestScale`、`resolutionFor`、`setFloat`、`getFloat` 等 ## 使用要点 diff --git a/scripts/compile_graphics_ao_shaders.py b/scripts/compile_graphics_ao_shaders.py index 9a465b5c..e1ac06ea 100644 --- a/scripts/compile_graphics_ao_shaders.py +++ b/scripts/compile_graphics_ao_shaders.py @@ -17,6 +17,7 @@ FRAGS = [ "ao_gtao.frag", "ao_blur.frag", "ao_overlay.frag", + "ao_from_depth.frag", ] diff --git a/scripts/compile_graphics_gi_shaders.py b/scripts/compile_graphics_gi_shaders.py new file mode 100644 index 00000000..f99baf5a --- /dev/null +++ b/scripts/compile_graphics_gi_shaders.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +"""Compile graphics global-illumination GLSL fragments to SPIR-V C++ include arrays.""" + +from __future__ import annotations + +import struct +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +SHADER_DIR = ROOT / "src" / "modules" / "graphics" / "shaders" + +FRAGS = [ + "gi_ssgi.frag", +] + + +def spv_to_inc(spv_path: Path, array_name: str, out_path: Path) -> None: + data = spv_path.read_bytes() + if len(data) % 4 != 0: + raise SystemExit(f"SPIR-V size not multiple of 4: {spv_path}") + words = struct.unpack(f"<{len(data) // 4}I", data) + if not words or words[0] != 0x07230203: + raise SystemExit(f"bad SPIR-V magic in {spv_path}") + lines = [f"static const uint32_t {array_name}[] = {{"] + row: list[str] = [] + for i, w in enumerate(words): + row.append(f"0x{w:08x}") + if len(row) == 8: + lines.append(" " + ", ".join(row) + ",") + row = [] + if row: + lines.append(" " + ", ".join(row) + ",") + lines.append("};") + lines.append(f"static const size_t {array_name}_count = {len(words)};") + lines.append("") + out_path.write_text("\n".join(lines), encoding="utf-8") + print(f"wrote {out_path.relative_to(ROOT)} ({len(words)} words)") + + +def compile_frag(src: Path) -> Path: + out = src.with_suffix(".spv") + cmd = ["glslc", "-fshader-stage=frag", str(src), "-o", str(out)] + r = subprocess.run(cmd, capture_output=True, text=True) + if r.returncode != 0: + raise SystemExit(f"glslc failed for {src.name}:\n{r.stderr or r.stdout}") + return out + + +def main() -> int: + if not SHADER_DIR.is_dir(): + raise SystemExit(f"missing shader dir: {SHADER_DIR}") + for name in FRAGS: + src = SHADER_DIR / name + if not src.is_file(): + raise SystemExit(f"missing {src}") + spv = compile_frag(src) + stem = src.stem + array = f"{stem}_frag_spv" + spv_to_inc(spv, array, SHADER_DIR / f"{stem}_frag_spv.inc") + spv.unlink(missing_ok=True) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/modules/graphics/AmbientOcclusion.cpp b/src/modules/graphics/AmbientOcclusion.cpp index 2b8613d6..1ec4ddbd 100644 --- a/src/modules/graphics/AmbientOcclusion.cpp +++ b/src/modules/graphics/AmbientOcclusion.cpp @@ -11,6 +11,7 @@ #include "graphics/shaders/ao_gtao_frag_spv.inc" #include "graphics/shaders/ao_blur_frag_spv.inc" #include "graphics/shaders/ao_overlay_frag_spv.inc" +#include "graphics/shaders/ao_from_depth_frag_spv.inc" #include #include @@ -129,6 +130,29 @@ Shader *createOverlayShader(Graphics *gfx) { return sh; } +Shader *createFromDepthShader(Graphics *gfx) { + if (!gfx) throw eve::Exception("AmbientOcclusion: null graphics"); + std::vector frag(ao_from_depth_frag_spv, + ao_from_depth_frag_spv + ao_from_depth_frag_spv_count); + Shader *sh = gfx->newShaderFromSpv({}, frag); + if (!sh || !sh->gpuHandle) + throw eve::Exception("AmbientOcclusion: failed to create from-depth shader"); + declareComputeCommon(sh, false); + sh->sendMatrix("invViewProj", glm::mat4(1.f)); + sh->sendFloat("nearZ", 0.1f); + sh->sendFloat("farZ", 100.f); + sh->sendFloat("radius", 0.75f); + sh->sendFloat("bias", 0.025f); + sh->sendFloat("intensity", 0.55f); + sh->sendFloat("power", 1.35f); + sh->sendFloat("sampleCount", 16.f); + sh->sendFloat("texelW", 1.f / 256.f); + sh->sendFloat("texelH", 1.f / 256.f); + sh->declareFloat("hasNormal"); + sh->sendFloat("hasNormal", 0.f); + return sh; +} + } // namespace AmbientOcclusion::AmbientOcclusion(Graphics *gfx) : gfx_(gfx) { @@ -137,6 +161,7 @@ AmbientOcclusion::AmbientOcclusion(Graphics *gfx) : gfx_(gfx) { gtaoShader_ = createGtaoShader(gfx); blurShader_ = createBlurShader(gfx); overlayShader_ = createOverlayShader(gfx); + fromDepthShader_ = createFromDepthShader(gfx); applyQualityDefaults(); } @@ -207,6 +232,7 @@ void AmbientOcclusion::setInvViewProj(const glm::mat4 &invViewProj) { ssaoShader_->sendMatrix("invViewProj", invViewProj_); hbaoShader_->sendMatrix("invViewProj", invViewProj_); gtaoShader_->sendMatrix("invViewProj", invViewProj_); + if (fromDepthShader_) fromDepthShader_->sendMatrix("invViewProj", invViewProj_); } void AmbientOcclusion::setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, @@ -227,6 +253,10 @@ void AmbientOcclusion::setCamera(float eyeX, float eyeY, float eyeZ, float targe hbaoShader_->sendFloat("farZ", farZ_); gtaoShader_->sendFloat("nearZ", nearZ_); gtaoShader_->sendFloat("farZ", farZ_); + if (fromDepthShader_) { + fromDepthShader_->sendFloat("nearZ", nearZ_); + fromDepthShader_->sendFloat("farZ", farZ_); + } } void AmbientOcclusion::setRadius(float radius) { @@ -275,6 +305,7 @@ void AmbientOcclusion::setFloat(const std::string &name, float value) { if (gtaoShader_ && gtaoShader_->hasUniform(name)) gtaoShader_->sendFloat(name, value); if (blurShader_ && blurShader_->hasUniform(name)) blurShader_->sendFloat(name, value); if (overlayShader_ && overlayShader_->hasUniform(name)) overlayShader_->sendFloat(name, value); + if (fromDepthShader_ && fromDepthShader_->hasUniform(name)) fromDepthShader_->sendFloat(name, value); } float AmbientOcclusion::getFloat(const std::string &name) const { @@ -394,6 +425,37 @@ void AmbientOcclusion::applyOverlayTo(Graphics *gfx, Texture *aoMap, Canvas *des gfx->setCanvas(prev == gfx ? nullptr : prev); } +void AmbientOcclusion::applyFromDepth(Graphics *gfx, Texture *hwDepth) { + applyFromGBuffer(gfx, hwDepth, nullptr); +} + +void AmbientOcclusion::applyFromGBuffer(Graphics *gfx, Texture *hwDepth, Texture *worldNormal) { + if (!gfx) throw eve::Exception("AmbientOcclusion.applyFromGBuffer: null graphics"); + if (!hwDepth) throw eve::Exception("AmbientOcclusion.applyFromGBuffer: null hwDepth"); + if (!fromDepthShader_) throw eve::Exception("AmbientOcclusion.applyFromGBuffer: missing shader"); + fromDepthShader_->sendFloat("hasNormal", worldNormal ? 1.f : 0.f); + uploadComputeCommon(fromDepthShader_, hwDepth->getWidth(), hwDepth->getHeight()); + if (worldNormal) { + const float dw = + gfx->getCanvas() ? float(gfx->getCanvas()->getWidth()) : float(gfx->getWidth()); + const float dh = + gfx->getCanvas() ? float(gfx->getCanvas()->getHeight()) : float(gfx->getHeight()); + gfx->drawTexturedRectShaderDepth(hwDepth, worldNormal, fromDepthShader_, 0.f, 0.f, dw, dh, + Color(1.f, 1.f, 1.f, 1.f)); + } else { + drawFullscreen(gfx, hwDepth, fromDepthShader_); + } +} + +void AmbientOcclusion::applyFromDepthTo(Graphics *gfx, Texture *linearDepth, Canvas *dest) { + if (!gfx) throw eve::Exception("AmbientOcclusion.applyFromDepthTo: null graphics"); + if (!dest) throw eve::Exception("AmbientOcclusion.applyFromDepthTo: null dest"); + Canvas *prev = gfx->getCanvas(); + gfx->setCanvas(dest); + applyFromDepth(gfx, linearDepth); + gfx->setCanvas(prev == gfx ? nullptr : prev); +} + Texture *AmbientOcclusion::newLinearDepthTexture(Graphics *gfx, int width, int height, float (*depth01)(int x, int y, void *userdata), void *userdata) { diff --git a/src/modules/graphics/AmbientOcclusion.h b/src/modules/graphics/AmbientOcclusion.h index eec54469..a90674dc 100644 --- a/src/modules/graphics/AmbientOcclusion.h +++ b/src/modules/graphics/AmbientOcclusion.h @@ -93,6 +93,17 @@ public: void applyOverlay(Graphics *gfx, Texture *aoMap); void applyOverlayTo(Graphics *gfx, Texture *aoMap, Canvas *dest); + /** + * One-pass SSAO overlay for the 3D swapchain path. + * Samples hardware D32 (Vulkan NDC z in .r) and darkens the already-drawn + * scene. Optional worldNormal is GBuffer RGB = n*0.5+0.5; null reconstructs + * from depth. Call after forward draws while the swapchain pass is still open. + * Canvas compute() still uses 8-bit linear depth in R. + */ + void applyFromDepth(Graphics *gfx, Texture *hwDepth); + void applyFromDepthTo(Graphics *gfx, Texture *linearDepth, Canvas *dest); + void applyFromGBuffer(Graphics *gfx, Texture *hwDepth, Texture *worldNormal); + /** * Build an RGBA8 texture with linear depth in R (G=B=R, A=255). * Owned by Graphics (same convention as Volumetric). @@ -106,6 +117,7 @@ public: Shader *getGtaoShader() const { return gtaoShader_; } Shader *getBlurShader() const { return blurShader_; } Shader *getOverlayShader() const { return overlayShader_; } + Shader *getFromDepthShader() const { return fromDepthShader_; } private: void applyQualityDefaults(); @@ -119,6 +131,7 @@ private: Shader *gtaoShader_ = nullptr; Shader *blurShader_ = nullptr; Shader *overlayShader_ = nullptr; + Shader *fromDepthShader_ = nullptr; std::string quality_ = "medium"; std::string mode_ = "ssao"; float downscale_ = 2.f; diff --git a/src/modules/graphics/AntiAliasing.cpp b/src/modules/graphics/AntiAliasing.cpp index 95caab7d..5cd86cab 100644 --- a/src/modules/graphics/AntiAliasing.cpp +++ b/src/modules/graphics/AntiAliasing.cpp @@ -250,6 +250,8 @@ void AntiAliasing::drawFullscreen(Graphics *gfx, Texture *source, Shader *shader gfx->drawTexturedRectShader(source, shader, 0.f, 0.f, dw, dh, glm::vec4(1.f, 1.f, 1.f, 1.f)); } +void AntiAliasing::prepareSource(Texture *source) { uploadScreenUniforms(source); } + void AntiAliasing::apply(Graphics *gfx, Texture *source) { drawFullscreen(gfx, source, shaderForMode()); } diff --git a/src/modules/graphics/AntiAliasing.h b/src/modules/graphics/AntiAliasing.h index 6021eb21..ed13fc49 100644 --- a/src/modules/graphics/AntiAliasing.h +++ b/src/modules/graphics/AntiAliasing.h @@ -61,6 +61,9 @@ public: void applyCanvas(Graphics *gfx, Canvas *source); void applyCanvasTo(Graphics *gfx, Canvas *source, Canvas *dest); + /** Upload texel uniforms from `source` without drawing (3D scene-color resolve). */ + void prepareSource(Texture *source); + Shader *getFxaaShader() const { return fxaa_; } Shader *getSmaaShader() const { return smaa_; } Shader *getSsaaShader() const { return ssaa_; } diff --git a/src/modules/graphics/GBuffer.cpp b/src/modules/graphics/GBuffer.cpp index 78944823..a569862a 100644 --- a/src/modules/graphics/GBuffer.cpp +++ b/src/modules/graphics/GBuffer.cpp @@ -8,6 +8,7 @@ bool GBuffer::isValid() const { bool GBuffer::hasBuffer(const std::string &name) const { if (name == "depth") return depth_ != nullptr; + if (name == "hwDepth") return hwDepth_ != nullptr; if (name == "normal") return normal_ != nullptr; if (name == "albedo") return albedo_ != nullptr; return false; @@ -15,15 +16,18 @@ bool GBuffer::hasBuffer(const std::string &name) const { Texture *GBuffer::getBuffer(const std::string &name) const { if (name == "depth") return depth_; + if (name == "hwDepth") return hwDepth_; if (name == "normal") return normal_; if (name == "albedo") return albedo_; return nullptr; } -void GBuffer::setTargets(int width, int height, Texture *depth, Texture *normal, Texture *albedo) { +void GBuffer::setTargets(int width, int height, Texture *depth, Texture *normal, Texture *albedo, + Texture *hwDepth) { width_ = width; height_ = height; depth_ = depth; + hwDepth_ = hwDepth; normal_ = normal; albedo_ = albedo; } @@ -32,6 +36,7 @@ void GBuffer::clear() { width_ = 0; height_ = 0; depth_ = nullptr; + hwDepth_ = nullptr; normal_ = nullptr; albedo_ = nullptr; } diff --git a/src/modules/graphics/GBuffer.h b/src/modules/graphics/GBuffer.h index c96a0210..06dbbb60 100644 --- a/src/modules/graphics/GBuffer.h +++ b/src/modules/graphics/GBuffer.h @@ -11,10 +11,10 @@ class Texture; * Screen-space buffers for mid/post effects (AO, fog, stylize outline, …). * * Layout after a successful G-buffer pass: - * depth — RGBA8, R = linear depth 0..1 (near..far), same convention as - * Volumetric::newLinearDepthTexture / AmbientOcclusion - * normal — RGBA8, RGB = world normal * 0.5 + 0.5 - * albedo — optional RGBA8 (feature "gbufferAlbedo"); may be null + * depth — RGBA8 linear copy (R = linear 0..1) for Canvas / volumetric + * hwDepth — D32 hardware depth (sample .r = Vulkan NDC z); 3D AO/GI use this + * normal — RGBA8, RGB = world normal * 0.5 + 0.5 + * albedo — optional RGBA8 (feature "gbufferAlbedo"); may be null * * Shadow maps stay on the CSM path (Graphics shadow pass); query via * hasBuffer("shadow") on RenderControl rather than a Texture* here. @@ -37,15 +37,17 @@ public: int getHeight() const { return height_; } Texture *getDepthTexture() const { return depth_; } + Texture *getHwDepthTexture() const { return hwDepth_; } Texture *getNormalTexture() const { return normal_; } Texture *getAlbedoTexture() const { return albedo_; } - /** "depth" | "normal" | "albedo" */ + /** "depth" | "hwDepth" | "normal" | "albedo" */ bool hasBuffer(const std::string &name) const; Texture *getBuffer(const std::string &name) const; /** Called by Graphics after a G-buffer pass (or clear). */ - void setTargets(int width, int height, Texture *depth, Texture *normal, Texture *albedo); + void setTargets(int width, int height, Texture *depth, Texture *normal, Texture *albedo, + Texture *hwDepth = nullptr); void clear(); @@ -54,6 +56,7 @@ private: int width_ = 0; int height_ = 0; Texture *depth_ = nullptr; + Texture *hwDepth_ = nullptr; Texture *normal_ = nullptr; Texture *albedo_ = nullptr; }; diff --git a/src/modules/graphics/GlobalIllumination.cpp b/src/modules/graphics/GlobalIllumination.cpp new file mode 100644 index 00000000..87dce615 --- /dev/null +++ b/src/modules/graphics/GlobalIllumination.cpp @@ -0,0 +1,221 @@ +#include "graphics/GlobalIllumination.h" + +#include "common/Exception.h" +#include "graphics/Canvas.h" +#include "graphics/ClipSpace.h" +#include "graphics/Graphics.h" +#include "graphics/Shader.h" +#include "graphics/Texture.h" +#include "graphics/shaders/gi_ssgi_frag_spv.inc" + +#include +#include +#include +#include + +#include +#include + +namespace eve::graphics { +namespace { + +Shader *createSsgiShader(Graphics *gfx) { + if (!gfx) throw eve::Exception("GlobalIllumination: null graphics"); + std::vector frag(gi_ssgi_frag_spv, gi_ssgi_frag_spv + gi_ssgi_frag_spv_count); + Shader *sh = gfx->newShaderFromSpv({}, frag); + if (!sh || !sh->gpuHandle) throw eve::Exception("GlobalIllumination: failed to create SSGI shader"); + sh->declareMatrix("invViewProj"); + sh->declareFloat("nearZ"); + sh->declareFloat("farZ"); + sh->declareFloat("radius"); + sh->declareFloat("intensity"); + sh->declareFloat("sampleCount"); + sh->declareFloat("lightDirX"); + sh->declareFloat("lightDirY"); + sh->declareFloat("lightDirZ"); + sh->declareFloat("lightR"); + sh->declareFloat("lightG"); + sh->declareFloat("lightB"); + sh->declareFloat("texelW"); + sh->declareFloat("texelH"); + sh->declareFloat("useNdcDepth"); + sh->sendMatrix("invViewProj", glm::mat4(1.f)); + sh->sendFloat("nearZ", 0.1f); + sh->sendFloat("farZ", 100.f); + sh->sendFloat("radius", 1.25f); + sh->sendFloat("intensity", 0.45f); + sh->sendFloat("sampleCount", 12.f); + sh->sendFloat("lightDirX", 0.4f); + sh->sendFloat("lightDirY", 1.f); + sh->sendFloat("lightDirZ", 0.3f); + sh->sendFloat("lightR", 1.f); + sh->sendFloat("lightG", 1.f); + sh->sendFloat("lightB", 1.f); + sh->sendFloat("texelW", 1.f / 256.f); + sh->sendFloat("texelH", 1.f / 256.f); + sh->sendFloat("useNdcDepth", 0.f); + return sh; +} + +} // namespace + +GlobalIllumination::GlobalIllumination(Graphics *gfx) : gfx_(gfx) { + ssgi_ = createSsgiShader(gfx); + applyQualityDefaults(); +} + +GlobalIllumination::~GlobalIllumination() = default; + +void GlobalIllumination::applyQualityDefaults() { + if (quality_ == "low") { + radius_ = 0.9f; + setFloat("sampleCount", 8.f); + } else if (quality_ == "high") { + radius_ = 1.6f; + setFloat("sampleCount", 24.f); + } else { + radius_ = 1.25f; + setFloat("sampleCount", 16.f); + } + setFloat("radius", radius_); + setFloat("intensity", intensity_); +} + +void GlobalIllumination::setQuality(const std::string &quality) { + if (quality == "low" || quality == "medium" || quality == "high") + quality_ = quality; + else + quality_ = "medium"; + applyQualityDefaults(); +} + +void GlobalIllumination::setInvViewProj(const glm::mat4 &invViewProj) { + invViewProj_ = invViewProj; + ssgi_->sendMatrix("invViewProj", invViewProj_); +} + +void GlobalIllumination::setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, + float targetZ, float upX, float upY, float upZ, float fovYDeg, + float aspect, float nearZ, float farZ) { + nearZ_ = nearZ > 1e-4f ? nearZ : 0.1f; + farZ_ = farZ > nearZ_ ? farZ : nearZ_ + 1.f; + const float aspectSafe = aspect > 1e-4f ? aspect : 1.f; + const float fovRad = fovYDeg * 0.017453292519943295f; + const glm::mat4 view = + glm::lookAtRH(glm::vec3(eyeX, eyeY, eyeZ), glm::vec3(targetX, targetY, targetZ), + glm::vec3(upX, upY, upZ)); + const glm::mat4 proj = perspectiveVulkanRH_ZO(fovRad, aspectSafe, nearZ_, farZ_); + setInvViewProj(glm::inverse(proj * view)); + ssgi_->sendFloat("nearZ", nearZ_); + ssgi_->sendFloat("farZ", farZ_); +} + +void GlobalIllumination::setRadius(float radius) { + radius_ = radius > 1e-4f ? radius : 1e-4f; + setFloat("radius", radius_); +} + +void GlobalIllumination::setIntensity(float intensity) { + intensity_ = std::max(intensity, 0.f); + setFloat("intensity", intensity_); +} + +void GlobalIllumination::setLightDirection(float dx, float dy, float dz) { + glm::vec3 d(dx, dy, dz); + if (glm::length(d) < 1e-6f) d = glm::vec3(0.f, 1.f, 0.f); + else d = glm::normalize(d); + lightDir_ = d; + ssgi_->sendFloat("lightDirX", lightDir_.x); + ssgi_->sendFloat("lightDirY", lightDir_.y); + ssgi_->sendFloat("lightDirZ", lightDir_.z); +} + +void GlobalIllumination::setLightColor(float r, float g, float b) { + lightColor_ = glm::vec3(std::max(r, 0.f), std::max(g, 0.f), std::max(b, 0.f)); + ssgi_->sendFloat("lightR", lightColor_.x); + ssgi_->sendFloat("lightG", lightColor_.y); + ssgi_->sendFloat("lightB", lightColor_.z); +} + +bool GlobalIllumination::hasParam(const std::string &name) const { + return ssgi_ && ssgi_->hasUniform(name); +} + +void GlobalIllumination::setFloat(const std::string &name, float value) { + if (!ssgi_ || !ssgi_->hasUniform(name)) + throw eve::Exception("GlobalIllumination.setFloat: missing param '%s'", name.c_str()); + ssgi_->sendFloat(name, value); + if (name == "radius") radius_ = value; + if (name == "intensity") intensity_ = value; +} + +float GlobalIllumination::getFloat(const std::string &name) const { + if (!ssgi_ || !ssgi_->hasUniform(name)) + throw eve::Exception("GlobalIllumination.getFloat: missing param '%s'", name.c_str()); + float v = 0.f; + if (ssgi_->getFromVar(name, &v, sizeof(v)) == int(sizeof(v))) return v; + throw eve::Exception("GlobalIllumination.getFloat: missing param '%s'", name.c_str()); +} + +int GlobalIllumination::getSampleCount() const { + return int(std::lround(getFloat("sampleCount"))); +} + +void GlobalIllumination::uploadUniforms(int width, int height) { + if (width < 1) width = 1; + if (height < 1) height = 1; + ssgi_->sendMatrix("invViewProj", invViewProj_); + ssgi_->sendFloat("nearZ", nearZ_); + ssgi_->sendFloat("farZ", farZ_); + ssgi_->sendFloat("radius", radius_); + ssgi_->sendFloat("intensity", intensity_); + ssgi_->sendFloat("lightDirX", lightDir_.x); + ssgi_->sendFloat("lightDirY", lightDir_.y); + ssgi_->sendFloat("lightDirZ", lightDir_.z); + ssgi_->sendFloat("lightR", lightColor_.x); + ssgi_->sendFloat("lightG", lightColor_.y); + ssgi_->sendFloat("lightB", lightColor_.z); + ssgi_->sendFloat("texelW", 1.f / float(width)); + ssgi_->sendFloat("texelH", 1.f / float(height)); +} + +void GlobalIllumination::drawFullscreen(Graphics *gfx, Texture *source, Shader *shader, + Texture *hwDepth) { + if (!gfx) throw eve::Exception("GlobalIllumination: null graphics"); + if (!source) throw eve::Exception("GlobalIllumination: null source texture"); + if (!shader) throw eve::Exception("GlobalIllumination: null shader"); + const float dw = gfx->getCanvas() ? float(gfx->getCanvas()->getWidth()) : float(gfx->getWidth()); + const float dh = + gfx->getCanvas() ? float(gfx->getCanvas()->getHeight()) : float(gfx->getHeight()); + if (hwDepth) + gfx->drawTexturedRectShaderDepth(source, hwDepth, shader, 0.f, 0.f, dw, dh, + Color(1.f, 1.f, 1.f, 1.f)); + else + gfx->drawTexturedRectShader(source, shader, 0.f, 0.f, dw, dh, Color(1.f, 1.f, 1.f, 1.f)); +} + +void GlobalIllumination::applyFromDepth(Graphics *gfx, Texture *packedAlbedo) { + if (!packedAlbedo) throw eve::Exception("GlobalIllumination.applyFromDepth: null packedAlbedo"); + ssgi_->sendFloat("useNdcDepth", 0.f); + uploadUniforms(packedAlbedo->getWidth(), packedAlbedo->getHeight()); + drawFullscreen(gfx, packedAlbedo, ssgi_, nullptr); +} + +void GlobalIllumination::applyFromScene(Graphics *gfx, Texture *color, Texture *hwDepth) { + if (!color) throw eve::Exception("GlobalIllumination.applyFromScene: null color"); + if (!hwDepth) throw eve::Exception("GlobalIllumination.applyFromScene: null hwDepth"); + ssgi_->sendFloat("useNdcDepth", 1.f); + uploadUniforms(color->getWidth(), color->getHeight()); + drawFullscreen(gfx, color, ssgi_, hwDepth); +} + +void GlobalIllumination::applyFromDepthTo(Graphics *gfx, Texture *packedAlbedo, Canvas *dest) { + if (!gfx) throw eve::Exception("GlobalIllumination.applyFromDepthTo: null graphics"); + if (!dest) throw eve::Exception("GlobalIllumination.applyFromDepthTo: null dest"); + Canvas *prev = gfx->getCanvas(); + gfx->setCanvas(dest); + applyFromDepth(gfx, packedAlbedo); + gfx->setCanvas(prev == gfx ? nullptr : prev); +} + +} // namespace eve::graphics diff --git a/src/modules/graphics/GlobalIllumination.h b/src/modules/graphics/GlobalIllumination.h new file mode 100644 index 00000000..3a0996ab --- /dev/null +++ b/src/modules/graphics/GlobalIllumination.h @@ -0,0 +1,91 @@ +#pragma once + +#include +#include +#include + +namespace eve::graphics { + +class Canvas; +class Graphics; +class Shader; +class Texture; + +/** + * Screen-space single-bounce GI (SSGI). + * + * Samples scene color (RGB = lit radiance) plus hardware D32 depth, and adds + * bounced light from nearby occluders. Manual fullscreen overlay + * (`applyFromScene` / `applyFromDepth`). The 3D default path does not + * auto-apply it: sampling lit scene color reprints nearby props onto the + * floor as swimming ghosts. Mesh shaders still add hemispheric sky/ground + * + wrap fill. Tests may still pass a packed RGBA8 (RGB = albedo, A = + * linear depth) via applyFromDepth. + * + * Quality presets ("low" | "medium" | "high") tune sample count and radius. + */ +class GlobalIllumination { +public: + explicit GlobalIllumination(Graphics *gfx); + ~GlobalIllumination(); + + GlobalIllumination(const GlobalIllumination &) = delete; + GlobalIllumination &operator=(const GlobalIllumination &) = delete; + + /** "low" | "medium" | "high" (unknown → medium). */ + void setQuality(const std::string &quality); + std::string getQuality() const { return quality_; } + + /** + * Camera for depth reconstruction (RH + ZO). + * Builds inv(viewProj) and near/far used by applyFromDepth. + */ + void setCamera(float eyeX, float eyeY, float eyeZ, float targetX, float targetY, float targetZ, + float upX, float upY, float upZ, float fovYDeg, float aspect, float nearZ, + float farZ); + + void setInvViewProj(const glm::mat4 &invViewProj); + + void setRadius(float radius); + void setIntensity(float intensity); + void setLightDirection(float dx, float dy, float dz); + void setLightColor(float r, float g, float b); + + float getRadius() const { return radius_; } + float getIntensity() const { return intensity_; } + + bool hasParam(const std::string &name) const; + void setFloat(const std::string &name, float value); + float getFloat(const std::string &name) const; + + int getSampleCount() const; + + /** + * Overlay bounced light onto the currently bound canvas / screen. + * Packed path (tests): RGB=albedo/lit, A=linear depth 0..1. + * 3D path: applyFromScene(color, hwDepth) with D32 NDC z. + */ + void applyFromDepth(Graphics *gfx, Texture *packedAlbedo); + void applyFromDepthTo(Graphics *gfx, Texture *packedAlbedo, Canvas *dest); + void applyFromScene(Graphics *gfx, Texture *color, Texture *hwDepth); + + Shader *getShader() const { return ssgi_; } + +private: + void applyQualityDefaults(); + void uploadUniforms(int width, int height); + void drawFullscreen(Graphics *gfx, Texture *source, Shader *shader, Texture *hwDepth = nullptr); + + Graphics *gfx_ = nullptr; + Shader *ssgi_ = nullptr; + std::string quality_ = "medium"; + glm::mat4 invViewProj_{1.f}; + float nearZ_ = 0.1f; + float farZ_ = 100.f; + float radius_ = 1.25f; + float intensity_ = 0.45f; + glm::vec3 lightDir_{0.4f, 1.f, 0.3f}; + glm::vec3 lightColor_{1.f, 1.f, 1.f}; +}; + +} // namespace eve::graphics diff --git a/src/modules/graphics/Graphics.cpp b/src/modules/graphics/Graphics.cpp index 40c8a3dd..93b0bcb8 100644 --- a/src/modules/graphics/Graphics.cpp +++ b/src/modules/graphics/Graphics.cpp @@ -11,6 +11,7 @@ #include "graphics/AntiAliasing.h" #include "graphics/Volumetric.h" #include "graphics/AmbientOcclusion.h" +#include "graphics/GlobalIllumination.h" #include "graphics/Material.h" #include "graphics/RenderControl.h" #include "font/FontData.h" @@ -265,6 +266,7 @@ void Graphics::expose(ssq::Table &table) { gbuffer.addFunc("getWidth", &GBuffer::getWidth); gbuffer.addFunc("getHeight", &GBuffer::getHeight); gbuffer.addFunc("getDepthTexture", &GBuffer::getDepthTexture); + gbuffer.addFunc("getHwDepthTexture", &GBuffer::getHwDepthTexture); gbuffer.addFunc("getNormalTexture", &GBuffer::getNormalTexture); gbuffer.addFunc("getAlbedoTexture", &GBuffer::getAlbedoTexture); gbuffer.addFunc("hasBuffer", &GBuffer::hasBuffer); @@ -358,12 +360,37 @@ void Graphics::expose(ssq::Table &table) { ao.addFunc("blurTo", &AmbientOcclusion::blurTo); ao.addFunc("applyOverlay", &AmbientOcclusion::applyOverlay); ao.addFunc("applyOverlayTo", &AmbientOcclusion::applyOverlayTo); + ao.addFunc("applyFromDepth", &AmbientOcclusion::applyFromDepth); + ao.addFunc("applyFromDepthTo", &AmbientOcclusion::applyFromDepthTo); + ao.addFunc("applyFromGBuffer", &AmbientOcclusion::applyFromGBuffer); ao.addFunc("getShader", &AmbientOcclusion::getShader); ao.addFunc("getSsaoShader", &AmbientOcclusion::getSsaoShader); ao.addFunc("getHbaoShader", &AmbientOcclusion::getHbaoShader); ao.addFunc("getGtaoShader", &AmbientOcclusion::getGtaoShader); ao.addFunc("getBlurShader", &AmbientOcclusion::getBlurShader); ao.addFunc("getOverlayShader", &AmbientOcclusion::getOverlayShader); + ao.addFunc("getFromDepthShader", &AmbientOcclusion::getFromDepthShader); + + auto gi = table.addClass( + "GlobalIllumination", + std::function([]() -> GlobalIllumination * { return nullptr; }), true); + gi.addFunc("setQuality", &GlobalIllumination::setQuality); + gi.addFunc("getQuality", &GlobalIllumination::getQuality); + gi.addFunc("setCamera", &GlobalIllumination::setCamera); + gi.addFunc("setRadius", &GlobalIllumination::setRadius); + gi.addFunc("setIntensity", &GlobalIllumination::setIntensity); + gi.addFunc("setLightDirection", &GlobalIllumination::setLightDirection); + gi.addFunc("setLightColor", &GlobalIllumination::setLightColor); + gi.addFunc("getRadius", &GlobalIllumination::getRadius); + gi.addFunc("getIntensity", &GlobalIllumination::getIntensity); + gi.addFunc("hasParam", &GlobalIllumination::hasParam); + gi.addFunc("setFloat", &GlobalIllumination::setFloat); + gi.addFunc("getFloat", &GlobalIllumination::getFloat); + gi.addFunc("getSampleCount", &GlobalIllumination::getSampleCount); + gi.addFunc("applyFromDepth", &GlobalIllumination::applyFromDepth); + gi.addFunc("applyFromDepthTo", &GlobalIllumination::applyFromDepthTo); + gi.addFunc("applyFromScene", &GlobalIllumination::applyFromScene); + gi.addFunc("getShader", &GlobalIllumination::getShader); auto aa = table.addClass( "AntiAliasing", std::function([]() -> AntiAliasing * { return nullptr; }), @@ -418,9 +445,11 @@ void Graphics::expose(ssq::Class &cls) { cls.addFunc("setDirectionalLight", &Graphics::setDirectionalLight); cls.addFunc("newMaterial", &Graphics::newMaterial); cls.addFunc("getRenderControl", &Graphics::getRenderControl); + cls.addFunc("getSceneColorTexture", &Graphics::getSceneColorTexture); cls.addFunc("newQuad", &Graphics::newQuad); cls.addFunc("newVolumetric", &Graphics::newVolumetric); cls.addFunc("newAmbientOcclusion", &Graphics::newAmbientOcclusion); + cls.addFunc("newGlobalIllumination", &Graphics::newGlobalIllumination); cls.addFunc("newAntiAliasing", &Graphics::newAntiAliasing); cls.addFunc("drawOcclusionSolid", &Graphics::drawOcclusionSolid); cls.addFunc("drawOcclusionTexture", &Graphics::drawOcclusionTexture); @@ -439,6 +468,23 @@ Volumetric *Graphics::newVolumetric() { return new Volumetric(this); } AmbientOcclusion *Graphics::newAmbientOcclusion() { return new AmbientOcclusion(this); } +GlobalIllumination *Graphics::newGlobalIllumination() { return new GlobalIllumination(this); } + +AmbientOcclusion *Graphics::pipelineAmbientOcclusion() { + if (!pipelineAO_) pipelineAO_ = std::make_unique(this); + return pipelineAO_.get(); +} + +GlobalIllumination *Graphics::pipelineGlobalIllumination() { + if (!pipelineGI_) pipelineGI_ = std::make_unique(this); + return pipelineGI_.get(); +} + +AntiAliasing *Graphics::pipelineAntiAliasing() { + if (!pipelineAA_) pipelineAA_ = std::make_unique(this); + return pipelineAA_.get(); +} + AntiAliasing *Graphics::newAntiAliasing() { return new AntiAliasing(this); } Shader *Graphics::newHairShader() { return hair::createShader(this); } diff --git a/src/modules/graphics/Graphics.h b/src/modules/graphics/Graphics.h index bee40599..b8650e29 100644 --- a/src/modules/graphics/Graphics.h +++ b/src/modules/graphics/Graphics.h @@ -15,6 +15,7 @@ #include "graphics/AntiAliasing.h" #include "graphics/Volumetric.h" #include "graphics/AmbientOcclusion.h" +#include "graphics/GlobalIllumination.h" #include "graphics/Material.h" #include "graphics/GBuffer.h" #include "graphics/RenderControl.h" @@ -153,6 +154,16 @@ public: float w, float h, float u0, float v0, float u1, float v1, const Color &color) = 0; + /** + * Fullscreen/post draw sampling `color` at binding 0 and `depth` at binding 1 + * (hardware D32, .r = Vulkan NDC z). depth may be null → color is bound twice. + */ + virtual void drawTexturedRectShaderDepth(Texture *color, Texture *depth, Shader *shader, float x, + float y, float w, float h, const Color &tint) { + drawTexturedRectShader(color, shader, x, y, w, h, tint); + (void)depth; + } + /** * Lit 2D draw (albedo + normal map). Uses Lighting2DUBO from setLighting2D. * normal may be null → treated as flat (0.5,0.5,1) only if a default normal tex exists. @@ -229,15 +240,18 @@ public: */ virtual void beginGBufferPass(int width, int height) = 0; virtual void drawMeshGBuffer(Mesh *mesh, const glm::mat4 &mvp, const glm::mat4 &model, - float nearZ, float farZ) = 0; + float nearZ, float farZ, Texture *albedo = nullptr, + float tintR = 1.f, float tintG = 1.f, float tintB = 1.f) = 0; virtual void endGBufferPass() = 0; -/** - * Begin a swapchain pass cleared for 3D (color+depth). Leaves the pass open for drawMesh - * and a following RenderSystem::render (2D). Does not present. - * Soft-fails (no throw) when the swapchain cannot be acquired yet — check had3DThisFrame(). - */ -virtual void begin3DFrame() = 0; + /** + * Begin a 3D frame: shadow/gbuffer (if pending) then a sampleable scene color + * pass (color+depth). Leaves the pass open for drawMesh and a following + * RenderSystem::render (2D). Does not present. flushToSwapchain resolves the + * scene color (FXAA when "aa" is on) into the swapchain, then draws 2D overlays. + * Soft-fails (no throw) when the swapchain cannot be acquired yet — check had3DThisFrame(). + */ + virtual void begin3DFrame() = 0; /** viewProj used by subsequent drawMesh (mvp = viewProj * model). * Expect RH + ZO with Vulkan NDC Y (see perspectiveVulkanRH_ZO). */ @@ -246,6 +260,15 @@ virtual void begin3DFrame() = 0; /** Camera view matrix for subsequent drawMesh (view-space depth / CSM select). */ virtual void setMesh3DView(const glm::mat4 &view) = 0; + /** Near/far used to pack linear depth into scene color A (SSGI). */ + virtual void setMesh3DClip(float nearZ, float farZ) = 0; + + /** + * Sampleable 3D color target for the current frame (RGB = lit, A = linear depth). + * Valid after begin3DFrame until present; nullptr when 3D did not run offscreen. + */ + virtual Texture *getSceneColorTexture() { return nullptr; } + /** Draw one mesh with model matrix. Requires begin3DFrame() (or an open swapchain pass). */ virtual void drawMesh(Mesh *mesh, const glm::mat4 &model, Texture *texture, const Color &tint) = 0; @@ -463,6 +486,20 @@ virtual void begin3DFrame() = 0; */ AmbientOcclusion *newAmbientOcclusion(); + /** + * Screen-space single-bounce GI. Caller owns GlobalIllumination*; + * its Shaders are owned by Graphics. + */ + GlobalIllumination *newGlobalIllumination(); + + /** + * Pipeline-owned AO / GI / AA used by RenderSystem3D when features + * "ao" / "gi" / "aa" are enabled. Created on first use; Graphics owns them. + */ + AmbientOcclusion *pipelineAmbientOcclusion(); + GlobalIllumination *pipelineGlobalIllumination(); + AntiAliasing *pipelineAntiAliasing(); + /** * Classic image-space AA (FXAA / SMAA / SSAA / NFAA). Caller owns AntiAliasing*; * its Shaders are owned by Graphics. @@ -601,6 +638,9 @@ protected: Shader *currentShader = nullptr; Font *currentFont = nullptr; std::unique_ptr renderControl_; + std::unique_ptr pipelineAO_; + std::unique_ptr pipelineGI_; + std::unique_ptr pipelineAA_; }; } // namespace eve::graphics diff --git a/src/modules/graphics/RenderControl.cpp b/src/modules/graphics/RenderControl.cpp index 610ee836..f2d27b41 100644 --- a/src/modules/graphics/RenderControl.cpp +++ b/src/modules/graphics/RenderControl.cpp @@ -4,7 +4,7 @@ namespace eve::graphics { namespace { const char *kKnownFeatures[] = {"depthTest", "shadow", "gbuffer", "gbufferAlbedo", - "forward", "hair", "clustered"}; + "forward", "hair", "clustered", "ao", "gi", "aa"}; bool isKnownFeature(const std::string &feature) { for (const char *f : kKnownFeatures) { @@ -18,11 +18,14 @@ bool isKnownFeature(const std::string &feature) { RenderControl::RenderControl() { features_["depthTest"] = true; features_["shadow"] = true; - features_["gbuffer"] = false; - features_["gbufferAlbedo"] = false; + features_["gbuffer"] = true; + features_["gbufferAlbedo"] = true; features_["forward"] = true; features_["hair"] = true; features_["clustered"] = true; + features_["ao"] = true; + features_["gi"] = true; + features_["aa"] = true; dirty_ = true; compiled_ = false; } @@ -41,7 +44,16 @@ void RenderControl::setFeature(const std::string &feature, bool enabled) { if (cur == enabled) return; features_[feature] = enabled; if (feature == "gbufferAlbedo" && enabled) features_["gbuffer"] = true; - if (feature == "gbuffer" && !enabled) features_["gbufferAlbedo"] = false; + if (feature == "ao" && enabled) features_["gbuffer"] = true; + if (feature == "gi" && enabled) { + features_["gbuffer"] = true; + features_["gbufferAlbedo"] = true; + } + if (feature == "gbuffer" && !enabled) { + features_["gbufferAlbedo"] = false; + features_["ao"] = false; + features_["gi"] = false; + } dirty_ = true; } @@ -57,7 +69,8 @@ bool RenderControl::isEnabled(const std::string &feature) const { void RenderControl::compile() { passes_.clear(); if (isEnabled("shadow")) passes_.push_back("shadow"); - if (isEnabled("gbuffer") || isEnabled("gbufferAlbedo")) passes_.push_back("gbuffer"); + if (isEnabled("gbuffer") || isEnabled("gbufferAlbedo") || isEnabled("ao") || isEnabled("gi")) + passes_.push_back("gbuffer"); if (isEnabled("forward")) passes_.push_back("forward"); if (isEnabled("hair")) passes_.push_back("hair"); dirty_ = false; diff --git a/src/modules/graphics/RenderControl.h b/src/modules/graphics/RenderControl.h index 19e07695..85fdebb4 100644 --- a/src/modules/graphics/RenderControl.h +++ b/src/modules/graphics/RenderControl.h @@ -20,11 +20,17 @@ class Graphics; * Built-in features: * "depthTest" — HW z-buffer on forward/gbuffer draws (default on) * "shadow" — directional CSM shadow pass (default on) - * "gbuffer" — fill sampleable depth + normal buffers (default off) - * "gbufferAlbedo" — also write albedo into GBuffer (implies gbuffer) + * "gbuffer" — fill sampleable depth + normal buffers (on when ao/gi) + * "gbufferAlbedo" — also write albedo into GBuffer (implies gbuffer; on when gi) * "forward" — lit forward / clustered mesh draws (default on) * "hair" — transparent hair pass after opaque (default on) * "clustered" — prefer clustered forward when light count > 8 (default on) + * "ao" — screen-space AO overlay after FXAA resolve (implies gbuffer; default on) + * "gi" — enables gbufferAlbedo; mesh hemispheric GI (fullscreen SSGI is not auto-applied) + * "aa" — FXAA resolve of the 3D scene color into the swapchain (default on) + * + * 3D draws into a sampleable scene color target (not the swapchain). Present + * resolves that target (FXAA when "aa" is on), then composites AO/HUD. * * compile() is idempotent; enable/disable mark the control dirty until the * next compile(). RenderSystem3D auto-compiles when dirty. diff --git a/src/modules/graphics/RenderSystem3D.cpp b/src/modules/graphics/RenderSystem3D.cpp index 16c1b8b5..bdf5a41b 100644 --- a/src/modules/graphics/RenderSystem3D.cpp +++ b/src/modules/graphics/RenderSystem3D.cpp @@ -7,6 +7,7 @@ #include "graphics/Shadow.h" #include "graphics/RenderControl.h" #include "graphics/Material.h" +#include "graphics/AmbientOcclusion.h" #include #include @@ -522,24 +523,34 @@ void RenderSystem3D::render(Graphics &gfx) { if (!mr->visible) continue; const glm::mat4 model = modelFromTransform(*xf); const glm::mat4 mvp = viewProj * model; - auto emit = [&](Mesh *drawMesh, Material *mat) { + auto emit = [&](Mesh *drawMesh, Material *mat, Texture *albedo, float tr, float tg, + float tb) { if (!drawMesh) return; if (mat && mat->isTransparentHair()) return; if (!mat && mr->isHair) return; eve::debug::rtDraw("drawMeshGBuffer", "gbuffer"); - gfx.drawMeshGBuffer(drawMesh, mvp, model, cd->nearZ, cd->farZ); + gfx.drawMeshGBuffer(drawMesh, mvp, model, cd->nearZ, cd->farZ, albedo, tr, tg, tb); }; if (mr->usesParts()) { for (int p = 0; p < mr->partCount; ++p) { Material *mat = mr->parts[p].material ? mr->parts[p].material : mr->material; - emit(mr->parts[p].mesh, mat); + Texture *alb = mat ? mat->getAlbedoTexture() : mr->texture; + float tr = mat ? mat->getTintR() : mr->r; + float tg = mat ? mat->getTintG() : mr->g; + float tb = mat ? mat->getTintB() : mr->b; + emit(mr->parts[p].mesh, mat, alb, tr, tg, tb); } } else { if (mr->effectiveHair()) continue; const float dx = xf->x - eye.x; const float dy = xf->y - eye.y; const float dz = xf->z - eye.z; - emit(mr->meshForDistance(std::sqrt(dx * dx + dy * dy + dz * dz)), mr->material); + Texture *alb = mr->material ? mr->material->getAlbedoTexture() : mr->texture; + float tr = mr->material ? mr->material->getTintR() : mr->r; + float tg = mr->material ? mr->material->getTintG() : mr->g; + float tb = mr->material ? mr->material->getTintB() : mr->b; + emit(mr->meshForDistance(std::sqrt(dx * dx + dy * dy + dz * dz)), mr->material, alb, tr, + tg, tb); } } gfx.endGBufferPass(); @@ -675,6 +686,7 @@ void RenderSystem3D::render(Graphics &gfx) { const glm::mat4 projM = perspectiveVulkanRH_ZO(fovRad, aspect, cd->nearZ, cd->farZ); gfx.setMesh3DViewProj(projM * viewM); gfx.setMesh3DView(viewM); + gfx.setMesh3DClip(cd->nearZ, cd->farZ); gfx.setMesh3DCameraPos(eye); gfx.setMesh3DEnv(cd->envMap, cd->envIntensity); @@ -710,6 +722,30 @@ void RenderSystem3D::render(Graphics &gfx) { if (doHair) { for (const auto &item : hair) drawMeshWithMaterial(item.xf, item.mr, item.mesh, item.material); } + + const bool doAO = rc->isEnabled("ao"); + if (doAO && defaultCam && gfx.had3DThisFrame()) { + GBuffer *gb = rc->getGBuffer(); + if (gb && gb->isValid()) { + auto cd = defaultCam->data(); + const float aspectSafe = aspect > 1e-4f ? aspect : 1.f; + auto bindCam = [&](auto *fx) { + fx->setCamera(cd->eyeX, cd->eyeY, cd->eyeZ, cd->targetX, cd->targetY, cd->targetZ, + cd->upX, cd->upY, cd->upZ, cd->fovYDeg, aspectSafe, cd->nearZ, cd->farZ); + }; + AmbientOcclusion *ao = gfx.pipelineAmbientOcclusion(); + ao->setQuality("medium"); + ao->setIntensity(0.16f); + ao->setPower(1.1f); + ao->setRadius(std::clamp(cd->farZ * 0.006f, 0.18f, 0.35f)); + bindCam(ao); + if (Texture *depth = gb->getHwDepthTexture()) + ao->applyFromGBuffer(&gfx, depth, gb->getNormalTexture()); + // Fullscreen SSGI from lit scene color reprints nearby props + // (curtains, planters) onto the floor as multiple swimming ghosts. + // Mesh shaders still add hemispheric sky/ground + wrap fill. + } + } } } // namespace eve::graphics diff --git a/src/modules/graphics/shaders/ao_blur_frag_spv.inc b/src/modules/graphics/shaders/ao_blur_frag_spv.inc index 9c5b0aac..2a87a8a3 100644 --- a/src/modules/graphics/shaders/ao_blur_frag_spv.inc +++ b/src/modules/graphics/shaders/ao_blur_frag_spv.inc @@ -18,9 +18,9 @@ static const uint32_t ao_blur_frag_spv[] = { 0x61705377, 0x6c616974, 0x00000000, 0x00040005, 0x00000091, 0x70654477, 0x00006874, 0x00030005, 0x0000009c, 0x00000077, 0x00030005, 0x000000ad, 0x00006f61, 0x00050005, 0x000000b3, 0x4374756f, 0x726f6c6f, 0x00000000, 0x00050005, 0x000000b8, 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, - 0x0000000b, 0x00000006, 0x00000004, 0x00050048, 0x0000000c, 0x00000000, 0x00000023, 0x00000000, - 0x00030047, 0x0000000c, 0x00000002, 0x00040047, 0x0000002e, 0x00000022, 0x00000000, 0x00040047, - 0x0000002e, 0x00000021, 0x00000000, 0x00040047, 0x00000032, 0x0000001e, 0x00000001, 0x00040047, + 0x0000000b, 0x00000006, 0x00000004, 0x00030047, 0x0000000c, 0x00000002, 0x00050048, 0x0000000c, + 0x00000000, 0x00000023, 0x00000000, 0x00040047, 0x0000002e, 0x00000021, 0x00000000, 0x00040047, + 0x0000002e, 0x00000022, 0x00000000, 0x00040047, 0x00000032, 0x0000001e, 0x00000001, 0x00040047, 0x000000b3, 0x0000001e, 0x00000000, 0x00040047, 0x000000b8, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040020, 0x00000007, 0x00000007, 0x00000006, 0x00040015, 0x00000009, 0x00000020, 0x00000000, 0x0004002b, diff --git a/src/modules/graphics/shaders/ao_from_depth.frag b/src/modules/graphics/shaders/ao_from_depth.frag new file mode 100644 index 00000000..cc9b9d74 --- /dev/null +++ b/src/modules/graphics/shaders/ao_from_depth.frag @@ -0,0 +1,139 @@ +#version 450 +// Combined SSAO + overlay for the 3D swapchain pass. +// Samples hardware D32 (MainTex.r = Vulkan NDC z). Optional NormalTex +// (binding 1) is GBuffer world normal * 0.5 + 0.5. World-space hemisphere +// (not a screen disc) so nearby props do not stamp swimming silhouettes +// onto the floor. +// +// Push (declareMatrix + declareFloat order): +// 0..15 invViewProj +// 16 nearZ 17 farZ +// 18 radius 19 bias 20 intensity 21 power +// 22 sampleCount 23 texelW 24 texelH 25 hasNormal + +layout(location = 0) in vec4 fragColor; +layout(location = 1) in vec2 fragUV; +layout(location = 0) out vec4 outColor; +layout(binding = 0) uniform sampler2D MainTex; +layout(binding = 1) uniform sampler2D NormalTex; +layout(push_constant) uniform Externals { float data[32]; } u; + +mat4 loadInvVP() { + return mat4( + u.data[0], u.data[1], u.data[2], u.data[3], + u.data[4], u.data[5], u.data[6], u.data[7], + u.data[8], u.data[9], u.data[10], u.data[11], + u.data[12], u.data[13], u.data[14], u.data[15]); +} + +float ndcToViewZ(float ndcZ, float nearZ, float farZ) { + return (nearZ * farZ) / max(farZ - ndcZ * (farZ - nearZ), 1e-6); +} + +vec3 reconstructWorld(mat4 invVP, vec2 uv, float ndcZ) { + vec2 ndc = vec2(uv.x * 2.0 - 1.0, uv.y * 2.0 - 1.0); + vec4 clip = vec4(ndc, clamp(ndcZ, 0.0, 1.0), 1.0); + vec4 w = invVP * clip; + return w.xyz / max(w.w, 1e-6); +} + +float sampleNdcZ(vec2 uv) { + return texture(MainTex, clamp(uv, vec2(0.0), vec2(1.0))).r; +} + +vec3 kernelSample(int i) { + float fi = float(i); + float z = fract(fi * 0.6180339887); + float a = fi * 2.3999632297; + float r = sqrt(max(1.0 - z * z, 0.0)) * mix(0.2, 1.0, (fi + 1.0) / 24.0); + return vec3(cos(a) * r, sin(a) * r, z); +} + +void main() { + mat4 invVP = loadInvVP(); + float nearZ = max(u.data[16], 1e-3); + float farZ = max(u.data[17], nearZ + 1e-3); + float radius = max(u.data[18], 1e-4); + float bias = max(u.data[19], 0.0); + float intensity = max(u.data[20], 0.0); + float power = max(u.data[21], 0.01); + int samples = int(clamp(u.data[22], 4.0, 24.0)); + float texelW = max(u.data[23], 1e-5); + float texelH = max(u.data[24], 1e-5); + float hasNormal = u.data[25]; + + float ndcZ = sampleNdcZ(fragUV); + if (ndcZ >= 0.9999) { + outColor = vec4(0.0); + return; + } + + vec3 pos = reconstructWorld(invVP, fragUV, ndcZ); + vec4 eyeH = invVP * vec4(0.0, 0.0, 0.0, 1.0); + vec3 camPos = eyeH.xyz / max(eyeH.w, 1e-6); + vec3 normal; + if (hasNormal > 0.5) { + vec3 n = texture(NormalTex, clamp(fragUV, vec2(0.0), vec2(1.0))).xyz * 2.0 - 1.0; + float len = length(n); + normal = len > 1e-3 ? n / len : vec3(0.0, 1.0, 0.0); + } else { + vec3 posR = reconstructWorld(invVP, fragUV + vec2(texelW, 0.0), + sampleNdcZ(fragUV + vec2(texelW, 0.0))); + vec3 posL = reconstructWorld(invVP, fragUV - vec2(texelW, 0.0), + sampleNdcZ(fragUV - vec2(texelW, 0.0))); + vec3 posU = reconstructWorld(invVP, fragUV + vec2(0.0, texelH), + sampleNdcZ(fragUV + vec2(0.0, texelH))); + vec3 posD = reconstructWorld(invVP, fragUV - vec2(0.0, texelH), + sampleNdcZ(fragUV - vec2(0.0, texelH))); + vec3 h = abs(sampleNdcZ(fragUV + vec2(texelW, 0.0)) - ndcZ) < + abs(sampleNdcZ(fragUV - vec2(texelW, 0.0)) - ndcZ) + ? (posR - pos) + : (pos - posL); + vec3 v = abs(sampleNdcZ(fragUV + vec2(0.0, texelH)) - ndcZ) < + abs(sampleNdcZ(fragUV - vec2(0.0, texelH)) - ndcZ) + ? (posU - pos) + : (pos - posD); + normal = normalize(cross(h, v)); + } + if (dot(normal, camPos - pos) < 0.0) normal = -normal; + + vec3 up = abs(normal.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(up - normal * dot(up, normal)); + vec3 bitangent = cross(normal, tangent); + mat3 tbn = mat3(tangent, bitangent, normal); + mat4 vp = inverse(invVP); + + float occlusion = 0.0; + for (int i = 0; i < 24; ++i) { + if (i >= samples) break; + vec3 sampleWorld = pos + tbn * (kernelSample(i) * radius); + vec4 clip = vp * vec4(sampleWorld, 1.0); + if (clip.w < 1e-5) continue; + vec3 ndc = clip.xyz / clip.w; + vec2 sampleUV = ndc.xy * 0.5 + 0.5; + if (sampleUV.x < 0.0 || sampleUV.x > 1.0 || sampleUV.y < 0.0 || sampleUV.y > 1.0) + continue; + float sampleNdc = sampleNdcZ(sampleUV); + if (sampleNdc >= 0.9999) continue; + + vec3 hitPos = reconstructWorld(invVP, sampleUV, sampleNdc); + float dist = length(hitPos - pos); + if (dist < 1e-5 || dist > radius) continue; + float ndl = max(dot(normal, (hitPos - pos) / dist), 0.0); + + float expectedV = ndcToViewZ(clamp(ndc.z, 0.0, 1.0), nearZ, farZ); + float actualV = ndcToViewZ(sampleNdc, nearZ, farZ); + float delta = expectedV - actualV; + float depthOcc = smoothstep(bias, bias + radius * 0.08, delta); + float thick = 1.0 - smoothstep(radius * 0.2, radius * 0.55, max(delta, 0.0)); + float mismatch = length(hitPos - sampleWorld); + float local = 1.0 - smoothstep(radius * 0.25, radius * 0.7, mismatch); + float rangeCheck = 1.0 - smoothstep(radius * 0.4, radius, dist); + occlusion += ndl * depthOcc * thick * local * rangeCheck; + } + + float ao = 1.0 - (occlusion / float(max(samples, 1))); + ao = clamp(pow(max(ao, 0.0), power), 0.0, 1.0); + float dark = clamp((1.0 - ao) * intensity, 0.0, 1.0); + outColor = vec4(0.0, 0.0, 0.0, dark) * fragColor; +} diff --git a/src/modules/graphics/shaders/ao_from_depth_frag_spv.inc b/src/modules/graphics/shaders/ao_from_depth_frag_spv.inc new file mode 100644 index 00000000..8b3385fc --- /dev/null +++ b/src/modules/graphics/shaders/ao_from_depth_frag_spv.inc @@ -0,0 +1,539 @@ +static const uint32_t ao_from_depth_frag_spv[] = { + 0x07230203, 0x00010000, 0x000d000b, 0x000002e3, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, + 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, + 0x0008000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x00000109, 0x00000114, 0x000002e0, + 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x000a0004, 0x475f4c47, + 0x4c474f4f, 0x70635f45, 0x74735f70, 0x5f656c79, 0x656e696c, 0x7269645f, 0x69746365, 0x00006576, + 0x00080004, 0x475f4c47, 0x4c474f4f, 0x6e695f45, 0x64756c63, 0x69645f65, 0x74636572, 0x00657669, + 0x00040005, 0x00000004, 0x6e69616d, 0x00000000, 0x00050005, 0x0000000a, 0x64616f6c, 0x56766e49, + 0x00002850, 0x00080005, 0x00000011, 0x5463646e, 0x6569566f, 0x66285a77, 0x31663b31, 0x3b31663b, + 0x00000000, 0x00040005, 0x0000000e, 0x5a63646e, 0x00000000, 0x00040005, 0x0000000f, 0x7261656e, + 0x0000005a, 0x00040005, 0x00000010, 0x5a726166, 0x00000000, 0x000a0005, 0x0000001b, 0x6f636572, + 0x7274736e, 0x57746375, 0x646c726f, 0x34666d28, 0x66763b34, 0x31663b32, 0x0000003b, 0x00040005, + 0x00000018, 0x56766e69, 0x00000050, 0x00030005, 0x00000019, 0x00007675, 0x00040005, 0x0000001a, + 0x5a63646e, 0x00000000, 0x00060005, 0x0000001f, 0x706d6173, 0x644e656c, 0x76285a63, 0x003b3266, + 0x00030005, 0x0000001e, 0x00007675, 0x00070005, 0x00000025, 0x6e72656b, 0x61536c65, 0x656c706d, + 0x3b316928, 0x00000000, 0x00030005, 0x00000024, 0x00000069, 0x00050005, 0x0000002a, 0x65747845, + 0x6c616e72, 0x00000073, 0x00050006, 0x0000002a, 0x00000000, 0x61746164, 0x00000000, 0x00030005, + 0x0000002c, 0x00000075, 0x00030005, 0x00000076, 0x0063646e, 0x00040005, 0x00000084, 0x70696c63, + 0x00000000, 0x00030005, 0x0000008b, 0x00000077, 0x00040005, 0x0000009c, 0x6e69614d, 0x00786554, + 0x00030005, 0x000000a6, 0x00006966, 0x00030005, 0x000000a9, 0x0000007a, 0x00030005, 0x000000ae, + 0x00000061, 0x00030005, 0x000000b2, 0x00000072, 0x00040005, 0x000000cc, 0x56766e69, 0x00000050, + 0x00040005, 0x000000ce, 0x7261656e, 0x0000005a, 0x00040005, 0x000000d4, 0x5a726166, 0x00000000, + 0x00040005, 0x000000db, 0x69646172, 0x00007375, 0x00040005, 0x000000e1, 0x73616962, 0x00000000, + 0x00050005, 0x000000e6, 0x65746e69, 0x7469736e, 0x00000079, 0x00040005, 0x000000eb, 0x65776f70, + 0x00000072, 0x00040005, 0x000000f1, 0x706d6173, 0x0073656c, 0x00040005, 0x000000f8, 0x65786574, + 0x0000576c, 0x00040005, 0x000000fe, 0x65786574, 0x0000486c, 0x00050005, 0x00000103, 0x4e736168, + 0x616d726f, 0x0000006c, 0x00040005, 0x00000107, 0x5a63646e, 0x00000000, 0x00040005, 0x00000109, + 0x67617266, 0x00005655, 0x00040005, 0x0000010a, 0x61726170, 0x0000006d, 0x00050005, 0x00000114, + 0x4374756f, 0x726f6c6f, 0x00000000, 0x00030005, 0x00000118, 0x00736f70, 0x00040005, 0x00000119, + 0x61726170, 0x0000006d, 0x00040005, 0x0000011b, 0x61726170, 0x0000006d, 0x00040005, 0x0000011d, + 0x61726170, 0x0000006d, 0x00040005, 0x00000120, 0x48657965, 0x00000000, 0x00040005, 0x00000124, + 0x506d6163, 0x0000736f, 0x00030005, 0x00000131, 0x0000006e, 0x00050005, 0x00000132, 0x6d726f4e, + 0x65546c61, 0x00000078, 0x00030005, 0x0000013b, 0x006e656c, 0x00040005, 0x0000013e, 0x6d726f6e, + 0x00006c61, 0x00040005, 0x0000014c, 0x52736f70, 0x00000000, 0x00040005, 0x00000155, 0x61726170, + 0x0000006d, 0x00040005, 0x00000157, 0x61726170, 0x0000006d, 0x00040005, 0x00000159, 0x61726170, + 0x0000006d, 0x00040005, 0x0000015a, 0x61726170, 0x0000006d, 0x00040005, 0x0000015c, 0x4c736f70, + 0x00000000, 0x00040005, 0x00000165, 0x61726170, 0x0000006d, 0x00040005, 0x00000167, 0x61726170, + 0x0000006d, 0x00040005, 0x00000169, 0x61726170, 0x0000006d, 0x00040005, 0x0000016a, 0x61726170, + 0x0000006d, 0x00040005, 0x0000016c, 0x55736f70, 0x00000000, 0x00040005, 0x00000175, 0x61726170, + 0x0000006d, 0x00040005, 0x00000177, 0x61726170, 0x0000006d, 0x00040005, 0x00000179, 0x61726170, + 0x0000006d, 0x00040005, 0x0000017a, 0x61726170, 0x0000006d, 0x00040005, 0x0000017c, 0x44736f70, + 0x00000000, 0x00040005, 0x00000185, 0x61726170, 0x0000006d, 0x00040005, 0x00000187, 0x61726170, + 0x0000006d, 0x00040005, 0x00000189, 0x61726170, 0x0000006d, 0x00040005, 0x0000018a, 0x61726170, + 0x0000006d, 0x00030005, 0x0000018c, 0x00000068, 0x00040005, 0x00000191, 0x61726170, 0x0000006d, + 0x00040005, 0x0000019a, 0x61726170, 0x0000006d, 0x00030005, 0x000001ab, 0x00000076, 0x00040005, + 0x000001b0, 0x61726170, 0x0000006d, 0x00040005, 0x000001b9, 0x61726170, 0x0000006d, 0x00030005, + 0x000001d8, 0x00007075, 0x00040005, 0x000001e2, 0x676e6174, 0x00746e65, 0x00050005, 0x000001eb, + 0x61746962, 0x6e65676e, 0x00000074, 0x00030005, 0x000001f1, 0x006e6274, 0x00030005, 0x00000202, + 0x00007076, 0x00050005, 0x00000205, 0x6c63636f, 0x6f697375, 0x0000006e, 0x00030005, 0x00000206, + 0x00000069, 0x00050005, 0x00000214, 0x706d6173, 0x6f57656c, 0x00646c72, 0x00040005, 0x00000217, + 0x61726170, 0x0000006d, 0x00040005, 0x0000021e, 0x70696c63, 0x00000000, 0x00030005, 0x0000022c, + 0x0063646e, 0x00050005, 0x00000233, 0x706d6173, 0x5655656c, 0x00000000, 0x00050005, 0x00000254, + 0x706d6173, 0x644e656c, 0x00000063, 0x00040005, 0x00000255, 0x61726170, 0x0000006d, 0x00040005, + 0x0000025d, 0x50746968, 0x0000736f, 0x00040005, 0x0000025e, 0x61726170, 0x0000006d, 0x00040005, + 0x00000260, 0x61726170, 0x0000006d, 0x00040005, 0x00000262, 0x61726170, 0x0000006d, 0x00040005, + 0x00000265, 0x74736964, 0x00000000, 0x00030005, 0x00000273, 0x006c646e, 0x00050005, 0x0000027d, + 0x65707865, 0x64657463, 0x00000056, 0x00040005, 0x00000282, 0x61726170, 0x0000006d, 0x00040005, + 0x00000283, 0x61726170, 0x0000006d, 0x00040005, 0x00000285, 0x61726170, 0x0000006d, 0x00040005, + 0x00000288, 0x75746361, 0x00566c61, 0x00040005, 0x00000289, 0x61726170, 0x0000006d, 0x00040005, + 0x0000028b, 0x61726170, 0x0000006d, 0x00040005, 0x0000028d, 0x61726170, 0x0000006d, 0x00040005, + 0x00000290, 0x746c6564, 0x00000061, 0x00050005, 0x00000294, 0x74706564, 0x63634f68, 0x00000000, + 0x00040005, 0x0000029d, 0x63696874, 0x0000006b, 0x00050005, 0x000002a7, 0x6d73696d, 0x68637461, + 0x00000000, 0x00040005, 0x000002ac, 0x61636f6c, 0x0000006c, 0x00050005, 0x000002b6, 0x676e6172, + 0x65684365, 0x00006b63, 0x00030005, 0x000002cb, 0x00006f61, 0x00040005, 0x000002d7, 0x6b726164, + 0x00000000, 0x00050005, 0x000002e0, 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, 0x00000029, + 0x00000006, 0x00000004, 0x00030047, 0x0000002a, 0x00000002, 0x00050048, 0x0000002a, 0x00000000, + 0x00000023, 0x00000000, 0x00040047, 0x0000009c, 0x00000021, 0x00000000, 0x00040047, 0x0000009c, + 0x00000022, 0x00000000, 0x00040047, 0x00000109, 0x0000001e, 0x00000001, 0x00040047, 0x00000114, + 0x0000001e, 0x00000000, 0x00040047, 0x00000132, 0x00000021, 0x00000001, 0x00040047, 0x00000132, + 0x00000022, 0x00000000, 0x00040047, 0x000002e0, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, + 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, + 0x00000006, 0x00000004, 0x00040018, 0x00000008, 0x00000007, 0x00000004, 0x00030021, 0x00000009, + 0x00000008, 0x00040020, 0x0000000c, 0x00000007, 0x00000006, 0x00060021, 0x0000000d, 0x00000006, + 0x0000000c, 0x0000000c, 0x0000000c, 0x00040020, 0x00000013, 0x00000007, 0x00000008, 0x00040017, + 0x00000014, 0x00000006, 0x00000002, 0x00040020, 0x00000015, 0x00000007, 0x00000014, 0x00040017, + 0x00000016, 0x00000006, 0x00000003, 0x00060021, 0x00000017, 0x00000016, 0x00000013, 0x00000015, + 0x0000000c, 0x00040021, 0x0000001d, 0x00000006, 0x00000015, 0x00040015, 0x00000021, 0x00000020, + 0x00000001, 0x00040020, 0x00000022, 0x00000007, 0x00000021, 0x00040021, 0x00000023, 0x00000016, + 0x00000022, 0x00040015, 0x00000027, 0x00000020, 0x00000000, 0x0004002b, 0x00000027, 0x00000028, + 0x00000020, 0x0004001c, 0x00000029, 0x00000006, 0x00000028, 0x0003001e, 0x0000002a, 0x00000029, + 0x00040020, 0x0000002b, 0x00000009, 0x0000002a, 0x0004003b, 0x0000002b, 0x0000002c, 0x00000009, + 0x0004002b, 0x00000021, 0x0000002d, 0x00000000, 0x00040020, 0x0000002e, 0x00000009, 0x00000006, + 0x0004002b, 0x00000021, 0x00000031, 0x00000001, 0x0004002b, 0x00000021, 0x00000034, 0x00000002, + 0x0004002b, 0x00000021, 0x00000037, 0x00000003, 0x0004002b, 0x00000021, 0x0000003a, 0x00000004, + 0x0004002b, 0x00000021, 0x0000003d, 0x00000005, 0x0004002b, 0x00000021, 0x00000040, 0x00000006, + 0x0004002b, 0x00000021, 0x00000043, 0x00000007, 0x0004002b, 0x00000021, 0x00000046, 0x00000008, + 0x0004002b, 0x00000021, 0x00000049, 0x00000009, 0x0004002b, 0x00000021, 0x0000004c, 0x0000000a, + 0x0004002b, 0x00000021, 0x0000004f, 0x0000000b, 0x0004002b, 0x00000021, 0x00000052, 0x0000000c, + 0x0004002b, 0x00000021, 0x00000055, 0x0000000d, 0x0004002b, 0x00000021, 0x00000058, 0x0000000e, + 0x0004002b, 0x00000021, 0x0000005b, 0x0000000f, 0x0004002b, 0x00000006, 0x0000005e, 0x3f800000, + 0x0004002b, 0x00000006, 0x0000005f, 0x00000000, 0x0004002b, 0x00000006, 0x00000071, 0x358637bd, + 0x0004002b, 0x00000027, 0x00000077, 0x00000000, 0x0004002b, 0x00000006, 0x0000007a, 0x40000000, + 0x0004002b, 0x00000027, 0x0000007d, 0x00000001, 0x00040020, 0x00000083, 0x00000007, 0x00000007, + 0x0004002b, 0x00000027, 0x00000091, 0x00000003, 0x00090019, 0x00000099, 0x00000006, 0x00000001, + 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x0000009a, 0x00000099, + 0x00040020, 0x0000009b, 0x00000000, 0x0000009a, 0x0004003b, 0x0000009b, 0x0000009c, 0x00000000, + 0x0005002c, 0x00000014, 0x0000009f, 0x0000005f, 0x0000005f, 0x0005002c, 0x00000014, 0x000000a0, + 0x0000005e, 0x0000005e, 0x0004002b, 0x00000006, 0x000000ab, 0x3f1e377a, 0x0004002b, 0x00000006, + 0x000000b0, 0x401998ff, 0x0004002b, 0x00000006, 0x000000b9, 0x3e4ccccd, 0x0004002b, 0x00000006, + 0x000000bc, 0x41c00000, 0x0004002b, 0x00000021, 0x000000cf, 0x00000010, 0x0004002b, 0x00000006, + 0x000000d2, 0x3a83126f, 0x0004002b, 0x00000021, 0x000000d5, 0x00000011, 0x0004002b, 0x00000021, + 0x000000dc, 0x00000012, 0x0004002b, 0x00000006, 0x000000df, 0x38d1b717, 0x0004002b, 0x00000021, + 0x000000e2, 0x00000013, 0x0004002b, 0x00000021, 0x000000e7, 0x00000014, 0x0004002b, 0x00000021, + 0x000000ec, 0x00000015, 0x0004002b, 0x00000006, 0x000000ef, 0x3c23d70a, 0x0004002b, 0x00000021, + 0x000000f2, 0x00000016, 0x0004002b, 0x00000006, 0x000000f5, 0x40800000, 0x0004002b, 0x00000021, + 0x000000f9, 0x00000017, 0x0004002b, 0x00000006, 0x000000fc, 0x3727c5ac, 0x0004002b, 0x00000021, + 0x000000ff, 0x00000018, 0x0004002b, 0x00000021, 0x00000104, 0x00000019, 0x00040020, 0x00000108, + 0x00000001, 0x00000014, 0x0004003b, 0x00000108, 0x00000109, 0x00000001, 0x0004002b, 0x00000006, + 0x0000010e, 0x3f7ff972, 0x00020014, 0x0000010f, 0x00040020, 0x00000113, 0x00000003, 0x00000007, + 0x0004003b, 0x00000113, 0x00000114, 0x00000003, 0x0007002c, 0x00000007, 0x00000115, 0x0000005f, + 0x0000005f, 0x0000005f, 0x0000005f, 0x00040020, 0x00000117, 0x00000007, 0x00000016, 0x0007002c, + 0x00000007, 0x00000122, 0x0000005f, 0x0000005f, 0x0000005f, 0x0000005e, 0x0004002b, 0x00000006, + 0x0000012d, 0x3f000000, 0x0004003b, 0x0000009b, 0x00000132, 0x00000000, 0x0006002c, 0x00000016, + 0x00000149, 0x0000005f, 0x0000005e, 0x0000005f, 0x0004002b, 0x00000006, 0x000001dc, 0x3f7fbe77, + 0x0006002c, 0x00000016, 0x000001de, 0x0000005e, 0x0000005f, 0x0000005f, 0x00040017, 0x000001df, + 0x0000010f, 0x00000003, 0x00040018, 0x000001ef, 0x00000016, 0x00000003, 0x00040020, 0x000001f0, + 0x00000007, 0x000001ef, 0x0004002b, 0x00000027, 0x0000027e, 0x00000002, 0x0004002b, 0x00000006, + 0x00000298, 0x3da3d70a, 0x0004002b, 0x00000006, 0x000002a1, 0x3f0ccccd, 0x0004002b, 0x00000006, + 0x000002ae, 0x3e800000, 0x0004002b, 0x00000006, 0x000002b1, 0x3f333333, 0x0004002b, 0x00000006, + 0x000002b8, 0x3ecccccd, 0x00040020, 0x000002df, 0x00000001, 0x00000007, 0x0004003b, 0x000002df, + 0x000002e0, 0x00000001, 0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, + 0x00000005, 0x0004003b, 0x00000013, 0x000000cc, 0x00000007, 0x0004003b, 0x0000000c, 0x000000ce, + 0x00000007, 0x0004003b, 0x0000000c, 0x000000d4, 0x00000007, 0x0004003b, 0x0000000c, 0x000000db, + 0x00000007, 0x0004003b, 0x0000000c, 0x000000e1, 0x00000007, 0x0004003b, 0x0000000c, 0x000000e6, + 0x00000007, 0x0004003b, 0x0000000c, 0x000000eb, 0x00000007, 0x0004003b, 0x00000022, 0x000000f1, + 0x00000007, 0x0004003b, 0x0000000c, 0x000000f8, 0x00000007, 0x0004003b, 0x0000000c, 0x000000fe, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000103, 0x00000007, 0x0004003b, 0x0000000c, 0x00000107, + 0x00000007, 0x0004003b, 0x00000015, 0x0000010a, 0x00000007, 0x0004003b, 0x00000117, 0x00000118, + 0x00000007, 0x0004003b, 0x00000013, 0x00000119, 0x00000007, 0x0004003b, 0x00000015, 0x0000011b, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000011d, 0x00000007, 0x0004003b, 0x00000083, 0x00000120, + 0x00000007, 0x0004003b, 0x00000117, 0x00000124, 0x00000007, 0x0004003b, 0x00000117, 0x00000131, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000013b, 0x00000007, 0x0004003b, 0x00000117, 0x0000013e, + 0x00000007, 0x0004003b, 0x00000117, 0x00000141, 0x00000007, 0x0004003b, 0x00000117, 0x0000014c, + 0x00000007, 0x0004003b, 0x00000015, 0x00000155, 0x00000007, 0x0004003b, 0x00000013, 0x00000157, + 0x00000007, 0x0004003b, 0x00000015, 0x00000159, 0x00000007, 0x0004003b, 0x0000000c, 0x0000015a, + 0x00000007, 0x0004003b, 0x00000117, 0x0000015c, 0x00000007, 0x0004003b, 0x00000015, 0x00000165, + 0x00000007, 0x0004003b, 0x00000013, 0x00000167, 0x00000007, 0x0004003b, 0x00000015, 0x00000169, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000016a, 0x00000007, 0x0004003b, 0x00000117, 0x0000016c, + 0x00000007, 0x0004003b, 0x00000015, 0x00000175, 0x00000007, 0x0004003b, 0x00000013, 0x00000177, + 0x00000007, 0x0004003b, 0x00000015, 0x00000179, 0x00000007, 0x0004003b, 0x0000000c, 0x0000017a, + 0x00000007, 0x0004003b, 0x00000117, 0x0000017c, 0x00000007, 0x0004003b, 0x00000015, 0x00000185, + 0x00000007, 0x0004003b, 0x00000013, 0x00000187, 0x00000007, 0x0004003b, 0x00000015, 0x00000189, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000018a, 0x00000007, 0x0004003b, 0x00000117, 0x0000018c, + 0x00000007, 0x0004003b, 0x00000015, 0x00000191, 0x00000007, 0x0004003b, 0x00000015, 0x0000019a, + 0x00000007, 0x0004003b, 0x00000117, 0x000001a0, 0x00000007, 0x0004003b, 0x00000117, 0x000001ab, + 0x00000007, 0x0004003b, 0x00000015, 0x000001b0, 0x00000007, 0x0004003b, 0x00000015, 0x000001b9, + 0x00000007, 0x0004003b, 0x00000117, 0x000001bf, 0x00000007, 0x0004003b, 0x00000117, 0x000001d8, + 0x00000007, 0x0004003b, 0x00000117, 0x000001e2, 0x00000007, 0x0004003b, 0x00000117, 0x000001eb, + 0x00000007, 0x0004003b, 0x000001f0, 0x000001f1, 0x00000007, 0x0004003b, 0x00000013, 0x00000202, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000205, 0x00000007, 0x0004003b, 0x00000022, 0x00000206, + 0x00000007, 0x0004003b, 0x00000117, 0x00000214, 0x00000007, 0x0004003b, 0x00000022, 0x00000217, + 0x00000007, 0x0004003b, 0x00000083, 0x0000021e, 0x00000007, 0x0004003b, 0x00000117, 0x0000022c, + 0x00000007, 0x0004003b, 0x00000015, 0x00000233, 0x00000007, 0x0004003b, 0x0000000c, 0x00000254, + 0x00000007, 0x0004003b, 0x00000015, 0x00000255, 0x00000007, 0x0004003b, 0x00000117, 0x0000025d, + 0x00000007, 0x0004003b, 0x00000013, 0x0000025e, 0x00000007, 0x0004003b, 0x00000015, 0x00000260, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000262, 0x00000007, 0x0004003b, 0x0000000c, 0x00000265, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000273, 0x00000007, 0x0004003b, 0x0000000c, 0x0000027d, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000282, 0x00000007, 0x0004003b, 0x0000000c, 0x00000283, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000285, 0x00000007, 0x0004003b, 0x0000000c, 0x00000288, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000289, 0x00000007, 0x0004003b, 0x0000000c, 0x0000028b, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000028d, 0x00000007, 0x0004003b, 0x0000000c, 0x00000290, + 0x00000007, 0x0004003b, 0x0000000c, 0x00000294, 0x00000007, 0x0004003b, 0x0000000c, 0x0000029d, + 0x00000007, 0x0004003b, 0x0000000c, 0x000002a7, 0x00000007, 0x0004003b, 0x0000000c, 0x000002ac, + 0x00000007, 0x0004003b, 0x0000000c, 0x000002b6, 0x00000007, 0x0004003b, 0x0000000c, 0x000002cb, + 0x00000007, 0x0004003b, 0x0000000c, 0x000002d7, 0x00000007, 0x00040039, 0x00000008, 0x000000cd, + 0x0000000a, 0x0003003e, 0x000000cc, 0x000000cd, 0x00060041, 0x0000002e, 0x000000d0, 0x0000002c, + 0x0000002d, 0x000000cf, 0x0004003d, 0x00000006, 0x000000d1, 0x000000d0, 0x0007000c, 0x00000006, + 0x000000d3, 0x00000001, 0x00000028, 0x000000d1, 0x000000d2, 0x0003003e, 0x000000ce, 0x000000d3, + 0x00060041, 0x0000002e, 0x000000d6, 0x0000002c, 0x0000002d, 0x000000d5, 0x0004003d, 0x00000006, + 0x000000d7, 0x000000d6, 0x0004003d, 0x00000006, 0x000000d8, 0x000000ce, 0x00050081, 0x00000006, + 0x000000d9, 0x000000d8, 0x000000d2, 0x0007000c, 0x00000006, 0x000000da, 0x00000001, 0x00000028, + 0x000000d7, 0x000000d9, 0x0003003e, 0x000000d4, 0x000000da, 0x00060041, 0x0000002e, 0x000000dd, + 0x0000002c, 0x0000002d, 0x000000dc, 0x0004003d, 0x00000006, 0x000000de, 0x000000dd, 0x0007000c, + 0x00000006, 0x000000e0, 0x00000001, 0x00000028, 0x000000de, 0x000000df, 0x0003003e, 0x000000db, + 0x000000e0, 0x00060041, 0x0000002e, 0x000000e3, 0x0000002c, 0x0000002d, 0x000000e2, 0x0004003d, + 0x00000006, 0x000000e4, 0x000000e3, 0x0007000c, 0x00000006, 0x000000e5, 0x00000001, 0x00000028, + 0x000000e4, 0x0000005f, 0x0003003e, 0x000000e1, 0x000000e5, 0x00060041, 0x0000002e, 0x000000e8, + 0x0000002c, 0x0000002d, 0x000000e7, 0x0004003d, 0x00000006, 0x000000e9, 0x000000e8, 0x0007000c, + 0x00000006, 0x000000ea, 0x00000001, 0x00000028, 0x000000e9, 0x0000005f, 0x0003003e, 0x000000e6, + 0x000000ea, 0x00060041, 0x0000002e, 0x000000ed, 0x0000002c, 0x0000002d, 0x000000ec, 0x0004003d, + 0x00000006, 0x000000ee, 0x000000ed, 0x0007000c, 0x00000006, 0x000000f0, 0x00000001, 0x00000028, + 0x000000ee, 0x000000ef, 0x0003003e, 0x000000eb, 0x000000f0, 0x00060041, 0x0000002e, 0x000000f3, + 0x0000002c, 0x0000002d, 0x000000f2, 0x0004003d, 0x00000006, 0x000000f4, 0x000000f3, 0x0008000c, + 0x00000006, 0x000000f6, 0x00000001, 0x0000002b, 0x000000f4, 0x000000f5, 0x000000bc, 0x0004006e, + 0x00000021, 0x000000f7, 0x000000f6, 0x0003003e, 0x000000f1, 0x000000f7, 0x00060041, 0x0000002e, + 0x000000fa, 0x0000002c, 0x0000002d, 0x000000f9, 0x0004003d, 0x00000006, 0x000000fb, 0x000000fa, + 0x0007000c, 0x00000006, 0x000000fd, 0x00000001, 0x00000028, 0x000000fb, 0x000000fc, 0x0003003e, + 0x000000f8, 0x000000fd, 0x00060041, 0x0000002e, 0x00000100, 0x0000002c, 0x0000002d, 0x000000ff, + 0x0004003d, 0x00000006, 0x00000101, 0x00000100, 0x0007000c, 0x00000006, 0x00000102, 0x00000001, + 0x00000028, 0x00000101, 0x000000fc, 0x0003003e, 0x000000fe, 0x00000102, 0x00060041, 0x0000002e, + 0x00000105, 0x0000002c, 0x0000002d, 0x00000104, 0x0004003d, 0x00000006, 0x00000106, 0x00000105, + 0x0003003e, 0x00000103, 0x00000106, 0x0004003d, 0x00000014, 0x0000010b, 0x00000109, 0x0003003e, + 0x0000010a, 0x0000010b, 0x00050039, 0x00000006, 0x0000010c, 0x0000001f, 0x0000010a, 0x0003003e, + 0x00000107, 0x0000010c, 0x0004003d, 0x00000006, 0x0000010d, 0x00000107, 0x000500be, 0x0000010f, + 0x00000110, 0x0000010d, 0x0000010e, 0x000300f7, 0x00000112, 0x00000000, 0x000400fa, 0x00000110, + 0x00000111, 0x00000112, 0x000200f8, 0x00000111, 0x0003003e, 0x00000114, 0x00000115, 0x000100fd, + 0x000200f8, 0x00000112, 0x0004003d, 0x00000008, 0x0000011a, 0x000000cc, 0x0003003e, 0x00000119, + 0x0000011a, 0x0004003d, 0x00000014, 0x0000011c, 0x00000109, 0x0003003e, 0x0000011b, 0x0000011c, + 0x0004003d, 0x00000006, 0x0000011e, 0x00000107, 0x0003003e, 0x0000011d, 0x0000011e, 0x00070039, + 0x00000016, 0x0000011f, 0x0000001b, 0x00000119, 0x0000011b, 0x0000011d, 0x0003003e, 0x00000118, + 0x0000011f, 0x0004003d, 0x00000008, 0x00000121, 0x000000cc, 0x00050091, 0x00000007, 0x00000123, + 0x00000121, 0x00000122, 0x0003003e, 0x00000120, 0x00000123, 0x0004003d, 0x00000007, 0x00000125, + 0x00000120, 0x0008004f, 0x00000016, 0x00000126, 0x00000125, 0x00000125, 0x00000000, 0x00000001, + 0x00000002, 0x00050041, 0x0000000c, 0x00000127, 0x00000120, 0x00000091, 0x0004003d, 0x00000006, + 0x00000128, 0x00000127, 0x0007000c, 0x00000006, 0x00000129, 0x00000001, 0x00000028, 0x00000128, + 0x00000071, 0x00060050, 0x00000016, 0x0000012a, 0x00000129, 0x00000129, 0x00000129, 0x00050088, + 0x00000016, 0x0000012b, 0x00000126, 0x0000012a, 0x0003003e, 0x00000124, 0x0000012b, 0x0004003d, + 0x00000006, 0x0000012c, 0x00000103, 0x000500ba, 0x0000010f, 0x0000012e, 0x0000012c, 0x0000012d, + 0x000300f7, 0x00000130, 0x00000000, 0x000400fa, 0x0000012e, 0x0000012f, 0x0000014b, 0x000200f8, + 0x0000012f, 0x0004003d, 0x0000009a, 0x00000133, 0x00000132, 0x0004003d, 0x00000014, 0x00000134, + 0x00000109, 0x0008000c, 0x00000014, 0x00000135, 0x00000001, 0x0000002b, 0x00000134, 0x0000009f, + 0x000000a0, 0x00050057, 0x00000007, 0x00000136, 0x00000133, 0x00000135, 0x0008004f, 0x00000016, + 0x00000137, 0x00000136, 0x00000136, 0x00000000, 0x00000001, 0x00000002, 0x0005008e, 0x00000016, + 0x00000138, 0x00000137, 0x0000007a, 0x00060050, 0x00000016, 0x00000139, 0x0000005e, 0x0000005e, + 0x0000005e, 0x00050083, 0x00000016, 0x0000013a, 0x00000138, 0x00000139, 0x0003003e, 0x00000131, + 0x0000013a, 0x0004003d, 0x00000016, 0x0000013c, 0x00000131, 0x0006000c, 0x00000006, 0x0000013d, + 0x00000001, 0x00000042, 0x0000013c, 0x0003003e, 0x0000013b, 0x0000013d, 0x0004003d, 0x00000006, + 0x0000013f, 0x0000013b, 0x000500ba, 0x0000010f, 0x00000140, 0x0000013f, 0x000000d2, 0x000300f7, + 0x00000143, 0x00000000, 0x000400fa, 0x00000140, 0x00000142, 0x00000148, 0x000200f8, 0x00000142, + 0x0004003d, 0x00000016, 0x00000144, 0x00000131, 0x0004003d, 0x00000006, 0x00000145, 0x0000013b, + 0x00060050, 0x00000016, 0x00000146, 0x00000145, 0x00000145, 0x00000145, 0x00050088, 0x00000016, + 0x00000147, 0x00000144, 0x00000146, 0x0003003e, 0x00000141, 0x00000147, 0x000200f9, 0x00000143, + 0x000200f8, 0x00000148, 0x0003003e, 0x00000141, 0x00000149, 0x000200f9, 0x00000143, 0x000200f8, + 0x00000143, 0x0004003d, 0x00000016, 0x0000014a, 0x00000141, 0x0003003e, 0x0000013e, 0x0000014a, + 0x000200f9, 0x00000130, 0x000200f8, 0x0000014b, 0x0004003d, 0x00000014, 0x0000014d, 0x00000109, + 0x0004003d, 0x00000006, 0x0000014e, 0x000000f8, 0x00050050, 0x00000014, 0x0000014f, 0x0000014e, + 0x0000005f, 0x00050081, 0x00000014, 0x00000150, 0x0000014d, 0x0000014f, 0x0004003d, 0x00000014, + 0x00000151, 0x00000109, 0x0004003d, 0x00000006, 0x00000152, 0x000000f8, 0x00050050, 0x00000014, + 0x00000153, 0x00000152, 0x0000005f, 0x00050081, 0x00000014, 0x00000154, 0x00000151, 0x00000153, + 0x0003003e, 0x00000155, 0x00000154, 0x00050039, 0x00000006, 0x00000156, 0x0000001f, 0x00000155, + 0x0004003d, 0x00000008, 0x00000158, 0x000000cc, 0x0003003e, 0x00000157, 0x00000158, 0x0003003e, + 0x00000159, 0x00000150, 0x0003003e, 0x0000015a, 0x00000156, 0x00070039, 0x00000016, 0x0000015b, + 0x0000001b, 0x00000157, 0x00000159, 0x0000015a, 0x0003003e, 0x0000014c, 0x0000015b, 0x0004003d, + 0x00000014, 0x0000015d, 0x00000109, 0x0004003d, 0x00000006, 0x0000015e, 0x000000f8, 0x00050050, + 0x00000014, 0x0000015f, 0x0000015e, 0x0000005f, 0x00050083, 0x00000014, 0x00000160, 0x0000015d, + 0x0000015f, 0x0004003d, 0x00000014, 0x00000161, 0x00000109, 0x0004003d, 0x00000006, 0x00000162, + 0x000000f8, 0x00050050, 0x00000014, 0x00000163, 0x00000162, 0x0000005f, 0x00050083, 0x00000014, + 0x00000164, 0x00000161, 0x00000163, 0x0003003e, 0x00000165, 0x00000164, 0x00050039, 0x00000006, + 0x00000166, 0x0000001f, 0x00000165, 0x0004003d, 0x00000008, 0x00000168, 0x000000cc, 0x0003003e, + 0x00000167, 0x00000168, 0x0003003e, 0x00000169, 0x00000160, 0x0003003e, 0x0000016a, 0x00000166, + 0x00070039, 0x00000016, 0x0000016b, 0x0000001b, 0x00000167, 0x00000169, 0x0000016a, 0x0003003e, + 0x0000015c, 0x0000016b, 0x0004003d, 0x00000014, 0x0000016d, 0x00000109, 0x0004003d, 0x00000006, + 0x0000016e, 0x000000fe, 0x00050050, 0x00000014, 0x0000016f, 0x0000005f, 0x0000016e, 0x00050081, + 0x00000014, 0x00000170, 0x0000016d, 0x0000016f, 0x0004003d, 0x00000014, 0x00000171, 0x00000109, + 0x0004003d, 0x00000006, 0x00000172, 0x000000fe, 0x00050050, 0x00000014, 0x00000173, 0x0000005f, + 0x00000172, 0x00050081, 0x00000014, 0x00000174, 0x00000171, 0x00000173, 0x0003003e, 0x00000175, + 0x00000174, 0x00050039, 0x00000006, 0x00000176, 0x0000001f, 0x00000175, 0x0004003d, 0x00000008, + 0x00000178, 0x000000cc, 0x0003003e, 0x00000177, 0x00000178, 0x0003003e, 0x00000179, 0x00000170, + 0x0003003e, 0x0000017a, 0x00000176, 0x00070039, 0x00000016, 0x0000017b, 0x0000001b, 0x00000177, + 0x00000179, 0x0000017a, 0x0003003e, 0x0000016c, 0x0000017b, 0x0004003d, 0x00000014, 0x0000017d, + 0x00000109, 0x0004003d, 0x00000006, 0x0000017e, 0x000000fe, 0x00050050, 0x00000014, 0x0000017f, + 0x0000005f, 0x0000017e, 0x00050083, 0x00000014, 0x00000180, 0x0000017d, 0x0000017f, 0x0004003d, + 0x00000014, 0x00000181, 0x00000109, 0x0004003d, 0x00000006, 0x00000182, 0x000000fe, 0x00050050, + 0x00000014, 0x00000183, 0x0000005f, 0x00000182, 0x00050083, 0x00000014, 0x00000184, 0x00000181, + 0x00000183, 0x0003003e, 0x00000185, 0x00000184, 0x00050039, 0x00000006, 0x00000186, 0x0000001f, + 0x00000185, 0x0004003d, 0x00000008, 0x00000188, 0x000000cc, 0x0003003e, 0x00000187, 0x00000188, + 0x0003003e, 0x00000189, 0x00000180, 0x0003003e, 0x0000018a, 0x00000186, 0x00070039, 0x00000016, + 0x0000018b, 0x0000001b, 0x00000187, 0x00000189, 0x0000018a, 0x0003003e, 0x0000017c, 0x0000018b, + 0x0004003d, 0x00000014, 0x0000018d, 0x00000109, 0x0004003d, 0x00000006, 0x0000018e, 0x000000f8, + 0x00050050, 0x00000014, 0x0000018f, 0x0000018e, 0x0000005f, 0x00050081, 0x00000014, 0x00000190, + 0x0000018d, 0x0000018f, 0x0003003e, 0x00000191, 0x00000190, 0x00050039, 0x00000006, 0x00000192, + 0x0000001f, 0x00000191, 0x0004003d, 0x00000006, 0x00000193, 0x00000107, 0x00050083, 0x00000006, + 0x00000194, 0x00000192, 0x00000193, 0x0006000c, 0x00000006, 0x00000195, 0x00000001, 0x00000004, + 0x00000194, 0x0004003d, 0x00000014, 0x00000196, 0x00000109, 0x0004003d, 0x00000006, 0x00000197, + 0x000000f8, 0x00050050, 0x00000014, 0x00000198, 0x00000197, 0x0000005f, 0x00050083, 0x00000014, + 0x00000199, 0x00000196, 0x00000198, 0x0003003e, 0x0000019a, 0x00000199, 0x00050039, 0x00000006, + 0x0000019b, 0x0000001f, 0x0000019a, 0x0004003d, 0x00000006, 0x0000019c, 0x00000107, 0x00050083, + 0x00000006, 0x0000019d, 0x0000019b, 0x0000019c, 0x0006000c, 0x00000006, 0x0000019e, 0x00000001, + 0x00000004, 0x0000019d, 0x000500b8, 0x0000010f, 0x0000019f, 0x00000195, 0x0000019e, 0x000300f7, + 0x000001a2, 0x00000000, 0x000400fa, 0x0000019f, 0x000001a1, 0x000001a6, 0x000200f8, 0x000001a1, + 0x0004003d, 0x00000016, 0x000001a3, 0x0000014c, 0x0004003d, 0x00000016, 0x000001a4, 0x00000118, + 0x00050083, 0x00000016, 0x000001a5, 0x000001a3, 0x000001a4, 0x0003003e, 0x000001a0, 0x000001a5, + 0x000200f9, 0x000001a2, 0x000200f8, 0x000001a6, 0x0004003d, 0x00000016, 0x000001a7, 0x00000118, + 0x0004003d, 0x00000016, 0x000001a8, 0x0000015c, 0x00050083, 0x00000016, 0x000001a9, 0x000001a7, + 0x000001a8, 0x0003003e, 0x000001a0, 0x000001a9, 0x000200f9, 0x000001a2, 0x000200f8, 0x000001a2, + 0x0004003d, 0x00000016, 0x000001aa, 0x000001a0, 0x0003003e, 0x0000018c, 0x000001aa, 0x0004003d, + 0x00000014, 0x000001ac, 0x00000109, 0x0004003d, 0x00000006, 0x000001ad, 0x000000fe, 0x00050050, + 0x00000014, 0x000001ae, 0x0000005f, 0x000001ad, 0x00050081, 0x00000014, 0x000001af, 0x000001ac, + 0x000001ae, 0x0003003e, 0x000001b0, 0x000001af, 0x00050039, 0x00000006, 0x000001b1, 0x0000001f, + 0x000001b0, 0x0004003d, 0x00000006, 0x000001b2, 0x00000107, 0x00050083, 0x00000006, 0x000001b3, + 0x000001b1, 0x000001b2, 0x0006000c, 0x00000006, 0x000001b4, 0x00000001, 0x00000004, 0x000001b3, + 0x0004003d, 0x00000014, 0x000001b5, 0x00000109, 0x0004003d, 0x00000006, 0x000001b6, 0x000000fe, + 0x00050050, 0x00000014, 0x000001b7, 0x0000005f, 0x000001b6, 0x00050083, 0x00000014, 0x000001b8, + 0x000001b5, 0x000001b7, 0x0003003e, 0x000001b9, 0x000001b8, 0x00050039, 0x00000006, 0x000001ba, + 0x0000001f, 0x000001b9, 0x0004003d, 0x00000006, 0x000001bb, 0x00000107, 0x00050083, 0x00000006, + 0x000001bc, 0x000001ba, 0x000001bb, 0x0006000c, 0x00000006, 0x000001bd, 0x00000001, 0x00000004, + 0x000001bc, 0x000500b8, 0x0000010f, 0x000001be, 0x000001b4, 0x000001bd, 0x000300f7, 0x000001c1, + 0x00000000, 0x000400fa, 0x000001be, 0x000001c0, 0x000001c5, 0x000200f8, 0x000001c0, 0x0004003d, + 0x00000016, 0x000001c2, 0x0000016c, 0x0004003d, 0x00000016, 0x000001c3, 0x00000118, 0x00050083, + 0x00000016, 0x000001c4, 0x000001c2, 0x000001c3, 0x0003003e, 0x000001bf, 0x000001c4, 0x000200f9, + 0x000001c1, 0x000200f8, 0x000001c5, 0x0004003d, 0x00000016, 0x000001c6, 0x00000118, 0x0004003d, + 0x00000016, 0x000001c7, 0x0000017c, 0x00050083, 0x00000016, 0x000001c8, 0x000001c6, 0x000001c7, + 0x0003003e, 0x000001bf, 0x000001c8, 0x000200f9, 0x000001c1, 0x000200f8, 0x000001c1, 0x0004003d, + 0x00000016, 0x000001c9, 0x000001bf, 0x0003003e, 0x000001ab, 0x000001c9, 0x0004003d, 0x00000016, + 0x000001ca, 0x0000018c, 0x0004003d, 0x00000016, 0x000001cb, 0x000001ab, 0x0007000c, 0x00000016, + 0x000001cc, 0x00000001, 0x00000044, 0x000001ca, 0x000001cb, 0x0006000c, 0x00000016, 0x000001cd, + 0x00000001, 0x00000045, 0x000001cc, 0x0003003e, 0x0000013e, 0x000001cd, 0x000200f9, 0x00000130, + 0x000200f8, 0x00000130, 0x0004003d, 0x00000016, 0x000001ce, 0x0000013e, 0x0004003d, 0x00000016, + 0x000001cf, 0x00000124, 0x0004003d, 0x00000016, 0x000001d0, 0x00000118, 0x00050083, 0x00000016, + 0x000001d1, 0x000001cf, 0x000001d0, 0x00050094, 0x00000006, 0x000001d2, 0x000001ce, 0x000001d1, + 0x000500b8, 0x0000010f, 0x000001d3, 0x000001d2, 0x0000005f, 0x000300f7, 0x000001d5, 0x00000000, + 0x000400fa, 0x000001d3, 0x000001d4, 0x000001d5, 0x000200f8, 0x000001d4, 0x0004003d, 0x00000016, + 0x000001d6, 0x0000013e, 0x0004007f, 0x00000016, 0x000001d7, 0x000001d6, 0x0003003e, 0x0000013e, + 0x000001d7, 0x000200f9, 0x000001d5, 0x000200f8, 0x000001d5, 0x00050041, 0x0000000c, 0x000001d9, + 0x0000013e, 0x0000007d, 0x0004003d, 0x00000006, 0x000001da, 0x000001d9, 0x0006000c, 0x00000006, + 0x000001db, 0x00000001, 0x00000004, 0x000001da, 0x000500b8, 0x0000010f, 0x000001dd, 0x000001db, + 0x000001dc, 0x00060050, 0x000001df, 0x000001e0, 0x000001dd, 0x000001dd, 0x000001dd, 0x000600a9, + 0x00000016, 0x000001e1, 0x000001e0, 0x00000149, 0x000001de, 0x0003003e, 0x000001d8, 0x000001e1, + 0x0004003d, 0x00000016, 0x000001e3, 0x000001d8, 0x0004003d, 0x00000016, 0x000001e4, 0x0000013e, + 0x0004003d, 0x00000016, 0x000001e5, 0x000001d8, 0x0004003d, 0x00000016, 0x000001e6, 0x0000013e, + 0x00050094, 0x00000006, 0x000001e7, 0x000001e5, 0x000001e6, 0x0005008e, 0x00000016, 0x000001e8, + 0x000001e4, 0x000001e7, 0x00050083, 0x00000016, 0x000001e9, 0x000001e3, 0x000001e8, 0x0006000c, + 0x00000016, 0x000001ea, 0x00000001, 0x00000045, 0x000001e9, 0x0003003e, 0x000001e2, 0x000001ea, + 0x0004003d, 0x00000016, 0x000001ec, 0x0000013e, 0x0004003d, 0x00000016, 0x000001ed, 0x000001e2, + 0x0007000c, 0x00000016, 0x000001ee, 0x00000001, 0x00000044, 0x000001ec, 0x000001ed, 0x0003003e, + 0x000001eb, 0x000001ee, 0x0004003d, 0x00000016, 0x000001f2, 0x000001e2, 0x0004003d, 0x00000016, + 0x000001f3, 0x000001eb, 0x0004003d, 0x00000016, 0x000001f4, 0x0000013e, 0x00050051, 0x00000006, + 0x000001f5, 0x000001f2, 0x00000000, 0x00050051, 0x00000006, 0x000001f6, 0x000001f2, 0x00000001, + 0x00050051, 0x00000006, 0x000001f7, 0x000001f2, 0x00000002, 0x00050051, 0x00000006, 0x000001f8, + 0x000001f3, 0x00000000, 0x00050051, 0x00000006, 0x000001f9, 0x000001f3, 0x00000001, 0x00050051, + 0x00000006, 0x000001fa, 0x000001f3, 0x00000002, 0x00050051, 0x00000006, 0x000001fb, 0x000001f4, + 0x00000000, 0x00050051, 0x00000006, 0x000001fc, 0x000001f4, 0x00000001, 0x00050051, 0x00000006, + 0x000001fd, 0x000001f4, 0x00000002, 0x00060050, 0x00000016, 0x000001fe, 0x000001f5, 0x000001f6, + 0x000001f7, 0x00060050, 0x00000016, 0x000001ff, 0x000001f8, 0x000001f9, 0x000001fa, 0x00060050, + 0x00000016, 0x00000200, 0x000001fb, 0x000001fc, 0x000001fd, 0x00060050, 0x000001ef, 0x00000201, + 0x000001fe, 0x000001ff, 0x00000200, 0x0003003e, 0x000001f1, 0x00000201, 0x0004003d, 0x00000008, + 0x00000203, 0x000000cc, 0x0006000c, 0x00000008, 0x00000204, 0x00000001, 0x00000022, 0x00000203, + 0x0003003e, 0x00000202, 0x00000204, 0x0003003e, 0x00000205, 0x0000005f, 0x0003003e, 0x00000206, + 0x0000002d, 0x000200f9, 0x00000207, 0x000200f8, 0x00000207, 0x000400f6, 0x00000209, 0x0000020a, + 0x00000000, 0x000200f9, 0x0000020b, 0x000200f8, 0x0000020b, 0x0004003d, 0x00000021, 0x0000020c, + 0x00000206, 0x000500b1, 0x0000010f, 0x0000020d, 0x0000020c, 0x000000ff, 0x000400fa, 0x0000020d, + 0x00000208, 0x00000209, 0x000200f8, 0x00000208, 0x0004003d, 0x00000021, 0x0000020e, 0x00000206, + 0x0004003d, 0x00000021, 0x0000020f, 0x000000f1, 0x000500af, 0x0000010f, 0x00000210, 0x0000020e, + 0x0000020f, 0x000300f7, 0x00000212, 0x00000000, 0x000400fa, 0x00000210, 0x00000211, 0x00000212, + 0x000200f8, 0x00000211, 0x000200f9, 0x00000209, 0x000200f8, 0x00000212, 0x0004003d, 0x00000016, + 0x00000215, 0x00000118, 0x0004003d, 0x000001ef, 0x00000216, 0x000001f1, 0x0004003d, 0x00000021, + 0x00000218, 0x00000206, 0x0003003e, 0x00000217, 0x00000218, 0x00050039, 0x00000016, 0x00000219, + 0x00000025, 0x00000217, 0x0004003d, 0x00000006, 0x0000021a, 0x000000db, 0x0005008e, 0x00000016, + 0x0000021b, 0x00000219, 0x0000021a, 0x00050091, 0x00000016, 0x0000021c, 0x00000216, 0x0000021b, + 0x00050081, 0x00000016, 0x0000021d, 0x00000215, 0x0000021c, 0x0003003e, 0x00000214, 0x0000021d, + 0x0004003d, 0x00000008, 0x0000021f, 0x00000202, 0x0004003d, 0x00000016, 0x00000220, 0x00000214, + 0x00050051, 0x00000006, 0x00000221, 0x00000220, 0x00000000, 0x00050051, 0x00000006, 0x00000222, + 0x00000220, 0x00000001, 0x00050051, 0x00000006, 0x00000223, 0x00000220, 0x00000002, 0x00070050, + 0x00000007, 0x00000224, 0x00000221, 0x00000222, 0x00000223, 0x0000005e, 0x00050091, 0x00000007, + 0x00000225, 0x0000021f, 0x00000224, 0x0003003e, 0x0000021e, 0x00000225, 0x00050041, 0x0000000c, + 0x00000226, 0x0000021e, 0x00000091, 0x0004003d, 0x00000006, 0x00000227, 0x00000226, 0x000500b8, + 0x0000010f, 0x00000228, 0x00000227, 0x000000fc, 0x000300f7, 0x0000022a, 0x00000000, 0x000400fa, + 0x00000228, 0x00000229, 0x0000022a, 0x000200f8, 0x00000229, 0x000200f9, 0x0000020a, 0x000200f8, + 0x0000022a, 0x0004003d, 0x00000007, 0x0000022d, 0x0000021e, 0x0008004f, 0x00000016, 0x0000022e, + 0x0000022d, 0x0000022d, 0x00000000, 0x00000001, 0x00000002, 0x00050041, 0x0000000c, 0x0000022f, + 0x0000021e, 0x00000091, 0x0004003d, 0x00000006, 0x00000230, 0x0000022f, 0x00060050, 0x00000016, + 0x00000231, 0x00000230, 0x00000230, 0x00000230, 0x00050088, 0x00000016, 0x00000232, 0x0000022e, + 0x00000231, 0x0003003e, 0x0000022c, 0x00000232, 0x0004003d, 0x00000016, 0x00000234, 0x0000022c, + 0x0007004f, 0x00000014, 0x00000235, 0x00000234, 0x00000234, 0x00000000, 0x00000001, 0x0005008e, + 0x00000014, 0x00000236, 0x00000235, 0x0000012d, 0x00050050, 0x00000014, 0x00000237, 0x0000012d, + 0x0000012d, 0x00050081, 0x00000014, 0x00000238, 0x00000236, 0x00000237, 0x0003003e, 0x00000233, + 0x00000238, 0x00050041, 0x0000000c, 0x00000239, 0x00000233, 0x00000077, 0x0004003d, 0x00000006, + 0x0000023a, 0x00000239, 0x000500b8, 0x0000010f, 0x0000023b, 0x0000023a, 0x0000005f, 0x000400a8, + 0x0000010f, 0x0000023c, 0x0000023b, 0x000300f7, 0x0000023e, 0x00000000, 0x000400fa, 0x0000023c, + 0x0000023d, 0x0000023e, 0x000200f8, 0x0000023d, 0x00050041, 0x0000000c, 0x0000023f, 0x00000233, + 0x00000077, 0x0004003d, 0x00000006, 0x00000240, 0x0000023f, 0x000500ba, 0x0000010f, 0x00000241, + 0x00000240, 0x0000005e, 0x000200f9, 0x0000023e, 0x000200f8, 0x0000023e, 0x000700f5, 0x0000010f, + 0x00000242, 0x0000023b, 0x0000022a, 0x00000241, 0x0000023d, 0x000400a8, 0x0000010f, 0x00000243, + 0x00000242, 0x000300f7, 0x00000245, 0x00000000, 0x000400fa, 0x00000243, 0x00000244, 0x00000245, + 0x000200f8, 0x00000244, 0x00050041, 0x0000000c, 0x00000246, 0x00000233, 0x0000007d, 0x0004003d, + 0x00000006, 0x00000247, 0x00000246, 0x000500b8, 0x0000010f, 0x00000248, 0x00000247, 0x0000005f, + 0x000200f9, 0x00000245, 0x000200f8, 0x00000245, 0x000700f5, 0x0000010f, 0x00000249, 0x00000242, + 0x0000023e, 0x00000248, 0x00000244, 0x000400a8, 0x0000010f, 0x0000024a, 0x00000249, 0x000300f7, + 0x0000024c, 0x00000000, 0x000400fa, 0x0000024a, 0x0000024b, 0x0000024c, 0x000200f8, 0x0000024b, + 0x00050041, 0x0000000c, 0x0000024d, 0x00000233, 0x0000007d, 0x0004003d, 0x00000006, 0x0000024e, + 0x0000024d, 0x000500ba, 0x0000010f, 0x0000024f, 0x0000024e, 0x0000005e, 0x000200f9, 0x0000024c, + 0x000200f8, 0x0000024c, 0x000700f5, 0x0000010f, 0x00000250, 0x00000249, 0x00000245, 0x0000024f, + 0x0000024b, 0x000300f7, 0x00000252, 0x00000000, 0x000400fa, 0x00000250, 0x00000251, 0x00000252, + 0x000200f8, 0x00000251, 0x000200f9, 0x0000020a, 0x000200f8, 0x00000252, 0x0004003d, 0x00000014, + 0x00000256, 0x00000233, 0x0003003e, 0x00000255, 0x00000256, 0x00050039, 0x00000006, 0x00000257, + 0x0000001f, 0x00000255, 0x0003003e, 0x00000254, 0x00000257, 0x0004003d, 0x00000006, 0x00000258, + 0x00000254, 0x000500be, 0x0000010f, 0x00000259, 0x00000258, 0x0000010e, 0x000300f7, 0x0000025b, + 0x00000000, 0x000400fa, 0x00000259, 0x0000025a, 0x0000025b, 0x000200f8, 0x0000025a, 0x000200f9, + 0x0000020a, 0x000200f8, 0x0000025b, 0x0004003d, 0x00000008, 0x0000025f, 0x000000cc, 0x0003003e, + 0x0000025e, 0x0000025f, 0x0004003d, 0x00000014, 0x00000261, 0x00000233, 0x0003003e, 0x00000260, + 0x00000261, 0x0004003d, 0x00000006, 0x00000263, 0x00000254, 0x0003003e, 0x00000262, 0x00000263, + 0x00070039, 0x00000016, 0x00000264, 0x0000001b, 0x0000025e, 0x00000260, 0x00000262, 0x0003003e, + 0x0000025d, 0x00000264, 0x0004003d, 0x00000016, 0x00000266, 0x0000025d, 0x0004003d, 0x00000016, + 0x00000267, 0x00000118, 0x00050083, 0x00000016, 0x00000268, 0x00000266, 0x00000267, 0x0006000c, + 0x00000006, 0x00000269, 0x00000001, 0x00000042, 0x00000268, 0x0003003e, 0x00000265, 0x00000269, + 0x0004003d, 0x00000006, 0x0000026a, 0x00000265, 0x000500b8, 0x0000010f, 0x0000026b, 0x0000026a, + 0x000000fc, 0x0004003d, 0x00000006, 0x0000026c, 0x00000265, 0x0004003d, 0x00000006, 0x0000026d, + 0x000000db, 0x000500ba, 0x0000010f, 0x0000026e, 0x0000026c, 0x0000026d, 0x000500a6, 0x0000010f, + 0x0000026f, 0x0000026b, 0x0000026e, 0x000300f7, 0x00000271, 0x00000000, 0x000400fa, 0x0000026f, + 0x00000270, 0x00000271, 0x000200f8, 0x00000270, 0x000200f9, 0x0000020a, 0x000200f8, 0x00000271, + 0x0004003d, 0x00000016, 0x00000274, 0x0000013e, 0x0004003d, 0x00000016, 0x00000275, 0x0000025d, + 0x0004003d, 0x00000016, 0x00000276, 0x00000118, 0x00050083, 0x00000016, 0x00000277, 0x00000275, + 0x00000276, 0x0004003d, 0x00000006, 0x00000278, 0x00000265, 0x00060050, 0x00000016, 0x00000279, + 0x00000278, 0x00000278, 0x00000278, 0x00050088, 0x00000016, 0x0000027a, 0x00000277, 0x00000279, + 0x00050094, 0x00000006, 0x0000027b, 0x00000274, 0x0000027a, 0x0007000c, 0x00000006, 0x0000027c, + 0x00000001, 0x00000028, 0x0000027b, 0x0000005f, 0x0003003e, 0x00000273, 0x0000027c, 0x00050041, + 0x0000000c, 0x0000027f, 0x0000022c, 0x0000027e, 0x0004003d, 0x00000006, 0x00000280, 0x0000027f, + 0x0008000c, 0x00000006, 0x00000281, 0x00000001, 0x0000002b, 0x00000280, 0x0000005f, 0x0000005e, + 0x0003003e, 0x00000282, 0x00000281, 0x0004003d, 0x00000006, 0x00000284, 0x000000ce, 0x0003003e, + 0x00000283, 0x00000284, 0x0004003d, 0x00000006, 0x00000286, 0x000000d4, 0x0003003e, 0x00000285, + 0x00000286, 0x00070039, 0x00000006, 0x00000287, 0x00000011, 0x00000282, 0x00000283, 0x00000285, + 0x0003003e, 0x0000027d, 0x00000287, 0x0004003d, 0x00000006, 0x0000028a, 0x00000254, 0x0003003e, + 0x00000289, 0x0000028a, 0x0004003d, 0x00000006, 0x0000028c, 0x000000ce, 0x0003003e, 0x0000028b, + 0x0000028c, 0x0004003d, 0x00000006, 0x0000028e, 0x000000d4, 0x0003003e, 0x0000028d, 0x0000028e, + 0x00070039, 0x00000006, 0x0000028f, 0x00000011, 0x00000289, 0x0000028b, 0x0000028d, 0x0003003e, + 0x00000288, 0x0000028f, 0x0004003d, 0x00000006, 0x00000291, 0x0000027d, 0x0004003d, 0x00000006, + 0x00000292, 0x00000288, 0x00050083, 0x00000006, 0x00000293, 0x00000291, 0x00000292, 0x0003003e, + 0x00000290, 0x00000293, 0x0004003d, 0x00000006, 0x00000295, 0x000000e1, 0x0004003d, 0x00000006, + 0x00000296, 0x000000e1, 0x0004003d, 0x00000006, 0x00000297, 0x000000db, 0x00050085, 0x00000006, + 0x00000299, 0x00000297, 0x00000298, 0x00050081, 0x00000006, 0x0000029a, 0x00000296, 0x00000299, + 0x0004003d, 0x00000006, 0x0000029b, 0x00000290, 0x0008000c, 0x00000006, 0x0000029c, 0x00000001, + 0x00000031, 0x00000295, 0x0000029a, 0x0000029b, 0x0003003e, 0x00000294, 0x0000029c, 0x0004003d, + 0x00000006, 0x0000029e, 0x000000db, 0x00050085, 0x00000006, 0x0000029f, 0x0000029e, 0x000000b9, + 0x0004003d, 0x00000006, 0x000002a0, 0x000000db, 0x00050085, 0x00000006, 0x000002a2, 0x000002a0, + 0x000002a1, 0x0004003d, 0x00000006, 0x000002a3, 0x00000290, 0x0007000c, 0x00000006, 0x000002a4, + 0x00000001, 0x00000028, 0x000002a3, 0x0000005f, 0x0008000c, 0x00000006, 0x000002a5, 0x00000001, + 0x00000031, 0x0000029f, 0x000002a2, 0x000002a4, 0x00050083, 0x00000006, 0x000002a6, 0x0000005e, + 0x000002a5, 0x0003003e, 0x0000029d, 0x000002a6, 0x0004003d, 0x00000016, 0x000002a8, 0x0000025d, + 0x0004003d, 0x00000016, 0x000002a9, 0x00000214, 0x00050083, 0x00000016, 0x000002aa, 0x000002a8, + 0x000002a9, 0x0006000c, 0x00000006, 0x000002ab, 0x00000001, 0x00000042, 0x000002aa, 0x0003003e, + 0x000002a7, 0x000002ab, 0x0004003d, 0x00000006, 0x000002ad, 0x000000db, 0x00050085, 0x00000006, + 0x000002af, 0x000002ad, 0x000002ae, 0x0004003d, 0x00000006, 0x000002b0, 0x000000db, 0x00050085, + 0x00000006, 0x000002b2, 0x000002b0, 0x000002b1, 0x0004003d, 0x00000006, 0x000002b3, 0x000002a7, + 0x0008000c, 0x00000006, 0x000002b4, 0x00000001, 0x00000031, 0x000002af, 0x000002b2, 0x000002b3, + 0x00050083, 0x00000006, 0x000002b5, 0x0000005e, 0x000002b4, 0x0003003e, 0x000002ac, 0x000002b5, + 0x0004003d, 0x00000006, 0x000002b7, 0x000000db, 0x00050085, 0x00000006, 0x000002b9, 0x000002b7, + 0x000002b8, 0x0004003d, 0x00000006, 0x000002ba, 0x000000db, 0x0004003d, 0x00000006, 0x000002bb, + 0x00000265, 0x0008000c, 0x00000006, 0x000002bc, 0x00000001, 0x00000031, 0x000002b9, 0x000002ba, + 0x000002bb, 0x00050083, 0x00000006, 0x000002bd, 0x0000005e, 0x000002bc, 0x0003003e, 0x000002b6, + 0x000002bd, 0x0004003d, 0x00000006, 0x000002be, 0x00000273, 0x0004003d, 0x00000006, 0x000002bf, + 0x00000294, 0x00050085, 0x00000006, 0x000002c0, 0x000002be, 0x000002bf, 0x0004003d, 0x00000006, + 0x000002c1, 0x0000029d, 0x00050085, 0x00000006, 0x000002c2, 0x000002c0, 0x000002c1, 0x0004003d, + 0x00000006, 0x000002c3, 0x000002ac, 0x00050085, 0x00000006, 0x000002c4, 0x000002c2, 0x000002c3, + 0x0004003d, 0x00000006, 0x000002c5, 0x000002b6, 0x00050085, 0x00000006, 0x000002c6, 0x000002c4, + 0x000002c5, 0x0004003d, 0x00000006, 0x000002c7, 0x00000205, 0x00050081, 0x00000006, 0x000002c8, + 0x000002c7, 0x000002c6, 0x0003003e, 0x00000205, 0x000002c8, 0x000200f9, 0x0000020a, 0x000200f8, + 0x0000020a, 0x0004003d, 0x00000021, 0x000002c9, 0x00000206, 0x00050080, 0x00000021, 0x000002ca, + 0x000002c9, 0x00000031, 0x0003003e, 0x00000206, 0x000002ca, 0x000200f9, 0x00000207, 0x000200f8, + 0x00000209, 0x0004003d, 0x00000006, 0x000002cc, 0x00000205, 0x0004003d, 0x00000021, 0x000002cd, + 0x000000f1, 0x0007000c, 0x00000021, 0x000002ce, 0x00000001, 0x0000002a, 0x000002cd, 0x00000031, + 0x0004006f, 0x00000006, 0x000002cf, 0x000002ce, 0x00050088, 0x00000006, 0x000002d0, 0x000002cc, + 0x000002cf, 0x00050083, 0x00000006, 0x000002d1, 0x0000005e, 0x000002d0, 0x0003003e, 0x000002cb, + 0x000002d1, 0x0004003d, 0x00000006, 0x000002d2, 0x000002cb, 0x0007000c, 0x00000006, 0x000002d3, + 0x00000001, 0x00000028, 0x000002d2, 0x0000005f, 0x0004003d, 0x00000006, 0x000002d4, 0x000000eb, + 0x0007000c, 0x00000006, 0x000002d5, 0x00000001, 0x0000001a, 0x000002d3, 0x000002d4, 0x0008000c, + 0x00000006, 0x000002d6, 0x00000001, 0x0000002b, 0x000002d5, 0x0000005f, 0x0000005e, 0x0003003e, + 0x000002cb, 0x000002d6, 0x0004003d, 0x00000006, 0x000002d8, 0x000002cb, 0x00050083, 0x00000006, + 0x000002d9, 0x0000005e, 0x000002d8, 0x0004003d, 0x00000006, 0x000002da, 0x000000e6, 0x00050085, + 0x00000006, 0x000002db, 0x000002d9, 0x000002da, 0x0008000c, 0x00000006, 0x000002dc, 0x00000001, + 0x0000002b, 0x000002db, 0x0000005f, 0x0000005e, 0x0003003e, 0x000002d7, 0x000002dc, 0x0004003d, + 0x00000006, 0x000002dd, 0x000002d7, 0x00070050, 0x00000007, 0x000002de, 0x0000005f, 0x0000005f, + 0x0000005f, 0x000002dd, 0x0004003d, 0x00000007, 0x000002e1, 0x000002e0, 0x00050085, 0x00000007, + 0x000002e2, 0x000002de, 0x000002e1, 0x0003003e, 0x00000114, 0x000002e2, 0x000100fd, 0x00010038, + 0x00050036, 0x00000008, 0x0000000a, 0x00000000, 0x00000009, 0x000200f8, 0x0000000b, 0x00060041, + 0x0000002e, 0x0000002f, 0x0000002c, 0x0000002d, 0x0000002d, 0x0004003d, 0x00000006, 0x00000030, + 0x0000002f, 0x00060041, 0x0000002e, 0x00000032, 0x0000002c, 0x0000002d, 0x00000031, 0x0004003d, + 0x00000006, 0x00000033, 0x00000032, 0x00060041, 0x0000002e, 0x00000035, 0x0000002c, 0x0000002d, + 0x00000034, 0x0004003d, 0x00000006, 0x00000036, 0x00000035, 0x00060041, 0x0000002e, 0x00000038, + 0x0000002c, 0x0000002d, 0x00000037, 0x0004003d, 0x00000006, 0x00000039, 0x00000038, 0x00060041, + 0x0000002e, 0x0000003b, 0x0000002c, 0x0000002d, 0x0000003a, 0x0004003d, 0x00000006, 0x0000003c, + 0x0000003b, 0x00060041, 0x0000002e, 0x0000003e, 0x0000002c, 0x0000002d, 0x0000003d, 0x0004003d, + 0x00000006, 0x0000003f, 0x0000003e, 0x00060041, 0x0000002e, 0x00000041, 0x0000002c, 0x0000002d, + 0x00000040, 0x0004003d, 0x00000006, 0x00000042, 0x00000041, 0x00060041, 0x0000002e, 0x00000044, + 0x0000002c, 0x0000002d, 0x00000043, 0x0004003d, 0x00000006, 0x00000045, 0x00000044, 0x00060041, + 0x0000002e, 0x00000047, 0x0000002c, 0x0000002d, 0x00000046, 0x0004003d, 0x00000006, 0x00000048, + 0x00000047, 0x00060041, 0x0000002e, 0x0000004a, 0x0000002c, 0x0000002d, 0x00000049, 0x0004003d, + 0x00000006, 0x0000004b, 0x0000004a, 0x00060041, 0x0000002e, 0x0000004d, 0x0000002c, 0x0000002d, + 0x0000004c, 0x0004003d, 0x00000006, 0x0000004e, 0x0000004d, 0x00060041, 0x0000002e, 0x00000050, + 0x0000002c, 0x0000002d, 0x0000004f, 0x0004003d, 0x00000006, 0x00000051, 0x00000050, 0x00060041, + 0x0000002e, 0x00000053, 0x0000002c, 0x0000002d, 0x00000052, 0x0004003d, 0x00000006, 0x00000054, + 0x00000053, 0x00060041, 0x0000002e, 0x00000056, 0x0000002c, 0x0000002d, 0x00000055, 0x0004003d, + 0x00000006, 0x00000057, 0x00000056, 0x00060041, 0x0000002e, 0x00000059, 0x0000002c, 0x0000002d, + 0x00000058, 0x0004003d, 0x00000006, 0x0000005a, 0x00000059, 0x00060041, 0x0000002e, 0x0000005c, + 0x0000002c, 0x0000002d, 0x0000005b, 0x0004003d, 0x00000006, 0x0000005d, 0x0000005c, 0x00070050, + 0x00000007, 0x00000060, 0x00000030, 0x00000033, 0x00000036, 0x00000039, 0x00070050, 0x00000007, + 0x00000061, 0x0000003c, 0x0000003f, 0x00000042, 0x00000045, 0x00070050, 0x00000007, 0x00000062, + 0x00000048, 0x0000004b, 0x0000004e, 0x00000051, 0x00070050, 0x00000007, 0x00000063, 0x00000054, + 0x00000057, 0x0000005a, 0x0000005d, 0x00070050, 0x00000008, 0x00000064, 0x00000060, 0x00000061, + 0x00000062, 0x00000063, 0x000200fe, 0x00000064, 0x00010038, 0x00050036, 0x00000006, 0x00000011, + 0x00000000, 0x0000000d, 0x00030037, 0x0000000c, 0x0000000e, 0x00030037, 0x0000000c, 0x0000000f, + 0x00030037, 0x0000000c, 0x00000010, 0x000200f8, 0x00000012, 0x0004003d, 0x00000006, 0x00000067, + 0x0000000f, 0x0004003d, 0x00000006, 0x00000068, 0x00000010, 0x00050085, 0x00000006, 0x00000069, + 0x00000067, 0x00000068, 0x0004003d, 0x00000006, 0x0000006a, 0x00000010, 0x0004003d, 0x00000006, + 0x0000006b, 0x0000000e, 0x0004003d, 0x00000006, 0x0000006c, 0x00000010, 0x0004003d, 0x00000006, + 0x0000006d, 0x0000000f, 0x00050083, 0x00000006, 0x0000006e, 0x0000006c, 0x0000006d, 0x00050085, + 0x00000006, 0x0000006f, 0x0000006b, 0x0000006e, 0x00050083, 0x00000006, 0x00000070, 0x0000006a, + 0x0000006f, 0x0007000c, 0x00000006, 0x00000072, 0x00000001, 0x00000028, 0x00000070, 0x00000071, + 0x00050088, 0x00000006, 0x00000073, 0x00000069, 0x00000072, 0x000200fe, 0x00000073, 0x00010038, + 0x00050036, 0x00000016, 0x0000001b, 0x00000000, 0x00000017, 0x00030037, 0x00000013, 0x00000018, + 0x00030037, 0x00000015, 0x00000019, 0x00030037, 0x0000000c, 0x0000001a, 0x000200f8, 0x0000001c, + 0x0004003b, 0x00000015, 0x00000076, 0x00000007, 0x0004003b, 0x00000083, 0x00000084, 0x00000007, + 0x0004003b, 0x00000083, 0x0000008b, 0x00000007, 0x00050041, 0x0000000c, 0x00000078, 0x00000019, + 0x00000077, 0x0004003d, 0x00000006, 0x00000079, 0x00000078, 0x00050085, 0x00000006, 0x0000007b, + 0x00000079, 0x0000007a, 0x00050083, 0x00000006, 0x0000007c, 0x0000007b, 0x0000005e, 0x00050041, + 0x0000000c, 0x0000007e, 0x00000019, 0x0000007d, 0x0004003d, 0x00000006, 0x0000007f, 0x0000007e, + 0x00050085, 0x00000006, 0x00000080, 0x0000007f, 0x0000007a, 0x00050083, 0x00000006, 0x00000081, + 0x00000080, 0x0000005e, 0x00050050, 0x00000014, 0x00000082, 0x0000007c, 0x00000081, 0x0003003e, + 0x00000076, 0x00000082, 0x0004003d, 0x00000014, 0x00000085, 0x00000076, 0x0004003d, 0x00000006, + 0x00000086, 0x0000001a, 0x0008000c, 0x00000006, 0x00000087, 0x00000001, 0x0000002b, 0x00000086, + 0x0000005f, 0x0000005e, 0x00050051, 0x00000006, 0x00000088, 0x00000085, 0x00000000, 0x00050051, + 0x00000006, 0x00000089, 0x00000085, 0x00000001, 0x00070050, 0x00000007, 0x0000008a, 0x00000088, + 0x00000089, 0x00000087, 0x0000005e, 0x0003003e, 0x00000084, 0x0000008a, 0x0004003d, 0x00000008, + 0x0000008c, 0x00000018, 0x0004003d, 0x00000007, 0x0000008d, 0x00000084, 0x00050091, 0x00000007, + 0x0000008e, 0x0000008c, 0x0000008d, 0x0003003e, 0x0000008b, 0x0000008e, 0x0004003d, 0x00000007, + 0x0000008f, 0x0000008b, 0x0008004f, 0x00000016, 0x00000090, 0x0000008f, 0x0000008f, 0x00000000, + 0x00000001, 0x00000002, 0x00050041, 0x0000000c, 0x00000092, 0x0000008b, 0x00000091, 0x0004003d, + 0x00000006, 0x00000093, 0x00000092, 0x0007000c, 0x00000006, 0x00000094, 0x00000001, 0x00000028, + 0x00000093, 0x00000071, 0x00060050, 0x00000016, 0x00000095, 0x00000094, 0x00000094, 0x00000094, + 0x00050088, 0x00000016, 0x00000096, 0x00000090, 0x00000095, 0x000200fe, 0x00000096, 0x00010038, + 0x00050036, 0x00000006, 0x0000001f, 0x00000000, 0x0000001d, 0x00030037, 0x00000015, 0x0000001e, + 0x000200f8, 0x00000020, 0x0004003d, 0x0000009a, 0x0000009d, 0x0000009c, 0x0004003d, 0x00000014, + 0x0000009e, 0x0000001e, 0x0008000c, 0x00000014, 0x000000a1, 0x00000001, 0x0000002b, 0x0000009e, + 0x0000009f, 0x000000a0, 0x00050057, 0x00000007, 0x000000a2, 0x0000009d, 0x000000a1, 0x00050051, + 0x00000006, 0x000000a3, 0x000000a2, 0x00000000, 0x000200fe, 0x000000a3, 0x00010038, 0x00050036, + 0x00000016, 0x00000025, 0x00000000, 0x00000023, 0x00030037, 0x00000022, 0x00000024, 0x000200f8, + 0x00000026, 0x0004003b, 0x0000000c, 0x000000a6, 0x00000007, 0x0004003b, 0x0000000c, 0x000000a9, + 0x00000007, 0x0004003b, 0x0000000c, 0x000000ae, 0x00000007, 0x0004003b, 0x0000000c, 0x000000b2, + 0x00000007, 0x0004003d, 0x00000021, 0x000000a7, 0x00000024, 0x0004006f, 0x00000006, 0x000000a8, + 0x000000a7, 0x0003003e, 0x000000a6, 0x000000a8, 0x0004003d, 0x00000006, 0x000000aa, 0x000000a6, + 0x00050085, 0x00000006, 0x000000ac, 0x000000aa, 0x000000ab, 0x0006000c, 0x00000006, 0x000000ad, + 0x00000001, 0x0000000a, 0x000000ac, 0x0003003e, 0x000000a9, 0x000000ad, 0x0004003d, 0x00000006, + 0x000000af, 0x000000a6, 0x00050085, 0x00000006, 0x000000b1, 0x000000af, 0x000000b0, 0x0003003e, + 0x000000ae, 0x000000b1, 0x0004003d, 0x00000006, 0x000000b3, 0x000000a9, 0x0004003d, 0x00000006, + 0x000000b4, 0x000000a9, 0x00050085, 0x00000006, 0x000000b5, 0x000000b3, 0x000000b4, 0x00050083, + 0x00000006, 0x000000b6, 0x0000005e, 0x000000b5, 0x0007000c, 0x00000006, 0x000000b7, 0x00000001, + 0x00000028, 0x000000b6, 0x0000005f, 0x0006000c, 0x00000006, 0x000000b8, 0x00000001, 0x0000001f, + 0x000000b7, 0x0004003d, 0x00000006, 0x000000ba, 0x000000a6, 0x00050081, 0x00000006, 0x000000bb, + 0x000000ba, 0x0000005e, 0x00050088, 0x00000006, 0x000000bd, 0x000000bb, 0x000000bc, 0x0008000c, + 0x00000006, 0x000000be, 0x00000001, 0x0000002e, 0x000000b9, 0x0000005e, 0x000000bd, 0x00050085, + 0x00000006, 0x000000bf, 0x000000b8, 0x000000be, 0x0003003e, 0x000000b2, 0x000000bf, 0x0004003d, + 0x00000006, 0x000000c0, 0x000000ae, 0x0006000c, 0x00000006, 0x000000c1, 0x00000001, 0x0000000e, + 0x000000c0, 0x0004003d, 0x00000006, 0x000000c2, 0x000000b2, 0x00050085, 0x00000006, 0x000000c3, + 0x000000c1, 0x000000c2, 0x0004003d, 0x00000006, 0x000000c4, 0x000000ae, 0x0006000c, 0x00000006, + 0x000000c5, 0x00000001, 0x0000000d, 0x000000c4, 0x0004003d, 0x00000006, 0x000000c6, 0x000000b2, + 0x00050085, 0x00000006, 0x000000c7, 0x000000c5, 0x000000c6, 0x0004003d, 0x00000006, 0x000000c8, + 0x000000a9, 0x00060050, 0x00000016, 0x000000c9, 0x000000c3, 0x000000c7, 0x000000c8, 0x000200fe, + 0x000000c9, 0x00010038, +}; +static const size_t ao_from_depth_frag_spv_count = 4282; diff --git a/src/modules/graphics/shaders/ao_gtao_frag_spv.inc b/src/modules/graphics/shaders/ao_gtao_frag_spv.inc index 428dbde6..7bdc9fb9 100644 --- a/src/modules/graphics/shaders/ao_gtao_frag_spv.inc +++ b/src/modules/graphics/shaders/ao_gtao_frag_spv.inc @@ -53,9 +53,9 @@ static const uint32_t ao_gtao_frag_spv[] = { 0x61726170, 0x0000006d, 0x00040005, 0x0000022c, 0x61726170, 0x0000006d, 0x00040005, 0x0000022f, 0x61726170, 0x0000006d, 0x00040005, 0x00000230, 0x61726170, 0x0000006d, 0x00040005, 0x00000235, 0x6e696874, 0x00000000, 0x00030005, 0x00000253, 0x00006f61, 0x00050005, 0x00000261, 0x67617266, - 0x6f6c6f43, 0x00000072, 0x00040047, 0x00000025, 0x00000006, 0x00000004, 0x00050048, 0x00000026, - 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x00000026, 0x00000002, 0x00040047, 0x0000008b, - 0x00000022, 0x00000000, 0x00040047, 0x0000008b, 0x00000021, 0x00000000, 0x00040047, 0x0000010c, + 0x6f6c6f43, 0x00000072, 0x00040047, 0x00000025, 0x00000006, 0x00000004, 0x00030047, 0x00000026, + 0x00000002, 0x00050048, 0x00000026, 0x00000000, 0x00000023, 0x00000000, 0x00040047, 0x0000008b, + 0x00000021, 0x00000000, 0x00040047, 0x0000008b, 0x00000022, 0x00000000, 0x00040047, 0x0000010c, 0x0000001e, 0x00000001, 0x00040047, 0x0000011a, 0x0000001e, 0x00000000, 0x00040047, 0x00000261, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040018, 0x00000008, diff --git a/src/modules/graphics/shaders/ao_hbao_frag_spv.inc b/src/modules/graphics/shaders/ao_hbao_frag_spv.inc index d46a9a7a..2bd3fa3c 100644 --- a/src/modules/graphics/shaders/ao_hbao_frag_spv.inc +++ b/src/modules/graphics/shaders/ao_hbao_frag_spv.inc @@ -42,9 +42,9 @@ static const uint32_t ao_hbao_frag_spv[] = { 0x00040005, 0x000001a9, 0x61726170, 0x0000006d, 0x00040005, 0x000001ac, 0x746c6564, 0x00000061, 0x00040005, 0x000001b0, 0x74736964, 0x00000000, 0x00040005, 0x000001bc, 0x76656c65, 0x00000000, 0x00030005, 0x000001c1, 0x00747461, 0x00030005, 0x000001d5, 0x00006f61, 0x00050005, 0x000001e8, - 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, 0x00000020, 0x00000006, 0x00000004, 0x00050048, - 0x00000021, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x00000021, 0x00000002, 0x00040047, - 0x00000086, 0x00000022, 0x00000000, 0x00040047, 0x00000086, 0x00000021, 0x00000000, 0x00040047, + 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, 0x00000020, 0x00000006, 0x00000004, 0x00030047, + 0x00000021, 0x00000002, 0x00050048, 0x00000021, 0x00000000, 0x00000023, 0x00000000, 0x00040047, + 0x00000086, 0x00000021, 0x00000000, 0x00040047, 0x00000086, 0x00000022, 0x00000000, 0x00040047, 0x000000ed, 0x0000001e, 0x00000001, 0x00040047, 0x000000fb, 0x0000001e, 0x00000000, 0x00040047, 0x000001e8, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040018, diff --git a/src/modules/graphics/shaders/ao_overlay_frag_spv.inc b/src/modules/graphics/shaders/ao_overlay_frag_spv.inc index 83e21aa3..93e92f31 100644 --- a/src/modules/graphics/shaders/ao_overlay_frag_spv.inc +++ b/src/modules/graphics/shaders/ao_overlay_frag_spv.inc @@ -11,9 +11,9 @@ static const uint32_t ao_overlay_frag_spv[] = { 0x65776f70, 0x00000072, 0x00030005, 0x0000001c, 0x00006f61, 0x00040005, 0x00000020, 0x6e69614d, 0x00786554, 0x00040005, 0x00000024, 0x67617266, 0x00005655, 0x00040005, 0x00000030, 0x6b726164, 0x00000000, 0x00050005, 0x00000037, 0x4374756f, 0x726f6c6f, 0x00000000, 0x00050005, 0x0000003b, - 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, 0x0000000b, 0x00000006, 0x00000004, 0x00050048, - 0x0000000c, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x0000000c, 0x00000002, 0x00040047, - 0x00000020, 0x00000022, 0x00000000, 0x00040047, 0x00000020, 0x00000021, 0x00000000, 0x00040047, + 0x67617266, 0x6f6c6f43, 0x00000072, 0x00040047, 0x0000000b, 0x00000006, 0x00000004, 0x00030047, + 0x0000000c, 0x00000002, 0x00050048, 0x0000000c, 0x00000000, 0x00000023, 0x00000000, 0x00040047, + 0x00000020, 0x00000021, 0x00000000, 0x00040047, 0x00000020, 0x00000022, 0x00000000, 0x00040047, 0x00000024, 0x0000001e, 0x00000001, 0x00040047, 0x00000037, 0x0000001e, 0x00000000, 0x00040047, 0x0000003b, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040020, 0x00000007, 0x00000007, 0x00000006, 0x00040015, diff --git a/src/modules/graphics/shaders/ao_ssao_frag_spv.inc b/src/modules/graphics/shaders/ao_ssao_frag_spv.inc index 498505d9..81fe9160 100644 --- a/src/modules/graphics/shaders/ao_ssao_frag_spv.inc +++ b/src/modules/graphics/shaders/ao_ssao_frag_spv.inc @@ -48,9 +48,9 @@ static const uint32_t ao_ssao_frag_spv[] = { 0x6944656c, 0x00000072, 0x00040005, 0x000001fb, 0x74736964, 0x00000000, 0x00030005, 0x00000203, 0x006c646e, 0x00050005, 0x0000020a, 0x676e6172, 0x65684365, 0x00006b63, 0x00030005, 0x00000212, 0x0063636f, 0x00030005, 0x00000231, 0x00006f61, 0x00050005, 0x00000244, 0x67617266, 0x6f6c6f43, - 0x00000072, 0x00040047, 0x00000026, 0x00000006, 0x00000004, 0x00050048, 0x00000027, 0x00000000, - 0x00000023, 0x00000000, 0x00030047, 0x00000027, 0x00000002, 0x00040047, 0x0000008b, 0x00000022, - 0x00000000, 0x00040047, 0x0000008b, 0x00000021, 0x00000000, 0x00040047, 0x00000111, 0x0000001e, + 0x00000072, 0x00040047, 0x00000026, 0x00000006, 0x00000004, 0x00030047, 0x00000027, 0x00000002, + 0x00050048, 0x00000027, 0x00000000, 0x00000023, 0x00000000, 0x00040047, 0x0000008b, 0x00000021, + 0x00000000, 0x00040047, 0x0000008b, 0x00000022, 0x00000000, 0x00040047, 0x00000111, 0x0000001e, 0x00000001, 0x00040047, 0x0000011f, 0x0000001e, 0x00000000, 0x00040047, 0x00000244, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040018, 0x00000008, 0x00000007, diff --git a/src/modules/graphics/shaders/gi_ssgi.frag b/src/modules/graphics/shaders/gi_ssgi.frag new file mode 100644 index 00000000..0b392064 --- /dev/null +++ b/src/modules/graphics/shaders/gi_ssgi.frag @@ -0,0 +1,165 @@ +#version 450 +// Single-bounce screen-space GI. +// MainTex = scene color (RGB = lit radiance). DepthTex = hardware D32 +// (binding 1, .r = Vulkan NDC z) when useNdcDepth != 0; otherwise depth is +// packed in MainTex.a as linear 0..1 (Canvas / unit tests). +// +// Samples a world-space hemisphere (not a screen disc) so nearby props are +// not copied onto the floor as multiple swimming ghosts. +// +// Push: +// 0..15 invViewProj +// 16 nearZ 17 farZ +// 18 radius 19 intensity 20 sampleCount +// 21 lightDirX 22 lightDirY 23 lightDirZ +// 24 lightR 25 lightG 26 lightB +// 27 texelW 28 texelH +// 29 useNdcDepth + +layout(location = 0) in vec4 fragColor; +layout(location = 1) in vec2 fragUV; +layout(location = 0) out vec4 outColor; +layout(binding = 0) uniform sampler2D MainTex; +layout(binding = 1) uniform sampler2D DepthTex; +layout(push_constant) uniform Externals { float data[32]; } u; + +mat4 loadInvVP() { + return mat4( + u.data[0], u.data[1], u.data[2], u.data[3], + u.data[4], u.data[5], u.data[6], u.data[7], + u.data[8], u.data[9], u.data[10], u.data[11], + u.data[12], u.data[13], u.data[14], u.data[15]); +} + +float ndcToViewZ(float ndcZ, float nearZ, float farZ) { + return (nearZ * farZ) / max(farZ - ndcZ * (farZ - nearZ), 1e-6); +} + +vec3 reconstructWorld(mat4 invVP, vec2 uv, float depthZ) { + vec2 ndc = vec2(uv.x * 2.0 - 1.0, uv.y * 2.0 - 1.0); + vec4 clip = vec4(ndc, clamp(depthZ, 0.0, 1.0), 1.0); + vec4 w = invVP * clip; + return w.xyz / max(w.w, 1e-6); +} + +vec2 clampUV(vec2 uv) { + return clamp(uv, vec2(0.0), vec2(1.0)); +} + +vec3 sampleLit(vec2 uv) { + return texture(MainTex, clampUV(uv)).rgb; +} + +float sampleDepth(vec2 uv, float useNdc) { + vec2 c = clampUV(uv); + if (useNdc > 0.5) return texture(DepthTex, c).r; + return texture(MainTex, c).a; +} + +vec3 reconstructNormal(mat4 invVP, vec2 uv, float depthZ, vec3 pos, + float texelW, float texelH, float useNdc, vec3 camPos) { + float dR = sampleDepth(uv + vec2(texelW, 0.0), useNdc); + float dL = sampleDepth(uv - vec2(texelW, 0.0), useNdc); + float dU = sampleDepth(uv + vec2(0.0, texelH), useNdc); + float dD = sampleDepth(uv - vec2(0.0, texelH), useNdc); + vec2 uvH = abs(dR - depthZ) < abs(dL - depthZ) ? uv + vec2(texelW, 0.0) + : uv - vec2(texelW, 0.0); + float dH = abs(dR - depthZ) < abs(dL - depthZ) ? dR : dL; + vec2 uvV = abs(dU - depthZ) < abs(dD - depthZ) ? uv + vec2(0.0, texelH) + : uv - vec2(0.0, texelH); + float dV = abs(dU - depthZ) < abs(dD - depthZ) ? dU : dD; + vec3 n = normalize(cross(reconstructWorld(invVP, uvH, dH) - pos, + reconstructWorld(invVP, uvV, dV) - pos)); + if (dot(n, camPos - pos) < 0.0) n = -n; + return n; +} + +vec3 kernelSample(int i) { + float fi = float(i); + float z = fract(fi * 0.6180339887); + float a = fi * 2.3999632297; + float r = sqrt(max(1.0 - z * z, 0.0)) * mix(0.25, 1.0, (fi + 1.0) / 24.0); + return vec3(cos(a) * r, sin(a) * r, z); +} + +void main() { + mat4 invVP = loadInvVP(); + float nearZ = max(u.data[16], 1e-3); + float farZ = max(u.data[17], nearZ + 1e-3); + float radius = max(u.data[18], 1e-4); + float intensity = max(u.data[19], 0.0); + int samples = int(clamp(u.data[20], 4.0, 24.0)); + float texelW = max(u.data[27], 1e-5); + float texelH = max(u.data[28], 1e-5); + float useNdc = u.data[29]; + + float depthZ = sampleDepth(fragUV, useNdc); + float skyCut = useNdc > 0.5 ? 0.9999 : 0.999; + if (depthZ >= skyCut || (useNdc < 0.5 && depthZ <= 1e-5) || intensity < 1e-4) { + outColor = vec4(0.0); + return; + } + + vec3 lit = sampleLit(fragUV); + vec3 pos = reconstructWorld(invVP, fragUV, depthZ); + vec4 eyeH = invVP * vec4(0.0, 0.0, 0.0, 1.0); + vec3 camPos = eyeH.xyz / max(eyeH.w, 1e-6); + vec3 normal = reconstructNormal(invVP, fragUV, depthZ, pos, texelW, texelH, + useNdc, camPos); + + vec3 up = abs(normal.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(1.0, 0.0, 0.0); + vec3 tangent = normalize(up - normal * dot(up, normal)); + vec3 bitangent = cross(normal, tangent); + mat3 tbn = mat3(tangent, bitangent, normal); + mat4 vp = inverse(invVP); + + vec3 bounce = vec3(0.0); + float weight = 0.0; + for (int i = 0; i < 24; ++i) { + if (i >= samples) break; + vec3 sampleWorld = pos + tbn * (kernelSample(i) * radius); + vec4 clip = vp * vec4(sampleWorld, 1.0); + if (clip.w < 1e-5) continue; + vec3 ndc = clip.xyz / clip.w; + vec2 sampleUV = ndc.xy * 0.5 + 0.5; + if (sampleUV.x < 0.0 || sampleUV.x > 1.0 || sampleUV.y < 0.0 || sampleUV.y > 1.0) + continue; + float sDepth = sampleDepth(sampleUV, useNdc); + if (sDepth >= skyCut || (useNdc < 0.5 && sDepth <= 1e-5)) continue; + + vec3 hitPos = reconstructWorld(invVP, sampleUV, sDepth); + // Reject hits that are not near the hemisphere sample — that is the + // screen-space copy of a nearby curtain/column onto the floor. + float mismatch = length(hitPos - sampleWorld); + if (mismatch > radius * 0.7) continue; + + vec3 toHit = hitPos - pos; + float dist = length(toHit); + if (dist < 1e-4 || dist > radius) continue; + vec3 Lhit = toHit / dist; + float ndlRecv = max(dot(normal, Lhit), 0.0); + if (ndlRecv < 0.04) continue; + vec3 sN = reconstructNormal(invVP, sampleUV, sDepth, hitPos, texelW, texelH, + useNdc, camPos); + float ndlSend = max(dot(sN, -Lhit), 0.0); + if (ndlSend < 0.04) continue; + + float rangeCheck = 1.0 - smoothstep(radius * 0.4, radius, dist); + float close = 1.0 - smoothstep(radius * 0.2, radius * 0.7, mismatch); + float w = rangeCheck * ndlRecv * ndlSend * close; + bounce += sampleLit(sampleUV) * w; + weight += w; + } + + if (weight > 1e-4) bounce /= weight; + + bounce *= intensity; + bounce *= mix(vec3(1.0), lit, 0.12); + + float e = clamp(max(bounce.r, max(bounce.g, bounce.b)), 0.0, 0.14); + if (e < 1e-4) { + outColor = vec4(0.0); + return; + } + outColor = vec4(bounce / max(e, 1e-4), e) * fragColor; +} diff --git a/src/modules/graphics/shaders/gi_ssgi_frag_spv.inc b/src/modules/graphics/shaders/gi_ssgi_frag_spv.inc new file mode 100644 index 00000000..7d7c65e4 --- /dev/null +++ b/src/modules/graphics/shaders/gi_ssgi_frag_spv.inc @@ -0,0 +1,592 @@ +static const uint32_t gi_ssgi_frag_spv[] = { + 0x07230203, 0x00010000, 0x000d000b, 0x0000032f, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, + 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, + 0x0008000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x000001a8, 0x000001c6, 0x0000032c, + 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x000a0004, 0x475f4c47, + 0x4c474f4f, 0x70635f45, 0x74735f70, 0x5f656c79, 0x656e696c, 0x7269645f, 0x69746365, 0x00006576, + 0x00080004, 0x475f4c47, 0x4c474f4f, 0x6e695f45, 0x64756c63, 0x69645f65, 0x74636572, 0x00657669, + 0x00040005, 0x00000004, 0x6e69616d, 0x00000000, 0x00050005, 0x0000000a, 0x64616f6c, 0x56766e49, + 0x00002850, 0x000a0005, 0x00000015, 0x6f636572, 0x7274736e, 0x57746375, 0x646c726f, 0x34666d28, + 0x66763b34, 0x31663b32, 0x0000003b, 0x00040005, 0x00000012, 0x56766e69, 0x00000050, 0x00030005, + 0x00000013, 0x00007675, 0x00040005, 0x00000014, 0x74706564, 0x00005a68, 0x00060005, 0x00000019, + 0x6d616c63, 0x28565570, 0x3b326676, 0x00000000, 0x00030005, 0x00000018, 0x00007675, 0x00060005, + 0x0000001d, 0x706d6173, 0x694c656c, 0x66762874, 0x00003b32, 0x00030005, 0x0000001c, 0x00007675, + 0x00070005, 0x00000022, 0x706d6173, 0x6544656c, 0x28687470, 0x3b326676, 0x003b3166, 0x00030005, + 0x00000020, 0x00007675, 0x00040005, 0x00000021, 0x4e657375, 0x00006364, 0x000e0005, 0x0000002e, + 0x6f636572, 0x7274736e, 0x4e746375, 0x616d726f, 0x666d286c, 0x763b3434, 0x663b3266, 0x66763b31, + 0x31663b33, 0x3b31663b, 0x763b3166, 0x003b3366, 0x00040005, 0x00000026, 0x56766e69, 0x00000050, + 0x00030005, 0x00000027, 0x00007675, 0x00040005, 0x00000028, 0x74706564, 0x00005a68, 0x00030005, + 0x00000029, 0x00736f70, 0x00040005, 0x0000002a, 0x65786574, 0x0000576c, 0x00040005, 0x0000002b, + 0x65786574, 0x0000486c, 0x00040005, 0x0000002c, 0x4e657375, 0x00006364, 0x00040005, 0x0000002d, + 0x506d6163, 0x0000736f, 0x00070005, 0x00000034, 0x6e72656b, 0x61536c65, 0x656c706d, 0x3b316928, + 0x00000000, 0x00030005, 0x00000033, 0x00000069, 0x00050005, 0x00000039, 0x65747845, 0x6c616e72, + 0x00000073, 0x00050006, 0x00000039, 0x00000000, 0x61746164, 0x00000000, 0x00030005, 0x0000003b, + 0x00000075, 0x00030005, 0x00000076, 0x0063646e, 0x00040005, 0x00000084, 0x70696c63, 0x00000000, + 0x00030005, 0x0000008b, 0x00000077, 0x00040005, 0x000000a3, 0x6e69614d, 0x00786554, 0x00040005, + 0x000000a5, 0x61726170, 0x0000006d, 0x00030005, 0x000000ac, 0x00000063, 0x00040005, 0x000000ad, + 0x61726170, 0x0000006d, 0x00050005, 0x000000b6, 0x74706544, 0x78655468, 0x00000000, 0x00030005, + 0x000000c2, 0x00005264, 0x00040005, 0x000000c7, 0x61726170, 0x0000006d, 0x00040005, 0x000000c8, + 0x61726170, 0x0000006d, 0x00030005, 0x000000cb, 0x00004c64, 0x00040005, 0x000000d0, 0x61726170, + 0x0000006d, 0x00040005, 0x000000d1, 0x61726170, 0x0000006d, 0x00030005, 0x000000d4, 0x00005564, + 0x00040005, 0x000000d9, 0x61726170, 0x0000006d, 0x00040005, 0x000000da, 0x61726170, 0x0000006d, + 0x00030005, 0x000000dd, 0x00004464, 0x00040005, 0x000000e2, 0x61726170, 0x0000006d, 0x00040005, + 0x000000e3, 0x61726170, 0x0000006d, 0x00030005, 0x000000e6, 0x00487675, 0x00030005, 0x000000fd, + 0x00004864, 0x00030005, 0x0000010a, 0x00567675, 0x00030005, 0x00000121, 0x00005664, 0x00030005, + 0x0000012e, 0x0000006e, 0x00040005, 0x0000012f, 0x61726170, 0x0000006d, 0x00040005, 0x00000131, + 0x61726170, 0x0000006d, 0x00040005, 0x00000133, 0x61726170, 0x0000006d, 0x00040005, 0x00000138, + 0x61726170, 0x0000006d, 0x00040005, 0x0000013a, 0x61726170, 0x0000006d, 0x00040005, 0x0000013c, + 0x61726170, 0x0000006d, 0x00030005, 0x00000150, 0x00006966, 0x00030005, 0x00000153, 0x0000007a, + 0x00030005, 0x00000158, 0x00000061, 0x00030005, 0x0000015c, 0x00000072, 0x00040005, 0x00000176, + 0x56766e69, 0x00000050, 0x00040005, 0x00000178, 0x7261656e, 0x0000005a, 0x00040005, 0x0000017e, + 0x5a726166, 0x00000000, 0x00040005, 0x00000185, 0x69646172, 0x00007375, 0x00050005, 0x0000018b, + 0x65746e69, 0x7469736e, 0x00000079, 0x00040005, 0x00000190, 0x706d6173, 0x0073656c, 0x00040005, + 0x00000197, 0x65786574, 0x0000576c, 0x00040005, 0x0000019d, 0x65786574, 0x0000486c, 0x00040005, + 0x000001a2, 0x4e657375, 0x00006364, 0x00040005, 0x000001a6, 0x74706564, 0x00005a68, 0x00040005, + 0x000001a8, 0x67617266, 0x00005655, 0x00040005, 0x000001a9, 0x61726170, 0x0000006d, 0x00040005, + 0x000001ab, 0x61726170, 0x0000006d, 0x00040005, 0x000001ae, 0x43796b73, 0x00007475, 0x00050005, + 0x000001c6, 0x4374756f, 0x726f6c6f, 0x00000000, 0x00030005, 0x000001c9, 0x0074696c, 0x00040005, + 0x000001ca, 0x61726170, 0x0000006d, 0x00030005, 0x000001cd, 0x00736f70, 0x00040005, 0x000001ce, + 0x61726170, 0x0000006d, 0x00040005, 0x000001d0, 0x61726170, 0x0000006d, 0x00040005, 0x000001d2, + 0x61726170, 0x0000006d, 0x00040005, 0x000001d5, 0x48657965, 0x00000000, 0x00040005, 0x000001d9, + 0x506d6163, 0x0000736f, 0x00040005, 0x000001e1, 0x6d726f6e, 0x00006c61, 0x00040005, 0x000001e2, + 0x61726170, 0x0000006d, 0x00040005, 0x000001e4, 0x61726170, 0x0000006d, 0x00040005, 0x000001e6, + 0x61726170, 0x0000006d, 0x00040005, 0x000001e8, 0x61726170, 0x0000006d, 0x00040005, 0x000001ea, + 0x61726170, 0x0000006d, 0x00040005, 0x000001ec, 0x61726170, 0x0000006d, 0x00040005, 0x000001ee, + 0x61726170, 0x0000006d, 0x00040005, 0x000001f0, 0x61726170, 0x0000006d, 0x00030005, 0x000001f3, + 0x00007075, 0x00040005, 0x000001fd, 0x676e6174, 0x00746e65, 0x00050005, 0x00000206, 0x61746962, + 0x6e65676e, 0x00000074, 0x00030005, 0x0000020c, 0x006e6274, 0x00030005, 0x0000021d, 0x00007076, + 0x00040005, 0x00000220, 0x6e756f62, 0x00006563, 0x00040005, 0x00000222, 0x67696577, 0x00007468, + 0x00030005, 0x00000223, 0x00000069, 0x00050005, 0x00000232, 0x706d6173, 0x6f57656c, 0x00646c72, + 0x00040005, 0x00000235, 0x61726170, 0x0000006d, 0x00040005, 0x0000023c, 0x70696c63, 0x00000000, + 0x00030005, 0x0000024a, 0x0063646e, 0x00050005, 0x00000251, 0x706d6173, 0x5655656c, 0x00000000, + 0x00040005, 0x00000272, 0x70654473, 0x00006874, 0x00040005, 0x00000273, 0x61726170, 0x0000006d, + 0x00040005, 0x00000275, 0x61726170, 0x0000006d, 0x00040005, 0x00000287, 0x50746968, 0x0000736f, + 0x00040005, 0x00000288, 0x61726170, 0x0000006d, 0x00040005, 0x0000028a, 0x61726170, 0x0000006d, + 0x00040005, 0x0000028c, 0x61726170, 0x0000006d, 0x00050005, 0x0000028f, 0x6d73696d, 0x68637461, + 0x00000000, 0x00040005, 0x0000029c, 0x69486f74, 0x00000074, 0x00040005, 0x000002a0, 0x74736964, + 0x00000000, 0x00040005, 0x000002ac, 0x7469684c, 0x00000000, 0x00040005, 0x000002b1, 0x526c646e, + 0x00766365, 0x00030005, 0x000002bc, 0x00004e73, 0x00040005, 0x000002bd, 0x61726170, 0x0000006d, + 0x00040005, 0x000002bf, 0x61726170, 0x0000006d, 0x00040005, 0x000002c1, 0x61726170, 0x0000006d, + 0x00040005, 0x000002c3, 0x61726170, 0x0000006d, 0x00040005, 0x000002c5, 0x61726170, 0x0000006d, + 0x00040005, 0x000002c7, 0x61726170, 0x0000006d, 0x00040005, 0x000002c9, 0x61726170, 0x0000006d, + 0x00040005, 0x000002cb, 0x61726170, 0x0000006d, 0x00040005, 0x000002ce, 0x536c646e, 0x00646e65, + 0x00050005, 0x000002d9, 0x676e6172, 0x65684365, 0x00006b63, 0x00040005, 0x000002e1, 0x736f6c63, + 0x00000065, 0x00030005, 0x000002ea, 0x00000077, 0x00040005, 0x000002f2, 0x61726170, 0x0000006d, + 0x00030005, 0x00000310, 0x00000065, 0x00050005, 0x0000032c, 0x67617266, 0x6f6c6f43, 0x00000072, + 0x00040047, 0x00000038, 0x00000006, 0x00000004, 0x00030047, 0x00000039, 0x00000002, 0x00050048, + 0x00000039, 0x00000000, 0x00000023, 0x00000000, 0x00040047, 0x000000a3, 0x00000021, 0x00000000, + 0x00040047, 0x000000a3, 0x00000022, 0x00000000, 0x00040047, 0x000000b6, 0x00000021, 0x00000001, + 0x00040047, 0x000000b6, 0x00000022, 0x00000000, 0x00040047, 0x000001a8, 0x0000001e, 0x00000001, + 0x00040047, 0x000001c6, 0x0000001e, 0x00000000, 0x00040047, 0x0000032c, 0x0000001e, 0x00000000, + 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, + 0x00040017, 0x00000007, 0x00000006, 0x00000004, 0x00040018, 0x00000008, 0x00000007, 0x00000004, + 0x00030021, 0x00000009, 0x00000008, 0x00040020, 0x0000000c, 0x00000007, 0x00000008, 0x00040017, + 0x0000000d, 0x00000006, 0x00000002, 0x00040020, 0x0000000e, 0x00000007, 0x0000000d, 0x00040020, + 0x0000000f, 0x00000007, 0x00000006, 0x00040017, 0x00000010, 0x00000006, 0x00000003, 0x00060021, + 0x00000011, 0x00000010, 0x0000000c, 0x0000000e, 0x0000000f, 0x00040021, 0x00000017, 0x0000000d, + 0x0000000e, 0x00040021, 0x0000001b, 0x00000010, 0x0000000e, 0x00050021, 0x0000001f, 0x00000006, + 0x0000000e, 0x0000000f, 0x00040020, 0x00000024, 0x00000007, 0x00000010, 0x000b0021, 0x00000025, + 0x00000010, 0x0000000c, 0x0000000e, 0x0000000f, 0x00000024, 0x0000000f, 0x0000000f, 0x0000000f, + 0x00000024, 0x00040015, 0x00000030, 0x00000020, 0x00000001, 0x00040020, 0x00000031, 0x00000007, + 0x00000030, 0x00040021, 0x00000032, 0x00000010, 0x00000031, 0x00040015, 0x00000036, 0x00000020, + 0x00000000, 0x0004002b, 0x00000036, 0x00000037, 0x00000020, 0x0004001c, 0x00000038, 0x00000006, + 0x00000037, 0x0003001e, 0x00000039, 0x00000038, 0x00040020, 0x0000003a, 0x00000009, 0x00000039, + 0x0004003b, 0x0000003a, 0x0000003b, 0x00000009, 0x0004002b, 0x00000030, 0x0000003c, 0x00000000, + 0x00040020, 0x0000003d, 0x00000009, 0x00000006, 0x0004002b, 0x00000030, 0x00000040, 0x00000001, + 0x0004002b, 0x00000030, 0x00000043, 0x00000002, 0x0004002b, 0x00000030, 0x00000046, 0x00000003, + 0x0004002b, 0x00000030, 0x00000049, 0x00000004, 0x0004002b, 0x00000030, 0x0000004c, 0x00000005, + 0x0004002b, 0x00000030, 0x0000004f, 0x00000006, 0x0004002b, 0x00000030, 0x00000052, 0x00000007, + 0x0004002b, 0x00000030, 0x00000055, 0x00000008, 0x0004002b, 0x00000030, 0x00000058, 0x00000009, + 0x0004002b, 0x00000030, 0x0000005b, 0x0000000a, 0x0004002b, 0x00000030, 0x0000005e, 0x0000000b, + 0x0004002b, 0x00000030, 0x00000061, 0x0000000c, 0x0004002b, 0x00000030, 0x00000064, 0x0000000d, + 0x0004002b, 0x00000030, 0x00000067, 0x0000000e, 0x0004002b, 0x00000030, 0x0000006a, 0x0000000f, + 0x0004002b, 0x00000006, 0x0000006d, 0x3f800000, 0x0004002b, 0x00000006, 0x0000006e, 0x00000000, + 0x0004002b, 0x00000036, 0x00000077, 0x00000000, 0x0004002b, 0x00000006, 0x0000007a, 0x40000000, + 0x0004002b, 0x00000036, 0x0000007d, 0x00000001, 0x00040020, 0x00000083, 0x00000007, 0x00000007, + 0x0004002b, 0x00000036, 0x00000091, 0x00000003, 0x0004002b, 0x00000006, 0x00000094, 0x358637bd, + 0x0005002c, 0x0000000d, 0x0000009b, 0x0000006e, 0x0000006e, 0x0005002c, 0x0000000d, 0x0000009c, + 0x0000006d, 0x0000006d, 0x00090019, 0x000000a0, 0x00000006, 0x00000001, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x000000a1, 0x000000a0, 0x00040020, 0x000000a2, + 0x00000000, 0x000000a1, 0x0004003b, 0x000000a2, 0x000000a3, 0x00000000, 0x0004002b, 0x00000006, + 0x000000b1, 0x3f000000, 0x00020014, 0x000000b2, 0x0004003b, 0x000000a2, 0x000000b6, 0x00000000, + 0x0004002b, 0x00000006, 0x00000155, 0x3f1e377a, 0x0004002b, 0x00000006, 0x0000015a, 0x401998ff, + 0x0004002b, 0x00000006, 0x00000163, 0x3e800000, 0x0004002b, 0x00000006, 0x00000166, 0x41c00000, + 0x0004002b, 0x00000030, 0x00000179, 0x00000010, 0x0004002b, 0x00000006, 0x0000017c, 0x3a83126f, + 0x0004002b, 0x00000030, 0x0000017f, 0x00000011, 0x0004002b, 0x00000030, 0x00000186, 0x00000012, + 0x0004002b, 0x00000006, 0x00000189, 0x38d1b717, 0x0004002b, 0x00000030, 0x0000018c, 0x00000013, + 0x0004002b, 0x00000030, 0x00000191, 0x00000014, 0x0004002b, 0x00000006, 0x00000194, 0x40800000, + 0x0004002b, 0x00000030, 0x00000198, 0x0000001b, 0x0004002b, 0x00000006, 0x0000019b, 0x3727c5ac, + 0x0004002b, 0x00000030, 0x0000019e, 0x0000001c, 0x0004002b, 0x00000030, 0x000001a3, 0x0000001d, + 0x00040020, 0x000001a7, 0x00000001, 0x0000000d, 0x0004003b, 0x000001a7, 0x000001a8, 0x00000001, + 0x0004002b, 0x00000006, 0x000001b1, 0x3f7ff972, 0x0004002b, 0x00000006, 0x000001b2, 0x3f7fbe77, + 0x00040020, 0x000001c5, 0x00000003, 0x00000007, 0x0004003b, 0x000001c5, 0x000001c6, 0x00000003, + 0x0007002c, 0x00000007, 0x000001c7, 0x0000006e, 0x0000006e, 0x0000006e, 0x0000006e, 0x0007002c, + 0x00000007, 0x000001d7, 0x0000006e, 0x0000006e, 0x0000006e, 0x0000006d, 0x0006002c, 0x00000010, + 0x000001f8, 0x0000006e, 0x0000006d, 0x0000006e, 0x0006002c, 0x00000010, 0x000001f9, 0x0000006d, + 0x0000006e, 0x0000006e, 0x00040017, 0x000001fa, 0x000000b2, 0x00000003, 0x00040018, 0x0000020a, + 0x00000010, 0x00000003, 0x00040020, 0x0000020b, 0x00000007, 0x0000020a, 0x0006002c, 0x00000010, + 0x00000221, 0x0000006e, 0x0000006e, 0x0000006e, 0x0004002b, 0x00000030, 0x0000022a, 0x00000018, + 0x0004002b, 0x00000006, 0x00000296, 0x3f333333, 0x0004002b, 0x00000006, 0x000002b7, 0x3d23d70a, + 0x0004002b, 0x00000006, 0x000002db, 0x3ecccccd, 0x0004002b, 0x00000006, 0x000002e3, 0x3e4ccccd, + 0x0006002c, 0x00000010, 0x00000309, 0x0000006d, 0x0000006d, 0x0000006d, 0x0004002b, 0x00000006, + 0x0000030b, 0x3df5c28f, 0x0004002b, 0x00000036, 0x00000315, 0x00000002, 0x0004002b, 0x00000006, + 0x0000031a, 0x3e0f5c29, 0x00040020, 0x0000032b, 0x00000001, 0x00000007, 0x0004003b, 0x0000032b, + 0x0000032c, 0x00000001, 0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, + 0x00000005, 0x0004003b, 0x0000000c, 0x00000176, 0x00000007, 0x0004003b, 0x0000000f, 0x00000178, + 0x00000007, 0x0004003b, 0x0000000f, 0x0000017e, 0x00000007, 0x0004003b, 0x0000000f, 0x00000185, + 0x00000007, 0x0004003b, 0x0000000f, 0x0000018b, 0x00000007, 0x0004003b, 0x00000031, 0x00000190, + 0x00000007, 0x0004003b, 0x0000000f, 0x00000197, 0x00000007, 0x0004003b, 0x0000000f, 0x0000019d, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001a2, 0x00000007, 0x0004003b, 0x0000000f, 0x000001a6, + 0x00000007, 0x0004003b, 0x0000000e, 0x000001a9, 0x00000007, 0x0004003b, 0x0000000f, 0x000001ab, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001ae, 0x00000007, 0x0004003b, 0x00000024, 0x000001c9, + 0x00000007, 0x0004003b, 0x0000000e, 0x000001ca, 0x00000007, 0x0004003b, 0x00000024, 0x000001cd, + 0x00000007, 0x0004003b, 0x0000000c, 0x000001ce, 0x00000007, 0x0004003b, 0x0000000e, 0x000001d0, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001d2, 0x00000007, 0x0004003b, 0x00000083, 0x000001d5, + 0x00000007, 0x0004003b, 0x00000024, 0x000001d9, 0x00000007, 0x0004003b, 0x00000024, 0x000001e1, + 0x00000007, 0x0004003b, 0x0000000c, 0x000001e2, 0x00000007, 0x0004003b, 0x0000000e, 0x000001e4, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001e6, 0x00000007, 0x0004003b, 0x00000024, 0x000001e8, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001ea, 0x00000007, 0x0004003b, 0x0000000f, 0x000001ec, + 0x00000007, 0x0004003b, 0x0000000f, 0x000001ee, 0x00000007, 0x0004003b, 0x00000024, 0x000001f0, + 0x00000007, 0x0004003b, 0x00000024, 0x000001f3, 0x00000007, 0x0004003b, 0x00000024, 0x000001fd, + 0x00000007, 0x0004003b, 0x00000024, 0x00000206, 0x00000007, 0x0004003b, 0x0000020b, 0x0000020c, + 0x00000007, 0x0004003b, 0x0000000c, 0x0000021d, 0x00000007, 0x0004003b, 0x00000024, 0x00000220, + 0x00000007, 0x0004003b, 0x0000000f, 0x00000222, 0x00000007, 0x0004003b, 0x00000031, 0x00000223, + 0x00000007, 0x0004003b, 0x00000024, 0x00000232, 0x00000007, 0x0004003b, 0x00000031, 0x00000235, + 0x00000007, 0x0004003b, 0x00000083, 0x0000023c, 0x00000007, 0x0004003b, 0x00000024, 0x0000024a, + 0x00000007, 0x0004003b, 0x0000000e, 0x00000251, 0x00000007, 0x0004003b, 0x0000000f, 0x00000272, + 0x00000007, 0x0004003b, 0x0000000e, 0x00000273, 0x00000007, 0x0004003b, 0x0000000f, 0x00000275, + 0x00000007, 0x0004003b, 0x00000024, 0x00000287, 0x00000007, 0x0004003b, 0x0000000c, 0x00000288, + 0x00000007, 0x0004003b, 0x0000000e, 0x0000028a, 0x00000007, 0x0004003b, 0x0000000f, 0x0000028c, + 0x00000007, 0x0004003b, 0x0000000f, 0x0000028f, 0x00000007, 0x0004003b, 0x00000024, 0x0000029c, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002a0, 0x00000007, 0x0004003b, 0x00000024, 0x000002ac, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002b1, 0x00000007, 0x0004003b, 0x00000024, 0x000002bc, + 0x00000007, 0x0004003b, 0x0000000c, 0x000002bd, 0x00000007, 0x0004003b, 0x0000000e, 0x000002bf, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002c1, 0x00000007, 0x0004003b, 0x00000024, 0x000002c3, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002c5, 0x00000007, 0x0004003b, 0x0000000f, 0x000002c7, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002c9, 0x00000007, 0x0004003b, 0x00000024, 0x000002cb, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002ce, 0x00000007, 0x0004003b, 0x0000000f, 0x000002d9, + 0x00000007, 0x0004003b, 0x0000000f, 0x000002e1, 0x00000007, 0x0004003b, 0x0000000f, 0x000002ea, + 0x00000007, 0x0004003b, 0x0000000e, 0x000002f2, 0x00000007, 0x0004003b, 0x0000000f, 0x00000310, + 0x00000007, 0x00040039, 0x00000008, 0x00000177, 0x0000000a, 0x0003003e, 0x00000176, 0x00000177, + 0x00060041, 0x0000003d, 0x0000017a, 0x0000003b, 0x0000003c, 0x00000179, 0x0004003d, 0x00000006, + 0x0000017b, 0x0000017a, 0x0007000c, 0x00000006, 0x0000017d, 0x00000001, 0x00000028, 0x0000017b, + 0x0000017c, 0x0003003e, 0x00000178, 0x0000017d, 0x00060041, 0x0000003d, 0x00000180, 0x0000003b, + 0x0000003c, 0x0000017f, 0x0004003d, 0x00000006, 0x00000181, 0x00000180, 0x0004003d, 0x00000006, + 0x00000182, 0x00000178, 0x00050081, 0x00000006, 0x00000183, 0x00000182, 0x0000017c, 0x0007000c, + 0x00000006, 0x00000184, 0x00000001, 0x00000028, 0x00000181, 0x00000183, 0x0003003e, 0x0000017e, + 0x00000184, 0x00060041, 0x0000003d, 0x00000187, 0x0000003b, 0x0000003c, 0x00000186, 0x0004003d, + 0x00000006, 0x00000188, 0x00000187, 0x0007000c, 0x00000006, 0x0000018a, 0x00000001, 0x00000028, + 0x00000188, 0x00000189, 0x0003003e, 0x00000185, 0x0000018a, 0x00060041, 0x0000003d, 0x0000018d, + 0x0000003b, 0x0000003c, 0x0000018c, 0x0004003d, 0x00000006, 0x0000018e, 0x0000018d, 0x0007000c, + 0x00000006, 0x0000018f, 0x00000001, 0x00000028, 0x0000018e, 0x0000006e, 0x0003003e, 0x0000018b, + 0x0000018f, 0x00060041, 0x0000003d, 0x00000192, 0x0000003b, 0x0000003c, 0x00000191, 0x0004003d, + 0x00000006, 0x00000193, 0x00000192, 0x0008000c, 0x00000006, 0x00000195, 0x00000001, 0x0000002b, + 0x00000193, 0x00000194, 0x00000166, 0x0004006e, 0x00000030, 0x00000196, 0x00000195, 0x0003003e, + 0x00000190, 0x00000196, 0x00060041, 0x0000003d, 0x00000199, 0x0000003b, 0x0000003c, 0x00000198, + 0x0004003d, 0x00000006, 0x0000019a, 0x00000199, 0x0007000c, 0x00000006, 0x0000019c, 0x00000001, + 0x00000028, 0x0000019a, 0x0000019b, 0x0003003e, 0x00000197, 0x0000019c, 0x00060041, 0x0000003d, + 0x0000019f, 0x0000003b, 0x0000003c, 0x0000019e, 0x0004003d, 0x00000006, 0x000001a0, 0x0000019f, + 0x0007000c, 0x00000006, 0x000001a1, 0x00000001, 0x00000028, 0x000001a0, 0x0000019b, 0x0003003e, + 0x0000019d, 0x000001a1, 0x00060041, 0x0000003d, 0x000001a4, 0x0000003b, 0x0000003c, 0x000001a3, + 0x0004003d, 0x00000006, 0x000001a5, 0x000001a4, 0x0003003e, 0x000001a2, 0x000001a5, 0x0004003d, + 0x0000000d, 0x000001aa, 0x000001a8, 0x0003003e, 0x000001a9, 0x000001aa, 0x0004003d, 0x00000006, + 0x000001ac, 0x000001a2, 0x0003003e, 0x000001ab, 0x000001ac, 0x00060039, 0x00000006, 0x000001ad, + 0x00000022, 0x000001a9, 0x000001ab, 0x0003003e, 0x000001a6, 0x000001ad, 0x0004003d, 0x00000006, + 0x000001af, 0x000001a2, 0x000500ba, 0x000000b2, 0x000001b0, 0x000001af, 0x000000b1, 0x000600a9, + 0x00000006, 0x000001b3, 0x000001b0, 0x000001b1, 0x000001b2, 0x0003003e, 0x000001ae, 0x000001b3, + 0x0004003d, 0x00000006, 0x000001b4, 0x000001a6, 0x0004003d, 0x00000006, 0x000001b5, 0x000001ae, + 0x000500be, 0x000000b2, 0x000001b6, 0x000001b4, 0x000001b5, 0x000400a8, 0x000000b2, 0x000001b7, + 0x000001b6, 0x000300f7, 0x000001b9, 0x00000000, 0x000400fa, 0x000001b7, 0x000001b8, 0x000001b9, + 0x000200f8, 0x000001b8, 0x0004003d, 0x00000006, 0x000001ba, 0x000001a2, 0x000500b8, 0x000000b2, + 0x000001bb, 0x000001ba, 0x000000b1, 0x0004003d, 0x00000006, 0x000001bc, 0x000001a6, 0x000500bc, + 0x000000b2, 0x000001bd, 0x000001bc, 0x0000019b, 0x000500a7, 0x000000b2, 0x000001be, 0x000001bb, + 0x000001bd, 0x000200f9, 0x000001b9, 0x000200f8, 0x000001b9, 0x000700f5, 0x000000b2, 0x000001bf, + 0x000001b6, 0x00000005, 0x000001be, 0x000001b8, 0x0004003d, 0x00000006, 0x000001c0, 0x0000018b, + 0x000500b8, 0x000000b2, 0x000001c1, 0x000001c0, 0x00000189, 0x000500a6, 0x000000b2, 0x000001c2, + 0x000001bf, 0x000001c1, 0x000300f7, 0x000001c4, 0x00000000, 0x000400fa, 0x000001c2, 0x000001c3, + 0x000001c4, 0x000200f8, 0x000001c3, 0x0003003e, 0x000001c6, 0x000001c7, 0x000100fd, 0x000200f8, + 0x000001c4, 0x0004003d, 0x0000000d, 0x000001cb, 0x000001a8, 0x0003003e, 0x000001ca, 0x000001cb, + 0x00050039, 0x00000010, 0x000001cc, 0x0000001d, 0x000001ca, 0x0003003e, 0x000001c9, 0x000001cc, + 0x0004003d, 0x00000008, 0x000001cf, 0x00000176, 0x0003003e, 0x000001ce, 0x000001cf, 0x0004003d, + 0x0000000d, 0x000001d1, 0x000001a8, 0x0003003e, 0x000001d0, 0x000001d1, 0x0004003d, 0x00000006, + 0x000001d3, 0x000001a6, 0x0003003e, 0x000001d2, 0x000001d3, 0x00070039, 0x00000010, 0x000001d4, + 0x00000015, 0x000001ce, 0x000001d0, 0x000001d2, 0x0003003e, 0x000001cd, 0x000001d4, 0x0004003d, + 0x00000008, 0x000001d6, 0x00000176, 0x00050091, 0x00000007, 0x000001d8, 0x000001d6, 0x000001d7, + 0x0003003e, 0x000001d5, 0x000001d8, 0x0004003d, 0x00000007, 0x000001da, 0x000001d5, 0x0008004f, + 0x00000010, 0x000001db, 0x000001da, 0x000001da, 0x00000000, 0x00000001, 0x00000002, 0x00050041, + 0x0000000f, 0x000001dc, 0x000001d5, 0x00000091, 0x0004003d, 0x00000006, 0x000001dd, 0x000001dc, + 0x0007000c, 0x00000006, 0x000001de, 0x00000001, 0x00000028, 0x000001dd, 0x00000094, 0x00060050, + 0x00000010, 0x000001df, 0x000001de, 0x000001de, 0x000001de, 0x00050088, 0x00000010, 0x000001e0, + 0x000001db, 0x000001df, 0x0003003e, 0x000001d9, 0x000001e0, 0x0004003d, 0x00000008, 0x000001e3, + 0x00000176, 0x0003003e, 0x000001e2, 0x000001e3, 0x0004003d, 0x0000000d, 0x000001e5, 0x000001a8, + 0x0003003e, 0x000001e4, 0x000001e5, 0x0004003d, 0x00000006, 0x000001e7, 0x000001a6, 0x0003003e, + 0x000001e6, 0x000001e7, 0x0004003d, 0x00000010, 0x000001e9, 0x000001cd, 0x0003003e, 0x000001e8, + 0x000001e9, 0x0004003d, 0x00000006, 0x000001eb, 0x00000197, 0x0003003e, 0x000001ea, 0x000001eb, + 0x0004003d, 0x00000006, 0x000001ed, 0x0000019d, 0x0003003e, 0x000001ec, 0x000001ed, 0x0004003d, + 0x00000006, 0x000001ef, 0x000001a2, 0x0003003e, 0x000001ee, 0x000001ef, 0x0004003d, 0x00000010, + 0x000001f1, 0x000001d9, 0x0003003e, 0x000001f0, 0x000001f1, 0x000c0039, 0x00000010, 0x000001f2, + 0x0000002e, 0x000001e2, 0x000001e4, 0x000001e6, 0x000001e8, 0x000001ea, 0x000001ec, 0x000001ee, + 0x000001f0, 0x0003003e, 0x000001e1, 0x000001f2, 0x00050041, 0x0000000f, 0x000001f4, 0x000001e1, + 0x0000007d, 0x0004003d, 0x00000006, 0x000001f5, 0x000001f4, 0x0006000c, 0x00000006, 0x000001f6, + 0x00000001, 0x00000004, 0x000001f5, 0x000500b8, 0x000000b2, 0x000001f7, 0x000001f6, 0x000001b2, + 0x00060050, 0x000001fa, 0x000001fb, 0x000001f7, 0x000001f7, 0x000001f7, 0x000600a9, 0x00000010, + 0x000001fc, 0x000001fb, 0x000001f8, 0x000001f9, 0x0003003e, 0x000001f3, 0x000001fc, 0x0004003d, + 0x00000010, 0x000001fe, 0x000001f3, 0x0004003d, 0x00000010, 0x000001ff, 0x000001e1, 0x0004003d, + 0x00000010, 0x00000200, 0x000001f3, 0x0004003d, 0x00000010, 0x00000201, 0x000001e1, 0x00050094, + 0x00000006, 0x00000202, 0x00000200, 0x00000201, 0x0005008e, 0x00000010, 0x00000203, 0x000001ff, + 0x00000202, 0x00050083, 0x00000010, 0x00000204, 0x000001fe, 0x00000203, 0x0006000c, 0x00000010, + 0x00000205, 0x00000001, 0x00000045, 0x00000204, 0x0003003e, 0x000001fd, 0x00000205, 0x0004003d, + 0x00000010, 0x00000207, 0x000001e1, 0x0004003d, 0x00000010, 0x00000208, 0x000001fd, 0x0007000c, + 0x00000010, 0x00000209, 0x00000001, 0x00000044, 0x00000207, 0x00000208, 0x0003003e, 0x00000206, + 0x00000209, 0x0004003d, 0x00000010, 0x0000020d, 0x000001fd, 0x0004003d, 0x00000010, 0x0000020e, + 0x00000206, 0x0004003d, 0x00000010, 0x0000020f, 0x000001e1, 0x00050051, 0x00000006, 0x00000210, + 0x0000020d, 0x00000000, 0x00050051, 0x00000006, 0x00000211, 0x0000020d, 0x00000001, 0x00050051, + 0x00000006, 0x00000212, 0x0000020d, 0x00000002, 0x00050051, 0x00000006, 0x00000213, 0x0000020e, + 0x00000000, 0x00050051, 0x00000006, 0x00000214, 0x0000020e, 0x00000001, 0x00050051, 0x00000006, + 0x00000215, 0x0000020e, 0x00000002, 0x00050051, 0x00000006, 0x00000216, 0x0000020f, 0x00000000, + 0x00050051, 0x00000006, 0x00000217, 0x0000020f, 0x00000001, 0x00050051, 0x00000006, 0x00000218, + 0x0000020f, 0x00000002, 0x00060050, 0x00000010, 0x00000219, 0x00000210, 0x00000211, 0x00000212, + 0x00060050, 0x00000010, 0x0000021a, 0x00000213, 0x00000214, 0x00000215, 0x00060050, 0x00000010, + 0x0000021b, 0x00000216, 0x00000217, 0x00000218, 0x00060050, 0x0000020a, 0x0000021c, 0x00000219, + 0x0000021a, 0x0000021b, 0x0003003e, 0x0000020c, 0x0000021c, 0x0004003d, 0x00000008, 0x0000021e, + 0x00000176, 0x0006000c, 0x00000008, 0x0000021f, 0x00000001, 0x00000022, 0x0000021e, 0x0003003e, + 0x0000021d, 0x0000021f, 0x0003003e, 0x00000220, 0x00000221, 0x0003003e, 0x00000222, 0x0000006e, + 0x0003003e, 0x00000223, 0x0000003c, 0x000200f9, 0x00000224, 0x000200f8, 0x00000224, 0x000400f6, + 0x00000226, 0x00000227, 0x00000000, 0x000200f9, 0x00000228, 0x000200f8, 0x00000228, 0x0004003d, + 0x00000030, 0x00000229, 0x00000223, 0x000500b1, 0x000000b2, 0x0000022b, 0x00000229, 0x0000022a, + 0x000400fa, 0x0000022b, 0x00000225, 0x00000226, 0x000200f8, 0x00000225, 0x0004003d, 0x00000030, + 0x0000022c, 0x00000223, 0x0004003d, 0x00000030, 0x0000022d, 0x00000190, 0x000500af, 0x000000b2, + 0x0000022e, 0x0000022c, 0x0000022d, 0x000300f7, 0x00000230, 0x00000000, 0x000400fa, 0x0000022e, + 0x0000022f, 0x00000230, 0x000200f8, 0x0000022f, 0x000200f9, 0x00000226, 0x000200f8, 0x00000230, + 0x0004003d, 0x00000010, 0x00000233, 0x000001cd, 0x0004003d, 0x0000020a, 0x00000234, 0x0000020c, + 0x0004003d, 0x00000030, 0x00000236, 0x00000223, 0x0003003e, 0x00000235, 0x00000236, 0x00050039, + 0x00000010, 0x00000237, 0x00000034, 0x00000235, 0x0004003d, 0x00000006, 0x00000238, 0x00000185, + 0x0005008e, 0x00000010, 0x00000239, 0x00000237, 0x00000238, 0x00050091, 0x00000010, 0x0000023a, + 0x00000234, 0x00000239, 0x00050081, 0x00000010, 0x0000023b, 0x00000233, 0x0000023a, 0x0003003e, + 0x00000232, 0x0000023b, 0x0004003d, 0x00000008, 0x0000023d, 0x0000021d, 0x0004003d, 0x00000010, + 0x0000023e, 0x00000232, 0x00050051, 0x00000006, 0x0000023f, 0x0000023e, 0x00000000, 0x00050051, + 0x00000006, 0x00000240, 0x0000023e, 0x00000001, 0x00050051, 0x00000006, 0x00000241, 0x0000023e, + 0x00000002, 0x00070050, 0x00000007, 0x00000242, 0x0000023f, 0x00000240, 0x00000241, 0x0000006d, + 0x00050091, 0x00000007, 0x00000243, 0x0000023d, 0x00000242, 0x0003003e, 0x0000023c, 0x00000243, + 0x00050041, 0x0000000f, 0x00000244, 0x0000023c, 0x00000091, 0x0004003d, 0x00000006, 0x00000245, + 0x00000244, 0x000500b8, 0x000000b2, 0x00000246, 0x00000245, 0x0000019b, 0x000300f7, 0x00000248, + 0x00000000, 0x000400fa, 0x00000246, 0x00000247, 0x00000248, 0x000200f8, 0x00000247, 0x000200f9, + 0x00000227, 0x000200f8, 0x00000248, 0x0004003d, 0x00000007, 0x0000024b, 0x0000023c, 0x0008004f, + 0x00000010, 0x0000024c, 0x0000024b, 0x0000024b, 0x00000000, 0x00000001, 0x00000002, 0x00050041, + 0x0000000f, 0x0000024d, 0x0000023c, 0x00000091, 0x0004003d, 0x00000006, 0x0000024e, 0x0000024d, + 0x00060050, 0x00000010, 0x0000024f, 0x0000024e, 0x0000024e, 0x0000024e, 0x00050088, 0x00000010, + 0x00000250, 0x0000024c, 0x0000024f, 0x0003003e, 0x0000024a, 0x00000250, 0x0004003d, 0x00000010, + 0x00000252, 0x0000024a, 0x0007004f, 0x0000000d, 0x00000253, 0x00000252, 0x00000252, 0x00000000, + 0x00000001, 0x0005008e, 0x0000000d, 0x00000254, 0x00000253, 0x000000b1, 0x00050050, 0x0000000d, + 0x00000255, 0x000000b1, 0x000000b1, 0x00050081, 0x0000000d, 0x00000256, 0x00000254, 0x00000255, + 0x0003003e, 0x00000251, 0x00000256, 0x00050041, 0x0000000f, 0x00000257, 0x00000251, 0x00000077, + 0x0004003d, 0x00000006, 0x00000258, 0x00000257, 0x000500b8, 0x000000b2, 0x00000259, 0x00000258, + 0x0000006e, 0x000400a8, 0x000000b2, 0x0000025a, 0x00000259, 0x000300f7, 0x0000025c, 0x00000000, + 0x000400fa, 0x0000025a, 0x0000025b, 0x0000025c, 0x000200f8, 0x0000025b, 0x00050041, 0x0000000f, + 0x0000025d, 0x00000251, 0x00000077, 0x0004003d, 0x00000006, 0x0000025e, 0x0000025d, 0x000500ba, + 0x000000b2, 0x0000025f, 0x0000025e, 0x0000006d, 0x000200f9, 0x0000025c, 0x000200f8, 0x0000025c, + 0x000700f5, 0x000000b2, 0x00000260, 0x00000259, 0x00000248, 0x0000025f, 0x0000025b, 0x000400a8, + 0x000000b2, 0x00000261, 0x00000260, 0x000300f7, 0x00000263, 0x00000000, 0x000400fa, 0x00000261, + 0x00000262, 0x00000263, 0x000200f8, 0x00000262, 0x00050041, 0x0000000f, 0x00000264, 0x00000251, + 0x0000007d, 0x0004003d, 0x00000006, 0x00000265, 0x00000264, 0x000500b8, 0x000000b2, 0x00000266, + 0x00000265, 0x0000006e, 0x000200f9, 0x00000263, 0x000200f8, 0x00000263, 0x000700f5, 0x000000b2, + 0x00000267, 0x00000260, 0x0000025c, 0x00000266, 0x00000262, 0x000400a8, 0x000000b2, 0x00000268, + 0x00000267, 0x000300f7, 0x0000026a, 0x00000000, 0x000400fa, 0x00000268, 0x00000269, 0x0000026a, + 0x000200f8, 0x00000269, 0x00050041, 0x0000000f, 0x0000026b, 0x00000251, 0x0000007d, 0x0004003d, + 0x00000006, 0x0000026c, 0x0000026b, 0x000500ba, 0x000000b2, 0x0000026d, 0x0000026c, 0x0000006d, + 0x000200f9, 0x0000026a, 0x000200f8, 0x0000026a, 0x000700f5, 0x000000b2, 0x0000026e, 0x00000267, + 0x00000263, 0x0000026d, 0x00000269, 0x000300f7, 0x00000270, 0x00000000, 0x000400fa, 0x0000026e, + 0x0000026f, 0x00000270, 0x000200f8, 0x0000026f, 0x000200f9, 0x00000227, 0x000200f8, 0x00000270, + 0x0004003d, 0x0000000d, 0x00000274, 0x00000251, 0x0003003e, 0x00000273, 0x00000274, 0x0004003d, + 0x00000006, 0x00000276, 0x000001a2, 0x0003003e, 0x00000275, 0x00000276, 0x00060039, 0x00000006, + 0x00000277, 0x00000022, 0x00000273, 0x00000275, 0x0003003e, 0x00000272, 0x00000277, 0x0004003d, + 0x00000006, 0x00000278, 0x00000272, 0x0004003d, 0x00000006, 0x00000279, 0x000001ae, 0x000500be, + 0x000000b2, 0x0000027a, 0x00000278, 0x00000279, 0x000400a8, 0x000000b2, 0x0000027b, 0x0000027a, + 0x000300f7, 0x0000027d, 0x00000000, 0x000400fa, 0x0000027b, 0x0000027c, 0x0000027d, 0x000200f8, + 0x0000027c, 0x0004003d, 0x00000006, 0x0000027e, 0x000001a2, 0x000500b8, 0x000000b2, 0x0000027f, + 0x0000027e, 0x000000b1, 0x0004003d, 0x00000006, 0x00000280, 0x00000272, 0x000500bc, 0x000000b2, + 0x00000281, 0x00000280, 0x0000019b, 0x000500a7, 0x000000b2, 0x00000282, 0x0000027f, 0x00000281, + 0x000200f9, 0x0000027d, 0x000200f8, 0x0000027d, 0x000700f5, 0x000000b2, 0x00000283, 0x0000027a, + 0x00000270, 0x00000282, 0x0000027c, 0x000300f7, 0x00000285, 0x00000000, 0x000400fa, 0x00000283, + 0x00000284, 0x00000285, 0x000200f8, 0x00000284, 0x000200f9, 0x00000227, 0x000200f8, 0x00000285, + 0x0004003d, 0x00000008, 0x00000289, 0x00000176, 0x0003003e, 0x00000288, 0x00000289, 0x0004003d, + 0x0000000d, 0x0000028b, 0x00000251, 0x0003003e, 0x0000028a, 0x0000028b, 0x0004003d, 0x00000006, + 0x0000028d, 0x00000272, 0x0003003e, 0x0000028c, 0x0000028d, 0x00070039, 0x00000010, 0x0000028e, + 0x00000015, 0x00000288, 0x0000028a, 0x0000028c, 0x0003003e, 0x00000287, 0x0000028e, 0x0004003d, + 0x00000010, 0x00000290, 0x00000287, 0x0004003d, 0x00000010, 0x00000291, 0x00000232, 0x00050083, + 0x00000010, 0x00000292, 0x00000290, 0x00000291, 0x0006000c, 0x00000006, 0x00000293, 0x00000001, + 0x00000042, 0x00000292, 0x0003003e, 0x0000028f, 0x00000293, 0x0004003d, 0x00000006, 0x00000294, + 0x0000028f, 0x0004003d, 0x00000006, 0x00000295, 0x00000185, 0x00050085, 0x00000006, 0x00000297, + 0x00000295, 0x00000296, 0x000500ba, 0x000000b2, 0x00000298, 0x00000294, 0x00000297, 0x000300f7, + 0x0000029a, 0x00000000, 0x000400fa, 0x00000298, 0x00000299, 0x0000029a, 0x000200f8, 0x00000299, + 0x000200f9, 0x00000227, 0x000200f8, 0x0000029a, 0x0004003d, 0x00000010, 0x0000029d, 0x00000287, + 0x0004003d, 0x00000010, 0x0000029e, 0x000001cd, 0x00050083, 0x00000010, 0x0000029f, 0x0000029d, + 0x0000029e, 0x0003003e, 0x0000029c, 0x0000029f, 0x0004003d, 0x00000010, 0x000002a1, 0x0000029c, + 0x0006000c, 0x00000006, 0x000002a2, 0x00000001, 0x00000042, 0x000002a1, 0x0003003e, 0x000002a0, + 0x000002a2, 0x0004003d, 0x00000006, 0x000002a3, 0x000002a0, 0x000500b8, 0x000000b2, 0x000002a4, + 0x000002a3, 0x00000189, 0x0004003d, 0x00000006, 0x000002a5, 0x000002a0, 0x0004003d, 0x00000006, + 0x000002a6, 0x00000185, 0x000500ba, 0x000000b2, 0x000002a7, 0x000002a5, 0x000002a6, 0x000500a6, + 0x000000b2, 0x000002a8, 0x000002a4, 0x000002a7, 0x000300f7, 0x000002aa, 0x00000000, 0x000400fa, + 0x000002a8, 0x000002a9, 0x000002aa, 0x000200f8, 0x000002a9, 0x000200f9, 0x00000227, 0x000200f8, + 0x000002aa, 0x0004003d, 0x00000010, 0x000002ad, 0x0000029c, 0x0004003d, 0x00000006, 0x000002ae, + 0x000002a0, 0x00060050, 0x00000010, 0x000002af, 0x000002ae, 0x000002ae, 0x000002ae, 0x00050088, + 0x00000010, 0x000002b0, 0x000002ad, 0x000002af, 0x0003003e, 0x000002ac, 0x000002b0, 0x0004003d, + 0x00000010, 0x000002b2, 0x000001e1, 0x0004003d, 0x00000010, 0x000002b3, 0x000002ac, 0x00050094, + 0x00000006, 0x000002b4, 0x000002b2, 0x000002b3, 0x0007000c, 0x00000006, 0x000002b5, 0x00000001, + 0x00000028, 0x000002b4, 0x0000006e, 0x0003003e, 0x000002b1, 0x000002b5, 0x0004003d, 0x00000006, + 0x000002b6, 0x000002b1, 0x000500b8, 0x000000b2, 0x000002b8, 0x000002b6, 0x000002b7, 0x000300f7, + 0x000002ba, 0x00000000, 0x000400fa, 0x000002b8, 0x000002b9, 0x000002ba, 0x000200f8, 0x000002b9, + 0x000200f9, 0x00000227, 0x000200f8, 0x000002ba, 0x0004003d, 0x00000008, 0x000002be, 0x00000176, + 0x0003003e, 0x000002bd, 0x000002be, 0x0004003d, 0x0000000d, 0x000002c0, 0x00000251, 0x0003003e, + 0x000002bf, 0x000002c0, 0x0004003d, 0x00000006, 0x000002c2, 0x00000272, 0x0003003e, 0x000002c1, + 0x000002c2, 0x0004003d, 0x00000010, 0x000002c4, 0x00000287, 0x0003003e, 0x000002c3, 0x000002c4, + 0x0004003d, 0x00000006, 0x000002c6, 0x00000197, 0x0003003e, 0x000002c5, 0x000002c6, 0x0004003d, + 0x00000006, 0x000002c8, 0x0000019d, 0x0003003e, 0x000002c7, 0x000002c8, 0x0004003d, 0x00000006, + 0x000002ca, 0x000001a2, 0x0003003e, 0x000002c9, 0x000002ca, 0x0004003d, 0x00000010, 0x000002cc, + 0x000001d9, 0x0003003e, 0x000002cb, 0x000002cc, 0x000c0039, 0x00000010, 0x000002cd, 0x0000002e, + 0x000002bd, 0x000002bf, 0x000002c1, 0x000002c3, 0x000002c5, 0x000002c7, 0x000002c9, 0x000002cb, + 0x0003003e, 0x000002bc, 0x000002cd, 0x0004003d, 0x00000010, 0x000002cf, 0x000002bc, 0x0004003d, + 0x00000010, 0x000002d0, 0x000002ac, 0x0004007f, 0x00000010, 0x000002d1, 0x000002d0, 0x00050094, + 0x00000006, 0x000002d2, 0x000002cf, 0x000002d1, 0x0007000c, 0x00000006, 0x000002d3, 0x00000001, + 0x00000028, 0x000002d2, 0x0000006e, 0x0003003e, 0x000002ce, 0x000002d3, 0x0004003d, 0x00000006, + 0x000002d4, 0x000002ce, 0x000500b8, 0x000000b2, 0x000002d5, 0x000002d4, 0x000002b7, 0x000300f7, + 0x000002d7, 0x00000000, 0x000400fa, 0x000002d5, 0x000002d6, 0x000002d7, 0x000200f8, 0x000002d6, + 0x000200f9, 0x00000227, 0x000200f8, 0x000002d7, 0x0004003d, 0x00000006, 0x000002da, 0x00000185, + 0x00050085, 0x00000006, 0x000002dc, 0x000002da, 0x000002db, 0x0004003d, 0x00000006, 0x000002dd, + 0x00000185, 0x0004003d, 0x00000006, 0x000002de, 0x000002a0, 0x0008000c, 0x00000006, 0x000002df, + 0x00000001, 0x00000031, 0x000002dc, 0x000002dd, 0x000002de, 0x00050083, 0x00000006, 0x000002e0, + 0x0000006d, 0x000002df, 0x0003003e, 0x000002d9, 0x000002e0, 0x0004003d, 0x00000006, 0x000002e2, + 0x00000185, 0x00050085, 0x00000006, 0x000002e4, 0x000002e2, 0x000002e3, 0x0004003d, 0x00000006, + 0x000002e5, 0x00000185, 0x00050085, 0x00000006, 0x000002e6, 0x000002e5, 0x00000296, 0x0004003d, + 0x00000006, 0x000002e7, 0x0000028f, 0x0008000c, 0x00000006, 0x000002e8, 0x00000001, 0x00000031, + 0x000002e4, 0x000002e6, 0x000002e7, 0x00050083, 0x00000006, 0x000002e9, 0x0000006d, 0x000002e8, + 0x0003003e, 0x000002e1, 0x000002e9, 0x0004003d, 0x00000006, 0x000002eb, 0x000002d9, 0x0004003d, + 0x00000006, 0x000002ec, 0x000002b1, 0x00050085, 0x00000006, 0x000002ed, 0x000002eb, 0x000002ec, + 0x0004003d, 0x00000006, 0x000002ee, 0x000002ce, 0x00050085, 0x00000006, 0x000002ef, 0x000002ed, + 0x000002ee, 0x0004003d, 0x00000006, 0x000002f0, 0x000002e1, 0x00050085, 0x00000006, 0x000002f1, + 0x000002ef, 0x000002f0, 0x0003003e, 0x000002ea, 0x000002f1, 0x0004003d, 0x0000000d, 0x000002f3, + 0x00000251, 0x0003003e, 0x000002f2, 0x000002f3, 0x00050039, 0x00000010, 0x000002f4, 0x0000001d, + 0x000002f2, 0x0004003d, 0x00000006, 0x000002f5, 0x000002ea, 0x0005008e, 0x00000010, 0x000002f6, + 0x000002f4, 0x000002f5, 0x0004003d, 0x00000010, 0x000002f7, 0x00000220, 0x00050081, 0x00000010, + 0x000002f8, 0x000002f7, 0x000002f6, 0x0003003e, 0x00000220, 0x000002f8, 0x0004003d, 0x00000006, + 0x000002f9, 0x000002ea, 0x0004003d, 0x00000006, 0x000002fa, 0x00000222, 0x00050081, 0x00000006, + 0x000002fb, 0x000002fa, 0x000002f9, 0x0003003e, 0x00000222, 0x000002fb, 0x000200f9, 0x00000227, + 0x000200f8, 0x00000227, 0x0004003d, 0x00000030, 0x000002fc, 0x00000223, 0x00050080, 0x00000030, + 0x000002fd, 0x000002fc, 0x00000040, 0x0003003e, 0x00000223, 0x000002fd, 0x000200f9, 0x00000224, + 0x000200f8, 0x00000226, 0x0004003d, 0x00000006, 0x000002fe, 0x00000222, 0x000500ba, 0x000000b2, + 0x000002ff, 0x000002fe, 0x00000189, 0x000300f7, 0x00000301, 0x00000000, 0x000400fa, 0x000002ff, + 0x00000300, 0x00000301, 0x000200f8, 0x00000300, 0x0004003d, 0x00000006, 0x00000302, 0x00000222, + 0x0004003d, 0x00000010, 0x00000303, 0x00000220, 0x00060050, 0x00000010, 0x00000304, 0x00000302, + 0x00000302, 0x00000302, 0x00050088, 0x00000010, 0x00000305, 0x00000303, 0x00000304, 0x0003003e, + 0x00000220, 0x00000305, 0x000200f9, 0x00000301, 0x000200f8, 0x00000301, 0x0004003d, 0x00000006, + 0x00000306, 0x0000018b, 0x0004003d, 0x00000010, 0x00000307, 0x00000220, 0x0005008e, 0x00000010, + 0x00000308, 0x00000307, 0x00000306, 0x0003003e, 0x00000220, 0x00000308, 0x0004003d, 0x00000010, + 0x0000030a, 0x000001c9, 0x00060050, 0x00000010, 0x0000030c, 0x0000030b, 0x0000030b, 0x0000030b, + 0x0008000c, 0x00000010, 0x0000030d, 0x00000001, 0x0000002e, 0x00000309, 0x0000030a, 0x0000030c, + 0x0004003d, 0x00000010, 0x0000030e, 0x00000220, 0x00050085, 0x00000010, 0x0000030f, 0x0000030e, + 0x0000030d, 0x0003003e, 0x00000220, 0x0000030f, 0x00050041, 0x0000000f, 0x00000311, 0x00000220, + 0x00000077, 0x0004003d, 0x00000006, 0x00000312, 0x00000311, 0x00050041, 0x0000000f, 0x00000313, + 0x00000220, 0x0000007d, 0x0004003d, 0x00000006, 0x00000314, 0x00000313, 0x00050041, 0x0000000f, + 0x00000316, 0x00000220, 0x00000315, 0x0004003d, 0x00000006, 0x00000317, 0x00000316, 0x0007000c, + 0x00000006, 0x00000318, 0x00000001, 0x00000028, 0x00000314, 0x00000317, 0x0007000c, 0x00000006, + 0x00000319, 0x00000001, 0x00000028, 0x00000312, 0x00000318, 0x0008000c, 0x00000006, 0x0000031b, + 0x00000001, 0x0000002b, 0x00000319, 0x0000006e, 0x0000031a, 0x0003003e, 0x00000310, 0x0000031b, + 0x0004003d, 0x00000006, 0x0000031c, 0x00000310, 0x000500b8, 0x000000b2, 0x0000031d, 0x0000031c, + 0x00000189, 0x000300f7, 0x0000031f, 0x00000000, 0x000400fa, 0x0000031d, 0x0000031e, 0x0000031f, + 0x000200f8, 0x0000031e, 0x0003003e, 0x000001c6, 0x000001c7, 0x000100fd, 0x000200f8, 0x0000031f, + 0x0004003d, 0x00000010, 0x00000321, 0x00000220, 0x0004003d, 0x00000006, 0x00000322, 0x00000310, + 0x0007000c, 0x00000006, 0x00000323, 0x00000001, 0x00000028, 0x00000322, 0x00000189, 0x00060050, + 0x00000010, 0x00000324, 0x00000323, 0x00000323, 0x00000323, 0x00050088, 0x00000010, 0x00000325, + 0x00000321, 0x00000324, 0x0004003d, 0x00000006, 0x00000326, 0x00000310, 0x00050051, 0x00000006, + 0x00000327, 0x00000325, 0x00000000, 0x00050051, 0x00000006, 0x00000328, 0x00000325, 0x00000001, + 0x00050051, 0x00000006, 0x00000329, 0x00000325, 0x00000002, 0x00070050, 0x00000007, 0x0000032a, + 0x00000327, 0x00000328, 0x00000329, 0x00000326, 0x0004003d, 0x00000007, 0x0000032d, 0x0000032c, + 0x00050085, 0x00000007, 0x0000032e, 0x0000032a, 0x0000032d, 0x0003003e, 0x000001c6, 0x0000032e, + 0x000100fd, 0x00010038, 0x00050036, 0x00000008, 0x0000000a, 0x00000000, 0x00000009, 0x000200f8, + 0x0000000b, 0x00060041, 0x0000003d, 0x0000003e, 0x0000003b, 0x0000003c, 0x0000003c, 0x0004003d, + 0x00000006, 0x0000003f, 0x0000003e, 0x00060041, 0x0000003d, 0x00000041, 0x0000003b, 0x0000003c, + 0x00000040, 0x0004003d, 0x00000006, 0x00000042, 0x00000041, 0x00060041, 0x0000003d, 0x00000044, + 0x0000003b, 0x0000003c, 0x00000043, 0x0004003d, 0x00000006, 0x00000045, 0x00000044, 0x00060041, + 0x0000003d, 0x00000047, 0x0000003b, 0x0000003c, 0x00000046, 0x0004003d, 0x00000006, 0x00000048, + 0x00000047, 0x00060041, 0x0000003d, 0x0000004a, 0x0000003b, 0x0000003c, 0x00000049, 0x0004003d, + 0x00000006, 0x0000004b, 0x0000004a, 0x00060041, 0x0000003d, 0x0000004d, 0x0000003b, 0x0000003c, + 0x0000004c, 0x0004003d, 0x00000006, 0x0000004e, 0x0000004d, 0x00060041, 0x0000003d, 0x00000050, + 0x0000003b, 0x0000003c, 0x0000004f, 0x0004003d, 0x00000006, 0x00000051, 0x00000050, 0x00060041, + 0x0000003d, 0x00000053, 0x0000003b, 0x0000003c, 0x00000052, 0x0004003d, 0x00000006, 0x00000054, + 0x00000053, 0x00060041, 0x0000003d, 0x00000056, 0x0000003b, 0x0000003c, 0x00000055, 0x0004003d, + 0x00000006, 0x00000057, 0x00000056, 0x00060041, 0x0000003d, 0x00000059, 0x0000003b, 0x0000003c, + 0x00000058, 0x0004003d, 0x00000006, 0x0000005a, 0x00000059, 0x00060041, 0x0000003d, 0x0000005c, + 0x0000003b, 0x0000003c, 0x0000005b, 0x0004003d, 0x00000006, 0x0000005d, 0x0000005c, 0x00060041, + 0x0000003d, 0x0000005f, 0x0000003b, 0x0000003c, 0x0000005e, 0x0004003d, 0x00000006, 0x00000060, + 0x0000005f, 0x00060041, 0x0000003d, 0x00000062, 0x0000003b, 0x0000003c, 0x00000061, 0x0004003d, + 0x00000006, 0x00000063, 0x00000062, 0x00060041, 0x0000003d, 0x00000065, 0x0000003b, 0x0000003c, + 0x00000064, 0x0004003d, 0x00000006, 0x00000066, 0x00000065, 0x00060041, 0x0000003d, 0x00000068, + 0x0000003b, 0x0000003c, 0x00000067, 0x0004003d, 0x00000006, 0x00000069, 0x00000068, 0x00060041, + 0x0000003d, 0x0000006b, 0x0000003b, 0x0000003c, 0x0000006a, 0x0004003d, 0x00000006, 0x0000006c, + 0x0000006b, 0x00070050, 0x00000007, 0x0000006f, 0x0000003f, 0x00000042, 0x00000045, 0x00000048, + 0x00070050, 0x00000007, 0x00000070, 0x0000004b, 0x0000004e, 0x00000051, 0x00000054, 0x00070050, + 0x00000007, 0x00000071, 0x00000057, 0x0000005a, 0x0000005d, 0x00000060, 0x00070050, 0x00000007, + 0x00000072, 0x00000063, 0x00000066, 0x00000069, 0x0000006c, 0x00070050, 0x00000008, 0x00000073, + 0x0000006f, 0x00000070, 0x00000071, 0x00000072, 0x000200fe, 0x00000073, 0x00010038, 0x00050036, + 0x00000010, 0x00000015, 0x00000000, 0x00000011, 0x00030037, 0x0000000c, 0x00000012, 0x00030037, + 0x0000000e, 0x00000013, 0x00030037, 0x0000000f, 0x00000014, 0x000200f8, 0x00000016, 0x0004003b, + 0x0000000e, 0x00000076, 0x00000007, 0x0004003b, 0x00000083, 0x00000084, 0x00000007, 0x0004003b, + 0x00000083, 0x0000008b, 0x00000007, 0x00050041, 0x0000000f, 0x00000078, 0x00000013, 0x00000077, + 0x0004003d, 0x00000006, 0x00000079, 0x00000078, 0x00050085, 0x00000006, 0x0000007b, 0x00000079, + 0x0000007a, 0x00050083, 0x00000006, 0x0000007c, 0x0000007b, 0x0000006d, 0x00050041, 0x0000000f, + 0x0000007e, 0x00000013, 0x0000007d, 0x0004003d, 0x00000006, 0x0000007f, 0x0000007e, 0x00050085, + 0x00000006, 0x00000080, 0x0000007f, 0x0000007a, 0x00050083, 0x00000006, 0x00000081, 0x00000080, + 0x0000006d, 0x00050050, 0x0000000d, 0x00000082, 0x0000007c, 0x00000081, 0x0003003e, 0x00000076, + 0x00000082, 0x0004003d, 0x0000000d, 0x00000085, 0x00000076, 0x0004003d, 0x00000006, 0x00000086, + 0x00000014, 0x0008000c, 0x00000006, 0x00000087, 0x00000001, 0x0000002b, 0x00000086, 0x0000006e, + 0x0000006d, 0x00050051, 0x00000006, 0x00000088, 0x00000085, 0x00000000, 0x00050051, 0x00000006, + 0x00000089, 0x00000085, 0x00000001, 0x00070050, 0x00000007, 0x0000008a, 0x00000088, 0x00000089, + 0x00000087, 0x0000006d, 0x0003003e, 0x00000084, 0x0000008a, 0x0004003d, 0x00000008, 0x0000008c, + 0x00000012, 0x0004003d, 0x00000007, 0x0000008d, 0x00000084, 0x00050091, 0x00000007, 0x0000008e, + 0x0000008c, 0x0000008d, 0x0003003e, 0x0000008b, 0x0000008e, 0x0004003d, 0x00000007, 0x0000008f, + 0x0000008b, 0x0008004f, 0x00000010, 0x00000090, 0x0000008f, 0x0000008f, 0x00000000, 0x00000001, + 0x00000002, 0x00050041, 0x0000000f, 0x00000092, 0x0000008b, 0x00000091, 0x0004003d, 0x00000006, + 0x00000093, 0x00000092, 0x0007000c, 0x00000006, 0x00000095, 0x00000001, 0x00000028, 0x00000093, + 0x00000094, 0x00060050, 0x00000010, 0x00000096, 0x00000095, 0x00000095, 0x00000095, 0x00050088, + 0x00000010, 0x00000097, 0x00000090, 0x00000096, 0x000200fe, 0x00000097, 0x00010038, 0x00050036, + 0x0000000d, 0x00000019, 0x00000000, 0x00000017, 0x00030037, 0x0000000e, 0x00000018, 0x000200f8, + 0x0000001a, 0x0004003d, 0x0000000d, 0x0000009a, 0x00000018, 0x0008000c, 0x0000000d, 0x0000009d, + 0x00000001, 0x0000002b, 0x0000009a, 0x0000009b, 0x0000009c, 0x000200fe, 0x0000009d, 0x00010038, + 0x00050036, 0x00000010, 0x0000001d, 0x00000000, 0x0000001b, 0x00030037, 0x0000000e, 0x0000001c, + 0x000200f8, 0x0000001e, 0x0004003b, 0x0000000e, 0x000000a5, 0x00000007, 0x0004003d, 0x000000a1, + 0x000000a4, 0x000000a3, 0x0004003d, 0x0000000d, 0x000000a6, 0x0000001c, 0x0003003e, 0x000000a5, + 0x000000a6, 0x00050039, 0x0000000d, 0x000000a7, 0x00000019, 0x000000a5, 0x00050057, 0x00000007, + 0x000000a8, 0x000000a4, 0x000000a7, 0x0008004f, 0x00000010, 0x000000a9, 0x000000a8, 0x000000a8, + 0x00000000, 0x00000001, 0x00000002, 0x000200fe, 0x000000a9, 0x00010038, 0x00050036, 0x00000006, + 0x00000022, 0x00000000, 0x0000001f, 0x00030037, 0x0000000e, 0x00000020, 0x00030037, 0x0000000f, + 0x00000021, 0x000200f8, 0x00000023, 0x0004003b, 0x0000000e, 0x000000ac, 0x00000007, 0x0004003b, + 0x0000000e, 0x000000ad, 0x00000007, 0x0004003d, 0x0000000d, 0x000000ae, 0x00000020, 0x0003003e, + 0x000000ad, 0x000000ae, 0x00050039, 0x0000000d, 0x000000af, 0x00000019, 0x000000ad, 0x0003003e, + 0x000000ac, 0x000000af, 0x0004003d, 0x00000006, 0x000000b0, 0x00000021, 0x000500ba, 0x000000b2, + 0x000000b3, 0x000000b0, 0x000000b1, 0x000300f7, 0x000000b5, 0x00000000, 0x000400fa, 0x000000b3, + 0x000000b4, 0x000000b5, 0x000200f8, 0x000000b4, 0x0004003d, 0x000000a1, 0x000000b7, 0x000000b6, + 0x0004003d, 0x0000000d, 0x000000b8, 0x000000ac, 0x00050057, 0x00000007, 0x000000b9, 0x000000b7, + 0x000000b8, 0x00050051, 0x00000006, 0x000000ba, 0x000000b9, 0x00000000, 0x000200fe, 0x000000ba, + 0x000200f8, 0x000000b5, 0x0004003d, 0x000000a1, 0x000000bc, 0x000000a3, 0x0004003d, 0x0000000d, + 0x000000bd, 0x000000ac, 0x00050057, 0x00000007, 0x000000be, 0x000000bc, 0x000000bd, 0x00050051, + 0x00000006, 0x000000bf, 0x000000be, 0x00000003, 0x000200fe, 0x000000bf, 0x00010038, 0x00050036, + 0x00000010, 0x0000002e, 0x00000000, 0x00000025, 0x00030037, 0x0000000c, 0x00000026, 0x00030037, + 0x0000000e, 0x00000027, 0x00030037, 0x0000000f, 0x00000028, 0x00030037, 0x00000024, 0x00000029, + 0x00030037, 0x0000000f, 0x0000002a, 0x00030037, 0x0000000f, 0x0000002b, 0x00030037, 0x0000000f, + 0x0000002c, 0x00030037, 0x00000024, 0x0000002d, 0x000200f8, 0x0000002f, 0x0004003b, 0x0000000f, + 0x000000c2, 0x00000007, 0x0004003b, 0x0000000e, 0x000000c7, 0x00000007, 0x0004003b, 0x0000000f, + 0x000000c8, 0x00000007, 0x0004003b, 0x0000000f, 0x000000cb, 0x00000007, 0x0004003b, 0x0000000e, + 0x000000d0, 0x00000007, 0x0004003b, 0x0000000f, 0x000000d1, 0x00000007, 0x0004003b, 0x0000000f, + 0x000000d4, 0x00000007, 0x0004003b, 0x0000000e, 0x000000d9, 0x00000007, 0x0004003b, 0x0000000f, + 0x000000da, 0x00000007, 0x0004003b, 0x0000000f, 0x000000dd, 0x00000007, 0x0004003b, 0x0000000e, + 0x000000e2, 0x00000007, 0x0004003b, 0x0000000f, 0x000000e3, 0x00000007, 0x0004003b, 0x0000000e, + 0x000000e6, 0x00000007, 0x0004003b, 0x0000000e, 0x000000f0, 0x00000007, 0x0004003b, 0x0000000f, + 0x000000fd, 0x00000007, 0x0004003b, 0x0000000e, 0x0000010a, 0x00000007, 0x0004003b, 0x0000000e, + 0x00000114, 0x00000007, 0x0004003b, 0x0000000f, 0x00000121, 0x00000007, 0x0004003b, 0x00000024, + 0x0000012e, 0x00000007, 0x0004003b, 0x0000000c, 0x0000012f, 0x00000007, 0x0004003b, 0x0000000e, + 0x00000131, 0x00000007, 0x0004003b, 0x0000000f, 0x00000133, 0x00000007, 0x0004003b, 0x0000000c, + 0x00000138, 0x00000007, 0x0004003b, 0x0000000e, 0x0000013a, 0x00000007, 0x0004003b, 0x0000000f, + 0x0000013c, 0x00000007, 0x0004003d, 0x0000000d, 0x000000c3, 0x00000027, 0x0004003d, 0x00000006, + 0x000000c4, 0x0000002a, 0x00050050, 0x0000000d, 0x000000c5, 0x000000c4, 0x0000006e, 0x00050081, + 0x0000000d, 0x000000c6, 0x000000c3, 0x000000c5, 0x0003003e, 0x000000c7, 0x000000c6, 0x0004003d, + 0x00000006, 0x000000c9, 0x0000002c, 0x0003003e, 0x000000c8, 0x000000c9, 0x00060039, 0x00000006, + 0x000000ca, 0x00000022, 0x000000c7, 0x000000c8, 0x0003003e, 0x000000c2, 0x000000ca, 0x0004003d, + 0x0000000d, 0x000000cc, 0x00000027, 0x0004003d, 0x00000006, 0x000000cd, 0x0000002a, 0x00050050, + 0x0000000d, 0x000000ce, 0x000000cd, 0x0000006e, 0x00050083, 0x0000000d, 0x000000cf, 0x000000cc, + 0x000000ce, 0x0003003e, 0x000000d0, 0x000000cf, 0x0004003d, 0x00000006, 0x000000d2, 0x0000002c, + 0x0003003e, 0x000000d1, 0x000000d2, 0x00060039, 0x00000006, 0x000000d3, 0x00000022, 0x000000d0, + 0x000000d1, 0x0003003e, 0x000000cb, 0x000000d3, 0x0004003d, 0x0000000d, 0x000000d5, 0x00000027, + 0x0004003d, 0x00000006, 0x000000d6, 0x0000002b, 0x00050050, 0x0000000d, 0x000000d7, 0x0000006e, + 0x000000d6, 0x00050081, 0x0000000d, 0x000000d8, 0x000000d5, 0x000000d7, 0x0003003e, 0x000000d9, + 0x000000d8, 0x0004003d, 0x00000006, 0x000000db, 0x0000002c, 0x0003003e, 0x000000da, 0x000000db, + 0x00060039, 0x00000006, 0x000000dc, 0x00000022, 0x000000d9, 0x000000da, 0x0003003e, 0x000000d4, + 0x000000dc, 0x0004003d, 0x0000000d, 0x000000de, 0x00000027, 0x0004003d, 0x00000006, 0x000000df, + 0x0000002b, 0x00050050, 0x0000000d, 0x000000e0, 0x0000006e, 0x000000df, 0x00050083, 0x0000000d, + 0x000000e1, 0x000000de, 0x000000e0, 0x0003003e, 0x000000e2, 0x000000e1, 0x0004003d, 0x00000006, + 0x000000e4, 0x0000002c, 0x0003003e, 0x000000e3, 0x000000e4, 0x00060039, 0x00000006, 0x000000e5, + 0x00000022, 0x000000e2, 0x000000e3, 0x0003003e, 0x000000dd, 0x000000e5, 0x0004003d, 0x00000006, + 0x000000e7, 0x000000c2, 0x0004003d, 0x00000006, 0x000000e8, 0x00000028, 0x00050083, 0x00000006, + 0x000000e9, 0x000000e7, 0x000000e8, 0x0006000c, 0x00000006, 0x000000ea, 0x00000001, 0x00000004, + 0x000000e9, 0x0004003d, 0x00000006, 0x000000eb, 0x000000cb, 0x0004003d, 0x00000006, 0x000000ec, + 0x00000028, 0x00050083, 0x00000006, 0x000000ed, 0x000000eb, 0x000000ec, 0x0006000c, 0x00000006, + 0x000000ee, 0x00000001, 0x00000004, 0x000000ed, 0x000500b8, 0x000000b2, 0x000000ef, 0x000000ea, + 0x000000ee, 0x000300f7, 0x000000f2, 0x00000000, 0x000400fa, 0x000000ef, 0x000000f1, 0x000000f7, + 0x000200f8, 0x000000f1, 0x0004003d, 0x0000000d, 0x000000f3, 0x00000027, 0x0004003d, 0x00000006, + 0x000000f4, 0x0000002a, 0x00050050, 0x0000000d, 0x000000f5, 0x000000f4, 0x0000006e, 0x00050081, + 0x0000000d, 0x000000f6, 0x000000f3, 0x000000f5, 0x0003003e, 0x000000f0, 0x000000f6, 0x000200f9, + 0x000000f2, 0x000200f8, 0x000000f7, 0x0004003d, 0x0000000d, 0x000000f8, 0x00000027, 0x0004003d, + 0x00000006, 0x000000f9, 0x0000002a, 0x00050050, 0x0000000d, 0x000000fa, 0x000000f9, 0x0000006e, + 0x00050083, 0x0000000d, 0x000000fb, 0x000000f8, 0x000000fa, 0x0003003e, 0x000000f0, 0x000000fb, + 0x000200f9, 0x000000f2, 0x000200f8, 0x000000f2, 0x0004003d, 0x0000000d, 0x000000fc, 0x000000f0, + 0x0003003e, 0x000000e6, 0x000000fc, 0x0004003d, 0x00000006, 0x000000fe, 0x000000c2, 0x0004003d, + 0x00000006, 0x000000ff, 0x00000028, 0x00050083, 0x00000006, 0x00000100, 0x000000fe, 0x000000ff, + 0x0006000c, 0x00000006, 0x00000101, 0x00000001, 0x00000004, 0x00000100, 0x0004003d, 0x00000006, + 0x00000102, 0x000000cb, 0x0004003d, 0x00000006, 0x00000103, 0x00000028, 0x00050083, 0x00000006, + 0x00000104, 0x00000102, 0x00000103, 0x0006000c, 0x00000006, 0x00000105, 0x00000001, 0x00000004, + 0x00000104, 0x000500b8, 0x000000b2, 0x00000106, 0x00000101, 0x00000105, 0x0004003d, 0x00000006, + 0x00000107, 0x000000c2, 0x0004003d, 0x00000006, 0x00000108, 0x000000cb, 0x000600a9, 0x00000006, + 0x00000109, 0x00000106, 0x00000107, 0x00000108, 0x0003003e, 0x000000fd, 0x00000109, 0x0004003d, + 0x00000006, 0x0000010b, 0x000000d4, 0x0004003d, 0x00000006, 0x0000010c, 0x00000028, 0x00050083, + 0x00000006, 0x0000010d, 0x0000010b, 0x0000010c, 0x0006000c, 0x00000006, 0x0000010e, 0x00000001, + 0x00000004, 0x0000010d, 0x0004003d, 0x00000006, 0x0000010f, 0x000000dd, 0x0004003d, 0x00000006, + 0x00000110, 0x00000028, 0x00050083, 0x00000006, 0x00000111, 0x0000010f, 0x00000110, 0x0006000c, + 0x00000006, 0x00000112, 0x00000001, 0x00000004, 0x00000111, 0x000500b8, 0x000000b2, 0x00000113, + 0x0000010e, 0x00000112, 0x000300f7, 0x00000116, 0x00000000, 0x000400fa, 0x00000113, 0x00000115, + 0x0000011b, 0x000200f8, 0x00000115, 0x0004003d, 0x0000000d, 0x00000117, 0x00000027, 0x0004003d, + 0x00000006, 0x00000118, 0x0000002b, 0x00050050, 0x0000000d, 0x00000119, 0x0000006e, 0x00000118, + 0x00050081, 0x0000000d, 0x0000011a, 0x00000117, 0x00000119, 0x0003003e, 0x00000114, 0x0000011a, + 0x000200f9, 0x00000116, 0x000200f8, 0x0000011b, 0x0004003d, 0x0000000d, 0x0000011c, 0x00000027, + 0x0004003d, 0x00000006, 0x0000011d, 0x0000002b, 0x00050050, 0x0000000d, 0x0000011e, 0x0000006e, + 0x0000011d, 0x00050083, 0x0000000d, 0x0000011f, 0x0000011c, 0x0000011e, 0x0003003e, 0x00000114, + 0x0000011f, 0x000200f9, 0x00000116, 0x000200f8, 0x00000116, 0x0004003d, 0x0000000d, 0x00000120, + 0x00000114, 0x0003003e, 0x0000010a, 0x00000120, 0x0004003d, 0x00000006, 0x00000122, 0x000000d4, + 0x0004003d, 0x00000006, 0x00000123, 0x00000028, 0x00050083, 0x00000006, 0x00000124, 0x00000122, + 0x00000123, 0x0006000c, 0x00000006, 0x00000125, 0x00000001, 0x00000004, 0x00000124, 0x0004003d, + 0x00000006, 0x00000126, 0x000000dd, 0x0004003d, 0x00000006, 0x00000127, 0x00000028, 0x00050083, + 0x00000006, 0x00000128, 0x00000126, 0x00000127, 0x0006000c, 0x00000006, 0x00000129, 0x00000001, + 0x00000004, 0x00000128, 0x000500b8, 0x000000b2, 0x0000012a, 0x00000125, 0x00000129, 0x0004003d, + 0x00000006, 0x0000012b, 0x000000d4, 0x0004003d, 0x00000006, 0x0000012c, 0x000000dd, 0x000600a9, + 0x00000006, 0x0000012d, 0x0000012a, 0x0000012b, 0x0000012c, 0x0003003e, 0x00000121, 0x0000012d, + 0x0004003d, 0x00000008, 0x00000130, 0x00000026, 0x0003003e, 0x0000012f, 0x00000130, 0x0004003d, + 0x0000000d, 0x00000132, 0x000000e6, 0x0003003e, 0x00000131, 0x00000132, 0x0004003d, 0x00000006, + 0x00000134, 0x000000fd, 0x0003003e, 0x00000133, 0x00000134, 0x00070039, 0x00000010, 0x00000135, + 0x00000015, 0x0000012f, 0x00000131, 0x00000133, 0x0004003d, 0x00000010, 0x00000136, 0x00000029, + 0x00050083, 0x00000010, 0x00000137, 0x00000135, 0x00000136, 0x0004003d, 0x00000008, 0x00000139, + 0x00000026, 0x0003003e, 0x00000138, 0x00000139, 0x0004003d, 0x0000000d, 0x0000013b, 0x0000010a, + 0x0003003e, 0x0000013a, 0x0000013b, 0x0004003d, 0x00000006, 0x0000013d, 0x00000121, 0x0003003e, + 0x0000013c, 0x0000013d, 0x00070039, 0x00000010, 0x0000013e, 0x00000015, 0x00000138, 0x0000013a, + 0x0000013c, 0x0004003d, 0x00000010, 0x0000013f, 0x00000029, 0x00050083, 0x00000010, 0x00000140, + 0x0000013e, 0x0000013f, 0x0007000c, 0x00000010, 0x00000141, 0x00000001, 0x00000044, 0x00000137, + 0x00000140, 0x0006000c, 0x00000010, 0x00000142, 0x00000001, 0x00000045, 0x00000141, 0x0003003e, + 0x0000012e, 0x00000142, 0x0004003d, 0x00000010, 0x00000143, 0x0000012e, 0x0004003d, 0x00000010, + 0x00000144, 0x0000002d, 0x0004003d, 0x00000010, 0x00000145, 0x00000029, 0x00050083, 0x00000010, + 0x00000146, 0x00000144, 0x00000145, 0x00050094, 0x00000006, 0x00000147, 0x00000143, 0x00000146, + 0x000500b8, 0x000000b2, 0x00000148, 0x00000147, 0x0000006e, 0x000300f7, 0x0000014a, 0x00000000, + 0x000400fa, 0x00000148, 0x00000149, 0x0000014a, 0x000200f8, 0x00000149, 0x0004003d, 0x00000010, + 0x0000014b, 0x0000012e, 0x0004007f, 0x00000010, 0x0000014c, 0x0000014b, 0x0003003e, 0x0000012e, + 0x0000014c, 0x000200f9, 0x0000014a, 0x000200f8, 0x0000014a, 0x0004003d, 0x00000010, 0x0000014d, + 0x0000012e, 0x000200fe, 0x0000014d, 0x00010038, 0x00050036, 0x00000010, 0x00000034, 0x00000000, + 0x00000032, 0x00030037, 0x00000031, 0x00000033, 0x000200f8, 0x00000035, 0x0004003b, 0x0000000f, + 0x00000150, 0x00000007, 0x0004003b, 0x0000000f, 0x00000153, 0x00000007, 0x0004003b, 0x0000000f, + 0x00000158, 0x00000007, 0x0004003b, 0x0000000f, 0x0000015c, 0x00000007, 0x0004003d, 0x00000030, + 0x00000151, 0x00000033, 0x0004006f, 0x00000006, 0x00000152, 0x00000151, 0x0003003e, 0x00000150, + 0x00000152, 0x0004003d, 0x00000006, 0x00000154, 0x00000150, 0x00050085, 0x00000006, 0x00000156, + 0x00000154, 0x00000155, 0x0006000c, 0x00000006, 0x00000157, 0x00000001, 0x0000000a, 0x00000156, + 0x0003003e, 0x00000153, 0x00000157, 0x0004003d, 0x00000006, 0x00000159, 0x00000150, 0x00050085, + 0x00000006, 0x0000015b, 0x00000159, 0x0000015a, 0x0003003e, 0x00000158, 0x0000015b, 0x0004003d, + 0x00000006, 0x0000015d, 0x00000153, 0x0004003d, 0x00000006, 0x0000015e, 0x00000153, 0x00050085, + 0x00000006, 0x0000015f, 0x0000015d, 0x0000015e, 0x00050083, 0x00000006, 0x00000160, 0x0000006d, + 0x0000015f, 0x0007000c, 0x00000006, 0x00000161, 0x00000001, 0x00000028, 0x00000160, 0x0000006e, + 0x0006000c, 0x00000006, 0x00000162, 0x00000001, 0x0000001f, 0x00000161, 0x0004003d, 0x00000006, + 0x00000164, 0x00000150, 0x00050081, 0x00000006, 0x00000165, 0x00000164, 0x0000006d, 0x00050088, + 0x00000006, 0x00000167, 0x00000165, 0x00000166, 0x0008000c, 0x00000006, 0x00000168, 0x00000001, + 0x0000002e, 0x00000163, 0x0000006d, 0x00000167, 0x00050085, 0x00000006, 0x00000169, 0x00000162, + 0x00000168, 0x0003003e, 0x0000015c, 0x00000169, 0x0004003d, 0x00000006, 0x0000016a, 0x00000158, + 0x0006000c, 0x00000006, 0x0000016b, 0x00000001, 0x0000000e, 0x0000016a, 0x0004003d, 0x00000006, + 0x0000016c, 0x0000015c, 0x00050085, 0x00000006, 0x0000016d, 0x0000016b, 0x0000016c, 0x0004003d, + 0x00000006, 0x0000016e, 0x00000158, 0x0006000c, 0x00000006, 0x0000016f, 0x00000001, 0x0000000d, + 0x0000016e, 0x0004003d, 0x00000006, 0x00000170, 0x0000015c, 0x00050085, 0x00000006, 0x00000171, + 0x0000016f, 0x00000170, 0x0004003d, 0x00000006, 0x00000172, 0x00000153, 0x00060050, 0x00000010, + 0x00000173, 0x0000016d, 0x00000171, 0x00000172, 0x000200fe, 0x00000173, 0x00010038, +}; +static const size_t gi_ssgi_frag_spv_count = 4711; diff --git a/src/modules/graphics/shaders/mesh3d.frag b/src/modules/graphics/shaders/mesh3d.frag index 024adb72..0c97fd0b 100644 --- a/src/modules/graphics/shaders/mesh3d.frag +++ b/src/modules/graphics/shaders/mesh3d.frag @@ -29,6 +29,7 @@ layout(set = 0, binding = 0, std140) uniform Frame { vec4 texBomb; // x = cellScale, y = strength (0=off), z = rotAmount, w unused vec4 parallax; // x = scale (0=off), y = minLayers, z = maxLayers, w unused mat4 view; + vec4 clipInfo; // x = near, y = far } ubo; layout(set = 0, binding = 1) uniform sampler2D albedoSampler; @@ -202,10 +203,15 @@ void main() { Lo += shadeLight(N, V, albedo, metallic, roughness, L, radiance); } - // Hemispheric ambient so floors/upward faces stay readable in large interiors. + // Hemispheric GI: sky vs ground bounce, plus a cheap wrap fill into umbra. float hemi = clamp(N.y * 0.5 + 0.5, 0.0, 1.0); - vec3 amb = ubo.ambient.rgb * mix(0.7, 1.25, hemi); - vec3 color = albedo * amb * (1.0 - metallic) + Lo; + vec3 skyIrr = ubo.ambient.rgb * 1.1 + ubo.lightColor.rgb * 0.12; + vec3 gndIrr = ubo.ambient.rgb * vec3(0.72, 0.62, 0.52); + vec3 irr = mix(gndIrr, skyIrr, hemi); + vec3 gi = albedo * irr * (1.0 - metallic); + float wrap = max(dot(N, primaryL) * 0.5 + 0.5, 0.0); + gi += albedo * ubo.lightColor.rgb * (wrap * wrap) * 0.06 * (1.0 - metallic); + vec3 color = gi + Lo; // Specular IBL (envIntensity packed in lightColor.w). No BRDF LUT — Fresnel * env. float envIntensity = ubo.lightColor.w; @@ -223,5 +229,9 @@ void main() { color = tonemapPeak(color); - outColor = vec4(color, base.a); + float nearZ = max(ubo.clipInfo.x, 1e-4); + float farZ = max(ubo.clipInfo.y, nearZ + 1e-3); + float viewZ = max(-vViewPos.z, 0.0); + float linear01 = clamp((viewZ - nearZ) / (farZ - nearZ), 0.0, 1.0); + outColor = vec4(color, linear01); } diff --git a/src/modules/graphics/shaders/mesh3d.frag.spv b/src/modules/graphics/shaders/mesh3d.frag.spv index a78b0684..2fc6ccb8 100644 Binary files a/src/modules/graphics/shaders/mesh3d.frag.spv and b/src/modules/graphics/shaders/mesh3d.frag.spv differ diff --git a/src/modules/graphics/shaders/mesh3d.vert b/src/modules/graphics/shaders/mesh3d.vert index ceca127b..9e831c96 100644 --- a/src/modules/graphics/shaders/mesh3d.vert +++ b/src/modules/graphics/shaders/mesh3d.vert @@ -21,6 +21,7 @@ layout(set = 0, binding = 0, std140) uniform Frame { vec4 texBomb; vec4 parallax; mat4 view; + vec4 clipInfo; // near, far } ubo; layout(location = 0) out vec3 vNormal; diff --git a/src/modules/graphics/shaders/mesh3d.vert.spv b/src/modules/graphics/shaders/mesh3d.vert.spv index 9f9a12c6..9cf387e9 100644 Binary files a/src/modules/graphics/shaders/mesh3d.vert.spv and b/src/modules/graphics/shaders/mesh3d.vert.spv differ diff --git a/src/modules/graphics/shaders/mesh3d_clustered.frag b/src/modules/graphics/shaders/mesh3d_clustered.frag index 4124d5ff..9b2cf2d9 100644 --- a/src/modules/graphics/shaders/mesh3d_clustered.frag +++ b/src/modules/graphics/shaders/mesh3d_clustered.frag @@ -213,10 +213,15 @@ void main() { Lo += shadeLight(N, V, albedo, metallic, roughness, L, radiance); } - // Hemispheric ambient so floors/upward faces stay readable in large interiors. + // Hemispheric GI: sky vs ground bounce, plus a cheap wrap fill into umbra. float hemi = clamp(N.y * 0.5 + 0.5, 0.0, 1.0); - vec3 amb = ubo.ambient.rgb * mix(0.7, 1.25, hemi); - vec3 color = albedo * amb * (1.0 - metallic) + Lo; + vec3 skyIrr = ubo.ambient.rgb * 1.1 + ubo.lightColor.rgb * 0.12; + vec3 gndIrr = ubo.ambient.rgb * vec3(0.72, 0.62, 0.52); + vec3 irr = mix(gndIrr, skyIrr, hemi); + vec3 gi = albedo * irr * (1.0 - metallic); + float wrap = max(dot(N, primaryL) * 0.5 + 0.5, 0.0); + gi += albedo * ubo.lightColor.rgb * (wrap * wrap) * 0.06 * (1.0 - metallic); + vec3 color = gi + Lo; float envIntensity = ubo.lightColor.w; if (envIntensity > 1e-4) { @@ -232,5 +237,9 @@ void main() { color = tonemapPeak(color); - outColor = vec4(color, base.a); + float nearZ = max(ubo.clipInfo.x, 1e-4); + float farZ = max(ubo.clipInfo.y, nearZ + 1e-3); + float viewZ = max(-vViewPos.z, 0.0); + float linear01 = clamp((viewZ - nearZ) / (farZ - nearZ), 0.0, 1.0); + outColor = vec4(color, linear01); } diff --git a/src/modules/graphics/shaders/mesh3d_clustered.frag.spv b/src/modules/graphics/shaders/mesh3d_clustered.frag.spv index 7f555aaf..4a384a17 100644 Binary files a/src/modules/graphics/shaders/mesh3d_clustered.frag.spv and b/src/modules/graphics/shaders/mesh3d_clustered.frag.spv differ diff --git a/src/modules/graphics/shaders/mesh3d_clustered_frag_spv.inc b/src/modules/graphics/shaders/mesh3d_clustered_frag_spv.inc index 3a236d54..07baff0c 100644 --- a/src/modules/graphics/shaders/mesh3d_clustered_frag_spv.inc +++ b/src/modules/graphics/shaders/mesh3d_clustered_frag_spv.inc @@ -1,8 +1,8 @@ static const uint32_t mesh3d_clustered_frag_spv[] = { - 0x07230203, 0x00010000, 0x000d000b, 0x0000067d, 0x00000000, 0x00020011, 0x00000001, 0x00020011, + 0x07230203, 0x00010000, 0x000d000b, 0x000006bf, 0x00000000, 0x00020011, 0x00000001, 0x00020011, 0x00000032, 0x0006000b, 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, 0x000d000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x000004bd, - 0x000004da, 0x00000507, 0x0000050b, 0x0000050d, 0x0000051c, 0x0000053b, 0x00000675, 0x00030010, + 0x000004da, 0x00000507, 0x0000050b, 0x0000050d, 0x0000051c, 0x0000053b, 0x000006b8, 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x000a0004, 0x475f4c47, 0x4c474f4f, 0x70635f45, 0x74735f70, 0x5f656c79, 0x656e696c, 0x7269645f, 0x69746365, 0x00006576, 0x00080004, 0x475f4c47, 0x4c474f4f, 0x6e695f45, 0x64756c63, 0x69645f65, 0x74636572, 0x00657669, 0x00040005, @@ -165,13 +165,17 @@ static const uint32_t mesh3d_clustered_frag_spv[] = { 0x0000006d, 0x00040005, 0x00000605, 0x61726170, 0x0000006d, 0x00040005, 0x00000607, 0x61726170, 0x0000006d, 0x00040005, 0x00000609, 0x61726170, 0x0000006d, 0x00040005, 0x0000060b, 0x61726170, 0x0000006d, 0x00040005, 0x0000060d, 0x61726170, 0x0000006d, 0x00040005, 0x0000060f, 0x61726170, - 0x0000006d, 0x00040005, 0x00000616, 0x696d6568, 0x00000000, 0x00030005, 0x0000061c, 0x00626d61, - 0x00040005, 0x00000625, 0x6f6c6f63, 0x00000072, 0x00060005, 0x0000062e, 0x49766e65, 0x6e65746e, - 0x79746973, 0x00000000, 0x00030005, 0x00000635, 0x00000052, 0x00030005, 0x0000063a, 0x00646f6c, - 0x00040005, 0x0000063d, 0x53766e65, 0x00636570, 0x00050005, 0x00000641, 0x53766e65, 0x6c706d61, - 0x00007265, 0x00030005, 0x00000649, 0x00003046, 0x00030005, 0x0000064e, 0x00000046, 0x00040005, - 0x00000653, 0x61726170, 0x0000006d, 0x00040005, 0x00000654, 0x61726170, 0x0000006d, 0x00030005, - 0x0000065c, 0x00727269, 0x00040005, 0x00000671, 0x61726170, 0x0000006d, 0x00050005, 0x00000675, + 0x0000006d, 0x00040005, 0x00000616, 0x696d6568, 0x00000000, 0x00040005, 0x0000061c, 0x49796b73, + 0x00007272, 0x00040005, 0x00000628, 0x49646e67, 0x00007272, 0x00030005, 0x00000631, 0x00727269, + 0x00030005, 0x00000637, 0x00006967, 0x00040005, 0x0000063e, 0x70617277, 0x00000000, 0x00040005, + 0x00000655, 0x6f6c6f63, 0x00000072, 0x00060005, 0x00000659, 0x49766e65, 0x6e65746e, 0x79746973, + 0x00000000, 0x00030005, 0x00000660, 0x00000052, 0x00030005, 0x00000665, 0x00646f6c, 0x00040005, + 0x00000668, 0x53766e65, 0x00636570, 0x00050005, 0x0000066c, 0x53766e65, 0x6c706d61, 0x00007265, + 0x00030005, 0x00000674, 0x00003046, 0x00030005, 0x00000679, 0x00000046, 0x00040005, 0x0000067e, + 0x61726170, 0x0000006d, 0x00040005, 0x0000067f, 0x61726170, 0x0000006d, 0x00030005, 0x00000687, + 0x00727269, 0x00040005, 0x0000069c, 0x61726170, 0x0000006d, 0x00040005, 0x0000069f, 0x7261656e, + 0x0000005a, 0x00040005, 0x000006a3, 0x5a726166, 0x00000000, 0x00040005, 0x000006a9, 0x77656976, + 0x0000005a, 0x00050005, 0x000006ae, 0x656e696c, 0x31307261, 0x00000000, 0x00050005, 0x000006b8, 0x4374756f, 0x726f6c6f, 0x00000000, 0x00040047, 0x000003dd, 0x00000006, 0x00000040, 0x00030047, 0x000003de, 0x00000002, 0x00040048, 0x000003de, 0x00000000, 0x00000005, 0x00050048, 0x000003de, 0x00000000, 0x00000007, 0x00000010, 0x00050048, 0x000003de, 0x00000000, 0x00000023, 0x00000000, @@ -208,8 +212,8 @@ static const uint32_t mesh3d_clustered_frag_spv[] = { 0x00040047, 0x000005d6, 0x00000006, 0x00000020, 0x00030047, 0x000005d7, 0x00000003, 0x00040048, 0x000005d7, 0x00000000, 0x00000018, 0x00050048, 0x000005d7, 0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x000005d9, 0x00000018, 0x00040047, 0x000005d9, 0x00000021, 0x00000004, 0x00040047, - 0x000005d9, 0x00000022, 0x00000000, 0x00040047, 0x00000641, 0x00000021, 0x00000003, 0x00040047, - 0x00000641, 0x00000022, 0x00000000, 0x00040047, 0x00000675, 0x0000001e, 0x00000000, 0x00020013, + 0x000005d9, 0x00000022, 0x00000000, 0x00040047, 0x0000066c, 0x00000021, 0x00000003, 0x00040047, + 0x0000066c, 0x00000022, 0x00000000, 0x00040047, 0x000006b8, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000002, 0x00040020, 0x00000008, 0x00000007, 0x00000007, 0x00040021, 0x00000009, 0x00000007, 0x00000008, 0x00040020, 0x0000000d, 0x00000007, 0x00000006, 0x00050021, @@ -290,967 +294,1010 @@ static const uint32_t mesh3d_clustered_frag_spv[] = { 0x000005d2, 0x0004001e, 0x000005d5, 0x00000016, 0x00000016, 0x0003001d, 0x000005d6, 0x000005d5, 0x0003001e, 0x000005d7, 0x000005d6, 0x00040020, 0x000005d8, 0x00000002, 0x000005d7, 0x0004003b, 0x000005d8, 0x000005d9, 0x00000002, 0x00040020, 0x000005db, 0x00000002, 0x000005d5, 0x0004002b, - 0x00000006, 0x00000620, 0x3f333333, 0x0004002b, 0x00000006, 0x00000621, 0x3fa00000, 0x00090019, - 0x0000063e, 0x00000006, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, - 0x0003001b, 0x0000063f, 0x0000063e, 0x00040020, 0x00000640, 0x00000000, 0x0000063f, 0x0004003b, - 0x00000640, 0x00000641, 0x00000000, 0x0004002b, 0x00000006, 0x0000066d, 0x3ee66666, 0x00040020, - 0x00000674, 0x00000003, 0x00000016, 0x0004003b, 0x00000674, 0x00000675, 0x00000003, 0x00050036, - 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x0000000d, - 0x000004fc, 0x00000007, 0x0004003b, 0x0000000d, 0x00000500, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000503, 0x00000007, 0x0004003b, 0x00000020, 0x00000506, 0x00000007, 0x0004003b, 0x00000020, - 0x0000050a, 0x00000007, 0x0004003b, 0x00000008, 0x00000519, 0x00000007, 0x0004003b, 0x00000008, - 0x0000051e, 0x00000007, 0x0004003b, 0x00000020, 0x00000520, 0x00000007, 0x0004003b, 0x00000020, - 0x00000522, 0x00000007, 0x0004003b, 0x00000020, 0x00000524, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000526, 0x00000007, 0x0004003b, 0x0000000d, 0x00000529, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000052c, 0x00000007, 0x0004003b, 0x000000dd, 0x00000530, 0x00000007, 0x0004003b, 0x00000008, - 0x00000532, 0x00000007, 0x0004003b, 0x0000000d, 0x00000534, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000536, 0x00000007, 0x0004003b, 0x0000000d, 0x00000538, 0x00000007, 0x0004003b, 0x00000020, - 0x00000544, 0x00000007, 0x0004003b, 0x0000000d, 0x00000547, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000054c, 0x00000007, 0x0004003b, 0x00000020, 0x00000551, 0x00000007, 0x0004003b, 0x00000020, - 0x00000553, 0x00000007, 0x0004003b, 0x00000008, 0x00000555, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000557, 0x00000007, 0x0004003b, 0x0000000d, 0x00000559, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000055b, 0x00000007, 0x0004003b, 0x00000020, 0x00000566, 0x00000007, 0x0004003b, 0x00000020, - 0x00000568, 0x00000007, 0x0004003b, 0x00000020, 0x0000056a, 0x00000007, 0x0004003b, 0x00000008, - 0x0000056c, 0x00000007, 0x0004003b, 0x00000020, 0x0000056f, 0x00000007, 0x0004003b, 0x00000020, - 0x00000570, 0x00000007, 0x0004003b, 0x0000000d, 0x00000577, 0x00000007, 0x0004003b, 0x00000020, - 0x00000580, 0x00000007, 0x0004003b, 0x0000000d, 0x00000582, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000583, 0x00000007, 0x0004003b, 0x00000020, 0x00000593, 0x00000007, 0x0004003b, 0x00000020, - 0x00000595, 0x00000007, 0x0004003b, 0x00000020, 0x00000597, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000599, 0x00000007, 0x0004003b, 0x0000000d, 0x0000059b, 0x00000007, 0x0004003b, 0x00000020, - 0x0000059d, 0x00000007, 0x0004003b, 0x00000020, 0x0000059f, 0x00000007, 0x0004003b, 0x000005a8, - 0x000005a9, 0x00000007, 0x0004003b, 0x000005ac, 0x000005ad, 0x00000007, 0x0004003b, 0x000005a8, - 0x000005b6, 0x00000007, 0x0004003b, 0x000005a8, 0x000005b9, 0x00000007, 0x0004003b, 0x000005a8, - 0x000005be, 0x00000007, 0x0004003b, 0x000005a8, 0x000005c7, 0x00000007, 0x0004003b, 0x000005d3, - 0x000005d4, 0x00000007, 0x0004003b, 0x00000020, 0x000005e2, 0x00000007, 0x0004003b, 0x00000020, - 0x000005e6, 0x00000007, 0x0004003b, 0x0000000d, 0x000005ec, 0x00000007, 0x0004003b, 0x00000020, - 0x000005ef, 0x00000007, 0x0004003b, 0x0000000d, 0x000005f5, 0x00000007, 0x0004003b, 0x00000020, - 0x00000603, 0x00000007, 0x0004003b, 0x00000020, 0x00000605, 0x00000007, 0x0004003b, 0x00000020, - 0x00000607, 0x00000007, 0x0004003b, 0x0000000d, 0x00000609, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000060b, 0x00000007, 0x0004003b, 0x00000020, 0x0000060d, 0x00000007, 0x0004003b, 0x00000020, - 0x0000060f, 0x00000007, 0x0004003b, 0x0000000d, 0x00000616, 0x00000007, 0x0004003b, 0x00000020, - 0x0000061c, 0x00000007, 0x0004003b, 0x00000020, 0x00000625, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000062e, 0x00000007, 0x0004003b, 0x00000020, 0x00000635, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000063a, 0x00000007, 0x0004003b, 0x00000020, 0x0000063d, 0x00000007, 0x0004003b, 0x00000020, - 0x00000649, 0x00000007, 0x0004003b, 0x00000020, 0x0000064e, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000653, 0x00000007, 0x0004003b, 0x00000020, 0x00000654, 0x00000007, 0x0004003b, 0x00000020, - 0x0000065c, 0x00000007, 0x0004003b, 0x00000020, 0x00000671, 0x00000007, 0x00060041, 0x000003e2, - 0x000004fe, 0x00000499, 0x000004fd, 0x00000097, 0x0004003d, 0x00000006, 0x000004ff, 0x000004fe, - 0x0003003e, 0x000004fc, 0x000004ff, 0x00060041, 0x000003e2, 0x00000501, 0x00000499, 0x000004fd, - 0x0000009c, 0x0004003d, 0x00000006, 0x00000502, 0x00000501, 0x0003003e, 0x00000500, 0x00000502, - 0x00060041, 0x000003e2, 0x00000504, 0x00000499, 0x000004fd, 0x000001de, 0x0004003d, 0x00000006, - 0x00000505, 0x00000504, 0x0003003e, 0x00000503, 0x00000505, 0x0004003d, 0x0000001f, 0x00000508, - 0x00000507, 0x0006000c, 0x0000001f, 0x00000509, 0x00000001, 0x00000045, 0x00000508, 0x0003003e, - 0x00000506, 0x00000509, 0x0004003d, 0x0000001f, 0x0000050c, 0x0000050b, 0x0004003d, 0x0000001f, - 0x0000050e, 0x0000050d, 0x00050083, 0x0000001f, 0x0000050f, 0x0000050c, 0x0000050e, 0x0006000c, - 0x0000001f, 0x00000510, 0x00000001, 0x00000045, 0x0000050f, 0x0003003e, 0x0000050a, 0x00000510, - 0x0004003d, 0x0000001f, 0x00000511, 0x00000506, 0x0004003d, 0x0000001f, 0x00000512, 0x0000050a, - 0x00050094, 0x00000006, 0x00000513, 0x00000511, 0x00000512, 0x000500b8, 0x000000af, 0x00000514, - 0x00000513, 0x000000df, 0x000300f7, 0x00000516, 0x00000000, 0x000400fa, 0x00000514, 0x00000515, - 0x00000516, 0x000200f8, 0x00000515, 0x0004003d, 0x0000001f, 0x00000517, 0x00000506, 0x0004007f, - 0x0000001f, 0x00000518, 0x00000517, 0x0003003e, 0x00000506, 0x00000518, 0x000200f9, 0x00000516, - 0x000200f8, 0x00000516, 0x0004003d, 0x00000007, 0x0000051f, 0x0000051c, 0x0003003e, 0x0000051e, - 0x0000051f, 0x0004003d, 0x0000001f, 0x00000521, 0x00000506, 0x0003003e, 0x00000520, 0x00000521, - 0x0004003d, 0x0000001f, 0x00000523, 0x0000050d, 0x0003003e, 0x00000522, 0x00000523, 0x0004003d, - 0x0000001f, 0x00000525, 0x0000050a, 0x0003003e, 0x00000524, 0x00000525, 0x00060041, 0x000003e2, - 0x00000527, 0x00000499, 0x0000051d, 0x00000097, 0x0004003d, 0x00000006, 0x00000528, 0x00000527, - 0x0003003e, 0x00000526, 0x00000528, 0x00060041, 0x000003e2, 0x0000052a, 0x00000499, 0x0000051d, - 0x0000009c, 0x0004003d, 0x00000006, 0x0000052b, 0x0000052a, 0x0003003e, 0x00000529, 0x0000052b, - 0x00060041, 0x000003e2, 0x0000052d, 0x00000499, 0x0000051d, 0x000001de, 0x0004003d, 0x00000006, - 0x0000052e, 0x0000052d, 0x0003003e, 0x0000052c, 0x0000052e, 0x000c0039, 0x00000007, 0x0000052f, - 0x0000003a, 0x0000051a, 0x0000051e, 0x00000520, 0x00000522, 0x00000524, 0x00000526, 0x00000529, - 0x0000052c, 0x0003003e, 0x00000519, 0x0000052f, 0x0004003d, 0x00000007, 0x00000533, 0x00000519, - 0x0003003e, 0x00000532, 0x00000533, 0x0004003d, 0x00000006, 0x00000535, 0x000004fc, 0x0003003e, - 0x00000534, 0x00000535, 0x0004003d, 0x00000006, 0x00000537, 0x00000500, 0x0003003e, 0x00000536, - 0x00000537, 0x0004003d, 0x00000006, 0x00000539, 0x00000503, 0x0003003e, 0x00000538, 0x00000539, - 0x00090039, 0x00000016, 0x0000053a, 0x0000001d, 0x00000531, 0x00000532, 0x00000534, 0x00000536, - 0x00000538, 0x0004003d, 0x00000016, 0x0000053c, 0x0000053b, 0x00050085, 0x00000016, 0x0000053d, - 0x0000053a, 0x0000053c, 0x0003003e, 0x00000530, 0x0000053d, 0x00050041, 0x0000000d, 0x0000053e, - 0x00000530, 0x000003dc, 0x0004003d, 0x00000006, 0x0000053f, 0x0000053e, 0x000500b8, 0x000000af, - 0x00000540, 0x0000053f, 0x00000122, 0x000300f7, 0x00000542, 0x00000000, 0x000400fa, 0x00000540, - 0x00000541, 0x00000542, 0x000200f8, 0x00000541, 0x000100fc, 0x000200f8, 0x00000542, 0x0004003d, - 0x00000016, 0x00000545, 0x00000530, 0x0008004f, 0x0000001f, 0x00000546, 0x00000545, 0x00000545, - 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000544, 0x00000546, 0x00060041, 0x000003e2, - 0x00000549, 0x00000499, 0x00000548, 0x000003dc, 0x0004003d, 0x00000006, 0x0000054a, 0x00000549, - 0x0008000c, 0x00000006, 0x0000054b, 0x00000001, 0x0000002b, 0x0000054a, 0x000000df, 0x0000010d, - 0x0003003e, 0x00000547, 0x0000054b, 0x00060041, 0x000003e2, 0x0000054e, 0x00000499, 0x0000054d, - 0x000003dc, 0x0004003d, 0x00000006, 0x0000054f, 0x0000054e, 0x0008000c, 0x00000006, 0x00000550, - 0x00000001, 0x0000002b, 0x0000054f, 0x000002f2, 0x0000010d, 0x0003003e, 0x0000054c, 0x00000550, - 0x0004003d, 0x0000001f, 0x00000552, 0x00000506, 0x0003003e, 0x00000551, 0x00000552, 0x0004003d, - 0x00000007, 0x00000556, 0x00000519, 0x0003003e, 0x00000555, 0x00000556, 0x0004003d, 0x00000006, - 0x00000558, 0x000004fc, 0x0003003e, 0x00000557, 0x00000558, 0x0004003d, 0x00000006, 0x0000055a, - 0x00000500, 0x0003003e, 0x00000559, 0x0000055a, 0x0004003d, 0x00000006, 0x0000055c, 0x00000503, - 0x0003003e, 0x0000055b, 0x0000055c, 0x00090039, 0x00000016, 0x0000055d, 0x0000001d, 0x00000554, - 0x00000555, 0x00000557, 0x00000559, 0x0000055b, 0x0008004f, 0x0000001f, 0x0000055e, 0x0000055d, - 0x0000055d, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000553, 0x0000055e, 0x0004003d, - 0x0000001f, 0x0000055f, 0x00000553, 0x00050083, 0x0000001f, 0x00000561, 0x0000055f, 0x00000560, - 0x0006000c, 0x00000006, 0x00000562, 0x00000001, 0x00000042, 0x00000561, 0x000500ba, 0x000000af, - 0x00000563, 0x00000562, 0x000002f2, 0x000300f7, 0x00000565, 0x00000000, 0x000400fa, 0x00000563, - 0x00000564, 0x00000565, 0x000200f8, 0x00000564, 0x0004003d, 0x0000001f, 0x00000567, 0x00000551, - 0x0003003e, 0x00000566, 0x00000567, 0x0004003d, 0x0000001f, 0x00000569, 0x00000553, 0x0003003e, - 0x00000568, 0x00000569, 0x0004003d, 0x0000001f, 0x0000056b, 0x0000050d, 0x0003003e, 0x0000056a, - 0x0000056b, 0x0004003d, 0x00000007, 0x0000056d, 0x00000519, 0x0003003e, 0x0000056c, 0x0000056d, - 0x00080039, 0x0000001f, 0x0000056e, 0x0000005c, 0x00000566, 0x00000568, 0x0000056a, 0x0000056c, - 0x0003003e, 0x00000551, 0x0000056e, 0x000200f9, 0x00000565, 0x000200f8, 0x00000565, 0x0003003e, - 0x0000056f, 0x00000177, 0x00050041, 0x00000572, 0x00000573, 0x00000499, 0x00000571, 0x0004003d, - 0x00000016, 0x00000574, 0x00000573, 0x0008004f, 0x0000001f, 0x00000575, 0x00000574, 0x00000574, - 0x00000000, 0x00000001, 0x00000002, 0x0006000c, 0x0000001f, 0x00000576, 0x00000001, 0x00000045, - 0x00000575, 0x0003003e, 0x00000570, 0x00000576, 0x00050041, 0x000004be, 0x00000578, 0x000004da, - 0x000001de, 0x0004003d, 0x00000006, 0x00000579, 0x00000578, 0x0004007f, 0x00000006, 0x0000057a, - 0x00000579, 0x0007000c, 0x00000006, 0x0000057b, 0x00000001, 0x00000028, 0x0000057a, 0x000000df, - 0x0004003d, 0x0000001f, 0x0000057c, 0x00000551, 0x0004003d, 0x0000001f, 0x0000057d, 0x00000570, - 0x00050094, 0x00000006, 0x0000057e, 0x0000057c, 0x0000057d, 0x0007000c, 0x00000006, 0x0000057f, - 0x00000001, 0x00000028, 0x0000057e, 0x000000df, 0x0004003d, 0x0000001f, 0x00000581, 0x0000050d, - 0x0003003e, 0x00000580, 0x00000581, 0x0003003e, 0x00000582, 0x0000057b, 0x0003003e, 0x00000583, - 0x0000057f, 0x00070039, 0x00000006, 0x00000584, 0x0000006c, 0x00000580, 0x00000582, 0x00000583, - 0x0003003e, 0x00000577, 0x00000584, 0x00060041, 0x000003e2, 0x00000585, 0x00000499, 0x00000571, - 0x000003dc, 0x0004003d, 0x00000006, 0x00000586, 0x00000585, 0x000500ba, 0x000000af, 0x00000587, - 0x00000586, 0x00000122, 0x000300f7, 0x00000589, 0x00000000, 0x000400fa, 0x00000587, 0x00000588, - 0x00000589, 0x000200f8, 0x00000588, 0x00050041, 0x00000572, 0x0000058b, 0x00000499, 0x0000058a, - 0x0004003d, 0x00000016, 0x0000058c, 0x0000058b, 0x0008004f, 0x0000001f, 0x0000058d, 0x0000058c, - 0x0000058c, 0x00000000, 0x00000001, 0x00000002, 0x0006000c, 0x00000006, 0x0000058e, 0x00000001, - 0x00000042, 0x0000058d, 0x000500ba, 0x000000af, 0x0000058f, 0x0000058e, 0x00000319, 0x000200f9, - 0x00000589, 0x000200f8, 0x00000589, 0x000700f5, 0x000000af, 0x00000590, 0x00000587, 0x00000565, - 0x0000058f, 0x00000588, 0x000300f7, 0x00000592, 0x00000000, 0x000400fa, 0x00000590, 0x00000591, - 0x00000592, 0x000200f8, 0x00000591, 0x0004003d, 0x0000001f, 0x00000594, 0x00000551, 0x0003003e, - 0x00000593, 0x00000594, 0x0004003d, 0x0000001f, 0x00000596, 0x0000050a, 0x0003003e, 0x00000595, - 0x00000596, 0x0004003d, 0x0000001f, 0x00000598, 0x00000544, 0x0003003e, 0x00000597, 0x00000598, - 0x0004003d, 0x00000006, 0x0000059a, 0x00000547, 0x0003003e, 0x00000599, 0x0000059a, 0x0004003d, - 0x00000006, 0x0000059c, 0x0000054c, 0x0003003e, 0x0000059b, 0x0000059c, 0x0004003d, 0x0000001f, - 0x0000059e, 0x00000570, 0x0003003e, 0x0000059d, 0x0000059e, 0x00050041, 0x00000572, 0x000005a0, - 0x00000499, 0x0000058a, 0x0004003d, 0x00000016, 0x000005a1, 0x000005a0, 0x0008004f, 0x0000001f, - 0x000005a2, 0x000005a1, 0x000005a1, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x0000059f, - 0x000005a2, 0x000b0039, 0x0000001f, 0x000005a3, 0x00000066, 0x00000593, 0x00000595, 0x00000597, - 0x00000599, 0x0000059b, 0x0000059d, 0x0000059f, 0x0004003d, 0x00000006, 0x000005a4, 0x00000577, - 0x0005008e, 0x0000001f, 0x000005a5, 0x000005a3, 0x000005a4, 0x0004003d, 0x0000001f, 0x000005a6, - 0x0000056f, 0x00050081, 0x0000001f, 0x000005a7, 0x000005a6, 0x000005a5, 0x0003003e, 0x0000056f, - 0x000005a7, 0x000200f9, 0x00000592, 0x000200f8, 0x00000592, 0x00040039, 0x0000006e, 0x000005aa, - 0x00000070, 0x0003003e, 0x000005a9, 0x000005aa, 0x0004003d, 0x0000006e, 0x000005b2, 0x000005a9, - 0x00060041, 0x000005b3, 0x000005b4, 0x000005b1, 0x000000e4, 0x000005b2, 0x0004003d, 0x000005ab, - 0x000005b5, 0x000005b4, 0x0003003e, 0x000005ad, 0x000005b5, 0x00050041, 0x000005a8, 0x000005b7, - 0x000005ad, 0x00000097, 0x0004003d, 0x0000006e, 0x000005b8, 0x000005b7, 0x0003003e, 0x000005b6, - 0x000005b8, 0x00050041, 0x000005a8, 0x000005ba, 0x000005ad, 0x0000009c, 0x0004003d, 0x0000006e, - 0x000005bb, 0x000005ba, 0x0007000c, 0x0000006e, 0x000005bd, 0x00000001, 0x00000026, 0x000005bb, - 0x000005bc, 0x0003003e, 0x000005b9, 0x000005bd, 0x0003003e, 0x000005be, 0x00000097, 0x000200f9, - 0x000005bf, 0x000200f8, 0x000005bf, 0x000400f6, 0x000005c1, 0x000005c2, 0x00000000, 0x000200f9, - 0x000005c3, 0x000200f8, 0x000005c3, 0x0004003d, 0x0000006e, 0x000005c4, 0x000005be, 0x0004003d, - 0x0000006e, 0x000005c5, 0x000005b9, 0x000500b0, 0x000000af, 0x000005c6, 0x000005c4, 0x000005c5, - 0x000400fa, 0x000005c6, 0x000005c0, 0x000005c1, 0x000200f8, 0x000005c0, 0x0004003d, 0x0000006e, - 0x000005cc, 0x000005b6, 0x0004003d, 0x0000006e, 0x000005cd, 0x000005be, 0x00050080, 0x0000006e, - 0x000005ce, 0x000005cc, 0x000005cd, 0x00060041, 0x000005cf, 0x000005d0, 0x000005cb, 0x000000e4, - 0x000005ce, 0x0004003d, 0x0000006e, 0x000005d1, 0x000005d0, 0x0003003e, 0x000005c7, 0x000005d1, - 0x0004003d, 0x0000006e, 0x000005da, 0x000005c7, 0x00060041, 0x000005db, 0x000005dc, 0x000005d9, - 0x000000e4, 0x000005da, 0x0004003d, 0x000005d5, 0x000005dd, 0x000005dc, 0x00050051, 0x00000016, - 0x000005de, 0x000005dd, 0x00000000, 0x00050041, 0x000000dd, 0x000005df, 0x000005d4, 0x000000e4, - 0x0003003e, 0x000005df, 0x000005de, 0x00050051, 0x00000016, 0x000005e0, 0x000005dd, 0x00000001, - 0x00050041, 0x000000dd, 0x000005e1, 0x000005d4, 0x000000eb, 0x0003003e, 0x000005e1, 0x000005e0, - 0x00050041, 0x000000dd, 0x000005e3, 0x000005d4, 0x000000eb, 0x0004003d, 0x00000016, 0x000005e4, - 0x000005e3, 0x0008004f, 0x0000001f, 0x000005e5, 0x000005e4, 0x000005e4, 0x00000000, 0x00000001, - 0x00000002, 0x0003003e, 0x000005e2, 0x000005e5, 0x00050041, 0x000000dd, 0x000005e7, 0x000005d4, - 0x000000e4, 0x0004003d, 0x00000016, 0x000005e8, 0x000005e7, 0x0008004f, 0x0000001f, 0x000005e9, - 0x000005e8, 0x000005e8, 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x0000001f, 0x000005ea, - 0x0000050d, 0x00050083, 0x0000001f, 0x000005eb, 0x000005e9, 0x000005ea, 0x0003003e, 0x000005e6, - 0x000005eb, 0x0004003d, 0x0000001f, 0x000005ed, 0x000005e6, 0x0006000c, 0x00000006, 0x000005ee, - 0x00000001, 0x00000042, 0x000005ed, 0x0003003e, 0x000005ec, 0x000005ee, 0x0004003d, 0x0000001f, - 0x000005f0, 0x000005e6, 0x0004003d, 0x00000006, 0x000005f1, 0x000005ec, 0x0007000c, 0x00000006, - 0x000005f2, 0x00000001, 0x00000028, 0x000005f1, 0x000000ae, 0x00060050, 0x0000001f, 0x000005f3, - 0x000005f2, 0x000005f2, 0x000005f2, 0x00050088, 0x0000001f, 0x000005f4, 0x000005f0, 0x000005f3, - 0x0003003e, 0x000005ef, 0x000005f4, 0x0004003d, 0x00000006, 0x000005f6, 0x000005ec, 0x00060041, - 0x0000000d, 0x000005f7, 0x000005d4, 0x000000e4, 0x000003dc, 0x0004003d, 0x00000006, 0x000005f8, - 0x000005f7, 0x0007000c, 0x00000006, 0x000005f9, 0x00000001, 0x00000028, 0x000005f8, 0x000000b9, - 0x00050088, 0x00000006, 0x000005fa, 0x000005f6, 0x000005f9, 0x00050083, 0x00000006, 0x000005fb, - 0x0000010d, 0x000005fa, 0x0008000c, 0x00000006, 0x000005fc, 0x00000001, 0x0000002b, 0x000005fb, - 0x000000df, 0x0000010d, 0x0003003e, 0x000005f5, 0x000005fc, 0x0004003d, 0x00000006, 0x000005fd, - 0x000005f5, 0x0004003d, 0x00000006, 0x000005fe, 0x000005f5, 0x00050085, 0x00000006, 0x000005ff, - 0x000005fe, 0x000005fd, 0x0003003e, 0x000005f5, 0x000005ff, 0x0004003d, 0x00000006, 0x00000600, - 0x000005f5, 0x0004003d, 0x0000001f, 0x00000601, 0x000005e2, 0x0005008e, 0x0000001f, 0x00000602, - 0x00000601, 0x00000600, 0x0003003e, 0x000005e2, 0x00000602, 0x0004003d, 0x0000001f, 0x00000604, - 0x00000551, 0x0003003e, 0x00000603, 0x00000604, 0x0004003d, 0x0000001f, 0x00000606, 0x0000050a, - 0x0003003e, 0x00000605, 0x00000606, 0x0004003d, 0x0000001f, 0x00000608, 0x00000544, 0x0003003e, - 0x00000607, 0x00000608, 0x0004003d, 0x00000006, 0x0000060a, 0x00000547, 0x0003003e, 0x00000609, - 0x0000060a, 0x0004003d, 0x00000006, 0x0000060c, 0x0000054c, 0x0003003e, 0x0000060b, 0x0000060c, - 0x0004003d, 0x0000001f, 0x0000060e, 0x000005ef, 0x0003003e, 0x0000060d, 0x0000060e, 0x0004003d, - 0x0000001f, 0x00000610, 0x000005e2, 0x0003003e, 0x0000060f, 0x00000610, 0x000b0039, 0x0000001f, - 0x00000611, 0x00000066, 0x00000603, 0x00000605, 0x00000607, 0x00000609, 0x0000060b, 0x0000060d, - 0x0000060f, 0x0004003d, 0x0000001f, 0x00000612, 0x0000056f, 0x00050081, 0x0000001f, 0x00000613, - 0x00000612, 0x00000611, 0x0003003e, 0x0000056f, 0x00000613, 0x000200f9, 0x000005c2, 0x000200f8, - 0x000005c2, 0x0004003d, 0x0000006e, 0x00000614, 0x000005be, 0x00050080, 0x0000006e, 0x00000615, - 0x00000614, 0x000000eb, 0x0003003e, 0x000005be, 0x00000615, 0x000200f9, 0x000005bf, 0x000200f8, - 0x000005c1, 0x00050041, 0x0000000d, 0x00000617, 0x00000551, 0x0000009c, 0x0004003d, 0x00000006, - 0x00000618, 0x00000617, 0x00050085, 0x00000006, 0x00000619, 0x00000618, 0x00000122, 0x00050081, - 0x00000006, 0x0000061a, 0x00000619, 0x00000122, 0x0008000c, 0x00000006, 0x0000061b, 0x00000001, - 0x0000002b, 0x0000061a, 0x000000df, 0x0000010d, 0x0003003e, 0x00000616, 0x0000061b, 0x00050041, - 0x00000572, 0x0000061d, 0x00000499, 0x00000548, 0x0004003d, 0x00000016, 0x0000061e, 0x0000061d, - 0x0008004f, 0x0000001f, 0x0000061f, 0x0000061e, 0x0000061e, 0x00000000, 0x00000001, 0x00000002, - 0x0004003d, 0x00000006, 0x00000622, 0x00000616, 0x0008000c, 0x00000006, 0x00000623, 0x00000001, - 0x0000002e, 0x00000620, 0x00000621, 0x00000622, 0x0005008e, 0x0000001f, 0x00000624, 0x0000061f, - 0x00000623, 0x0003003e, 0x0000061c, 0x00000624, 0x0004003d, 0x0000001f, 0x00000626, 0x00000544, - 0x0004003d, 0x0000001f, 0x00000627, 0x0000061c, 0x00050085, 0x0000001f, 0x00000628, 0x00000626, - 0x00000627, 0x0004003d, 0x00000006, 0x00000629, 0x00000547, 0x00050083, 0x00000006, 0x0000062a, - 0x0000010d, 0x00000629, 0x0005008e, 0x0000001f, 0x0000062b, 0x00000628, 0x0000062a, 0x0004003d, - 0x0000001f, 0x0000062c, 0x0000056f, 0x00050081, 0x0000001f, 0x0000062d, 0x0000062b, 0x0000062c, - 0x0003003e, 0x00000625, 0x0000062d, 0x00060041, 0x000003e2, 0x0000062f, 0x00000499, 0x0000058a, - 0x000003dc, 0x0004003d, 0x00000006, 0x00000630, 0x0000062f, 0x0003003e, 0x0000062e, 0x00000630, - 0x0004003d, 0x00000006, 0x00000631, 0x0000062e, 0x000500ba, 0x000000af, 0x00000632, 0x00000631, - 0x000000ae, 0x000300f7, 0x00000634, 0x00000000, 0x000400fa, 0x00000632, 0x00000633, 0x00000634, - 0x000200f8, 0x00000633, 0x0004003d, 0x0000001f, 0x00000636, 0x0000050a, 0x0004007f, 0x0000001f, - 0x00000637, 0x00000636, 0x0004003d, 0x0000001f, 0x00000638, 0x00000551, 0x0007000c, 0x0000001f, - 0x00000639, 0x00000001, 0x00000047, 0x00000637, 0x00000638, 0x0003003e, 0x00000635, 0x00000639, - 0x0004003d, 0x00000006, 0x0000063b, 0x0000054c, 0x00050085, 0x00000006, 0x0000063c, 0x0000063b, - 0x000002e4, 0x0003003e, 0x0000063a, 0x0000063c, 0x0004003d, 0x0000063f, 0x00000642, 0x00000641, - 0x0004003d, 0x0000001f, 0x00000643, 0x00000635, 0x0004003d, 0x00000006, 0x00000644, 0x0000063a, - 0x00070058, 0x00000016, 0x00000645, 0x00000642, 0x00000643, 0x00000002, 0x00000644, 0x0008004f, - 0x0000001f, 0x00000646, 0x00000645, 0x00000645, 0x00000000, 0x00000001, 0x00000002, 0x0004003d, - 0x00000006, 0x00000647, 0x0000062e, 0x0005008e, 0x0000001f, 0x00000648, 0x00000646, 0x00000647, - 0x0003003e, 0x0000063d, 0x00000648, 0x0004003d, 0x0000001f, 0x0000064a, 0x00000544, 0x0004003d, - 0x00000006, 0x0000064b, 0x00000547, 0x00060050, 0x0000001f, 0x0000064c, 0x0000064b, 0x0000064b, - 0x0000064b, 0x0008000c, 0x0000001f, 0x0000064d, 0x00000001, 0x0000002e, 0x00000396, 0x0000064a, - 0x0000064c, 0x0003003e, 0x00000649, 0x0000064d, 0x0004003d, 0x0000001f, 0x0000064f, 0x00000551, - 0x0004003d, 0x0000001f, 0x00000650, 0x0000050a, 0x00050094, 0x00000006, 0x00000651, 0x0000064f, - 0x00000650, 0x0007000c, 0x00000006, 0x00000652, 0x00000001, 0x00000028, 0x00000651, 0x000000df, - 0x0003003e, 0x00000653, 0x00000652, 0x0004003d, 0x0000001f, 0x00000655, 0x00000649, 0x0003003e, - 0x00000654, 0x00000655, 0x00060039, 0x0000001f, 0x00000656, 0x00000055, 0x00000653, 0x00000654, - 0x0003003e, 0x0000064e, 0x00000656, 0x0004003d, 0x0000001f, 0x00000657, 0x0000063d, 0x0004003d, - 0x0000001f, 0x00000658, 0x0000064e, 0x00050085, 0x0000001f, 0x00000659, 0x00000657, 0x00000658, - 0x0004003d, 0x0000001f, 0x0000065a, 0x00000625, 0x00050081, 0x0000001f, 0x0000065b, 0x0000065a, - 0x00000659, 0x0003003e, 0x00000625, 0x0000065b, 0x0004003d, 0x0000063f, 0x0000065d, 0x00000641, - 0x0004003d, 0x0000001f, 0x0000065e, 0x00000551, 0x00070058, 0x00000016, 0x0000065f, 0x0000065d, - 0x0000065e, 0x00000002, 0x000002e4, 0x0008004f, 0x0000001f, 0x00000660, 0x0000065f, 0x0000065f, - 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x00000006, 0x00000661, 0x0000062e, 0x0005008e, - 0x0000001f, 0x00000662, 0x00000660, 0x00000661, 0x0003003e, 0x0000065c, 0x00000662, 0x0004003d, - 0x0000001f, 0x00000663, 0x00000544, 0x0004003d, 0x0000001f, 0x00000664, 0x0000065c, 0x00050085, - 0x0000001f, 0x00000665, 0x00000663, 0x00000664, 0x0004003d, 0x00000006, 0x00000666, 0x00000547, - 0x00050083, 0x00000006, 0x00000667, 0x0000010d, 0x00000666, 0x0005008e, 0x0000001f, 0x00000668, - 0x00000665, 0x00000667, 0x0004003d, 0x0000001f, 0x00000669, 0x0000064e, 0x00060050, 0x0000001f, - 0x0000066a, 0x0000010d, 0x0000010d, 0x0000010d, 0x00050083, 0x0000001f, 0x0000066b, 0x0000066a, - 0x00000669, 0x00050085, 0x0000001f, 0x0000066c, 0x00000668, 0x0000066b, 0x0005008e, 0x0000001f, - 0x0000066e, 0x0000066c, 0x0000066d, 0x0004003d, 0x0000001f, 0x0000066f, 0x00000625, 0x00050081, - 0x0000001f, 0x00000670, 0x0000066f, 0x0000066e, 0x0003003e, 0x00000625, 0x00000670, 0x000200f9, - 0x00000634, 0x000200f8, 0x00000634, 0x0004003d, 0x0000001f, 0x00000672, 0x00000625, 0x0003003e, - 0x00000671, 0x00000672, 0x00050039, 0x0000001f, 0x00000673, 0x0000003e, 0x00000671, 0x0003003e, - 0x00000625, 0x00000673, 0x0004003d, 0x0000001f, 0x00000676, 0x00000625, 0x00050041, 0x0000000d, - 0x00000677, 0x00000530, 0x000003dc, 0x0004003d, 0x00000006, 0x00000678, 0x00000677, 0x00050051, - 0x00000006, 0x00000679, 0x00000676, 0x00000000, 0x00050051, 0x00000006, 0x0000067a, 0x00000676, - 0x00000001, 0x00050051, 0x00000006, 0x0000067b, 0x00000676, 0x00000002, 0x00070050, 0x00000016, - 0x0000067c, 0x00000679, 0x0000067a, 0x0000067b, 0x00000678, 0x0003003e, 0x00000675, 0x0000067c, - 0x000100fd, 0x00010038, 0x00050036, 0x00000007, 0x0000000b, 0x00000000, 0x00000009, 0x00030037, - 0x00000008, 0x0000000a, 0x000200f8, 0x0000000c, 0x0004003b, 0x00000020, 0x00000072, 0x00000007, - 0x0004003d, 0x00000007, 0x00000073, 0x0000000a, 0x0008004f, 0x0000001f, 0x00000074, 0x00000073, - 0x00000073, 0x00000000, 0x00000001, 0x00000000, 0x00050085, 0x0000001f, 0x00000079, 0x00000074, - 0x00000078, 0x0006000c, 0x0000001f, 0x0000007a, 0x00000001, 0x0000000a, 0x00000079, 0x0003003e, - 0x00000072, 0x0000007a, 0x0004003d, 0x0000001f, 0x0000007b, 0x00000072, 0x0004003d, 0x0000001f, - 0x0000007c, 0x00000072, 0x0008004f, 0x0000001f, 0x0000007d, 0x0000007c, 0x0000007c, 0x00000001, - 0x00000002, 0x00000000, 0x00060050, 0x0000001f, 0x0000007f, 0x0000007e, 0x0000007e, 0x0000007e, - 0x00050081, 0x0000001f, 0x00000080, 0x0000007d, 0x0000007f, 0x00050094, 0x00000006, 0x00000081, - 0x0000007b, 0x00000080, 0x0004003d, 0x0000001f, 0x00000082, 0x00000072, 0x00060050, 0x0000001f, - 0x00000083, 0x00000081, 0x00000081, 0x00000081, 0x00050081, 0x0000001f, 0x00000084, 0x00000082, - 0x00000083, 0x0003003e, 0x00000072, 0x00000084, 0x0004003d, 0x0000001f, 0x00000085, 0x00000072, - 0x0007004f, 0x00000007, 0x00000086, 0x00000085, 0x00000085, 0x00000000, 0x00000000, 0x0004003d, - 0x0000001f, 0x00000087, 0x00000072, 0x0007004f, 0x00000007, 0x00000088, 0x00000087, 0x00000087, - 0x00000001, 0x00000002, 0x00050081, 0x00000007, 0x00000089, 0x00000086, 0x00000088, 0x0004003d, - 0x0000001f, 0x0000008a, 0x00000072, 0x0007004f, 0x00000007, 0x0000008b, 0x0000008a, 0x0000008a, - 0x00000002, 0x00000001, 0x00050085, 0x00000007, 0x0000008c, 0x00000089, 0x0000008b, 0x0006000c, - 0x00000007, 0x0000008d, 0x00000001, 0x0000000a, 0x0000008c, 0x000200fe, 0x0000008d, 0x00010038, - 0x00050036, 0x00000007, 0x00000011, 0x00000000, 0x0000000e, 0x00030037, 0x00000008, 0x0000000f, - 0x00030037, 0x0000000d, 0x00000010, 0x000200f8, 0x00000012, 0x0004003b, 0x0000000d, 0x00000090, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000093, 0x00000007, 0x0004003d, 0x00000006, 0x00000091, - 0x00000010, 0x0006000c, 0x00000006, 0x00000092, 0x00000001, 0x0000000d, 0x00000091, 0x0003003e, - 0x00000090, 0x00000092, 0x0004003d, 0x00000006, 0x00000094, 0x00000010, 0x0006000c, 0x00000006, - 0x00000095, 0x00000001, 0x0000000e, 0x00000094, 0x0003003e, 0x00000093, 0x00000095, 0x0004003d, - 0x00000006, 0x00000096, 0x00000093, 0x00050041, 0x0000000d, 0x00000098, 0x0000000f, 0x00000097, - 0x0004003d, 0x00000006, 0x00000099, 0x00000098, 0x00050085, 0x00000006, 0x0000009a, 0x00000096, - 0x00000099, 0x0004003d, 0x00000006, 0x0000009b, 0x00000090, 0x00050041, 0x0000000d, 0x0000009d, - 0x0000000f, 0x0000009c, 0x0004003d, 0x00000006, 0x0000009e, 0x0000009d, 0x00050085, 0x00000006, - 0x0000009f, 0x0000009b, 0x0000009e, 0x00050083, 0x00000006, 0x000000a0, 0x0000009a, 0x0000009f, - 0x0004003d, 0x00000006, 0x000000a1, 0x00000090, 0x00050041, 0x0000000d, 0x000000a2, 0x0000000f, - 0x00000097, 0x0004003d, 0x00000006, 0x000000a3, 0x000000a2, 0x00050085, 0x00000006, 0x000000a4, - 0x000000a1, 0x000000a3, 0x0004003d, 0x00000006, 0x000000a5, 0x00000093, 0x00050041, 0x0000000d, - 0x000000a6, 0x0000000f, 0x0000009c, 0x0004003d, 0x00000006, 0x000000a7, 0x000000a6, 0x00050085, - 0x00000006, 0x000000a8, 0x000000a5, 0x000000a7, 0x00050081, 0x00000006, 0x000000a9, 0x000000a4, - 0x000000a8, 0x00050050, 0x00000007, 0x000000aa, 0x000000a0, 0x000000a9, 0x000200fe, 0x000000aa, - 0x00010038, 0x00050036, 0x00000016, 0x0000001d, 0x00000000, 0x00000017, 0x00030037, 0x00000015, - 0x00000018, 0x00030037, 0x00000008, 0x00000019, 0x00030037, 0x0000000d, 0x0000001a, 0x00030037, - 0x0000000d, 0x0000001b, 0x00030037, 0x0000000d, 0x0000001c, 0x000200f8, 0x0000001e, 0x0004003b, - 0x0000000d, 0x000000b7, 0x00000007, 0x0004003b, 0x00000008, 0x000000bb, 0x00000007, 0x0004003b, - 0x00000008, 0x000000be, 0x00000007, 0x0004003b, 0x00000008, 0x000000c1, 0x00000007, 0x0004003b, - 0x00000008, 0x000000c5, 0x00000007, 0x0004003b, 0x00000008, 0x000000c8, 0x00000007, 0x0004003b, - 0x00000008, 0x000000cb, 0x00000007, 0x0004003b, 0x000000dd, 0x000000de, 0x00000007, 0x0004003b, - 0x000000e2, 0x000000e3, 0x00000007, 0x0004003b, 0x000000e2, 0x000000ed, 0x00000007, 0x0004003b, - 0x00000008, 0x000000f5, 0x00000007, 0x0004003b, 0x00000008, 0x000000fd, 0x00000007, 0x0004003b, - 0x00000008, 0x000000fe, 0x00000007, 0x0004003b, 0x00000008, 0x00000101, 0x00000007, 0x0004003b, - 0x00000008, 0x00000107, 0x00000007, 0x0004003b, 0x00000008, 0x00000109, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000114, 0x00000007, 0x0004003b, 0x00000008, 0x00000120, 0x00000007, 0x0004003b, - 0x00000008, 0x00000128, 0x00000007, 0x0004003b, 0x00000008, 0x0000012d, 0x00000007, 0x0004003b, - 0x0000000d, 0x0000012e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000134, 0x00000007, 0x0004003d, - 0x00000006, 0x000000ad, 0x0000001b, 0x000500b8, 0x000000af, 0x000000b0, 0x000000ad, 0x000000ae, - 0x000300f7, 0x000000b2, 0x00000000, 0x000400fa, 0x000000b0, 0x000000b1, 0x000000b2, 0x000200f8, - 0x000000b1, 0x0004003d, 0x00000014, 0x000000b3, 0x00000018, 0x0004003d, 0x00000007, 0x000000b4, - 0x00000019, 0x00050057, 0x00000016, 0x000000b5, 0x000000b3, 0x000000b4, 0x000200fe, 0x000000b5, - 0x000200f8, 0x000000b2, 0x0004003d, 0x00000006, 0x000000b8, 0x0000001a, 0x0007000c, 0x00000006, - 0x000000ba, 0x00000001, 0x00000028, 0x000000b8, 0x000000b9, 0x0003003e, 0x000000b7, 0x000000ba, - 0x0004003d, 0x00000007, 0x000000bc, 0x00000019, 0x000400cf, 0x00000007, 0x000000bd, 0x000000bc, - 0x0003003e, 0x000000bb, 0x000000bd, 0x0004003d, 0x00000007, 0x000000bf, 0x00000019, 0x000400d0, - 0x00000007, 0x000000c0, 0x000000bf, 0x0003003e, 0x000000be, 0x000000c0, 0x0004003d, 0x00000007, - 0x000000c2, 0x00000019, 0x0004003d, 0x00000006, 0x000000c3, 0x000000b7, 0x0005008e, 0x00000007, - 0x000000c4, 0x000000c2, 0x000000c3, 0x0003003e, 0x000000c1, 0x000000c4, 0x0004003d, 0x00000007, - 0x000000c6, 0x000000c1, 0x0006000c, 0x00000007, 0x000000c7, 0x00000001, 0x00000008, 0x000000c6, - 0x0003003e, 0x000000c5, 0x000000c7, 0x0004003d, 0x00000007, 0x000000c9, 0x000000c1, 0x0006000c, - 0x00000007, 0x000000ca, 0x00000001, 0x0000000a, 0x000000c9, 0x0003003e, 0x000000c8, 0x000000ca, - 0x0004003d, 0x00000007, 0x000000cc, 0x000000c8, 0x0004003d, 0x00000007, 0x000000cd, 0x000000c8, - 0x00050085, 0x00000007, 0x000000ce, 0x000000cc, 0x000000cd, 0x0004003d, 0x00000007, 0x000000cf, - 0x000000c8, 0x00050085, 0x00000007, 0x000000d0, 0x000000ce, 0x000000cf, 0x0004003d, 0x00000007, - 0x000000d1, 0x000000c8, 0x0004003d, 0x00000007, 0x000000d2, 0x000000c8, 0x0005008e, 0x00000007, - 0x000000d4, 0x000000d2, 0x000000d3, 0x00050050, 0x00000007, 0x000000d6, 0x000000d5, 0x000000d5, - 0x00050083, 0x00000007, 0x000000d7, 0x000000d4, 0x000000d6, 0x00050085, 0x00000007, 0x000000d8, - 0x000000d1, 0x000000d7, 0x00050050, 0x00000007, 0x000000da, 0x000000d9, 0x000000d9, 0x00050081, - 0x00000007, 0x000000db, 0x000000d8, 0x000000da, 0x00050085, 0x00000007, 0x000000dc, 0x000000d0, - 0x000000db, 0x0003003e, 0x000000cb, 0x000000dc, 0x0003003e, 0x000000de, 0x000000e0, 0x0003003e, - 0x000000e3, 0x000000e4, 0x000200f9, 0x000000e5, 0x000200f8, 0x000000e5, 0x000400f6, 0x000000e7, - 0x000000e8, 0x00000000, 0x000200f9, 0x000000e9, 0x000200f8, 0x000000e9, 0x0004003d, 0x000000e1, - 0x000000ea, 0x000000e3, 0x000500b3, 0x000000af, 0x000000ec, 0x000000ea, 0x000000eb, 0x000400fa, - 0x000000ec, 0x000000e6, 0x000000e7, 0x000200f8, 0x000000e6, 0x0003003e, 0x000000ed, 0x000000e4, - 0x000200f9, 0x000000ee, 0x000200f8, 0x000000ee, 0x000400f6, 0x000000f0, 0x000000f1, 0x00000000, - 0x000200f9, 0x000000f2, 0x000200f8, 0x000000f2, 0x0004003d, 0x000000e1, 0x000000f3, 0x000000ed, - 0x000500b3, 0x000000af, 0x000000f4, 0x000000f3, 0x000000eb, 0x000400fa, 0x000000f4, 0x000000ef, - 0x000000f0, 0x000200f8, 0x000000ef, 0x0004003d, 0x00000007, 0x000000f6, 0x000000c5, 0x0004003d, - 0x000000e1, 0x000000f7, 0x000000ed, 0x0004006f, 0x00000006, 0x000000f8, 0x000000f7, 0x0004003d, - 0x000000e1, 0x000000f9, 0x000000e3, 0x0004006f, 0x00000006, 0x000000fa, 0x000000f9, 0x00050050, - 0x00000007, 0x000000fb, 0x000000f8, 0x000000fa, 0x00050081, 0x00000007, 0x000000fc, 0x000000f6, - 0x000000fb, 0x0003003e, 0x000000f5, 0x000000fc, 0x0004003d, 0x00000007, 0x000000ff, 0x000000f5, - 0x0003003e, 0x000000fe, 0x000000ff, 0x00050039, 0x00000007, 0x00000100, 0x0000000b, 0x000000fe, - 0x0003003e, 0x000000fd, 0x00000100, 0x0004003d, 0x00000007, 0x00000102, 0x000000f5, 0x00050081, - 0x00000007, 0x00000106, 0x00000102, 0x00000105, 0x0003003e, 0x00000107, 0x00000106, 0x00050039, - 0x00000007, 0x00000108, 0x0000000b, 0x00000107, 0x0003003e, 0x00000101, 0x00000108, 0x0004003d, - 0x00000007, 0x0000010a, 0x000000fd, 0x0005008e, 0x00000007, 0x0000010c, 0x0000010a, 0x0000010b, - 0x00050050, 0x00000007, 0x0000010e, 0x0000010d, 0x0000010d, 0x00050083, 0x00000007, 0x0000010f, - 0x0000010c, 0x0000010e, 0x0004003d, 0x00000006, 0x00000110, 0x0000001b, 0x0004003d, 0x00000006, - 0x00000111, 0x000000b7, 0x00050088, 0x00000006, 0x00000112, 0x00000110, 0x00000111, 0x0005008e, - 0x00000007, 0x00000113, 0x0000010f, 0x00000112, 0x0003003e, 0x00000109, 0x00000113, 0x00050041, - 0x0000000d, 0x00000115, 0x00000101, 0x00000097, 0x0004003d, 0x00000006, 0x00000116, 0x00000115, - 0x00050085, 0x00000006, 0x00000117, 0x00000116, 0x0000010b, 0x00050083, 0x00000006, 0x00000118, - 0x00000117, 0x0000010d, 0x00050085, 0x00000006, 0x0000011a, 0x00000118, 0x00000119, 0x0004003d, - 0x00000006, 0x0000011b, 0x0000001c, 0x0008000c, 0x00000006, 0x0000011c, 0x00000001, 0x0000002b, - 0x0000011b, 0x000000df, 0x0000010d, 0x00050085, 0x00000006, 0x0000011d, 0x0000011a, 0x0000011c, - 0x0004003d, 0x00000006, 0x0000011e, 0x0000001b, 0x00050085, 0x00000006, 0x0000011f, 0x0000011d, - 0x0000011e, 0x0003003e, 0x00000114, 0x0000011f, 0x0004003d, 0x00000007, 0x00000121, 0x000000f5, - 0x00050081, 0x00000007, 0x00000124, 0x00000121, 0x00000123, 0x0004003d, 0x00000006, 0x00000125, - 0x000000b7, 0x00050050, 0x00000007, 0x00000126, 0x00000125, 0x00000125, 0x00050088, 0x00000007, - 0x00000127, 0x00000124, 0x00000126, 0x0003003e, 0x00000120, 0x00000127, 0x0004003d, 0x00000007, - 0x00000129, 0x00000120, 0x0004003d, 0x00000007, 0x0000012a, 0x00000019, 0x0004003d, 0x00000007, - 0x0000012b, 0x00000120, 0x00050083, 0x00000007, 0x0000012c, 0x0000012a, 0x0000012b, 0x0003003e, - 0x0000012d, 0x0000012c, 0x0004003d, 0x00000006, 0x0000012f, 0x00000114, 0x0003003e, 0x0000012e, - 0x0000012f, 0x00060039, 0x00000007, 0x00000130, 0x00000011, 0x0000012d, 0x0000012e, 0x00050081, - 0x00000007, 0x00000131, 0x00000129, 0x00000130, 0x0004003d, 0x00000007, 0x00000132, 0x00000109, - 0x00050081, 0x00000007, 0x00000133, 0x00000131, 0x00000132, 0x0003003e, 0x00000128, 0x00000133, - 0x00050041, 0x0000000d, 0x00000135, 0x000000cb, 0x00000097, 0x0004003d, 0x00000006, 0x00000136, - 0x00000135, 0x00050083, 0x00000006, 0x00000137, 0x0000010d, 0x00000136, 0x00050041, 0x0000000d, - 0x00000138, 0x000000cb, 0x00000097, 0x0004003d, 0x00000006, 0x00000139, 0x00000138, 0x0004003d, - 0x000000e1, 0x0000013a, 0x000000ed, 0x0004006f, 0x00000006, 0x0000013b, 0x0000013a, 0x0008000c, - 0x00000006, 0x0000013c, 0x00000001, 0x0000002e, 0x00000137, 0x00000139, 0x0000013b, 0x00050041, - 0x0000000d, 0x0000013d, 0x000000cb, 0x0000009c, 0x0004003d, 0x00000006, 0x0000013e, 0x0000013d, - 0x00050083, 0x00000006, 0x0000013f, 0x0000010d, 0x0000013e, 0x00050041, 0x0000000d, 0x00000140, - 0x000000cb, 0x0000009c, 0x0004003d, 0x00000006, 0x00000141, 0x00000140, 0x0004003d, 0x000000e1, - 0x00000142, 0x000000e3, 0x0004006f, 0x00000006, 0x00000143, 0x00000142, 0x0008000c, 0x00000006, - 0x00000144, 0x00000001, 0x0000002e, 0x0000013f, 0x00000141, 0x00000143, 0x00050085, 0x00000006, - 0x00000145, 0x0000013c, 0x00000144, 0x0003003e, 0x00000134, 0x00000145, 0x0004003d, 0x00000014, - 0x00000146, 0x00000018, 0x0004003d, 0x00000007, 0x00000147, 0x00000128, 0x0004003d, 0x00000007, - 0x00000148, 0x000000bb, 0x0004003d, 0x00000007, 0x00000149, 0x000000be, 0x00080058, 0x00000016, - 0x0000014a, 0x00000146, 0x00000147, 0x00000004, 0x00000148, 0x00000149, 0x0004003d, 0x00000006, - 0x0000014b, 0x00000134, 0x0005008e, 0x00000016, 0x0000014c, 0x0000014a, 0x0000014b, 0x0004003d, - 0x00000016, 0x0000014d, 0x000000de, 0x00050081, 0x00000016, 0x0000014e, 0x0000014d, 0x0000014c, - 0x0003003e, 0x000000de, 0x0000014e, 0x000200f9, 0x000000f1, 0x000200f8, 0x000000f1, 0x0004003d, - 0x000000e1, 0x0000014f, 0x000000ed, 0x00050080, 0x000000e1, 0x00000150, 0x0000014f, 0x000000eb, - 0x0003003e, 0x000000ed, 0x00000150, 0x000200f9, 0x000000ee, 0x000200f8, 0x000000f0, 0x000200f9, - 0x000000e8, 0x000200f8, 0x000000e8, 0x0004003d, 0x000000e1, 0x00000151, 0x000000e3, 0x00050080, - 0x000000e1, 0x00000152, 0x00000151, 0x000000eb, 0x0003003e, 0x000000e3, 0x00000152, 0x000200f9, - 0x000000e5, 0x000200f8, 0x000000e7, 0x0004003d, 0x00000016, 0x00000153, 0x000000de, 0x000200fe, - 0x00000153, 0x00010038, 0x00050036, 0x00000021, 0x00000026, 0x00000000, 0x00000022, 0x00030037, - 0x00000020, 0x00000023, 0x00030037, 0x00000020, 0x00000024, 0x00030037, 0x00000008, 0x00000025, - 0x000200f8, 0x00000027, 0x0004003b, 0x00000020, 0x00000156, 0x00000007, 0x0004003b, 0x00000020, - 0x00000159, 0x00000007, 0x0004003b, 0x00000020, 0x0000015c, 0x00000007, 0x0004003b, 0x00000008, - 0x0000015f, 0x00000007, 0x0004003b, 0x00000008, 0x00000162, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000165, 0x00000007, 0x0004003b, 0x00000020, 0x00000187, 0x00000007, 0x0004003b, 0x00000020, - 0x00000196, 0x00000007, 0x0004003d, 0x0000001f, 0x00000157, 0x00000023, 0x0006000c, 0x0000001f, - 0x00000158, 0x00000001, 0x00000045, 0x00000157, 0x0003003e, 0x00000156, 0x00000158, 0x0004003d, - 0x0000001f, 0x0000015a, 0x00000024, 0x000400cf, 0x0000001f, 0x0000015b, 0x0000015a, 0x0003003e, - 0x00000159, 0x0000015b, 0x0004003d, 0x0000001f, 0x0000015d, 0x00000024, 0x000400d0, 0x0000001f, - 0x0000015e, 0x0000015d, 0x0003003e, 0x0000015c, 0x0000015e, 0x0004003d, 0x00000007, 0x00000160, - 0x00000025, 0x000400cf, 0x00000007, 0x00000161, 0x00000160, 0x0003003e, 0x0000015f, 0x00000161, - 0x0004003d, 0x00000007, 0x00000163, 0x00000025, 0x000400d0, 0x00000007, 0x00000164, 0x00000163, - 0x0003003e, 0x00000162, 0x00000164, 0x00050041, 0x0000000d, 0x00000166, 0x0000015f, 0x00000097, - 0x0004003d, 0x00000006, 0x00000167, 0x00000166, 0x00050041, 0x0000000d, 0x00000168, 0x00000162, - 0x0000009c, 0x0004003d, 0x00000006, 0x00000169, 0x00000168, 0x00050085, 0x00000006, 0x0000016a, - 0x00000167, 0x00000169, 0x00050041, 0x0000000d, 0x0000016b, 0x00000162, 0x00000097, 0x0004003d, - 0x00000006, 0x0000016c, 0x0000016b, 0x00050041, 0x0000000d, 0x0000016d, 0x0000015f, 0x0000009c, - 0x0004003d, 0x00000006, 0x0000016e, 0x0000016d, 0x00050085, 0x00000006, 0x0000016f, 0x0000016c, - 0x0000016e, 0x00050083, 0x00000006, 0x00000170, 0x0000016a, 0x0000016f, 0x0003003e, 0x00000165, - 0x00000170, 0x0004003d, 0x00000006, 0x00000171, 0x00000165, 0x0006000c, 0x00000006, 0x00000172, - 0x00000001, 0x00000004, 0x00000171, 0x000500b8, 0x000000af, 0x00000174, 0x00000172, 0x00000173, - 0x000300f7, 0x00000176, 0x00000000, 0x000400fa, 0x00000174, 0x00000175, 0x00000176, 0x000200f8, - 0x00000175, 0x0004003d, 0x0000001f, 0x00000178, 0x00000156, 0x00050051, 0x00000006, 0x00000179, - 0x00000177, 0x00000000, 0x00050051, 0x00000006, 0x0000017a, 0x00000177, 0x00000001, 0x00050051, - 0x00000006, 0x0000017b, 0x00000177, 0x00000002, 0x00050051, 0x00000006, 0x0000017c, 0x00000177, - 0x00000000, 0x00050051, 0x00000006, 0x0000017d, 0x00000177, 0x00000001, 0x00050051, 0x00000006, - 0x0000017e, 0x00000177, 0x00000002, 0x00050051, 0x00000006, 0x0000017f, 0x00000178, 0x00000000, - 0x00050051, 0x00000006, 0x00000180, 0x00000178, 0x00000001, 0x00050051, 0x00000006, 0x00000181, - 0x00000178, 0x00000002, 0x00060050, 0x0000001f, 0x00000182, 0x00000179, 0x0000017a, 0x0000017b, - 0x00060050, 0x0000001f, 0x00000183, 0x0000017c, 0x0000017d, 0x0000017e, 0x00060050, 0x0000001f, - 0x00000184, 0x0000017f, 0x00000180, 0x00000181, 0x00060050, 0x00000021, 0x00000185, 0x00000182, - 0x00000183, 0x00000184, 0x000200fe, 0x00000185, 0x000200f8, 0x00000176, 0x0004003d, 0x0000001f, - 0x00000188, 0x0000015c, 0x0004003d, 0x0000001f, 0x00000189, 0x00000156, 0x0007000c, 0x0000001f, - 0x0000018a, 0x00000001, 0x00000044, 0x00000188, 0x00000189, 0x00050041, 0x0000000d, 0x0000018b, - 0x0000015f, 0x00000097, 0x0004003d, 0x00000006, 0x0000018c, 0x0000018b, 0x0005008e, 0x0000001f, - 0x0000018d, 0x0000018a, 0x0000018c, 0x0004003d, 0x0000001f, 0x0000018e, 0x00000156, 0x0004003d, - 0x0000001f, 0x0000018f, 0x00000159, 0x0007000c, 0x0000001f, 0x00000190, 0x00000001, 0x00000044, - 0x0000018e, 0x0000018f, 0x00050041, 0x0000000d, 0x00000191, 0x00000162, 0x00000097, 0x0004003d, - 0x00000006, 0x00000192, 0x00000191, 0x0005008e, 0x0000001f, 0x00000193, 0x00000190, 0x00000192, - 0x00050081, 0x0000001f, 0x00000194, 0x0000018d, 0x00000193, 0x0006000c, 0x0000001f, 0x00000195, - 0x00000001, 0x00000045, 0x00000194, 0x0003003e, 0x00000187, 0x00000195, 0x0004003d, 0x0000001f, - 0x00000197, 0x0000015c, 0x0004003d, 0x0000001f, 0x00000198, 0x00000156, 0x0007000c, 0x0000001f, - 0x00000199, 0x00000001, 0x00000044, 0x00000197, 0x00000198, 0x00050041, 0x0000000d, 0x0000019a, - 0x0000015f, 0x0000009c, 0x0004003d, 0x00000006, 0x0000019b, 0x0000019a, 0x0005008e, 0x0000001f, - 0x0000019c, 0x00000199, 0x0000019b, 0x0004003d, 0x0000001f, 0x0000019d, 0x00000156, 0x0004003d, - 0x0000001f, 0x0000019e, 0x00000159, 0x0007000c, 0x0000001f, 0x0000019f, 0x00000001, 0x00000044, - 0x0000019d, 0x0000019e, 0x00050041, 0x0000000d, 0x000001a0, 0x00000162, 0x0000009c, 0x0004003d, - 0x00000006, 0x000001a1, 0x000001a0, 0x0005008e, 0x0000001f, 0x000001a2, 0x0000019f, 0x000001a1, - 0x00050081, 0x0000001f, 0x000001a3, 0x0000019c, 0x000001a2, 0x0006000c, 0x0000001f, 0x000001a4, - 0x00000001, 0x00000045, 0x000001a3, 0x0003003e, 0x00000196, 0x000001a4, 0x0004003d, 0x0000001f, - 0x000001a5, 0x00000187, 0x0006000c, 0x00000006, 0x000001a6, 0x00000001, 0x00000042, 0x000001a5, - 0x000500b8, 0x000000af, 0x000001a7, 0x000001a6, 0x000000ae, 0x000400a8, 0x000000af, 0x000001a8, - 0x000001a7, 0x000300f7, 0x000001aa, 0x00000000, 0x000400fa, 0x000001a8, 0x000001a9, 0x000001aa, - 0x000200f8, 0x000001a9, 0x0004003d, 0x0000001f, 0x000001ab, 0x00000196, 0x0006000c, 0x00000006, - 0x000001ac, 0x00000001, 0x00000042, 0x000001ab, 0x000500b8, 0x000000af, 0x000001ad, 0x000001ac, - 0x000000ae, 0x000200f9, 0x000001aa, 0x000200f8, 0x000001aa, 0x000700f5, 0x000000af, 0x000001ae, - 0x000001a7, 0x00000176, 0x000001ad, 0x000001a9, 0x000300f7, 0x000001b0, 0x00000000, 0x000400fa, - 0x000001ae, 0x000001af, 0x000001b0, 0x000200f8, 0x000001af, 0x0004003d, 0x0000001f, 0x000001b1, - 0x00000156, 0x00050051, 0x00000006, 0x000001b2, 0x00000177, 0x00000000, 0x00050051, 0x00000006, - 0x000001b3, 0x00000177, 0x00000001, 0x00050051, 0x00000006, 0x000001b4, 0x00000177, 0x00000002, - 0x00050051, 0x00000006, 0x000001b5, 0x00000177, 0x00000000, 0x00050051, 0x00000006, 0x000001b6, - 0x00000177, 0x00000001, 0x00050051, 0x00000006, 0x000001b7, 0x00000177, 0x00000002, 0x00050051, - 0x00000006, 0x000001b8, 0x000001b1, 0x00000000, 0x00050051, 0x00000006, 0x000001b9, 0x000001b1, - 0x00000001, 0x00050051, 0x00000006, 0x000001ba, 0x000001b1, 0x00000002, 0x00060050, 0x0000001f, - 0x000001bb, 0x000001b2, 0x000001b3, 0x000001b4, 0x00060050, 0x0000001f, 0x000001bc, 0x000001b5, - 0x000001b6, 0x000001b7, 0x00060050, 0x0000001f, 0x000001bd, 0x000001b8, 0x000001b9, 0x000001ba, - 0x00060050, 0x00000021, 0x000001be, 0x000001bb, 0x000001bc, 0x000001bd, 0x000200fe, 0x000001be, - 0x000200f8, 0x000001b0, 0x0004003d, 0x0000001f, 0x000001c0, 0x00000187, 0x0004003d, 0x0000001f, - 0x000001c1, 0x00000196, 0x0004003d, 0x0000001f, 0x000001c2, 0x00000156, 0x00050051, 0x00000006, - 0x000001c3, 0x000001c0, 0x00000000, 0x00050051, 0x00000006, 0x000001c4, 0x000001c0, 0x00000001, - 0x00050051, 0x00000006, 0x000001c5, 0x000001c0, 0x00000002, 0x00050051, 0x00000006, 0x000001c6, - 0x000001c1, 0x00000000, 0x00050051, 0x00000006, 0x000001c7, 0x000001c1, 0x00000001, 0x00050051, - 0x00000006, 0x000001c8, 0x000001c1, 0x00000002, 0x00050051, 0x00000006, 0x000001c9, 0x000001c2, - 0x00000000, 0x00050051, 0x00000006, 0x000001ca, 0x000001c2, 0x00000001, 0x00050051, 0x00000006, - 0x000001cb, 0x000001c2, 0x00000002, 0x00060050, 0x0000001f, 0x000001cc, 0x000001c3, 0x000001c4, - 0x000001c5, 0x00060050, 0x0000001f, 0x000001cd, 0x000001c6, 0x000001c7, 0x000001c8, 0x00060050, - 0x0000001f, 0x000001ce, 0x000001c9, 0x000001ca, 0x000001cb, 0x00060050, 0x00000021, 0x000001cf, - 0x000001cc, 0x000001cd, 0x000001ce, 0x000200fe, 0x000001cf, 0x00010038, 0x00050036, 0x00000007, - 0x0000002f, 0x00000000, 0x00000028, 0x00030037, 0x00000015, 0x00000029, 0x00030037, 0x00000008, - 0x0000002a, 0x00030037, 0x00000020, 0x0000002b, 0x00030037, 0x0000000d, 0x0000002c, 0x00030037, - 0x0000000d, 0x0000002d, 0x00030037, 0x0000000d, 0x0000002e, 0x000200f8, 0x00000030, 0x0004003b, - 0x0000000d, 0x000001d9, 0x00000007, 0x0004003b, 0x0000000d, 0x000001e7, 0x00000007, 0x0004003b, - 0x0000000d, 0x000001ea, 0x00000007, 0x0004003b, 0x00000008, 0x000001f0, 0x00000007, 0x0004003b, - 0x00000008, 0x000001f8, 0x00000007, 0x0004003b, 0x00000008, 0x000001fd, 0x00000007, 0x0004003b, - 0x0000000d, 0x000001ff, 0x00000007, 0x0004003b, 0x0000000d, 0x00000200, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000205, 0x00000007, 0x0004003b, 0x000000e2, 0x00000208, 0x00000007, 0x0004003b, - 0x00000008, 0x0000022d, 0x00000007, 0x0004003b, 0x0000000d, 0x00000231, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000235, 0x00000007, 0x0004003b, 0x0000000d, 0x0000023f, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000243, 0x00000007, 0x0004003b, 0x0000000d, 0x00000247, 0x00000007, 0x0004003d, - 0x00000006, 0x000001d2, 0x0000002c, 0x000500b8, 0x000000af, 0x000001d4, 0x000001d2, 0x000001d3, - 0x000300f7, 0x000001d6, 0x00000000, 0x000400fa, 0x000001d4, 0x000001d5, 0x000001d6, 0x000200f8, - 0x000001d5, 0x0004003d, 0x00000007, 0x000001d7, 0x0000002a, 0x000200fe, 0x000001d7, 0x000200f8, - 0x000001d6, 0x0004003d, 0x00000006, 0x000001da, 0x0000002e, 0x0007000c, 0x00000006, 0x000001db, - 0x00000001, 0x00000028, 0x000001da, 0x0000010d, 0x0004003d, 0x00000006, 0x000001dc, 0x0000002d, - 0x0007000c, 0x00000006, 0x000001dd, 0x00000001, 0x00000028, 0x000001dc, 0x0000010d, 0x00050041, - 0x0000000d, 0x000001df, 0x0000002b, 0x000001de, 0x0004003d, 0x00000006, 0x000001e0, 0x000001df, - 0x0006000c, 0x00000006, 0x000001e1, 0x00000001, 0x00000004, 0x000001e0, 0x0008000c, 0x00000006, - 0x000001e2, 0x00000001, 0x0000002b, 0x000001e1, 0x000000df, 0x0000010d, 0x0008000c, 0x00000006, - 0x000001e3, 0x00000001, 0x0000002e, 0x000001db, 0x000001dd, 0x000001e2, 0x0003003e, 0x000001d9, - 0x000001e3, 0x0004003d, 0x00000006, 0x000001e4, 0x000001d9, 0x0008000c, 0x00000006, 0x000001e6, - 0x00000001, 0x0000002b, 0x000001e4, 0x0000010d, 0x000001e5, 0x0003003e, 0x000001d9, 0x000001e6, - 0x0004003d, 0x00000006, 0x000001e8, 0x000001d9, 0x00050088, 0x00000006, 0x000001e9, 0x0000010d, - 0x000001e8, 0x0003003e, 0x000001e7, 0x000001e9, 0x00050041, 0x0000000d, 0x000001eb, 0x0000002b, - 0x000001de, 0x0004003d, 0x00000006, 0x000001ec, 0x000001eb, 0x0006000c, 0x00000006, 0x000001ed, - 0x00000001, 0x00000004, 0x000001ec, 0x0007000c, 0x00000006, 0x000001ef, 0x00000001, 0x00000028, - 0x000001ed, 0x000001ee, 0x0003003e, 0x000001ea, 0x000001ef, 0x0004003d, 0x0000001f, 0x000001f1, - 0x0000002b, 0x0007004f, 0x00000007, 0x000001f2, 0x000001f1, 0x000001f1, 0x00000000, 0x00000001, - 0x0004003d, 0x00000006, 0x000001f3, 0x000001ea, 0x00050050, 0x00000007, 0x000001f4, 0x000001f3, - 0x000001f3, 0x00050088, 0x00000007, 0x000001f5, 0x000001f2, 0x000001f4, 0x0004003d, 0x00000006, - 0x000001f6, 0x0000002c, 0x0005008e, 0x00000007, 0x000001f7, 0x000001f5, 0x000001f6, 0x0003003e, - 0x000001f0, 0x000001f7, 0x0004003d, 0x00000007, 0x000001f9, 0x000001f0, 0x0004003d, 0x00000006, - 0x000001fa, 0x000001d9, 0x00050050, 0x00000007, 0x000001fb, 0x000001fa, 0x000001fa, 0x00050088, - 0x00000007, 0x000001fc, 0x000001f9, 0x000001fb, 0x0003003e, 0x000001f8, 0x000001fc, 0x0004003d, - 0x00000007, 0x000001fe, 0x0000002a, 0x0003003e, 0x000001fd, 0x000001fe, 0x0003003e, 0x000001ff, - 0x000000df, 0x0004003d, 0x00000014, 0x00000201, 0x00000029, 0x0004003d, 0x00000007, 0x00000202, - 0x000001fd, 0x00050057, 0x00000016, 0x00000203, 0x00000201, 0x00000202, 0x00050051, 0x00000006, - 0x00000204, 0x00000203, 0x00000000, 0x0003003e, 0x00000200, 0x00000204, 0x0004003d, 0x00000006, - 0x00000206, 0x00000200, 0x00050083, 0x00000006, 0x00000207, 0x0000010d, 0x00000206, 0x0003003e, - 0x00000205, 0x00000207, 0x0003003e, 0x00000208, 0x000000e4, 0x000200f9, 0x00000209, 0x000200f8, - 0x00000209, 0x000400f6, 0x0000020b, 0x0000020c, 0x00000000, 0x000200f9, 0x0000020d, 0x000200f8, - 0x0000020d, 0x0004003d, 0x000000e1, 0x0000020e, 0x00000208, 0x000500b1, 0x000000af, 0x00000210, - 0x0000020e, 0x0000020f, 0x000400fa, 0x00000210, 0x0000020a, 0x0000020b, 0x000200f8, 0x0000020a, - 0x0004003d, 0x00000006, 0x00000211, 0x000001ff, 0x0004003d, 0x00000006, 0x00000212, 0x00000205, - 0x000500be, 0x000000af, 0x00000213, 0x00000211, 0x00000212, 0x000400a8, 0x000000af, 0x00000214, - 0x00000213, 0x000300f7, 0x00000216, 0x00000000, 0x000400fa, 0x00000214, 0x00000215, 0x00000216, - 0x000200f8, 0x00000215, 0x0004003d, 0x000000e1, 0x00000217, 0x00000208, 0x0004006f, 0x00000006, - 0x00000218, 0x00000217, 0x0004003d, 0x00000006, 0x00000219, 0x000001d9, 0x000500be, 0x000000af, - 0x0000021a, 0x00000218, 0x00000219, 0x000200f9, 0x00000216, 0x000200f8, 0x00000216, 0x000700f5, - 0x000000af, 0x0000021b, 0x00000213, 0x0000020a, 0x0000021a, 0x00000215, 0x000300f7, 0x0000021d, - 0x00000000, 0x000400fa, 0x0000021b, 0x0000021c, 0x0000021d, 0x000200f8, 0x0000021c, 0x000200f9, - 0x0000020b, 0x000200f8, 0x0000021d, 0x0004003d, 0x00000007, 0x0000021f, 0x000001f8, 0x0004003d, - 0x00000007, 0x00000220, 0x000001fd, 0x00050083, 0x00000007, 0x00000221, 0x00000220, 0x0000021f, - 0x0003003e, 0x000001fd, 0x00000221, 0x0004003d, 0x00000014, 0x00000222, 0x00000029, 0x0004003d, - 0x00000007, 0x00000223, 0x000001fd, 0x00050057, 0x00000016, 0x00000224, 0x00000222, 0x00000223, - 0x00050051, 0x00000006, 0x00000225, 0x00000224, 0x00000000, 0x0003003e, 0x00000200, 0x00000225, - 0x0004003d, 0x00000006, 0x00000226, 0x00000200, 0x00050083, 0x00000006, 0x00000227, 0x0000010d, - 0x00000226, 0x0003003e, 0x00000205, 0x00000227, 0x0004003d, 0x00000006, 0x00000228, 0x000001e7, - 0x0004003d, 0x00000006, 0x00000229, 0x000001ff, 0x00050081, 0x00000006, 0x0000022a, 0x00000229, - 0x00000228, 0x0003003e, 0x000001ff, 0x0000022a, 0x000200f9, 0x0000020c, 0x000200f8, 0x0000020c, - 0x0004003d, 0x000000e1, 0x0000022b, 0x00000208, 0x00050080, 0x000000e1, 0x0000022c, 0x0000022b, - 0x000000eb, 0x0003003e, 0x00000208, 0x0000022c, 0x000200f9, 0x00000209, 0x000200f8, 0x0000020b, - 0x0004003d, 0x00000007, 0x0000022e, 0x000001fd, 0x0004003d, 0x00000007, 0x0000022f, 0x000001f8, - 0x00050081, 0x00000007, 0x00000230, 0x0000022e, 0x0000022f, 0x0003003e, 0x0000022d, 0x00000230, - 0x0004003d, 0x00000006, 0x00000232, 0x00000205, 0x0004003d, 0x00000006, 0x00000233, 0x000001ff, - 0x00050083, 0x00000006, 0x00000234, 0x00000232, 0x00000233, 0x0003003e, 0x00000231, 0x00000234, - 0x0004003d, 0x00000014, 0x00000236, 0x00000029, 0x0004003d, 0x00000007, 0x00000237, 0x0000022d, - 0x00050057, 0x00000016, 0x00000238, 0x00000236, 0x00000237, 0x00050051, 0x00000006, 0x00000239, - 0x00000238, 0x00000000, 0x00050083, 0x00000006, 0x0000023a, 0x0000010d, 0x00000239, 0x0004003d, - 0x00000006, 0x0000023b, 0x000001ff, 0x0004003d, 0x00000006, 0x0000023c, 0x000001e7, 0x00050083, - 0x00000006, 0x0000023d, 0x0000023b, 0x0000023c, 0x00050083, 0x00000006, 0x0000023e, 0x0000023a, - 0x0000023d, 0x0003003e, 0x00000235, 0x0000023e, 0x0004003d, 0x00000006, 0x00000240, 0x00000231, - 0x0004003d, 0x00000006, 0x00000241, 0x00000235, 0x00050083, 0x00000006, 0x00000242, 0x00000240, - 0x00000241, 0x0003003e, 0x0000023f, 0x00000242, 0x0004003d, 0x00000006, 0x00000244, 0x0000023f, - 0x0006000c, 0x00000006, 0x00000245, 0x00000001, 0x00000004, 0x00000244, 0x000500b8, 0x000000af, - 0x00000246, 0x00000245, 0x000001d3, 0x000300f7, 0x00000249, 0x00000000, 0x000400fa, 0x00000246, - 0x00000248, 0x0000024a, 0x000200f8, 0x00000248, 0x0003003e, 0x00000247, 0x00000122, 0x000200f9, - 0x00000249, 0x000200f8, 0x0000024a, 0x0004003d, 0x00000006, 0x0000024b, 0x00000231, 0x0004003d, - 0x00000006, 0x0000024c, 0x0000023f, 0x00050088, 0x00000006, 0x0000024d, 0x0000024b, 0x0000024c, - 0x0008000c, 0x00000006, 0x0000024e, 0x00000001, 0x0000002b, 0x0000024d, 0x000000df, 0x0000010d, - 0x0003003e, 0x00000247, 0x0000024e, 0x000200f9, 0x00000249, 0x000200f8, 0x00000249, 0x0004003d, - 0x00000006, 0x0000024f, 0x00000247, 0x0003003e, 0x00000243, 0x0000024f, 0x0004003d, 0x00000007, - 0x00000250, 0x000001fd, 0x0004003d, 0x00000007, 0x00000251, 0x0000022d, 0x0004003d, 0x00000006, - 0x00000252, 0x00000243, 0x00050050, 0x00000007, 0x00000253, 0x00000252, 0x00000252, 0x0008000c, - 0x00000007, 0x00000254, 0x00000001, 0x0000002e, 0x00000250, 0x00000251, 0x00000253, 0x000200fe, - 0x00000254, 0x00010038, 0x00050036, 0x00000007, 0x0000003a, 0x00000000, 0x00000031, 0x00030037, - 0x00000015, 0x00000032, 0x00030037, 0x00000008, 0x00000033, 0x00030037, 0x00000020, 0x00000034, - 0x00030037, 0x00000020, 0x00000035, 0x00030037, 0x00000020, 0x00000036, 0x00030037, 0x0000000d, - 0x00000037, 0x00030037, 0x0000000d, 0x00000038, 0x00030037, 0x0000000d, 0x00000039, 0x000200f8, - 0x0000003b, 0x0004003b, 0x0000025d, 0x0000025e, 0x00000007, 0x0004003b, 0x00000020, 0x0000025f, - 0x00000007, 0x0004003b, 0x00000020, 0x00000261, 0x00000007, 0x0004003b, 0x00000008, 0x00000263, - 0x00000007, 0x0004003b, 0x00000020, 0x0000026e, 0x00000007, 0x0004003b, 0x00000008, 0x00000274, - 0x00000007, 0x0004003b, 0x00000020, 0x00000276, 0x00000007, 0x0004003b, 0x0000000d, 0x00000278, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000027a, 0x00000007, 0x0004003b, 0x0000000d, 0x0000027c, - 0x00000007, 0x0004003d, 0x00000006, 0x00000257, 0x00000037, 0x000500b8, 0x000000af, 0x00000258, - 0x00000257, 0x000001d3, 0x000300f7, 0x0000025a, 0x00000000, 0x000400fa, 0x00000258, 0x00000259, - 0x0000025a, 0x000200f8, 0x00000259, 0x0004003d, 0x00000007, 0x0000025b, 0x00000033, 0x000200fe, - 0x0000025b, 0x000200f8, 0x0000025a, 0x0004003d, 0x0000001f, 0x00000260, 0x00000034, 0x0003003e, - 0x0000025f, 0x00000260, 0x0004003d, 0x0000001f, 0x00000262, 0x00000035, 0x0003003e, 0x00000261, - 0x00000262, 0x0004003d, 0x00000007, 0x00000264, 0x00000033, 0x0003003e, 0x00000263, 0x00000264, - 0x00070039, 0x00000021, 0x00000265, 0x00000026, 0x0000025f, 0x00000261, 0x00000263, 0x0003003e, - 0x0000025e, 0x00000265, 0x00050041, 0x00000020, 0x00000266, 0x0000025e, 0x000000e4, 0x0004003d, - 0x0000001f, 0x00000267, 0x00000266, 0x0006000c, 0x00000006, 0x00000268, 0x00000001, 0x00000042, - 0x00000267, 0x000500b8, 0x000000af, 0x00000269, 0x00000268, 0x000000ae, 0x000300f7, 0x0000026b, - 0x00000000, 0x000400fa, 0x00000269, 0x0000026a, 0x0000026b, 0x000200f8, 0x0000026a, 0x0004003d, - 0x00000007, 0x0000026c, 0x00000033, 0x000200fe, 0x0000026c, 0x000200f8, 0x0000026b, 0x0004003d, - 0x00000021, 0x0000026f, 0x0000025e, 0x00040054, 0x00000021, 0x00000270, 0x0000026f, 0x0004003d, - 0x0000001f, 0x00000271, 0x00000036, 0x00050091, 0x0000001f, 0x00000272, 0x00000270, 0x00000271, - 0x0006000c, 0x0000001f, 0x00000273, 0x00000001, 0x00000045, 0x00000272, 0x0003003e, 0x0000026e, - 0x00000273, 0x0004003d, 0x00000007, 0x00000275, 0x00000033, 0x0003003e, 0x00000274, 0x00000275, - 0x0004003d, 0x0000001f, 0x00000277, 0x0000026e, 0x0003003e, 0x00000276, 0x00000277, 0x0004003d, - 0x00000006, 0x00000279, 0x00000037, 0x0003003e, 0x00000278, 0x00000279, 0x0004003d, 0x00000006, - 0x0000027b, 0x00000038, 0x0003003e, 0x0000027a, 0x0000027b, 0x0004003d, 0x00000006, 0x0000027d, - 0x00000039, 0x0003003e, 0x0000027c, 0x0000027d, 0x000a0039, 0x00000007, 0x0000027e, 0x0000002f, - 0x00000032, 0x00000274, 0x00000276, 0x00000278, 0x0000027a, 0x0000027c, 0x000200fe, 0x0000027e, - 0x00010038, 0x00050036, 0x0000001f, 0x0000003e, 0x00000000, 0x0000003c, 0x00030037, 0x00000020, - 0x0000003d, 0x000200f8, 0x0000003f, 0x0004003b, 0x00000020, 0x00000281, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000287, 0x00000007, 0x0004003d, 0x0000001f, 0x00000282, 0x0000003d, 0x00050083, - 0x0000001f, 0x00000285, 0x00000282, 0x00000284, 0x0007000c, 0x0000001f, 0x00000286, 0x00000001, - 0x00000028, 0x00000285, 0x00000177, 0x0003003e, 0x00000281, 0x00000286, 0x0003003e, 0x00000287, - 0x00000288, 0x0004003d, 0x0000001f, 0x00000289, 0x0000003d, 0x0007000c, 0x0000001f, 0x0000028a, - 0x00000001, 0x00000025, 0x00000289, 0x00000284, 0x0004003d, 0x00000006, 0x0000028b, 0x00000287, - 0x00060050, 0x0000001f, 0x0000028c, 0x0000028b, 0x0000028b, 0x0000028b, 0x0004003d, 0x0000001f, - 0x0000028d, 0x00000281, 0x0004003d, 0x0000001f, 0x0000028e, 0x00000281, 0x00050081, 0x0000001f, - 0x00000290, 0x0000028e, 0x0000028f, 0x00050088, 0x0000001f, 0x00000291, 0x0000028d, 0x00000290, - 0x00050085, 0x0000001f, 0x00000292, 0x0000028c, 0x00000291, 0x00050081, 0x0000001f, 0x00000293, - 0x0000028a, 0x00000292, 0x000200fe, 0x00000293, 0x00010038, 0x00050036, 0x00000006, 0x00000044, - 0x00000000, 0x00000040, 0x00030037, 0x00000020, 0x00000041, 0x00030037, 0x00000020, 0x00000042, - 0x00030037, 0x0000000d, 0x00000043, 0x000200f8, 0x00000045, 0x0004003b, 0x0000000d, 0x00000296, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000029c, 0x00000007, 0x0004003b, 0x0000000d, 0x000002a0, - 0x00000007, 0x0004003b, 0x0000000d, 0x000002a5, 0x00000007, 0x0004003d, 0x00000006, 0x00000297, - 0x00000043, 0x0004003d, 0x00000006, 0x00000298, 0x00000043, 0x00050085, 0x00000006, 0x00000299, - 0x00000297, 0x00000298, 0x0007000c, 0x00000006, 0x0000029b, 0x00000001, 0x00000028, 0x00000299, - 0x0000029a, 0x0003003e, 0x00000296, 0x0000029b, 0x0004003d, 0x00000006, 0x0000029d, 0x00000296, - 0x0004003d, 0x00000006, 0x0000029e, 0x00000296, 0x00050085, 0x00000006, 0x0000029f, 0x0000029d, - 0x0000029e, 0x0003003e, 0x0000029c, 0x0000029f, 0x0004003d, 0x0000001f, 0x000002a1, 0x00000041, - 0x0004003d, 0x0000001f, 0x000002a2, 0x00000042, 0x00050094, 0x00000006, 0x000002a3, 0x000002a1, - 0x000002a2, 0x0007000c, 0x00000006, 0x000002a4, 0x00000001, 0x00000028, 0x000002a3, 0x000000df, - 0x0003003e, 0x000002a0, 0x000002a4, 0x0004003d, 0x00000006, 0x000002a6, 0x000002a0, 0x0004003d, - 0x00000006, 0x000002a7, 0x000002a0, 0x00050085, 0x00000006, 0x000002a8, 0x000002a6, 0x000002a7, - 0x0004003d, 0x00000006, 0x000002a9, 0x0000029c, 0x00050083, 0x00000006, 0x000002aa, 0x000002a9, - 0x0000010d, 0x00050085, 0x00000006, 0x000002ab, 0x000002a8, 0x000002aa, 0x00050081, 0x00000006, - 0x000002ac, 0x000002ab, 0x0000010d, 0x0003003e, 0x000002a5, 0x000002ac, 0x0004003d, 0x00000006, - 0x000002ad, 0x0000029c, 0x0004003d, 0x00000006, 0x000002ae, 0x000002a5, 0x00050085, 0x00000006, - 0x000002af, 0x00000119, 0x000002ae, 0x0004003d, 0x00000006, 0x000002b0, 0x000002a5, 0x00050085, - 0x00000006, 0x000002b1, 0x000002af, 0x000002b0, 0x0007000c, 0x00000006, 0x000002b2, 0x00000001, - 0x00000028, 0x000002b1, 0x000000ae, 0x00050088, 0x00000006, 0x000002b3, 0x000002ad, 0x000002b2, - 0x000200fe, 0x000002b3, 0x00010038, 0x00050036, 0x00000006, 0x00000049, 0x00000000, 0x00000046, - 0x00030037, 0x0000000d, 0x00000047, 0x00030037, 0x0000000d, 0x00000048, 0x000200f8, 0x0000004a, - 0x0004003b, 0x0000000d, 0x000002b6, 0x00000007, 0x0004003b, 0x0000000d, 0x000002b9, 0x00000007, - 0x0004003d, 0x00000006, 0x000002b7, 0x00000048, 0x00050081, 0x00000006, 0x000002b8, 0x000002b7, - 0x0000010d, 0x0003003e, 0x000002b6, 0x000002b8, 0x0004003d, 0x00000006, 0x000002ba, 0x000002b6, - 0x0004003d, 0x00000006, 0x000002bb, 0x000002b6, 0x00050085, 0x00000006, 0x000002bc, 0x000002ba, - 0x000002bb, 0x00050088, 0x00000006, 0x000002be, 0x000002bc, 0x000002bd, 0x0003003e, 0x000002b9, - 0x000002be, 0x0004003d, 0x00000006, 0x000002bf, 0x00000047, 0x0004003d, 0x00000006, 0x000002c0, - 0x00000047, 0x0004003d, 0x00000006, 0x000002c1, 0x000002b9, 0x00050083, 0x00000006, 0x000002c2, - 0x0000010d, 0x000002c1, 0x00050085, 0x00000006, 0x000002c3, 0x000002c0, 0x000002c2, 0x0004003d, - 0x00000006, 0x000002c4, 0x000002b9, 0x00050081, 0x00000006, 0x000002c5, 0x000002c3, 0x000002c4, - 0x0007000c, 0x00000006, 0x000002c6, 0x00000001, 0x00000028, 0x000002c5, 0x000000ae, 0x00050088, - 0x00000006, 0x000002c7, 0x000002bf, 0x000002c6, 0x000200fe, 0x000002c7, 0x00010038, 0x00050036, - 0x00000006, 0x00000050, 0x00000000, 0x0000004b, 0x00030037, 0x00000020, 0x0000004c, 0x00030037, - 0x00000020, 0x0000004d, 0x00030037, 0x00000020, 0x0000004e, 0x00030037, 0x0000000d, 0x0000004f, - 0x000200f8, 0x00000051, 0x0004003b, 0x0000000d, 0x000002ce, 0x00000007, 0x0004003b, 0x0000000d, - 0x000002cf, 0x00000007, 0x0004003b, 0x0000000d, 0x000002d6, 0x00000007, 0x0004003b, 0x0000000d, - 0x000002d7, 0x00000007, 0x0004003d, 0x0000001f, 0x000002ca, 0x0000004c, 0x0004003d, 0x0000001f, - 0x000002cb, 0x0000004d, 0x00050094, 0x00000006, 0x000002cc, 0x000002ca, 0x000002cb, 0x0007000c, - 0x00000006, 0x000002cd, 0x00000001, 0x00000028, 0x000002cc, 0x000000df, 0x0003003e, 0x000002ce, - 0x000002cd, 0x0004003d, 0x00000006, 0x000002d0, 0x0000004f, 0x0003003e, 0x000002cf, 0x000002d0, - 0x00060039, 0x00000006, 0x000002d1, 0x00000049, 0x000002ce, 0x000002cf, 0x0004003d, 0x0000001f, - 0x000002d2, 0x0000004c, 0x0004003d, 0x0000001f, 0x000002d3, 0x0000004e, 0x00050094, 0x00000006, - 0x000002d4, 0x000002d2, 0x000002d3, 0x0007000c, 0x00000006, 0x000002d5, 0x00000001, 0x00000028, - 0x000002d4, 0x000000df, 0x0003003e, 0x000002d6, 0x000002d5, 0x0004003d, 0x00000006, 0x000002d8, - 0x0000004f, 0x0003003e, 0x000002d7, 0x000002d8, 0x00060039, 0x00000006, 0x000002d9, 0x00000049, - 0x000002d6, 0x000002d7, 0x00050085, 0x00000006, 0x000002da, 0x000002d1, 0x000002d9, 0x000200fe, - 0x000002da, 0x00010038, 0x00050036, 0x0000001f, 0x00000055, 0x00000000, 0x00000052, 0x00030037, - 0x0000000d, 0x00000053, 0x00030037, 0x00000020, 0x00000054, 0x000200f8, 0x00000056, 0x0004003d, - 0x0000001f, 0x000002dd, 0x00000054, 0x0004003d, 0x0000001f, 0x000002de, 0x00000054, 0x00060050, - 0x0000001f, 0x000002df, 0x0000010d, 0x0000010d, 0x0000010d, 0x00050083, 0x0000001f, 0x000002e0, - 0x000002df, 0x000002de, 0x0004003d, 0x00000006, 0x000002e1, 0x00000053, 0x00050083, 0x00000006, - 0x000002e2, 0x0000010d, 0x000002e1, 0x0008000c, 0x00000006, 0x000002e3, 0x00000001, 0x0000002b, - 0x000002e2, 0x000000df, 0x0000010d, 0x0007000c, 0x00000006, 0x000002e5, 0x00000001, 0x0000001a, - 0x000002e3, 0x000002e4, 0x0005008e, 0x0000001f, 0x000002e6, 0x000002e0, 0x000002e5, 0x00050081, - 0x0000001f, 0x000002e7, 0x000002dd, 0x000002e6, 0x000200fe, 0x000002e7, 0x00010038, 0x00050036, - 0x0000001f, 0x0000005c, 0x00000000, 0x00000057, 0x00030037, 0x00000020, 0x00000058, 0x00030037, - 0x00000020, 0x00000059, 0x00030037, 0x00000020, 0x0000005a, 0x00030037, 0x00000008, 0x0000005b, - 0x000200f8, 0x0000005d, 0x0004003b, 0x00000020, 0x000002ea, 0x00000007, 0x0004003b, 0x00000020, - 0x000002ff, 0x00000007, 0x0004003b, 0x00000020, 0x00000302, 0x00000007, 0x0004003b, 0x00000008, - 0x00000305, 0x00000007, 0x0004003b, 0x00000008, 0x00000308, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000030b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000320, 0x00000007, 0x0004003b, 0x00000020, - 0x00000323, 0x00000007, 0x0004003b, 0x00000020, 0x0000032f, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000344, 0x00000007, 0x0004003b, 0x0000000d, 0x00000347, 0x00000007, 0x0004003d, 0x0000001f, - 0x000002eb, 0x00000059, 0x0005008e, 0x0000001f, 0x000002ec, 0x000002eb, 0x0000010b, 0x00060050, - 0x0000001f, 0x000002ed, 0x0000010d, 0x0000010d, 0x0000010d, 0x00050083, 0x0000001f, 0x000002ee, - 0x000002ec, 0x000002ed, 0x0003003e, 0x000002ea, 0x000002ee, 0x0004003d, 0x0000001f, 0x000002ef, - 0x000002ea, 0x0007004f, 0x00000007, 0x000002f0, 0x000002ef, 0x000002ef, 0x00000000, 0x00000001, - 0x0006000c, 0x00000006, 0x000002f1, 0x00000001, 0x00000042, 0x000002f0, 0x000500b8, 0x000000af, - 0x000002f3, 0x000002f1, 0x000002f2, 0x000300f7, 0x000002f5, 0x00000000, 0x000400fa, 0x000002f3, - 0x000002f4, 0x000002f5, 0x000200f8, 0x000002f4, 0x00050041, 0x0000000d, 0x000002f6, 0x000002ea, - 0x000001de, 0x0004003d, 0x00000006, 0x000002f7, 0x000002f6, 0x000500ba, 0x000000af, 0x000002f8, - 0x000002f7, 0x00000283, 0x000200f9, 0x000002f5, 0x000200f8, 0x000002f5, 0x000700f5, 0x000000af, - 0x000002f9, 0x000002f3, 0x0000005d, 0x000002f8, 0x000002f4, 0x000300f7, 0x000002fb, 0x00000000, - 0x000400fa, 0x000002f9, 0x000002fa, 0x000002fb, 0x000200f8, 0x000002fa, 0x0004003d, 0x0000001f, - 0x000002fc, 0x00000058, 0x0006000c, 0x0000001f, 0x000002fd, 0x00000001, 0x00000045, 0x000002fc, - 0x000200fe, 0x000002fd, 0x000200f8, 0x000002fb, 0x0004003d, 0x0000001f, 0x00000300, 0x0000005a, - 0x000400cf, 0x0000001f, 0x00000301, 0x00000300, 0x0003003e, 0x000002ff, 0x00000301, 0x0004003d, - 0x0000001f, 0x00000303, 0x0000005a, 0x000400d0, 0x0000001f, 0x00000304, 0x00000303, 0x0003003e, - 0x00000302, 0x00000304, 0x0004003d, 0x00000007, 0x00000306, 0x0000005b, 0x000400cf, 0x00000007, - 0x00000307, 0x00000306, 0x0003003e, 0x00000305, 0x00000307, 0x0004003d, 0x00000007, 0x00000309, - 0x0000005b, 0x000400d0, 0x00000007, 0x0000030a, 0x00000309, 0x0003003e, 0x00000308, 0x0000030a, - 0x00050041, 0x0000000d, 0x0000030c, 0x00000305, 0x00000097, 0x0004003d, 0x00000006, 0x0000030d, - 0x0000030c, 0x00050041, 0x0000000d, 0x0000030e, 0x00000308, 0x0000009c, 0x0004003d, 0x00000006, - 0x0000030f, 0x0000030e, 0x00050085, 0x00000006, 0x00000310, 0x0000030d, 0x0000030f, 0x00050041, - 0x0000000d, 0x00000311, 0x00000308, 0x00000097, 0x0004003d, 0x00000006, 0x00000312, 0x00000311, - 0x00050041, 0x0000000d, 0x00000313, 0x00000305, 0x0000009c, 0x0004003d, 0x00000006, 0x00000314, - 0x00000313, 0x00050085, 0x00000006, 0x00000315, 0x00000312, 0x00000314, 0x00050083, 0x00000006, - 0x00000316, 0x00000310, 0x00000315, 0x0003003e, 0x0000030b, 0x00000316, 0x0004003d, 0x00000006, - 0x00000317, 0x0000030b, 0x0006000c, 0x00000006, 0x00000318, 0x00000001, 0x00000004, 0x00000317, - 0x000500b8, 0x000000af, 0x0000031a, 0x00000318, 0x00000319, 0x000300f7, 0x0000031c, 0x00000000, - 0x000400fa, 0x0000031a, 0x0000031b, 0x0000031c, 0x000200f8, 0x0000031b, 0x0004003d, 0x0000001f, - 0x0000031d, 0x00000058, 0x0006000c, 0x0000001f, 0x0000031e, 0x00000001, 0x00000045, 0x0000031d, - 0x000200fe, 0x0000031e, 0x000200f8, 0x0000031c, 0x0004003d, 0x00000006, 0x00000321, 0x0000030b, - 0x00050088, 0x00000006, 0x00000322, 0x0000010d, 0x00000321, 0x0003003e, 0x00000320, 0x00000322, - 0x0004003d, 0x0000001f, 0x00000324, 0x000002ff, 0x00050041, 0x0000000d, 0x00000325, 0x00000308, - 0x0000009c, 0x0004003d, 0x00000006, 0x00000326, 0x00000325, 0x0005008e, 0x0000001f, 0x00000327, - 0x00000324, 0x00000326, 0x0004003d, 0x0000001f, 0x00000328, 0x00000302, 0x00050041, 0x0000000d, - 0x00000329, 0x00000305, 0x0000009c, 0x0004003d, 0x00000006, 0x0000032a, 0x00000329, 0x0005008e, - 0x0000001f, 0x0000032b, 0x00000328, 0x0000032a, 0x00050083, 0x0000001f, 0x0000032c, 0x00000327, - 0x0000032b, 0x0004003d, 0x00000006, 0x0000032d, 0x00000320, 0x0005008e, 0x0000001f, 0x0000032e, - 0x0000032c, 0x0000032d, 0x0003003e, 0x00000323, 0x0000032e, 0x0004003d, 0x0000001f, 0x00000330, - 0x00000302, 0x00050041, 0x0000000d, 0x00000331, 0x00000305, 0x00000097, 0x0004003d, 0x00000006, - 0x00000332, 0x00000331, 0x0005008e, 0x0000001f, 0x00000333, 0x00000330, 0x00000332, 0x0004003d, - 0x0000001f, 0x00000334, 0x000002ff, 0x00050041, 0x0000000d, 0x00000335, 0x00000308, 0x00000097, - 0x0004003d, 0x00000006, 0x00000336, 0x00000335, 0x0005008e, 0x0000001f, 0x00000337, 0x00000334, - 0x00000336, 0x00050083, 0x0000001f, 0x00000338, 0x00000333, 0x00000337, 0x0004003d, 0x00000006, - 0x00000339, 0x00000320, 0x0005008e, 0x0000001f, 0x0000033a, 0x00000338, 0x00000339, 0x0003003e, - 0x0000032f, 0x0000033a, 0x0004003d, 0x0000001f, 0x0000033b, 0x00000058, 0x0006000c, 0x0000001f, - 0x0000033c, 0x00000001, 0x00000045, 0x0000033b, 0x0003003e, 0x00000058, 0x0000033c, 0x0004003d, - 0x0000001f, 0x0000033d, 0x00000323, 0x0004003d, 0x0000001f, 0x0000033e, 0x00000058, 0x0004003d, - 0x0000001f, 0x0000033f, 0x00000058, 0x0004003d, 0x0000001f, 0x00000340, 0x00000323, 0x00050094, - 0x00000006, 0x00000341, 0x0000033f, 0x00000340, 0x0005008e, 0x0000001f, 0x00000342, 0x0000033e, - 0x00000341, 0x00050083, 0x0000001f, 0x00000343, 0x0000033d, 0x00000342, 0x0003003e, 0x00000323, - 0x00000343, 0x0004003d, 0x0000001f, 0x00000345, 0x00000323, 0x0006000c, 0x00000006, 0x00000346, - 0x00000001, 0x00000042, 0x00000345, 0x0003003e, 0x00000344, 0x00000346, 0x0004003d, 0x0000001f, - 0x00000348, 0x0000032f, 0x0006000c, 0x00000006, 0x00000349, 0x00000001, 0x00000042, 0x00000348, - 0x0003003e, 0x00000347, 0x00000349, 0x0004003d, 0x00000006, 0x0000034a, 0x00000344, 0x000500b8, - 0x000000af, 0x0000034b, 0x0000034a, 0x000000ae, 0x0004003d, 0x00000006, 0x0000034c, 0x00000347, - 0x000500b8, 0x000000af, 0x0000034d, 0x0000034c, 0x000000ae, 0x000500a6, 0x000000af, 0x0000034e, - 0x0000034b, 0x0000034d, 0x000300f7, 0x00000350, 0x00000000, 0x000400fa, 0x0000034e, 0x0000034f, - 0x00000350, 0x000200f8, 0x0000034f, 0x0004003d, 0x0000001f, 0x00000351, 0x00000058, 0x000200fe, - 0x00000351, 0x000200f8, 0x00000350, 0x0004003d, 0x00000006, 0x00000353, 0x00000344, 0x0004003d, - 0x0000001f, 0x00000354, 0x00000323, 0x00060050, 0x0000001f, 0x00000355, 0x00000353, 0x00000353, - 0x00000353, 0x00050088, 0x0000001f, 0x00000356, 0x00000354, 0x00000355, 0x0003003e, 0x00000323, - 0x00000356, 0x0004003d, 0x0000001f, 0x00000357, 0x0000032f, 0x0004003d, 0x0000001f, 0x00000358, - 0x00000058, 0x0004003d, 0x0000001f, 0x00000359, 0x00000058, 0x0004003d, 0x0000001f, 0x0000035a, - 0x0000032f, 0x00050094, 0x00000006, 0x0000035b, 0x00000359, 0x0000035a, 0x0005008e, 0x0000001f, - 0x0000035c, 0x00000358, 0x0000035b, 0x00050083, 0x0000001f, 0x0000035d, 0x00000357, 0x0000035c, - 0x0004003d, 0x0000001f, 0x0000035e, 0x00000323, 0x0004003d, 0x0000001f, 0x0000035f, 0x00000323, - 0x0004003d, 0x0000001f, 0x00000360, 0x0000032f, 0x00050094, 0x00000006, 0x00000361, 0x0000035f, - 0x00000360, 0x0005008e, 0x0000001f, 0x00000362, 0x0000035e, 0x00000361, 0x00050083, 0x0000001f, - 0x00000363, 0x0000035d, 0x00000362, 0x0006000c, 0x0000001f, 0x00000364, 0x00000001, 0x00000045, - 0x00000363, 0x0003003e, 0x0000032f, 0x00000364, 0x0004003d, 0x0000001f, 0x00000365, 0x00000323, - 0x0004003d, 0x0000001f, 0x00000366, 0x0000032f, 0x00050094, 0x00000006, 0x00000367, 0x00000365, - 0x00000366, 0x0006000c, 0x00000006, 0x00000368, 0x00000001, 0x00000004, 0x00000367, 0x000500ba, - 0x000000af, 0x0000036a, 0x00000368, 0x00000369, 0x000300f7, 0x0000036c, 0x00000000, 0x000400fa, - 0x0000036a, 0x0000036b, 0x0000036c, 0x000200f8, 0x0000036b, 0x0004003d, 0x0000001f, 0x0000036d, - 0x00000058, 0x000200fe, 0x0000036d, 0x000200f8, 0x0000036c, 0x0004003d, 0x0000001f, 0x0000036f, - 0x00000323, 0x0004003d, 0x0000001f, 0x00000370, 0x0000032f, 0x0004003d, 0x0000001f, 0x00000371, - 0x00000058, 0x00050051, 0x00000006, 0x00000372, 0x0000036f, 0x00000000, 0x00050051, 0x00000006, - 0x00000373, 0x0000036f, 0x00000001, 0x00050051, 0x00000006, 0x00000374, 0x0000036f, 0x00000002, - 0x00050051, 0x00000006, 0x00000375, 0x00000370, 0x00000000, 0x00050051, 0x00000006, 0x00000376, - 0x00000370, 0x00000001, 0x00050051, 0x00000006, 0x00000377, 0x00000370, 0x00000002, 0x00050051, - 0x00000006, 0x00000378, 0x00000371, 0x00000000, 0x00050051, 0x00000006, 0x00000379, 0x00000371, - 0x00000001, 0x00050051, 0x00000006, 0x0000037a, 0x00000371, 0x00000002, 0x00060050, 0x0000001f, - 0x0000037b, 0x00000372, 0x00000373, 0x00000374, 0x00060050, 0x0000001f, 0x0000037c, 0x00000375, - 0x00000376, 0x00000377, 0x00060050, 0x0000001f, 0x0000037d, 0x00000378, 0x00000379, 0x0000037a, - 0x00060050, 0x00000021, 0x0000037e, 0x0000037b, 0x0000037c, 0x0000037d, 0x0004003d, 0x0000001f, - 0x0000037f, 0x000002ea, 0x00050091, 0x0000001f, 0x00000380, 0x0000037e, 0x0000037f, 0x0006000c, - 0x0000001f, 0x00000381, 0x00000001, 0x00000045, 0x00000380, 0x000200fe, 0x00000381, 0x00010038, - 0x00050036, 0x0000001f, 0x00000066, 0x00000000, 0x0000005e, 0x00030037, 0x00000020, 0x0000005f, - 0x00030037, 0x00000020, 0x00000060, 0x00030037, 0x00000020, 0x00000061, 0x00030037, 0x0000000d, - 0x00000062, 0x00030037, 0x0000000d, 0x00000063, 0x00030037, 0x00000020, 0x00000064, 0x00030037, - 0x00000020, 0x00000065, 0x000200f8, 0x00000067, 0x0004003b, 0x0000000d, 0x00000384, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000389, 0x00000007, 0x0004003b, 0x00000020, 0x00000390, 0x00000007, - 0x0004003b, 0x00000020, 0x00000395, 0x00000007, 0x0004003b, 0x0000000d, 0x0000039b, 0x00000007, - 0x0004003b, 0x00000020, 0x0000039c, 0x00000007, 0x0004003b, 0x00000020, 0x0000039e, 0x00000007, - 0x0004003b, 0x0000000d, 0x000003a0, 0x00000007, 0x0004003b, 0x0000000d, 0x000003a3, 0x00000007, - 0x0004003b, 0x00000020, 0x000003a4, 0x00000007, 0x0004003b, 0x00000020, 0x000003a6, 0x00000007, - 0x0004003b, 0x00000020, 0x000003a8, 0x00000007, 0x0004003b, 0x0000000d, 0x000003aa, 0x00000007, - 0x0004003b, 0x00000020, 0x000003ad, 0x00000007, 0x0004003b, 0x0000000d, 0x000003b2, 0x00000007, - 0x0004003b, 0x00000020, 0x000003b3, 0x00000007, 0x0004003b, 0x00000020, 0x000003b6, 0x00000007, - 0x0004003b, 0x00000020, 0x000003c8, 0x00000007, 0x0004003d, 0x0000001f, 0x00000385, 0x0000005f, - 0x0004003d, 0x0000001f, 0x00000386, 0x00000064, 0x00050094, 0x00000006, 0x00000387, 0x00000385, - 0x00000386, 0x0007000c, 0x00000006, 0x00000388, 0x00000001, 0x00000028, 0x00000387, 0x000000df, - 0x0003003e, 0x00000384, 0x00000388, 0x0004003d, 0x00000006, 0x0000038a, 0x00000384, 0x0004003d, - 0x00000006, 0x0000038b, 0x00000384, 0x00050085, 0x00000006, 0x0000038c, 0x0000038b, 0x00000122, - 0x00050081, 0x00000006, 0x0000038d, 0x0000038c, 0x00000122, 0x0008000c, 0x00000006, 0x0000038f, - 0x00000001, 0x0000002e, 0x0000038a, 0x0000038d, 0x0000038e, 0x0003003e, 0x00000389, 0x0000038f, - 0x0004003d, 0x0000001f, 0x00000391, 0x00000060, 0x0004003d, 0x0000001f, 0x00000392, 0x00000064, - 0x00050081, 0x0000001f, 0x00000393, 0x00000391, 0x00000392, 0x0006000c, 0x0000001f, 0x00000394, - 0x00000001, 0x00000045, 0x00000393, 0x0003003e, 0x00000390, 0x00000394, 0x0004003d, 0x0000001f, - 0x00000397, 0x00000061, 0x0004003d, 0x00000006, 0x00000398, 0x00000062, 0x00060050, 0x0000001f, - 0x00000399, 0x00000398, 0x00000398, 0x00000398, 0x0008000c, 0x0000001f, 0x0000039a, 0x00000001, - 0x0000002e, 0x00000396, 0x00000397, 0x00000399, 0x0003003e, 0x00000395, 0x0000039a, 0x0004003d, - 0x0000001f, 0x0000039d, 0x0000005f, 0x0003003e, 0x0000039c, 0x0000039d, 0x0004003d, 0x0000001f, - 0x0000039f, 0x00000390, 0x0003003e, 0x0000039e, 0x0000039f, 0x0004003d, 0x00000006, 0x000003a1, - 0x00000063, 0x0003003e, 0x000003a0, 0x000003a1, 0x00070039, 0x00000006, 0x000003a2, 0x00000044, - 0x0000039c, 0x0000039e, 0x000003a0, 0x0003003e, 0x0000039b, 0x000003a2, 0x0004003d, 0x0000001f, - 0x000003a5, 0x0000005f, 0x0003003e, 0x000003a4, 0x000003a5, 0x0004003d, 0x0000001f, 0x000003a7, - 0x00000060, 0x0003003e, 0x000003a6, 0x000003a7, 0x0004003d, 0x0000001f, 0x000003a9, 0x00000064, - 0x0003003e, 0x000003a8, 0x000003a9, 0x0004003d, 0x00000006, 0x000003ab, 0x00000063, 0x0003003e, - 0x000003aa, 0x000003ab, 0x00080039, 0x00000006, 0x000003ac, 0x00000050, 0x000003a4, 0x000003a6, - 0x000003a8, 0x000003aa, 0x0003003e, 0x000003a3, 0x000003ac, 0x0004003d, 0x0000001f, 0x000003ae, - 0x00000390, 0x0004003d, 0x0000001f, 0x000003af, 0x00000060, 0x00050094, 0x00000006, 0x000003b0, - 0x000003ae, 0x000003af, 0x0007000c, 0x00000006, 0x000003b1, 0x00000001, 0x00000028, 0x000003b0, - 0x000000df, 0x0003003e, 0x000003b2, 0x000003b1, 0x0004003d, 0x0000001f, 0x000003b4, 0x00000395, - 0x0003003e, 0x000003b3, 0x000003b4, 0x00060039, 0x0000001f, 0x000003b5, 0x00000055, 0x000003b2, - 0x000003b3, 0x0003003e, 0x000003ad, 0x000003b5, 0x0004003d, 0x00000006, 0x000003b7, 0x0000039b, - 0x0004003d, 0x00000006, 0x000003b8, 0x000003a3, 0x00050085, 0x00000006, 0x000003b9, 0x000003b7, - 0x000003b8, 0x0004003d, 0x0000001f, 0x000003ba, 0x000003ad, 0x0005008e, 0x0000001f, 0x000003bb, - 0x000003ba, 0x000003b9, 0x0004003d, 0x0000001f, 0x000003bd, 0x0000005f, 0x0004003d, 0x0000001f, - 0x000003be, 0x00000060, 0x00050094, 0x00000006, 0x000003bf, 0x000003bd, 0x000003be, 0x0007000c, - 0x00000006, 0x000003c0, 0x00000001, 0x00000028, 0x000003bf, 0x000000df, 0x00050085, 0x00000006, - 0x000003c1, 0x000003bc, 0x000003c0, 0x0004003d, 0x00000006, 0x000003c2, 0x00000384, 0x0007000c, - 0x00000006, 0x000003c3, 0x00000001, 0x00000028, 0x000003c2, 0x000000b9, 0x00050085, 0x00000006, - 0x000003c4, 0x000003c1, 0x000003c3, 0x0007000c, 0x00000006, 0x000003c5, 0x00000001, 0x00000028, - 0x000003c4, 0x000000b9, 0x00060050, 0x0000001f, 0x000003c6, 0x000003c5, 0x000003c5, 0x000003c5, - 0x00050088, 0x0000001f, 0x000003c7, 0x000003bb, 0x000003c6, 0x0003003e, 0x000003b6, 0x000003c7, - 0x0004003d, 0x0000001f, 0x000003c9, 0x000003ad, 0x00050083, 0x0000001f, 0x000003ca, 0x0000028f, - 0x000003c9, 0x0004003d, 0x00000006, 0x000003cb, 0x00000062, 0x00050083, 0x00000006, 0x000003cc, - 0x0000010d, 0x000003cb, 0x0005008e, 0x0000001f, 0x000003cd, 0x000003ca, 0x000003cc, 0x0003003e, - 0x000003c8, 0x000003cd, 0x0004003d, 0x0000001f, 0x000003ce, 0x000003c8, 0x0004003d, 0x0000001f, - 0x000003cf, 0x00000061, 0x00050085, 0x0000001f, 0x000003d0, 0x000003ce, 0x000003cf, 0x0004003d, - 0x00000006, 0x000003d1, 0x00000389, 0x0005008e, 0x0000001f, 0x000003d2, 0x000003d0, 0x000003d1, - 0x0004003d, 0x0000001f, 0x000003d3, 0x000003b6, 0x0004003d, 0x00000006, 0x000003d4, 0x00000384, - 0x0005008e, 0x0000001f, 0x000003d5, 0x000003d3, 0x000003d4, 0x00050081, 0x0000001f, 0x000003d6, - 0x000003d2, 0x000003d5, 0x0004003d, 0x0000001f, 0x000003d7, 0x00000065, 0x00050085, 0x0000001f, - 0x000003d8, 0x000003d6, 0x000003d7, 0x000200fe, 0x000003d8, 0x00010038, 0x00050036, 0x00000006, - 0x0000006c, 0x00000000, 0x00000068, 0x00030037, 0x00000020, 0x00000069, 0x00030037, 0x0000000d, - 0x0000006a, 0x00030037, 0x0000000d, 0x0000006b, 0x000200f8, 0x0000006d, 0x0004003b, 0x000000e2, - 0x000003f7, 0x00000007, 0x0004003b, 0x000000dd, 0x00000405, 0x00000007, 0x0004003b, 0x00000020, - 0x00000410, 0x00000007, 0x0004003b, 0x00000008, 0x00000418, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000041e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000442, 0x00000007, 0x0004003b, 0x00000008, - 0x0000044b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000459, 0x00000007, 0x0004003b, 0x000000e2, - 0x0000045a, 0x00000007, 0x0004003b, 0x000000e2, 0x00000463, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000046b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000489, 0x00000007, 0x00060041, 0x000003e2, - 0x000003e3, 0x000003e0, 0x000003e1, 0x0000009c, 0x0004003d, 0x00000006, 0x000003e4, 0x000003e3, - 0x000500b8, 0x000000af, 0x000003e5, 0x000003e4, 0x00000122, 0x000400a8, 0x000000af, 0x000003e6, - 0x000003e5, 0x000300f7, 0x000003e8, 0x00000000, 0x000400fa, 0x000003e6, 0x000003e7, 0x000003e8, - 0x000200f8, 0x000003e7, 0x00060041, 0x000003e2, 0x000003e9, 0x000003e0, 0x000003e1, 0x000001de, - 0x0004003d, 0x00000006, 0x000003ea, 0x000003e9, 0x000500b8, 0x000000af, 0x000003eb, 0x000003ea, - 0x00000122, 0x000200f9, 0x000003e8, 0x000200f8, 0x000003e8, 0x000700f5, 0x000000af, 0x000003ec, - 0x000003e5, 0x0000006d, 0x000003eb, 0x000003e7, 0x000400a8, 0x000000af, 0x000003ed, 0x000003ec, - 0x000300f7, 0x000003ef, 0x00000000, 0x000400fa, 0x000003ed, 0x000003ee, 0x000003ef, 0x000200f8, - 0x000003ee, 0x00060041, 0x000003e2, 0x000003f0, 0x000003e0, 0x000000eb, 0x000003dc, 0x0004003d, - 0x00000006, 0x000003f1, 0x000003f0, 0x000500b8, 0x000000af, 0x000003f2, 0x000003f1, 0x000000ae, - 0x000200f9, 0x000003ef, 0x000200f8, 0x000003ef, 0x000700f5, 0x000000af, 0x000003f3, 0x000003ec, - 0x000003e8, 0x000003f2, 0x000003ee, 0x000300f7, 0x000003f5, 0x00000000, 0x000400fa, 0x000003f3, - 0x000003f4, 0x000003f5, 0x000200f8, 0x000003f4, 0x000200fe, 0x0000010d, 0x000200f8, 0x000003f5, - 0x0003003e, 0x000003f7, 0x000003e1, 0x0004003d, 0x00000006, 0x000003f8, 0x0000006a, 0x00060041, - 0x000003e2, 0x000003f9, 0x000003e0, 0x000000eb, 0x00000097, 0x0004003d, 0x00000006, 0x000003fa, - 0x000003f9, 0x000500b8, 0x000000af, 0x000003fb, 0x000003f8, 0x000003fa, 0x000300f7, 0x000003fd, - 0x00000000, 0x000400fa, 0x000003fb, 0x000003fc, 0x000003fe, 0x000200f8, 0x000003fc, 0x0003003e, - 0x000003f7, 0x000000e4, 0x000200f9, 0x000003fd, 0x000200f8, 0x000003fe, 0x0004003d, 0x00000006, - 0x000003ff, 0x0000006a, 0x00060041, 0x000003e2, 0x00000400, 0x000003e0, 0x000000eb, 0x0000009c, - 0x0004003d, 0x00000006, 0x00000401, 0x00000400, 0x000500b8, 0x000000af, 0x00000402, 0x000003ff, - 0x00000401, 0x000300f7, 0x00000404, 0x00000000, 0x000400fa, 0x00000402, 0x00000403, 0x00000404, - 0x000200f8, 0x00000403, 0x0003003e, 0x000003f7, 0x000000eb, 0x000200f9, 0x00000404, 0x000200f8, - 0x00000404, 0x000200f9, 0x000003fd, 0x000200f8, 0x000003fd, 0x0004003d, 0x000000e1, 0x00000406, - 0x000003f7, 0x00060041, 0x00000407, 0x00000408, 0x000003e0, 0x000000e4, 0x00000406, 0x0004003d, - 0x000003db, 0x00000409, 0x00000408, 0x0004003d, 0x0000001f, 0x0000040a, 0x00000069, 0x00050051, - 0x00000006, 0x0000040b, 0x0000040a, 0x00000000, 0x00050051, 0x00000006, 0x0000040c, 0x0000040a, - 0x00000001, 0x00050051, 0x00000006, 0x0000040d, 0x0000040a, 0x00000002, 0x00070050, 0x00000016, - 0x0000040e, 0x0000040b, 0x0000040c, 0x0000040d, 0x0000010d, 0x00050091, 0x00000016, 0x0000040f, - 0x00000409, 0x0000040e, 0x0003003e, 0x00000405, 0x0000040f, 0x0004003d, 0x00000016, 0x00000411, - 0x00000405, 0x0008004f, 0x0000001f, 0x00000412, 0x00000411, 0x00000411, 0x00000000, 0x00000001, - 0x00000002, 0x00050041, 0x0000000d, 0x00000413, 0x00000405, 0x000003dc, 0x0004003d, 0x00000006, - 0x00000414, 0x00000413, 0x0007000c, 0x00000006, 0x00000415, 0x00000001, 0x00000028, 0x00000414, - 0x00000319, 0x00060050, 0x0000001f, 0x00000416, 0x00000415, 0x00000415, 0x00000415, 0x00050088, - 0x0000001f, 0x00000417, 0x00000412, 0x00000416, 0x0003003e, 0x00000410, 0x00000417, 0x0004003d, - 0x0000001f, 0x00000419, 0x00000410, 0x0007004f, 0x00000007, 0x0000041a, 0x00000419, 0x00000419, - 0x00000000, 0x00000001, 0x0005008e, 0x00000007, 0x0000041b, 0x0000041a, 0x00000122, 0x00050050, - 0x00000007, 0x0000041c, 0x00000122, 0x00000122, 0x00050081, 0x00000007, 0x0000041d, 0x0000041b, - 0x0000041c, 0x0003003e, 0x00000418, 0x0000041d, 0x00050041, 0x0000000d, 0x0000041f, 0x00000410, - 0x000001de, 0x0004003d, 0x00000006, 0x00000420, 0x0000041f, 0x0003003e, 0x0000041e, 0x00000420, - 0x00050041, 0x0000000d, 0x00000421, 0x00000418, 0x00000097, 0x0004003d, 0x00000006, 0x00000422, - 0x00000421, 0x000500b8, 0x000000af, 0x00000423, 0x00000422, 0x000000df, 0x000400a8, 0x000000af, - 0x00000424, 0x00000423, 0x000300f7, 0x00000426, 0x00000000, 0x000400fa, 0x00000424, 0x00000425, - 0x00000426, 0x000200f8, 0x00000425, 0x00050041, 0x0000000d, 0x00000427, 0x00000418, 0x00000097, - 0x0004003d, 0x00000006, 0x00000428, 0x00000427, 0x000500ba, 0x000000af, 0x00000429, 0x00000428, - 0x0000010d, 0x000200f9, 0x00000426, 0x000200f8, 0x00000426, 0x000700f5, 0x000000af, 0x0000042a, - 0x00000423, 0x000003fd, 0x00000429, 0x00000425, 0x000400a8, 0x000000af, 0x0000042b, 0x0000042a, - 0x000300f7, 0x0000042d, 0x00000000, 0x000400fa, 0x0000042b, 0x0000042c, 0x0000042d, 0x000200f8, - 0x0000042c, 0x00050041, 0x0000000d, 0x0000042e, 0x00000418, 0x0000009c, 0x0004003d, 0x00000006, - 0x0000042f, 0x0000042e, 0x000500b8, 0x000000af, 0x00000430, 0x0000042f, 0x000000df, 0x000200f9, - 0x0000042d, 0x000200f8, 0x0000042d, 0x000700f5, 0x000000af, 0x00000431, 0x0000042a, 0x00000426, - 0x00000430, 0x0000042c, 0x000400a8, 0x000000af, 0x00000432, 0x00000431, 0x000300f7, 0x00000434, - 0x00000000, 0x000400fa, 0x00000432, 0x00000433, 0x00000434, 0x000200f8, 0x00000433, 0x00050041, - 0x0000000d, 0x00000435, 0x00000418, 0x0000009c, 0x0004003d, 0x00000006, 0x00000436, 0x00000435, - 0x000500ba, 0x000000af, 0x00000437, 0x00000436, 0x0000010d, 0x000200f9, 0x00000434, 0x000200f8, - 0x00000434, 0x000700f5, 0x000000af, 0x00000438, 0x00000431, 0x0000042d, 0x00000437, 0x00000433, - 0x0004003d, 0x00000006, 0x00000439, 0x0000041e, 0x000500b8, 0x000000af, 0x0000043a, 0x00000439, - 0x000000df, 0x000500a6, 0x000000af, 0x0000043b, 0x00000438, 0x0000043a, 0x0004003d, 0x00000006, - 0x0000043c, 0x0000041e, 0x000500ba, 0x000000af, 0x0000043d, 0x0000043c, 0x0000010d, 0x000500a6, - 0x000000af, 0x0000043e, 0x0000043b, 0x0000043d, 0x000300f7, 0x00000440, 0x00000000, 0x000400fa, - 0x0000043e, 0x0000043f, 0x00000440, 0x000200f8, 0x0000043f, 0x000200fe, 0x0000010d, 0x000200f8, - 0x00000440, 0x00060041, 0x000003e2, 0x00000443, 0x000003e0, 0x000003e1, 0x00000097, 0x0004003d, - 0x00000006, 0x00000444, 0x00000443, 0x0004003d, 0x00000006, 0x00000445, 0x0000006b, 0x0008000c, - 0x00000006, 0x00000446, 0x00000001, 0x0000002b, 0x00000445, 0x000000df, 0x0000010d, 0x00050083, - 0x00000006, 0x00000447, 0x0000010d, 0x00000446, 0x00050085, 0x00000006, 0x00000448, 0x00000447, - 0x0000010b, 0x00050081, 0x00000006, 0x00000449, 0x0000010d, 0x00000448, 0x00050085, 0x00000006, - 0x0000044a, 0x00000444, 0x00000449, 0x0003003e, 0x00000442, 0x0000044a, 0x0004003d, 0x0000044d, - 0x00000450, 0x0000044f, 0x00040064, 0x0000044c, 0x00000451, 0x00000450, 0x00050067, 0x00000452, - 0x00000453, 0x00000451, 0x000000e4, 0x0007004f, 0x00000454, 0x00000455, 0x00000453, 0x00000453, - 0x00000000, 0x00000001, 0x0004006f, 0x00000007, 0x00000456, 0x00000455, 0x00050050, 0x00000007, - 0x00000457, 0x0000010d, 0x0000010d, 0x00050088, 0x00000007, 0x00000458, 0x00000457, 0x00000456, - 0x0003003e, 0x0000044b, 0x00000458, 0x0003003e, 0x00000459, 0x000000df, 0x0003003e, 0x0000045a, - 0x0000045b, 0x000200f9, 0x0000045c, 0x000200f8, 0x0000045c, 0x000400f6, 0x0000045e, 0x0000045f, - 0x00000000, 0x000200f9, 0x00000460, 0x000200f8, 0x00000460, 0x0004003d, 0x000000e1, 0x00000461, - 0x0000045a, 0x000500b3, 0x000000af, 0x00000462, 0x00000461, 0x000000eb, 0x000400fa, 0x00000462, - 0x0000045d, 0x0000045e, 0x000200f8, 0x0000045d, 0x0003003e, 0x00000463, 0x0000045b, 0x000200f9, - 0x00000464, 0x000200f8, 0x00000464, 0x000400f6, 0x00000466, 0x00000467, 0x00000000, 0x000200f9, - 0x00000468, 0x000200f8, 0x00000468, 0x0004003d, 0x000000e1, 0x00000469, 0x00000463, 0x000500b3, - 0x000000af, 0x0000046a, 0x00000469, 0x000000eb, 0x000400fa, 0x0000046a, 0x00000465, 0x00000466, - 0x000200f8, 0x00000465, 0x0004003d, 0x0000044d, 0x0000046c, 0x0000044f, 0x0004003d, 0x00000007, - 0x0000046d, 0x00000418, 0x0004003d, 0x000000e1, 0x0000046e, 0x00000463, 0x0004006f, 0x00000006, - 0x0000046f, 0x0000046e, 0x0004003d, 0x000000e1, 0x00000470, 0x0000045a, 0x0004006f, 0x00000006, - 0x00000471, 0x00000470, 0x00050050, 0x00000007, 0x00000472, 0x0000046f, 0x00000471, 0x0004003d, - 0x00000007, 0x00000473, 0x0000044b, 0x00050085, 0x00000007, 0x00000474, 0x00000472, 0x00000473, - 0x00050081, 0x00000007, 0x00000475, 0x0000046d, 0x00000474, 0x0004003d, 0x000000e1, 0x00000476, - 0x000003f7, 0x0004006f, 0x00000006, 0x00000477, 0x00000476, 0x00050051, 0x00000006, 0x00000478, - 0x00000475, 0x00000000, 0x00050051, 0x00000006, 0x00000479, 0x00000475, 0x00000001, 0x00060050, - 0x0000001f, 0x0000047a, 0x00000478, 0x00000479, 0x00000477, 0x00050057, 0x00000016, 0x0000047b, - 0x0000046c, 0x0000047a, 0x00050051, 0x00000006, 0x0000047c, 0x0000047b, 0x00000000, 0x0003003e, - 0x0000046b, 0x0000047c, 0x0004003d, 0x00000006, 0x0000047d, 0x0000041e, 0x0004003d, 0x00000006, - 0x0000047e, 0x00000442, 0x00050083, 0x00000006, 0x0000047f, 0x0000047d, 0x0000047e, 0x0004003d, - 0x00000006, 0x00000480, 0x0000046b, 0x000500ba, 0x000000af, 0x00000481, 0x0000047f, 0x00000480, - 0x000600a9, 0x00000006, 0x00000482, 0x00000481, 0x000000df, 0x0000010d, 0x0004003d, 0x00000006, - 0x00000483, 0x00000459, 0x00050081, 0x00000006, 0x00000484, 0x00000483, 0x00000482, 0x0003003e, - 0x00000459, 0x00000484, 0x000200f9, 0x00000467, 0x000200f8, 0x00000467, 0x0004003d, 0x000000e1, - 0x00000485, 0x00000463, 0x00050080, 0x000000e1, 0x00000486, 0x00000485, 0x000000eb, 0x0003003e, - 0x00000463, 0x00000486, 0x000200f9, 0x00000464, 0x000200f8, 0x00000466, 0x000200f9, 0x0000045f, - 0x000200f8, 0x0000045f, 0x0004003d, 0x000000e1, 0x00000487, 0x0000045a, 0x00050080, 0x000000e1, - 0x00000488, 0x00000487, 0x000000eb, 0x0003003e, 0x0000045a, 0x00000488, 0x000200f9, 0x0000045c, - 0x000200f8, 0x0000045e, 0x0004003d, 0x00000006, 0x0000048a, 0x00000459, 0x00050088, 0x00000006, - 0x0000048c, 0x0000048a, 0x0000048b, 0x00060041, 0x000003e2, 0x0000048d, 0x000003e0, 0x000000eb, - 0x000003dc, 0x0004003d, 0x00000006, 0x0000048e, 0x0000048d, 0x0008000c, 0x00000006, 0x0000048f, - 0x00000001, 0x0000002b, 0x0000048e, 0x000000df, 0x0000010d, 0x0008000c, 0x00000006, 0x00000490, - 0x00000001, 0x0000002e, 0x0000010d, 0x0000048c, 0x0000048f, 0x0003003e, 0x00000489, 0x00000490, - 0x0004003d, 0x00000006, 0x00000492, 0x00000489, 0x0008000c, 0x00000006, 0x00000493, 0x00000001, - 0x0000002e, 0x00000491, 0x0000010d, 0x00000492, 0x000200fe, 0x00000493, 0x00010038, 0x00050036, - 0x0000006e, 0x00000070, 0x00000000, 0x0000006f, 0x000200f8, 0x00000071, 0x0004003b, 0x000000e2, - 0x00000496, 0x00000007, 0x0004003b, 0x000000e2, 0x0000049f, 0x00000007, 0x0004003b, 0x000000e2, - 0x000004a4, 0x00000007, 0x0004003b, 0x0000000d, 0x000004a9, 0x00000007, 0x0004003b, 0x0000000d, - 0x000004ad, 0x00000007, 0x0004003b, 0x0000000d, 0x000004b3, 0x00000007, 0x0004003b, 0x0000000d, - 0x000004b7, 0x00000007, 0x0004003b, 0x000000e2, 0x000004bb, 0x00000007, 0x0004003b, 0x000000e2, - 0x000004cb, 0x00000007, 0x0004003b, 0x0000000d, 0x000004d8, 0x00000007, 0x0004003b, 0x000000e2, - 0x000004e0, 0x00000007, 0x00060041, 0x000003e2, 0x0000049b, 0x00000499, 0x0000049a, 0x00000097, - 0x0004003d, 0x00000006, 0x0000049c, 0x0000049b, 0x00050081, 0x00000006, 0x0000049d, 0x0000049c, - 0x00000122, 0x0004006e, 0x000000e1, 0x0000049e, 0x0000049d, 0x0003003e, 0x00000496, 0x0000049e, - 0x00060041, 0x000003e2, 0x000004a0, 0x00000499, 0x0000049a, 0x0000009c, 0x0004003d, 0x00000006, - 0x000004a1, 0x000004a0, 0x00050081, 0x00000006, 0x000004a2, 0x000004a1, 0x00000122, 0x0004006e, - 0x000000e1, 0x000004a3, 0x000004a2, 0x0003003e, 0x0000049f, 0x000004a3, 0x00060041, 0x000003e2, - 0x000004a5, 0x00000499, 0x0000049a, 0x000001de, 0x0004003d, 0x00000006, 0x000004a6, 0x000004a5, - 0x00050081, 0x00000006, 0x000004a7, 0x000004a6, 0x00000122, 0x0004006e, 0x000000e1, 0x000004a8, - 0x000004a7, 0x0003003e, 0x000004a4, 0x000004a8, 0x00060041, 0x000003e2, 0x000004ab, 0x00000499, - 0x000004aa, 0x00000097, 0x0004003d, 0x00000006, 0x000004ac, 0x000004ab, 0x0003003e, 0x000004a9, - 0x000004ac, 0x00060041, 0x000003e2, 0x000004ae, 0x00000499, 0x000004aa, 0x0000009c, 0x0004003d, - 0x00000006, 0x000004af, 0x000004ae, 0x0004003d, 0x00000006, 0x000004b0, 0x000004a9, 0x00050081, - 0x00000006, 0x000004b1, 0x000004b0, 0x000000b9, 0x0007000c, 0x00000006, 0x000004b2, 0x00000001, - 0x00000028, 0x000004af, 0x000004b1, 0x0003003e, 0x000004ad, 0x000004b2, 0x00060041, 0x000003e2, - 0x000004b4, 0x00000499, 0x000004aa, 0x000001de, 0x0004003d, 0x00000006, 0x000004b5, 0x000004b4, - 0x0007000c, 0x00000006, 0x000004b6, 0x00000001, 0x00000028, 0x000004b5, 0x0000010d, 0x0003003e, - 0x000004b3, 0x000004b6, 0x00060041, 0x000003e2, 0x000004b8, 0x00000499, 0x000004aa, 0x000003dc, - 0x0004003d, 0x00000006, 0x000004b9, 0x000004b8, 0x0007000c, 0x00000006, 0x000004ba, 0x00000001, - 0x00000028, 0x000004b9, 0x0000010d, 0x0003003e, 0x000004b7, 0x000004ba, 0x00050041, 0x000004be, - 0x000004bf, 0x000004bd, 0x00000097, 0x0004003d, 0x00000006, 0x000004c0, 0x000004bf, 0x0004003d, - 0x00000006, 0x000004c1, 0x000004b3, 0x00050088, 0x00000006, 0x000004c2, 0x000004c0, 0x000004c1, - 0x0004003d, 0x000000e1, 0x000004c3, 0x00000496, 0x0004006f, 0x00000006, 0x000004c4, 0x000004c3, - 0x00050085, 0x00000006, 0x000004c5, 0x000004c2, 0x000004c4, 0x0006000c, 0x00000006, 0x000004c6, - 0x00000001, 0x00000008, 0x000004c5, 0x0004006e, 0x000000e1, 0x000004c7, 0x000004c6, 0x0004003d, - 0x000000e1, 0x000004c8, 0x00000496, 0x00050082, 0x000000e1, 0x000004c9, 0x000004c8, 0x000000eb, - 0x0008000c, 0x000000e1, 0x000004ca, 0x00000001, 0x0000002d, 0x000004c7, 0x000000e4, 0x000004c9, - 0x0003003e, 0x000004bb, 0x000004ca, 0x00050041, 0x000004be, 0x000004cc, 0x000004bd, 0x0000009c, - 0x0004003d, 0x00000006, 0x000004cd, 0x000004cc, 0x0004003d, 0x00000006, 0x000004ce, 0x000004b7, - 0x00050088, 0x00000006, 0x000004cf, 0x000004cd, 0x000004ce, 0x0004003d, 0x000000e1, 0x000004d0, - 0x0000049f, 0x0004006f, 0x00000006, 0x000004d1, 0x000004d0, 0x00050085, 0x00000006, 0x000004d2, - 0x000004cf, 0x000004d1, 0x0006000c, 0x00000006, 0x000004d3, 0x00000001, 0x00000008, 0x000004d2, - 0x0004006e, 0x000000e1, 0x000004d4, 0x000004d3, 0x0004003d, 0x000000e1, 0x000004d5, 0x0000049f, - 0x00050082, 0x000000e1, 0x000004d6, 0x000004d5, 0x000000eb, 0x0008000c, 0x000000e1, 0x000004d7, - 0x00000001, 0x0000002d, 0x000004d4, 0x000000e4, 0x000004d6, 0x0003003e, 0x000004cb, 0x000004d7, - 0x00050041, 0x000004be, 0x000004db, 0x000004da, 0x000001de, 0x0004003d, 0x00000006, 0x000004dc, - 0x000004db, 0x0004007f, 0x00000006, 0x000004dd, 0x000004dc, 0x0004003d, 0x00000006, 0x000004de, - 0x000004a9, 0x0007000c, 0x00000006, 0x000004df, 0x00000001, 0x00000028, 0x000004dd, 0x000004de, - 0x0003003e, 0x000004d8, 0x000004df, 0x0004003d, 0x00000006, 0x000004e1, 0x000004d8, 0x0004003d, - 0x00000006, 0x000004e2, 0x000004a9, 0x00050083, 0x00000006, 0x000004e3, 0x000004e1, 0x000004e2, - 0x0004003d, 0x00000006, 0x000004e4, 0x000004ad, 0x0004003d, 0x00000006, 0x000004e5, 0x000004a9, - 0x00050083, 0x00000006, 0x000004e6, 0x000004e4, 0x000004e5, 0x00050088, 0x00000006, 0x000004e7, - 0x000004e3, 0x000004e6, 0x0004003d, 0x000000e1, 0x000004e8, 0x000004a4, 0x0004006f, 0x00000006, - 0x000004e9, 0x000004e8, 0x00050085, 0x00000006, 0x000004ea, 0x000004e7, 0x000004e9, 0x0006000c, - 0x00000006, 0x000004eb, 0x00000001, 0x00000008, 0x000004ea, 0x0004006e, 0x000000e1, 0x000004ec, - 0x000004eb, 0x0004003d, 0x000000e1, 0x000004ed, 0x000004a4, 0x00050082, 0x000000e1, 0x000004ee, - 0x000004ed, 0x000000eb, 0x0008000c, 0x000000e1, 0x000004ef, 0x00000001, 0x0000002d, 0x000004ec, - 0x000000e4, 0x000004ee, 0x0003003e, 0x000004e0, 0x000004ef, 0x0004003d, 0x000000e1, 0x000004f0, - 0x000004e0, 0x0004003d, 0x000000e1, 0x000004f1, 0x0000049f, 0x00050084, 0x000000e1, 0x000004f2, - 0x000004f0, 0x000004f1, 0x0004003d, 0x000000e1, 0x000004f3, 0x000004cb, 0x00050080, 0x000000e1, - 0x000004f4, 0x000004f2, 0x000004f3, 0x0004003d, 0x000000e1, 0x000004f5, 0x00000496, 0x00050084, - 0x000000e1, 0x000004f6, 0x000004f4, 0x000004f5, 0x0004003d, 0x000000e1, 0x000004f7, 0x000004bb, - 0x00050080, 0x000000e1, 0x000004f8, 0x000004f6, 0x000004f7, 0x0004007c, 0x0000006e, 0x000004f9, - 0x000004f8, 0x000200fe, 0x000004f9, 0x00010038, + 0x00000006, 0x00000620, 0x3f8ccccd, 0x0004002b, 0x00000006, 0x00000625, 0x3df5c28f, 0x0004002b, + 0x00000006, 0x0000062c, 0x3f3851ec, 0x0004002b, 0x00000006, 0x0000062d, 0x3f1eb852, 0x0004002b, + 0x00000006, 0x0000062e, 0x3f051eb8, 0x0006002c, 0x0000001f, 0x0000062f, 0x0000062c, 0x0000062d, + 0x0000062e, 0x0004002b, 0x00000006, 0x0000064e, 0x3d75c28f, 0x00090019, 0x00000669, 0x00000006, + 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x0000066a, + 0x00000669, 0x00040020, 0x0000066b, 0x00000000, 0x0000066a, 0x0004003b, 0x0000066b, 0x0000066c, + 0x00000000, 0x0004002b, 0x00000006, 0x00000698, 0x3ee66666, 0x00040020, 0x000006b7, 0x00000003, + 0x00000016, 0x0004003b, 0x000006b7, 0x000006b8, 0x00000003, 0x00050036, 0x00000002, 0x00000004, + 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x0000000d, 0x000004fc, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000500, 0x00000007, 0x0004003b, 0x0000000d, 0x00000503, 0x00000007, + 0x0004003b, 0x00000020, 0x00000506, 0x00000007, 0x0004003b, 0x00000020, 0x0000050a, 0x00000007, + 0x0004003b, 0x00000008, 0x00000519, 0x00000007, 0x0004003b, 0x00000008, 0x0000051e, 0x00000007, + 0x0004003b, 0x00000020, 0x00000520, 0x00000007, 0x0004003b, 0x00000020, 0x00000522, 0x00000007, + 0x0004003b, 0x00000020, 0x00000524, 0x00000007, 0x0004003b, 0x0000000d, 0x00000526, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000529, 0x00000007, 0x0004003b, 0x0000000d, 0x0000052c, 0x00000007, + 0x0004003b, 0x000000dd, 0x00000530, 0x00000007, 0x0004003b, 0x00000008, 0x00000532, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000534, 0x00000007, 0x0004003b, 0x0000000d, 0x00000536, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000538, 0x00000007, 0x0004003b, 0x00000020, 0x00000544, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000547, 0x00000007, 0x0004003b, 0x0000000d, 0x0000054c, 0x00000007, + 0x0004003b, 0x00000020, 0x00000551, 0x00000007, 0x0004003b, 0x00000020, 0x00000553, 0x00000007, + 0x0004003b, 0x00000008, 0x00000555, 0x00000007, 0x0004003b, 0x0000000d, 0x00000557, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000559, 0x00000007, 0x0004003b, 0x0000000d, 0x0000055b, 0x00000007, + 0x0004003b, 0x00000020, 0x00000566, 0x00000007, 0x0004003b, 0x00000020, 0x00000568, 0x00000007, + 0x0004003b, 0x00000020, 0x0000056a, 0x00000007, 0x0004003b, 0x00000008, 0x0000056c, 0x00000007, + 0x0004003b, 0x00000020, 0x0000056f, 0x00000007, 0x0004003b, 0x00000020, 0x00000570, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000577, 0x00000007, 0x0004003b, 0x00000020, 0x00000580, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000582, 0x00000007, 0x0004003b, 0x0000000d, 0x00000583, 0x00000007, + 0x0004003b, 0x00000020, 0x00000593, 0x00000007, 0x0004003b, 0x00000020, 0x00000595, 0x00000007, + 0x0004003b, 0x00000020, 0x00000597, 0x00000007, 0x0004003b, 0x0000000d, 0x00000599, 0x00000007, + 0x0004003b, 0x0000000d, 0x0000059b, 0x00000007, 0x0004003b, 0x00000020, 0x0000059d, 0x00000007, + 0x0004003b, 0x00000020, 0x0000059f, 0x00000007, 0x0004003b, 0x000005a8, 0x000005a9, 0x00000007, + 0x0004003b, 0x000005ac, 0x000005ad, 0x00000007, 0x0004003b, 0x000005a8, 0x000005b6, 0x00000007, + 0x0004003b, 0x000005a8, 0x000005b9, 0x00000007, 0x0004003b, 0x000005a8, 0x000005be, 0x00000007, + 0x0004003b, 0x000005a8, 0x000005c7, 0x00000007, 0x0004003b, 0x000005d3, 0x000005d4, 0x00000007, + 0x0004003b, 0x00000020, 0x000005e2, 0x00000007, 0x0004003b, 0x00000020, 0x000005e6, 0x00000007, + 0x0004003b, 0x0000000d, 0x000005ec, 0x00000007, 0x0004003b, 0x00000020, 0x000005ef, 0x00000007, + 0x0004003b, 0x0000000d, 0x000005f5, 0x00000007, 0x0004003b, 0x00000020, 0x00000603, 0x00000007, + 0x0004003b, 0x00000020, 0x00000605, 0x00000007, 0x0004003b, 0x00000020, 0x00000607, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000609, 0x00000007, 0x0004003b, 0x0000000d, 0x0000060b, 0x00000007, + 0x0004003b, 0x00000020, 0x0000060d, 0x00000007, 0x0004003b, 0x00000020, 0x0000060f, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000616, 0x00000007, 0x0004003b, 0x00000020, 0x0000061c, 0x00000007, + 0x0004003b, 0x00000020, 0x00000628, 0x00000007, 0x0004003b, 0x00000020, 0x00000631, 0x00000007, + 0x0004003b, 0x00000020, 0x00000637, 0x00000007, 0x0004003b, 0x0000000d, 0x0000063e, 0x00000007, + 0x0004003b, 0x00000020, 0x00000655, 0x00000007, 0x0004003b, 0x0000000d, 0x00000659, 0x00000007, + 0x0004003b, 0x00000020, 0x00000660, 0x00000007, 0x0004003b, 0x0000000d, 0x00000665, 0x00000007, + 0x0004003b, 0x00000020, 0x00000668, 0x00000007, 0x0004003b, 0x00000020, 0x00000674, 0x00000007, + 0x0004003b, 0x00000020, 0x00000679, 0x00000007, 0x0004003b, 0x0000000d, 0x0000067e, 0x00000007, + 0x0004003b, 0x00000020, 0x0000067f, 0x00000007, 0x0004003b, 0x00000020, 0x00000687, 0x00000007, + 0x0004003b, 0x00000020, 0x0000069c, 0x00000007, 0x0004003b, 0x0000000d, 0x0000069f, 0x00000007, + 0x0004003b, 0x0000000d, 0x000006a3, 0x00000007, 0x0004003b, 0x0000000d, 0x000006a9, 0x00000007, + 0x0004003b, 0x0000000d, 0x000006ae, 0x00000007, 0x00060041, 0x000003e2, 0x000004fe, 0x00000499, + 0x000004fd, 0x00000097, 0x0004003d, 0x00000006, 0x000004ff, 0x000004fe, 0x0003003e, 0x000004fc, + 0x000004ff, 0x00060041, 0x000003e2, 0x00000501, 0x00000499, 0x000004fd, 0x0000009c, 0x0004003d, + 0x00000006, 0x00000502, 0x00000501, 0x0003003e, 0x00000500, 0x00000502, 0x00060041, 0x000003e2, + 0x00000504, 0x00000499, 0x000004fd, 0x000001de, 0x0004003d, 0x00000006, 0x00000505, 0x00000504, + 0x0003003e, 0x00000503, 0x00000505, 0x0004003d, 0x0000001f, 0x00000508, 0x00000507, 0x0006000c, + 0x0000001f, 0x00000509, 0x00000001, 0x00000045, 0x00000508, 0x0003003e, 0x00000506, 0x00000509, + 0x0004003d, 0x0000001f, 0x0000050c, 0x0000050b, 0x0004003d, 0x0000001f, 0x0000050e, 0x0000050d, + 0x00050083, 0x0000001f, 0x0000050f, 0x0000050c, 0x0000050e, 0x0006000c, 0x0000001f, 0x00000510, + 0x00000001, 0x00000045, 0x0000050f, 0x0003003e, 0x0000050a, 0x00000510, 0x0004003d, 0x0000001f, + 0x00000511, 0x00000506, 0x0004003d, 0x0000001f, 0x00000512, 0x0000050a, 0x00050094, 0x00000006, + 0x00000513, 0x00000511, 0x00000512, 0x000500b8, 0x000000af, 0x00000514, 0x00000513, 0x000000df, + 0x000300f7, 0x00000516, 0x00000000, 0x000400fa, 0x00000514, 0x00000515, 0x00000516, 0x000200f8, + 0x00000515, 0x0004003d, 0x0000001f, 0x00000517, 0x00000506, 0x0004007f, 0x0000001f, 0x00000518, + 0x00000517, 0x0003003e, 0x00000506, 0x00000518, 0x000200f9, 0x00000516, 0x000200f8, 0x00000516, + 0x0004003d, 0x00000007, 0x0000051f, 0x0000051c, 0x0003003e, 0x0000051e, 0x0000051f, 0x0004003d, + 0x0000001f, 0x00000521, 0x00000506, 0x0003003e, 0x00000520, 0x00000521, 0x0004003d, 0x0000001f, + 0x00000523, 0x0000050d, 0x0003003e, 0x00000522, 0x00000523, 0x0004003d, 0x0000001f, 0x00000525, + 0x0000050a, 0x0003003e, 0x00000524, 0x00000525, 0x00060041, 0x000003e2, 0x00000527, 0x00000499, + 0x0000051d, 0x00000097, 0x0004003d, 0x00000006, 0x00000528, 0x00000527, 0x0003003e, 0x00000526, + 0x00000528, 0x00060041, 0x000003e2, 0x0000052a, 0x00000499, 0x0000051d, 0x0000009c, 0x0004003d, + 0x00000006, 0x0000052b, 0x0000052a, 0x0003003e, 0x00000529, 0x0000052b, 0x00060041, 0x000003e2, + 0x0000052d, 0x00000499, 0x0000051d, 0x000001de, 0x0004003d, 0x00000006, 0x0000052e, 0x0000052d, + 0x0003003e, 0x0000052c, 0x0000052e, 0x000c0039, 0x00000007, 0x0000052f, 0x0000003a, 0x0000051a, + 0x0000051e, 0x00000520, 0x00000522, 0x00000524, 0x00000526, 0x00000529, 0x0000052c, 0x0003003e, + 0x00000519, 0x0000052f, 0x0004003d, 0x00000007, 0x00000533, 0x00000519, 0x0003003e, 0x00000532, + 0x00000533, 0x0004003d, 0x00000006, 0x00000535, 0x000004fc, 0x0003003e, 0x00000534, 0x00000535, + 0x0004003d, 0x00000006, 0x00000537, 0x00000500, 0x0003003e, 0x00000536, 0x00000537, 0x0004003d, + 0x00000006, 0x00000539, 0x00000503, 0x0003003e, 0x00000538, 0x00000539, 0x00090039, 0x00000016, + 0x0000053a, 0x0000001d, 0x00000531, 0x00000532, 0x00000534, 0x00000536, 0x00000538, 0x0004003d, + 0x00000016, 0x0000053c, 0x0000053b, 0x00050085, 0x00000016, 0x0000053d, 0x0000053a, 0x0000053c, + 0x0003003e, 0x00000530, 0x0000053d, 0x00050041, 0x0000000d, 0x0000053e, 0x00000530, 0x000003dc, + 0x0004003d, 0x00000006, 0x0000053f, 0x0000053e, 0x000500b8, 0x000000af, 0x00000540, 0x0000053f, + 0x00000122, 0x000300f7, 0x00000542, 0x00000000, 0x000400fa, 0x00000540, 0x00000541, 0x00000542, + 0x000200f8, 0x00000541, 0x000100fc, 0x000200f8, 0x00000542, 0x0004003d, 0x00000016, 0x00000545, + 0x00000530, 0x0008004f, 0x0000001f, 0x00000546, 0x00000545, 0x00000545, 0x00000000, 0x00000001, + 0x00000002, 0x0003003e, 0x00000544, 0x00000546, 0x00060041, 0x000003e2, 0x00000549, 0x00000499, + 0x00000548, 0x000003dc, 0x0004003d, 0x00000006, 0x0000054a, 0x00000549, 0x0008000c, 0x00000006, + 0x0000054b, 0x00000001, 0x0000002b, 0x0000054a, 0x000000df, 0x0000010d, 0x0003003e, 0x00000547, + 0x0000054b, 0x00060041, 0x000003e2, 0x0000054e, 0x00000499, 0x0000054d, 0x000003dc, 0x0004003d, + 0x00000006, 0x0000054f, 0x0000054e, 0x0008000c, 0x00000006, 0x00000550, 0x00000001, 0x0000002b, + 0x0000054f, 0x000002f2, 0x0000010d, 0x0003003e, 0x0000054c, 0x00000550, 0x0004003d, 0x0000001f, + 0x00000552, 0x00000506, 0x0003003e, 0x00000551, 0x00000552, 0x0004003d, 0x00000007, 0x00000556, + 0x00000519, 0x0003003e, 0x00000555, 0x00000556, 0x0004003d, 0x00000006, 0x00000558, 0x000004fc, + 0x0003003e, 0x00000557, 0x00000558, 0x0004003d, 0x00000006, 0x0000055a, 0x00000500, 0x0003003e, + 0x00000559, 0x0000055a, 0x0004003d, 0x00000006, 0x0000055c, 0x00000503, 0x0003003e, 0x0000055b, + 0x0000055c, 0x00090039, 0x00000016, 0x0000055d, 0x0000001d, 0x00000554, 0x00000555, 0x00000557, + 0x00000559, 0x0000055b, 0x0008004f, 0x0000001f, 0x0000055e, 0x0000055d, 0x0000055d, 0x00000000, + 0x00000001, 0x00000002, 0x0003003e, 0x00000553, 0x0000055e, 0x0004003d, 0x0000001f, 0x0000055f, + 0x00000553, 0x00050083, 0x0000001f, 0x00000561, 0x0000055f, 0x00000560, 0x0006000c, 0x00000006, + 0x00000562, 0x00000001, 0x00000042, 0x00000561, 0x000500ba, 0x000000af, 0x00000563, 0x00000562, + 0x000002f2, 0x000300f7, 0x00000565, 0x00000000, 0x000400fa, 0x00000563, 0x00000564, 0x00000565, + 0x000200f8, 0x00000564, 0x0004003d, 0x0000001f, 0x00000567, 0x00000551, 0x0003003e, 0x00000566, + 0x00000567, 0x0004003d, 0x0000001f, 0x00000569, 0x00000553, 0x0003003e, 0x00000568, 0x00000569, + 0x0004003d, 0x0000001f, 0x0000056b, 0x0000050d, 0x0003003e, 0x0000056a, 0x0000056b, 0x0004003d, + 0x00000007, 0x0000056d, 0x00000519, 0x0003003e, 0x0000056c, 0x0000056d, 0x00080039, 0x0000001f, + 0x0000056e, 0x0000005c, 0x00000566, 0x00000568, 0x0000056a, 0x0000056c, 0x0003003e, 0x00000551, + 0x0000056e, 0x000200f9, 0x00000565, 0x000200f8, 0x00000565, 0x0003003e, 0x0000056f, 0x00000177, + 0x00050041, 0x00000572, 0x00000573, 0x00000499, 0x00000571, 0x0004003d, 0x00000016, 0x00000574, + 0x00000573, 0x0008004f, 0x0000001f, 0x00000575, 0x00000574, 0x00000574, 0x00000000, 0x00000001, + 0x00000002, 0x0006000c, 0x0000001f, 0x00000576, 0x00000001, 0x00000045, 0x00000575, 0x0003003e, + 0x00000570, 0x00000576, 0x00050041, 0x000004be, 0x00000578, 0x000004da, 0x000001de, 0x0004003d, + 0x00000006, 0x00000579, 0x00000578, 0x0004007f, 0x00000006, 0x0000057a, 0x00000579, 0x0007000c, + 0x00000006, 0x0000057b, 0x00000001, 0x00000028, 0x0000057a, 0x000000df, 0x0004003d, 0x0000001f, + 0x0000057c, 0x00000551, 0x0004003d, 0x0000001f, 0x0000057d, 0x00000570, 0x00050094, 0x00000006, + 0x0000057e, 0x0000057c, 0x0000057d, 0x0007000c, 0x00000006, 0x0000057f, 0x00000001, 0x00000028, + 0x0000057e, 0x000000df, 0x0004003d, 0x0000001f, 0x00000581, 0x0000050d, 0x0003003e, 0x00000580, + 0x00000581, 0x0003003e, 0x00000582, 0x0000057b, 0x0003003e, 0x00000583, 0x0000057f, 0x00070039, + 0x00000006, 0x00000584, 0x0000006c, 0x00000580, 0x00000582, 0x00000583, 0x0003003e, 0x00000577, + 0x00000584, 0x00060041, 0x000003e2, 0x00000585, 0x00000499, 0x00000571, 0x000003dc, 0x0004003d, + 0x00000006, 0x00000586, 0x00000585, 0x000500ba, 0x000000af, 0x00000587, 0x00000586, 0x00000122, + 0x000300f7, 0x00000589, 0x00000000, 0x000400fa, 0x00000587, 0x00000588, 0x00000589, 0x000200f8, + 0x00000588, 0x00050041, 0x00000572, 0x0000058b, 0x00000499, 0x0000058a, 0x0004003d, 0x00000016, + 0x0000058c, 0x0000058b, 0x0008004f, 0x0000001f, 0x0000058d, 0x0000058c, 0x0000058c, 0x00000000, + 0x00000001, 0x00000002, 0x0006000c, 0x00000006, 0x0000058e, 0x00000001, 0x00000042, 0x0000058d, + 0x000500ba, 0x000000af, 0x0000058f, 0x0000058e, 0x00000319, 0x000200f9, 0x00000589, 0x000200f8, + 0x00000589, 0x000700f5, 0x000000af, 0x00000590, 0x00000587, 0x00000565, 0x0000058f, 0x00000588, + 0x000300f7, 0x00000592, 0x00000000, 0x000400fa, 0x00000590, 0x00000591, 0x00000592, 0x000200f8, + 0x00000591, 0x0004003d, 0x0000001f, 0x00000594, 0x00000551, 0x0003003e, 0x00000593, 0x00000594, + 0x0004003d, 0x0000001f, 0x00000596, 0x0000050a, 0x0003003e, 0x00000595, 0x00000596, 0x0004003d, + 0x0000001f, 0x00000598, 0x00000544, 0x0003003e, 0x00000597, 0x00000598, 0x0004003d, 0x00000006, + 0x0000059a, 0x00000547, 0x0003003e, 0x00000599, 0x0000059a, 0x0004003d, 0x00000006, 0x0000059c, + 0x0000054c, 0x0003003e, 0x0000059b, 0x0000059c, 0x0004003d, 0x0000001f, 0x0000059e, 0x00000570, + 0x0003003e, 0x0000059d, 0x0000059e, 0x00050041, 0x00000572, 0x000005a0, 0x00000499, 0x0000058a, + 0x0004003d, 0x00000016, 0x000005a1, 0x000005a0, 0x0008004f, 0x0000001f, 0x000005a2, 0x000005a1, + 0x000005a1, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x0000059f, 0x000005a2, 0x000b0039, + 0x0000001f, 0x000005a3, 0x00000066, 0x00000593, 0x00000595, 0x00000597, 0x00000599, 0x0000059b, + 0x0000059d, 0x0000059f, 0x0004003d, 0x00000006, 0x000005a4, 0x00000577, 0x0005008e, 0x0000001f, + 0x000005a5, 0x000005a3, 0x000005a4, 0x0004003d, 0x0000001f, 0x000005a6, 0x0000056f, 0x00050081, + 0x0000001f, 0x000005a7, 0x000005a6, 0x000005a5, 0x0003003e, 0x0000056f, 0x000005a7, 0x000200f9, + 0x00000592, 0x000200f8, 0x00000592, 0x00040039, 0x0000006e, 0x000005aa, 0x00000070, 0x0003003e, + 0x000005a9, 0x000005aa, 0x0004003d, 0x0000006e, 0x000005b2, 0x000005a9, 0x00060041, 0x000005b3, + 0x000005b4, 0x000005b1, 0x000000e4, 0x000005b2, 0x0004003d, 0x000005ab, 0x000005b5, 0x000005b4, + 0x0003003e, 0x000005ad, 0x000005b5, 0x00050041, 0x000005a8, 0x000005b7, 0x000005ad, 0x00000097, + 0x0004003d, 0x0000006e, 0x000005b8, 0x000005b7, 0x0003003e, 0x000005b6, 0x000005b8, 0x00050041, + 0x000005a8, 0x000005ba, 0x000005ad, 0x0000009c, 0x0004003d, 0x0000006e, 0x000005bb, 0x000005ba, + 0x0007000c, 0x0000006e, 0x000005bd, 0x00000001, 0x00000026, 0x000005bb, 0x000005bc, 0x0003003e, + 0x000005b9, 0x000005bd, 0x0003003e, 0x000005be, 0x00000097, 0x000200f9, 0x000005bf, 0x000200f8, + 0x000005bf, 0x000400f6, 0x000005c1, 0x000005c2, 0x00000000, 0x000200f9, 0x000005c3, 0x000200f8, + 0x000005c3, 0x0004003d, 0x0000006e, 0x000005c4, 0x000005be, 0x0004003d, 0x0000006e, 0x000005c5, + 0x000005b9, 0x000500b0, 0x000000af, 0x000005c6, 0x000005c4, 0x000005c5, 0x000400fa, 0x000005c6, + 0x000005c0, 0x000005c1, 0x000200f8, 0x000005c0, 0x0004003d, 0x0000006e, 0x000005cc, 0x000005b6, + 0x0004003d, 0x0000006e, 0x000005cd, 0x000005be, 0x00050080, 0x0000006e, 0x000005ce, 0x000005cc, + 0x000005cd, 0x00060041, 0x000005cf, 0x000005d0, 0x000005cb, 0x000000e4, 0x000005ce, 0x0004003d, + 0x0000006e, 0x000005d1, 0x000005d0, 0x0003003e, 0x000005c7, 0x000005d1, 0x0004003d, 0x0000006e, + 0x000005da, 0x000005c7, 0x00060041, 0x000005db, 0x000005dc, 0x000005d9, 0x000000e4, 0x000005da, + 0x0004003d, 0x000005d5, 0x000005dd, 0x000005dc, 0x00050051, 0x00000016, 0x000005de, 0x000005dd, + 0x00000000, 0x00050041, 0x000000dd, 0x000005df, 0x000005d4, 0x000000e4, 0x0003003e, 0x000005df, + 0x000005de, 0x00050051, 0x00000016, 0x000005e0, 0x000005dd, 0x00000001, 0x00050041, 0x000000dd, + 0x000005e1, 0x000005d4, 0x000000eb, 0x0003003e, 0x000005e1, 0x000005e0, 0x00050041, 0x000000dd, + 0x000005e3, 0x000005d4, 0x000000eb, 0x0004003d, 0x00000016, 0x000005e4, 0x000005e3, 0x0008004f, + 0x0000001f, 0x000005e5, 0x000005e4, 0x000005e4, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, + 0x000005e2, 0x000005e5, 0x00050041, 0x000000dd, 0x000005e7, 0x000005d4, 0x000000e4, 0x0004003d, + 0x00000016, 0x000005e8, 0x000005e7, 0x0008004f, 0x0000001f, 0x000005e9, 0x000005e8, 0x000005e8, + 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x0000001f, 0x000005ea, 0x0000050d, 0x00050083, + 0x0000001f, 0x000005eb, 0x000005e9, 0x000005ea, 0x0003003e, 0x000005e6, 0x000005eb, 0x0004003d, + 0x0000001f, 0x000005ed, 0x000005e6, 0x0006000c, 0x00000006, 0x000005ee, 0x00000001, 0x00000042, + 0x000005ed, 0x0003003e, 0x000005ec, 0x000005ee, 0x0004003d, 0x0000001f, 0x000005f0, 0x000005e6, + 0x0004003d, 0x00000006, 0x000005f1, 0x000005ec, 0x0007000c, 0x00000006, 0x000005f2, 0x00000001, + 0x00000028, 0x000005f1, 0x000000ae, 0x00060050, 0x0000001f, 0x000005f3, 0x000005f2, 0x000005f2, + 0x000005f2, 0x00050088, 0x0000001f, 0x000005f4, 0x000005f0, 0x000005f3, 0x0003003e, 0x000005ef, + 0x000005f4, 0x0004003d, 0x00000006, 0x000005f6, 0x000005ec, 0x00060041, 0x0000000d, 0x000005f7, + 0x000005d4, 0x000000e4, 0x000003dc, 0x0004003d, 0x00000006, 0x000005f8, 0x000005f7, 0x0007000c, + 0x00000006, 0x000005f9, 0x00000001, 0x00000028, 0x000005f8, 0x000000b9, 0x00050088, 0x00000006, + 0x000005fa, 0x000005f6, 0x000005f9, 0x00050083, 0x00000006, 0x000005fb, 0x0000010d, 0x000005fa, + 0x0008000c, 0x00000006, 0x000005fc, 0x00000001, 0x0000002b, 0x000005fb, 0x000000df, 0x0000010d, + 0x0003003e, 0x000005f5, 0x000005fc, 0x0004003d, 0x00000006, 0x000005fd, 0x000005f5, 0x0004003d, + 0x00000006, 0x000005fe, 0x000005f5, 0x00050085, 0x00000006, 0x000005ff, 0x000005fe, 0x000005fd, + 0x0003003e, 0x000005f5, 0x000005ff, 0x0004003d, 0x00000006, 0x00000600, 0x000005f5, 0x0004003d, + 0x0000001f, 0x00000601, 0x000005e2, 0x0005008e, 0x0000001f, 0x00000602, 0x00000601, 0x00000600, + 0x0003003e, 0x000005e2, 0x00000602, 0x0004003d, 0x0000001f, 0x00000604, 0x00000551, 0x0003003e, + 0x00000603, 0x00000604, 0x0004003d, 0x0000001f, 0x00000606, 0x0000050a, 0x0003003e, 0x00000605, + 0x00000606, 0x0004003d, 0x0000001f, 0x00000608, 0x00000544, 0x0003003e, 0x00000607, 0x00000608, + 0x0004003d, 0x00000006, 0x0000060a, 0x00000547, 0x0003003e, 0x00000609, 0x0000060a, 0x0004003d, + 0x00000006, 0x0000060c, 0x0000054c, 0x0003003e, 0x0000060b, 0x0000060c, 0x0004003d, 0x0000001f, + 0x0000060e, 0x000005ef, 0x0003003e, 0x0000060d, 0x0000060e, 0x0004003d, 0x0000001f, 0x00000610, + 0x000005e2, 0x0003003e, 0x0000060f, 0x00000610, 0x000b0039, 0x0000001f, 0x00000611, 0x00000066, + 0x00000603, 0x00000605, 0x00000607, 0x00000609, 0x0000060b, 0x0000060d, 0x0000060f, 0x0004003d, + 0x0000001f, 0x00000612, 0x0000056f, 0x00050081, 0x0000001f, 0x00000613, 0x00000612, 0x00000611, + 0x0003003e, 0x0000056f, 0x00000613, 0x000200f9, 0x000005c2, 0x000200f8, 0x000005c2, 0x0004003d, + 0x0000006e, 0x00000614, 0x000005be, 0x00050080, 0x0000006e, 0x00000615, 0x00000614, 0x000000eb, + 0x0003003e, 0x000005be, 0x00000615, 0x000200f9, 0x000005bf, 0x000200f8, 0x000005c1, 0x00050041, + 0x0000000d, 0x00000617, 0x00000551, 0x0000009c, 0x0004003d, 0x00000006, 0x00000618, 0x00000617, + 0x00050085, 0x00000006, 0x00000619, 0x00000618, 0x00000122, 0x00050081, 0x00000006, 0x0000061a, + 0x00000619, 0x00000122, 0x0008000c, 0x00000006, 0x0000061b, 0x00000001, 0x0000002b, 0x0000061a, + 0x000000df, 0x0000010d, 0x0003003e, 0x00000616, 0x0000061b, 0x00050041, 0x00000572, 0x0000061d, + 0x00000499, 0x00000548, 0x0004003d, 0x00000016, 0x0000061e, 0x0000061d, 0x0008004f, 0x0000001f, + 0x0000061f, 0x0000061e, 0x0000061e, 0x00000000, 0x00000001, 0x00000002, 0x0005008e, 0x0000001f, + 0x00000621, 0x0000061f, 0x00000620, 0x00050041, 0x00000572, 0x00000622, 0x00000499, 0x0000058a, + 0x0004003d, 0x00000016, 0x00000623, 0x00000622, 0x0008004f, 0x0000001f, 0x00000624, 0x00000623, + 0x00000623, 0x00000000, 0x00000001, 0x00000002, 0x0005008e, 0x0000001f, 0x00000626, 0x00000624, + 0x00000625, 0x00050081, 0x0000001f, 0x00000627, 0x00000621, 0x00000626, 0x0003003e, 0x0000061c, + 0x00000627, 0x00050041, 0x00000572, 0x00000629, 0x00000499, 0x00000548, 0x0004003d, 0x00000016, + 0x0000062a, 0x00000629, 0x0008004f, 0x0000001f, 0x0000062b, 0x0000062a, 0x0000062a, 0x00000000, + 0x00000001, 0x00000002, 0x00050085, 0x0000001f, 0x00000630, 0x0000062b, 0x0000062f, 0x0003003e, + 0x00000628, 0x00000630, 0x0004003d, 0x0000001f, 0x00000632, 0x00000628, 0x0004003d, 0x0000001f, + 0x00000633, 0x0000061c, 0x0004003d, 0x00000006, 0x00000634, 0x00000616, 0x00060050, 0x0000001f, + 0x00000635, 0x00000634, 0x00000634, 0x00000634, 0x0008000c, 0x0000001f, 0x00000636, 0x00000001, + 0x0000002e, 0x00000632, 0x00000633, 0x00000635, 0x0003003e, 0x00000631, 0x00000636, 0x0004003d, + 0x0000001f, 0x00000638, 0x00000544, 0x0004003d, 0x0000001f, 0x00000639, 0x00000631, 0x00050085, + 0x0000001f, 0x0000063a, 0x00000638, 0x00000639, 0x0004003d, 0x00000006, 0x0000063b, 0x00000547, + 0x00050083, 0x00000006, 0x0000063c, 0x0000010d, 0x0000063b, 0x0005008e, 0x0000001f, 0x0000063d, + 0x0000063a, 0x0000063c, 0x0003003e, 0x00000637, 0x0000063d, 0x0004003d, 0x0000001f, 0x0000063f, + 0x00000551, 0x0004003d, 0x0000001f, 0x00000640, 0x00000570, 0x00050094, 0x00000006, 0x00000641, + 0x0000063f, 0x00000640, 0x00050085, 0x00000006, 0x00000642, 0x00000641, 0x00000122, 0x00050081, + 0x00000006, 0x00000643, 0x00000642, 0x00000122, 0x0007000c, 0x00000006, 0x00000644, 0x00000001, + 0x00000028, 0x00000643, 0x000000df, 0x0003003e, 0x0000063e, 0x00000644, 0x0004003d, 0x0000001f, + 0x00000645, 0x00000544, 0x00050041, 0x00000572, 0x00000646, 0x00000499, 0x0000058a, 0x0004003d, + 0x00000016, 0x00000647, 0x00000646, 0x0008004f, 0x0000001f, 0x00000648, 0x00000647, 0x00000647, + 0x00000000, 0x00000001, 0x00000002, 0x00050085, 0x0000001f, 0x00000649, 0x00000645, 0x00000648, + 0x0004003d, 0x00000006, 0x0000064a, 0x0000063e, 0x0004003d, 0x00000006, 0x0000064b, 0x0000063e, + 0x00050085, 0x00000006, 0x0000064c, 0x0000064a, 0x0000064b, 0x0005008e, 0x0000001f, 0x0000064d, + 0x00000649, 0x0000064c, 0x0005008e, 0x0000001f, 0x0000064f, 0x0000064d, 0x0000064e, 0x0004003d, + 0x00000006, 0x00000650, 0x00000547, 0x00050083, 0x00000006, 0x00000651, 0x0000010d, 0x00000650, + 0x0005008e, 0x0000001f, 0x00000652, 0x0000064f, 0x00000651, 0x0004003d, 0x0000001f, 0x00000653, + 0x00000637, 0x00050081, 0x0000001f, 0x00000654, 0x00000653, 0x00000652, 0x0003003e, 0x00000637, + 0x00000654, 0x0004003d, 0x0000001f, 0x00000656, 0x00000637, 0x0004003d, 0x0000001f, 0x00000657, + 0x0000056f, 0x00050081, 0x0000001f, 0x00000658, 0x00000656, 0x00000657, 0x0003003e, 0x00000655, + 0x00000658, 0x00060041, 0x000003e2, 0x0000065a, 0x00000499, 0x0000058a, 0x000003dc, 0x0004003d, + 0x00000006, 0x0000065b, 0x0000065a, 0x0003003e, 0x00000659, 0x0000065b, 0x0004003d, 0x00000006, + 0x0000065c, 0x00000659, 0x000500ba, 0x000000af, 0x0000065d, 0x0000065c, 0x000000ae, 0x000300f7, + 0x0000065f, 0x00000000, 0x000400fa, 0x0000065d, 0x0000065e, 0x0000065f, 0x000200f8, 0x0000065e, + 0x0004003d, 0x0000001f, 0x00000661, 0x0000050a, 0x0004007f, 0x0000001f, 0x00000662, 0x00000661, + 0x0004003d, 0x0000001f, 0x00000663, 0x00000551, 0x0007000c, 0x0000001f, 0x00000664, 0x00000001, + 0x00000047, 0x00000662, 0x00000663, 0x0003003e, 0x00000660, 0x00000664, 0x0004003d, 0x00000006, + 0x00000666, 0x0000054c, 0x00050085, 0x00000006, 0x00000667, 0x00000666, 0x000002e4, 0x0003003e, + 0x00000665, 0x00000667, 0x0004003d, 0x0000066a, 0x0000066d, 0x0000066c, 0x0004003d, 0x0000001f, + 0x0000066e, 0x00000660, 0x0004003d, 0x00000006, 0x0000066f, 0x00000665, 0x00070058, 0x00000016, + 0x00000670, 0x0000066d, 0x0000066e, 0x00000002, 0x0000066f, 0x0008004f, 0x0000001f, 0x00000671, + 0x00000670, 0x00000670, 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x00000006, 0x00000672, + 0x00000659, 0x0005008e, 0x0000001f, 0x00000673, 0x00000671, 0x00000672, 0x0003003e, 0x00000668, + 0x00000673, 0x0004003d, 0x0000001f, 0x00000675, 0x00000544, 0x0004003d, 0x00000006, 0x00000676, + 0x00000547, 0x00060050, 0x0000001f, 0x00000677, 0x00000676, 0x00000676, 0x00000676, 0x0008000c, + 0x0000001f, 0x00000678, 0x00000001, 0x0000002e, 0x00000396, 0x00000675, 0x00000677, 0x0003003e, + 0x00000674, 0x00000678, 0x0004003d, 0x0000001f, 0x0000067a, 0x00000551, 0x0004003d, 0x0000001f, + 0x0000067b, 0x0000050a, 0x00050094, 0x00000006, 0x0000067c, 0x0000067a, 0x0000067b, 0x0007000c, + 0x00000006, 0x0000067d, 0x00000001, 0x00000028, 0x0000067c, 0x000000df, 0x0003003e, 0x0000067e, + 0x0000067d, 0x0004003d, 0x0000001f, 0x00000680, 0x00000674, 0x0003003e, 0x0000067f, 0x00000680, + 0x00060039, 0x0000001f, 0x00000681, 0x00000055, 0x0000067e, 0x0000067f, 0x0003003e, 0x00000679, + 0x00000681, 0x0004003d, 0x0000001f, 0x00000682, 0x00000668, 0x0004003d, 0x0000001f, 0x00000683, + 0x00000679, 0x00050085, 0x0000001f, 0x00000684, 0x00000682, 0x00000683, 0x0004003d, 0x0000001f, + 0x00000685, 0x00000655, 0x00050081, 0x0000001f, 0x00000686, 0x00000685, 0x00000684, 0x0003003e, + 0x00000655, 0x00000686, 0x0004003d, 0x0000066a, 0x00000688, 0x0000066c, 0x0004003d, 0x0000001f, + 0x00000689, 0x00000551, 0x00070058, 0x00000016, 0x0000068a, 0x00000688, 0x00000689, 0x00000002, + 0x000002e4, 0x0008004f, 0x0000001f, 0x0000068b, 0x0000068a, 0x0000068a, 0x00000000, 0x00000001, + 0x00000002, 0x0004003d, 0x00000006, 0x0000068c, 0x00000659, 0x0005008e, 0x0000001f, 0x0000068d, + 0x0000068b, 0x0000068c, 0x0003003e, 0x00000687, 0x0000068d, 0x0004003d, 0x0000001f, 0x0000068e, + 0x00000544, 0x0004003d, 0x0000001f, 0x0000068f, 0x00000687, 0x00050085, 0x0000001f, 0x00000690, + 0x0000068e, 0x0000068f, 0x0004003d, 0x00000006, 0x00000691, 0x00000547, 0x00050083, 0x00000006, + 0x00000692, 0x0000010d, 0x00000691, 0x0005008e, 0x0000001f, 0x00000693, 0x00000690, 0x00000692, + 0x0004003d, 0x0000001f, 0x00000694, 0x00000679, 0x00060050, 0x0000001f, 0x00000695, 0x0000010d, + 0x0000010d, 0x0000010d, 0x00050083, 0x0000001f, 0x00000696, 0x00000695, 0x00000694, 0x00050085, + 0x0000001f, 0x00000697, 0x00000693, 0x00000696, 0x0005008e, 0x0000001f, 0x00000699, 0x00000697, + 0x00000698, 0x0004003d, 0x0000001f, 0x0000069a, 0x00000655, 0x00050081, 0x0000001f, 0x0000069b, + 0x0000069a, 0x00000699, 0x0003003e, 0x00000655, 0x0000069b, 0x000200f9, 0x0000065f, 0x000200f8, + 0x0000065f, 0x0004003d, 0x0000001f, 0x0000069d, 0x00000655, 0x0003003e, 0x0000069c, 0x0000069d, + 0x00050039, 0x0000001f, 0x0000069e, 0x0000003e, 0x0000069c, 0x0003003e, 0x00000655, 0x0000069e, + 0x00060041, 0x000003e2, 0x000006a0, 0x00000499, 0x000004aa, 0x00000097, 0x0004003d, 0x00000006, + 0x000006a1, 0x000006a0, 0x0007000c, 0x00000006, 0x000006a2, 0x00000001, 0x00000028, 0x000006a1, + 0x000000ae, 0x0003003e, 0x0000069f, 0x000006a2, 0x00060041, 0x000003e2, 0x000006a4, 0x00000499, + 0x000004aa, 0x0000009c, 0x0004003d, 0x00000006, 0x000006a5, 0x000006a4, 0x0004003d, 0x00000006, + 0x000006a6, 0x0000069f, 0x00050081, 0x00000006, 0x000006a7, 0x000006a6, 0x000000b9, 0x0007000c, + 0x00000006, 0x000006a8, 0x00000001, 0x00000028, 0x000006a5, 0x000006a7, 0x0003003e, 0x000006a3, + 0x000006a8, 0x00050041, 0x000004be, 0x000006aa, 0x000004da, 0x000001de, 0x0004003d, 0x00000006, + 0x000006ab, 0x000006aa, 0x0004007f, 0x00000006, 0x000006ac, 0x000006ab, 0x0007000c, 0x00000006, + 0x000006ad, 0x00000001, 0x00000028, 0x000006ac, 0x000000df, 0x0003003e, 0x000006a9, 0x000006ad, + 0x0004003d, 0x00000006, 0x000006af, 0x000006a9, 0x0004003d, 0x00000006, 0x000006b0, 0x0000069f, + 0x00050083, 0x00000006, 0x000006b1, 0x000006af, 0x000006b0, 0x0004003d, 0x00000006, 0x000006b2, + 0x000006a3, 0x0004003d, 0x00000006, 0x000006b3, 0x0000069f, 0x00050083, 0x00000006, 0x000006b4, + 0x000006b2, 0x000006b3, 0x00050088, 0x00000006, 0x000006b5, 0x000006b1, 0x000006b4, 0x0008000c, + 0x00000006, 0x000006b6, 0x00000001, 0x0000002b, 0x000006b5, 0x000000df, 0x0000010d, 0x0003003e, + 0x000006ae, 0x000006b6, 0x0004003d, 0x0000001f, 0x000006b9, 0x00000655, 0x0004003d, 0x00000006, + 0x000006ba, 0x000006ae, 0x00050051, 0x00000006, 0x000006bb, 0x000006b9, 0x00000000, 0x00050051, + 0x00000006, 0x000006bc, 0x000006b9, 0x00000001, 0x00050051, 0x00000006, 0x000006bd, 0x000006b9, + 0x00000002, 0x00070050, 0x00000016, 0x000006be, 0x000006bb, 0x000006bc, 0x000006bd, 0x000006ba, + 0x0003003e, 0x000006b8, 0x000006be, 0x000100fd, 0x00010038, 0x00050036, 0x00000007, 0x0000000b, + 0x00000000, 0x00000009, 0x00030037, 0x00000008, 0x0000000a, 0x000200f8, 0x0000000c, 0x0004003b, + 0x00000020, 0x00000072, 0x00000007, 0x0004003d, 0x00000007, 0x00000073, 0x0000000a, 0x0008004f, + 0x0000001f, 0x00000074, 0x00000073, 0x00000073, 0x00000000, 0x00000001, 0x00000000, 0x00050085, + 0x0000001f, 0x00000079, 0x00000074, 0x00000078, 0x0006000c, 0x0000001f, 0x0000007a, 0x00000001, + 0x0000000a, 0x00000079, 0x0003003e, 0x00000072, 0x0000007a, 0x0004003d, 0x0000001f, 0x0000007b, + 0x00000072, 0x0004003d, 0x0000001f, 0x0000007c, 0x00000072, 0x0008004f, 0x0000001f, 0x0000007d, + 0x0000007c, 0x0000007c, 0x00000001, 0x00000002, 0x00000000, 0x00060050, 0x0000001f, 0x0000007f, + 0x0000007e, 0x0000007e, 0x0000007e, 0x00050081, 0x0000001f, 0x00000080, 0x0000007d, 0x0000007f, + 0x00050094, 0x00000006, 0x00000081, 0x0000007b, 0x00000080, 0x0004003d, 0x0000001f, 0x00000082, + 0x00000072, 0x00060050, 0x0000001f, 0x00000083, 0x00000081, 0x00000081, 0x00000081, 0x00050081, + 0x0000001f, 0x00000084, 0x00000082, 0x00000083, 0x0003003e, 0x00000072, 0x00000084, 0x0004003d, + 0x0000001f, 0x00000085, 0x00000072, 0x0007004f, 0x00000007, 0x00000086, 0x00000085, 0x00000085, + 0x00000000, 0x00000000, 0x0004003d, 0x0000001f, 0x00000087, 0x00000072, 0x0007004f, 0x00000007, + 0x00000088, 0x00000087, 0x00000087, 0x00000001, 0x00000002, 0x00050081, 0x00000007, 0x00000089, + 0x00000086, 0x00000088, 0x0004003d, 0x0000001f, 0x0000008a, 0x00000072, 0x0007004f, 0x00000007, + 0x0000008b, 0x0000008a, 0x0000008a, 0x00000002, 0x00000001, 0x00050085, 0x00000007, 0x0000008c, + 0x00000089, 0x0000008b, 0x0006000c, 0x00000007, 0x0000008d, 0x00000001, 0x0000000a, 0x0000008c, + 0x000200fe, 0x0000008d, 0x00010038, 0x00050036, 0x00000007, 0x00000011, 0x00000000, 0x0000000e, + 0x00030037, 0x00000008, 0x0000000f, 0x00030037, 0x0000000d, 0x00000010, 0x000200f8, 0x00000012, + 0x0004003b, 0x0000000d, 0x00000090, 0x00000007, 0x0004003b, 0x0000000d, 0x00000093, 0x00000007, + 0x0004003d, 0x00000006, 0x00000091, 0x00000010, 0x0006000c, 0x00000006, 0x00000092, 0x00000001, + 0x0000000d, 0x00000091, 0x0003003e, 0x00000090, 0x00000092, 0x0004003d, 0x00000006, 0x00000094, + 0x00000010, 0x0006000c, 0x00000006, 0x00000095, 0x00000001, 0x0000000e, 0x00000094, 0x0003003e, + 0x00000093, 0x00000095, 0x0004003d, 0x00000006, 0x00000096, 0x00000093, 0x00050041, 0x0000000d, + 0x00000098, 0x0000000f, 0x00000097, 0x0004003d, 0x00000006, 0x00000099, 0x00000098, 0x00050085, + 0x00000006, 0x0000009a, 0x00000096, 0x00000099, 0x0004003d, 0x00000006, 0x0000009b, 0x00000090, + 0x00050041, 0x0000000d, 0x0000009d, 0x0000000f, 0x0000009c, 0x0004003d, 0x00000006, 0x0000009e, + 0x0000009d, 0x00050085, 0x00000006, 0x0000009f, 0x0000009b, 0x0000009e, 0x00050083, 0x00000006, + 0x000000a0, 0x0000009a, 0x0000009f, 0x0004003d, 0x00000006, 0x000000a1, 0x00000090, 0x00050041, + 0x0000000d, 0x000000a2, 0x0000000f, 0x00000097, 0x0004003d, 0x00000006, 0x000000a3, 0x000000a2, + 0x00050085, 0x00000006, 0x000000a4, 0x000000a1, 0x000000a3, 0x0004003d, 0x00000006, 0x000000a5, + 0x00000093, 0x00050041, 0x0000000d, 0x000000a6, 0x0000000f, 0x0000009c, 0x0004003d, 0x00000006, + 0x000000a7, 0x000000a6, 0x00050085, 0x00000006, 0x000000a8, 0x000000a5, 0x000000a7, 0x00050081, + 0x00000006, 0x000000a9, 0x000000a4, 0x000000a8, 0x00050050, 0x00000007, 0x000000aa, 0x000000a0, + 0x000000a9, 0x000200fe, 0x000000aa, 0x00010038, 0x00050036, 0x00000016, 0x0000001d, 0x00000000, + 0x00000017, 0x00030037, 0x00000015, 0x00000018, 0x00030037, 0x00000008, 0x00000019, 0x00030037, + 0x0000000d, 0x0000001a, 0x00030037, 0x0000000d, 0x0000001b, 0x00030037, 0x0000000d, 0x0000001c, + 0x000200f8, 0x0000001e, 0x0004003b, 0x0000000d, 0x000000b7, 0x00000007, 0x0004003b, 0x00000008, + 0x000000bb, 0x00000007, 0x0004003b, 0x00000008, 0x000000be, 0x00000007, 0x0004003b, 0x00000008, + 0x000000c1, 0x00000007, 0x0004003b, 0x00000008, 0x000000c5, 0x00000007, 0x0004003b, 0x00000008, + 0x000000c8, 0x00000007, 0x0004003b, 0x00000008, 0x000000cb, 0x00000007, 0x0004003b, 0x000000dd, + 0x000000de, 0x00000007, 0x0004003b, 0x000000e2, 0x000000e3, 0x00000007, 0x0004003b, 0x000000e2, + 0x000000ed, 0x00000007, 0x0004003b, 0x00000008, 0x000000f5, 0x00000007, 0x0004003b, 0x00000008, + 0x000000fd, 0x00000007, 0x0004003b, 0x00000008, 0x000000fe, 0x00000007, 0x0004003b, 0x00000008, + 0x00000101, 0x00000007, 0x0004003b, 0x00000008, 0x00000107, 0x00000007, 0x0004003b, 0x00000008, + 0x00000109, 0x00000007, 0x0004003b, 0x0000000d, 0x00000114, 0x00000007, 0x0004003b, 0x00000008, + 0x00000120, 0x00000007, 0x0004003b, 0x00000008, 0x00000128, 0x00000007, 0x0004003b, 0x00000008, + 0x0000012d, 0x00000007, 0x0004003b, 0x0000000d, 0x0000012e, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000134, 0x00000007, 0x0004003d, 0x00000006, 0x000000ad, 0x0000001b, 0x000500b8, 0x000000af, + 0x000000b0, 0x000000ad, 0x000000ae, 0x000300f7, 0x000000b2, 0x00000000, 0x000400fa, 0x000000b0, + 0x000000b1, 0x000000b2, 0x000200f8, 0x000000b1, 0x0004003d, 0x00000014, 0x000000b3, 0x00000018, + 0x0004003d, 0x00000007, 0x000000b4, 0x00000019, 0x00050057, 0x00000016, 0x000000b5, 0x000000b3, + 0x000000b4, 0x000200fe, 0x000000b5, 0x000200f8, 0x000000b2, 0x0004003d, 0x00000006, 0x000000b8, + 0x0000001a, 0x0007000c, 0x00000006, 0x000000ba, 0x00000001, 0x00000028, 0x000000b8, 0x000000b9, + 0x0003003e, 0x000000b7, 0x000000ba, 0x0004003d, 0x00000007, 0x000000bc, 0x00000019, 0x000400cf, + 0x00000007, 0x000000bd, 0x000000bc, 0x0003003e, 0x000000bb, 0x000000bd, 0x0004003d, 0x00000007, + 0x000000bf, 0x00000019, 0x000400d0, 0x00000007, 0x000000c0, 0x000000bf, 0x0003003e, 0x000000be, + 0x000000c0, 0x0004003d, 0x00000007, 0x000000c2, 0x00000019, 0x0004003d, 0x00000006, 0x000000c3, + 0x000000b7, 0x0005008e, 0x00000007, 0x000000c4, 0x000000c2, 0x000000c3, 0x0003003e, 0x000000c1, + 0x000000c4, 0x0004003d, 0x00000007, 0x000000c6, 0x000000c1, 0x0006000c, 0x00000007, 0x000000c7, + 0x00000001, 0x00000008, 0x000000c6, 0x0003003e, 0x000000c5, 0x000000c7, 0x0004003d, 0x00000007, + 0x000000c9, 0x000000c1, 0x0006000c, 0x00000007, 0x000000ca, 0x00000001, 0x0000000a, 0x000000c9, + 0x0003003e, 0x000000c8, 0x000000ca, 0x0004003d, 0x00000007, 0x000000cc, 0x000000c8, 0x0004003d, + 0x00000007, 0x000000cd, 0x000000c8, 0x00050085, 0x00000007, 0x000000ce, 0x000000cc, 0x000000cd, + 0x0004003d, 0x00000007, 0x000000cf, 0x000000c8, 0x00050085, 0x00000007, 0x000000d0, 0x000000ce, + 0x000000cf, 0x0004003d, 0x00000007, 0x000000d1, 0x000000c8, 0x0004003d, 0x00000007, 0x000000d2, + 0x000000c8, 0x0005008e, 0x00000007, 0x000000d4, 0x000000d2, 0x000000d3, 0x00050050, 0x00000007, + 0x000000d6, 0x000000d5, 0x000000d5, 0x00050083, 0x00000007, 0x000000d7, 0x000000d4, 0x000000d6, + 0x00050085, 0x00000007, 0x000000d8, 0x000000d1, 0x000000d7, 0x00050050, 0x00000007, 0x000000da, + 0x000000d9, 0x000000d9, 0x00050081, 0x00000007, 0x000000db, 0x000000d8, 0x000000da, 0x00050085, + 0x00000007, 0x000000dc, 0x000000d0, 0x000000db, 0x0003003e, 0x000000cb, 0x000000dc, 0x0003003e, + 0x000000de, 0x000000e0, 0x0003003e, 0x000000e3, 0x000000e4, 0x000200f9, 0x000000e5, 0x000200f8, + 0x000000e5, 0x000400f6, 0x000000e7, 0x000000e8, 0x00000000, 0x000200f9, 0x000000e9, 0x000200f8, + 0x000000e9, 0x0004003d, 0x000000e1, 0x000000ea, 0x000000e3, 0x000500b3, 0x000000af, 0x000000ec, + 0x000000ea, 0x000000eb, 0x000400fa, 0x000000ec, 0x000000e6, 0x000000e7, 0x000200f8, 0x000000e6, + 0x0003003e, 0x000000ed, 0x000000e4, 0x000200f9, 0x000000ee, 0x000200f8, 0x000000ee, 0x000400f6, + 0x000000f0, 0x000000f1, 0x00000000, 0x000200f9, 0x000000f2, 0x000200f8, 0x000000f2, 0x0004003d, + 0x000000e1, 0x000000f3, 0x000000ed, 0x000500b3, 0x000000af, 0x000000f4, 0x000000f3, 0x000000eb, + 0x000400fa, 0x000000f4, 0x000000ef, 0x000000f0, 0x000200f8, 0x000000ef, 0x0004003d, 0x00000007, + 0x000000f6, 0x000000c5, 0x0004003d, 0x000000e1, 0x000000f7, 0x000000ed, 0x0004006f, 0x00000006, + 0x000000f8, 0x000000f7, 0x0004003d, 0x000000e1, 0x000000f9, 0x000000e3, 0x0004006f, 0x00000006, + 0x000000fa, 0x000000f9, 0x00050050, 0x00000007, 0x000000fb, 0x000000f8, 0x000000fa, 0x00050081, + 0x00000007, 0x000000fc, 0x000000f6, 0x000000fb, 0x0003003e, 0x000000f5, 0x000000fc, 0x0004003d, + 0x00000007, 0x000000ff, 0x000000f5, 0x0003003e, 0x000000fe, 0x000000ff, 0x00050039, 0x00000007, + 0x00000100, 0x0000000b, 0x000000fe, 0x0003003e, 0x000000fd, 0x00000100, 0x0004003d, 0x00000007, + 0x00000102, 0x000000f5, 0x00050081, 0x00000007, 0x00000106, 0x00000102, 0x00000105, 0x0003003e, + 0x00000107, 0x00000106, 0x00050039, 0x00000007, 0x00000108, 0x0000000b, 0x00000107, 0x0003003e, + 0x00000101, 0x00000108, 0x0004003d, 0x00000007, 0x0000010a, 0x000000fd, 0x0005008e, 0x00000007, + 0x0000010c, 0x0000010a, 0x0000010b, 0x00050050, 0x00000007, 0x0000010e, 0x0000010d, 0x0000010d, + 0x00050083, 0x00000007, 0x0000010f, 0x0000010c, 0x0000010e, 0x0004003d, 0x00000006, 0x00000110, + 0x0000001b, 0x0004003d, 0x00000006, 0x00000111, 0x000000b7, 0x00050088, 0x00000006, 0x00000112, + 0x00000110, 0x00000111, 0x0005008e, 0x00000007, 0x00000113, 0x0000010f, 0x00000112, 0x0003003e, + 0x00000109, 0x00000113, 0x00050041, 0x0000000d, 0x00000115, 0x00000101, 0x00000097, 0x0004003d, + 0x00000006, 0x00000116, 0x00000115, 0x00050085, 0x00000006, 0x00000117, 0x00000116, 0x0000010b, + 0x00050083, 0x00000006, 0x00000118, 0x00000117, 0x0000010d, 0x00050085, 0x00000006, 0x0000011a, + 0x00000118, 0x00000119, 0x0004003d, 0x00000006, 0x0000011b, 0x0000001c, 0x0008000c, 0x00000006, + 0x0000011c, 0x00000001, 0x0000002b, 0x0000011b, 0x000000df, 0x0000010d, 0x00050085, 0x00000006, + 0x0000011d, 0x0000011a, 0x0000011c, 0x0004003d, 0x00000006, 0x0000011e, 0x0000001b, 0x00050085, + 0x00000006, 0x0000011f, 0x0000011d, 0x0000011e, 0x0003003e, 0x00000114, 0x0000011f, 0x0004003d, + 0x00000007, 0x00000121, 0x000000f5, 0x00050081, 0x00000007, 0x00000124, 0x00000121, 0x00000123, + 0x0004003d, 0x00000006, 0x00000125, 0x000000b7, 0x00050050, 0x00000007, 0x00000126, 0x00000125, + 0x00000125, 0x00050088, 0x00000007, 0x00000127, 0x00000124, 0x00000126, 0x0003003e, 0x00000120, + 0x00000127, 0x0004003d, 0x00000007, 0x00000129, 0x00000120, 0x0004003d, 0x00000007, 0x0000012a, + 0x00000019, 0x0004003d, 0x00000007, 0x0000012b, 0x00000120, 0x00050083, 0x00000007, 0x0000012c, + 0x0000012a, 0x0000012b, 0x0003003e, 0x0000012d, 0x0000012c, 0x0004003d, 0x00000006, 0x0000012f, + 0x00000114, 0x0003003e, 0x0000012e, 0x0000012f, 0x00060039, 0x00000007, 0x00000130, 0x00000011, + 0x0000012d, 0x0000012e, 0x00050081, 0x00000007, 0x00000131, 0x00000129, 0x00000130, 0x0004003d, + 0x00000007, 0x00000132, 0x00000109, 0x00050081, 0x00000007, 0x00000133, 0x00000131, 0x00000132, + 0x0003003e, 0x00000128, 0x00000133, 0x00050041, 0x0000000d, 0x00000135, 0x000000cb, 0x00000097, + 0x0004003d, 0x00000006, 0x00000136, 0x00000135, 0x00050083, 0x00000006, 0x00000137, 0x0000010d, + 0x00000136, 0x00050041, 0x0000000d, 0x00000138, 0x000000cb, 0x00000097, 0x0004003d, 0x00000006, + 0x00000139, 0x00000138, 0x0004003d, 0x000000e1, 0x0000013a, 0x000000ed, 0x0004006f, 0x00000006, + 0x0000013b, 0x0000013a, 0x0008000c, 0x00000006, 0x0000013c, 0x00000001, 0x0000002e, 0x00000137, + 0x00000139, 0x0000013b, 0x00050041, 0x0000000d, 0x0000013d, 0x000000cb, 0x0000009c, 0x0004003d, + 0x00000006, 0x0000013e, 0x0000013d, 0x00050083, 0x00000006, 0x0000013f, 0x0000010d, 0x0000013e, + 0x00050041, 0x0000000d, 0x00000140, 0x000000cb, 0x0000009c, 0x0004003d, 0x00000006, 0x00000141, + 0x00000140, 0x0004003d, 0x000000e1, 0x00000142, 0x000000e3, 0x0004006f, 0x00000006, 0x00000143, + 0x00000142, 0x0008000c, 0x00000006, 0x00000144, 0x00000001, 0x0000002e, 0x0000013f, 0x00000141, + 0x00000143, 0x00050085, 0x00000006, 0x00000145, 0x0000013c, 0x00000144, 0x0003003e, 0x00000134, + 0x00000145, 0x0004003d, 0x00000014, 0x00000146, 0x00000018, 0x0004003d, 0x00000007, 0x00000147, + 0x00000128, 0x0004003d, 0x00000007, 0x00000148, 0x000000bb, 0x0004003d, 0x00000007, 0x00000149, + 0x000000be, 0x00080058, 0x00000016, 0x0000014a, 0x00000146, 0x00000147, 0x00000004, 0x00000148, + 0x00000149, 0x0004003d, 0x00000006, 0x0000014b, 0x00000134, 0x0005008e, 0x00000016, 0x0000014c, + 0x0000014a, 0x0000014b, 0x0004003d, 0x00000016, 0x0000014d, 0x000000de, 0x00050081, 0x00000016, + 0x0000014e, 0x0000014d, 0x0000014c, 0x0003003e, 0x000000de, 0x0000014e, 0x000200f9, 0x000000f1, + 0x000200f8, 0x000000f1, 0x0004003d, 0x000000e1, 0x0000014f, 0x000000ed, 0x00050080, 0x000000e1, + 0x00000150, 0x0000014f, 0x000000eb, 0x0003003e, 0x000000ed, 0x00000150, 0x000200f9, 0x000000ee, + 0x000200f8, 0x000000f0, 0x000200f9, 0x000000e8, 0x000200f8, 0x000000e8, 0x0004003d, 0x000000e1, + 0x00000151, 0x000000e3, 0x00050080, 0x000000e1, 0x00000152, 0x00000151, 0x000000eb, 0x0003003e, + 0x000000e3, 0x00000152, 0x000200f9, 0x000000e5, 0x000200f8, 0x000000e7, 0x0004003d, 0x00000016, + 0x00000153, 0x000000de, 0x000200fe, 0x00000153, 0x00010038, 0x00050036, 0x00000021, 0x00000026, + 0x00000000, 0x00000022, 0x00030037, 0x00000020, 0x00000023, 0x00030037, 0x00000020, 0x00000024, + 0x00030037, 0x00000008, 0x00000025, 0x000200f8, 0x00000027, 0x0004003b, 0x00000020, 0x00000156, + 0x00000007, 0x0004003b, 0x00000020, 0x00000159, 0x00000007, 0x0004003b, 0x00000020, 0x0000015c, + 0x00000007, 0x0004003b, 0x00000008, 0x0000015f, 0x00000007, 0x0004003b, 0x00000008, 0x00000162, + 0x00000007, 0x0004003b, 0x0000000d, 0x00000165, 0x00000007, 0x0004003b, 0x00000020, 0x00000187, + 0x00000007, 0x0004003b, 0x00000020, 0x00000196, 0x00000007, 0x0004003d, 0x0000001f, 0x00000157, + 0x00000023, 0x0006000c, 0x0000001f, 0x00000158, 0x00000001, 0x00000045, 0x00000157, 0x0003003e, + 0x00000156, 0x00000158, 0x0004003d, 0x0000001f, 0x0000015a, 0x00000024, 0x000400cf, 0x0000001f, + 0x0000015b, 0x0000015a, 0x0003003e, 0x00000159, 0x0000015b, 0x0004003d, 0x0000001f, 0x0000015d, + 0x00000024, 0x000400d0, 0x0000001f, 0x0000015e, 0x0000015d, 0x0003003e, 0x0000015c, 0x0000015e, + 0x0004003d, 0x00000007, 0x00000160, 0x00000025, 0x000400cf, 0x00000007, 0x00000161, 0x00000160, + 0x0003003e, 0x0000015f, 0x00000161, 0x0004003d, 0x00000007, 0x00000163, 0x00000025, 0x000400d0, + 0x00000007, 0x00000164, 0x00000163, 0x0003003e, 0x00000162, 0x00000164, 0x00050041, 0x0000000d, + 0x00000166, 0x0000015f, 0x00000097, 0x0004003d, 0x00000006, 0x00000167, 0x00000166, 0x00050041, + 0x0000000d, 0x00000168, 0x00000162, 0x0000009c, 0x0004003d, 0x00000006, 0x00000169, 0x00000168, + 0x00050085, 0x00000006, 0x0000016a, 0x00000167, 0x00000169, 0x00050041, 0x0000000d, 0x0000016b, + 0x00000162, 0x00000097, 0x0004003d, 0x00000006, 0x0000016c, 0x0000016b, 0x00050041, 0x0000000d, + 0x0000016d, 0x0000015f, 0x0000009c, 0x0004003d, 0x00000006, 0x0000016e, 0x0000016d, 0x00050085, + 0x00000006, 0x0000016f, 0x0000016c, 0x0000016e, 0x00050083, 0x00000006, 0x00000170, 0x0000016a, + 0x0000016f, 0x0003003e, 0x00000165, 0x00000170, 0x0004003d, 0x00000006, 0x00000171, 0x00000165, + 0x0006000c, 0x00000006, 0x00000172, 0x00000001, 0x00000004, 0x00000171, 0x000500b8, 0x000000af, + 0x00000174, 0x00000172, 0x00000173, 0x000300f7, 0x00000176, 0x00000000, 0x000400fa, 0x00000174, + 0x00000175, 0x00000176, 0x000200f8, 0x00000175, 0x0004003d, 0x0000001f, 0x00000178, 0x00000156, + 0x00050051, 0x00000006, 0x00000179, 0x00000177, 0x00000000, 0x00050051, 0x00000006, 0x0000017a, + 0x00000177, 0x00000001, 0x00050051, 0x00000006, 0x0000017b, 0x00000177, 0x00000002, 0x00050051, + 0x00000006, 0x0000017c, 0x00000177, 0x00000000, 0x00050051, 0x00000006, 0x0000017d, 0x00000177, + 0x00000001, 0x00050051, 0x00000006, 0x0000017e, 0x00000177, 0x00000002, 0x00050051, 0x00000006, + 0x0000017f, 0x00000178, 0x00000000, 0x00050051, 0x00000006, 0x00000180, 0x00000178, 0x00000001, + 0x00050051, 0x00000006, 0x00000181, 0x00000178, 0x00000002, 0x00060050, 0x0000001f, 0x00000182, + 0x00000179, 0x0000017a, 0x0000017b, 0x00060050, 0x0000001f, 0x00000183, 0x0000017c, 0x0000017d, + 0x0000017e, 0x00060050, 0x0000001f, 0x00000184, 0x0000017f, 0x00000180, 0x00000181, 0x00060050, + 0x00000021, 0x00000185, 0x00000182, 0x00000183, 0x00000184, 0x000200fe, 0x00000185, 0x000200f8, + 0x00000176, 0x0004003d, 0x0000001f, 0x00000188, 0x0000015c, 0x0004003d, 0x0000001f, 0x00000189, + 0x00000156, 0x0007000c, 0x0000001f, 0x0000018a, 0x00000001, 0x00000044, 0x00000188, 0x00000189, + 0x00050041, 0x0000000d, 0x0000018b, 0x0000015f, 0x00000097, 0x0004003d, 0x00000006, 0x0000018c, + 0x0000018b, 0x0005008e, 0x0000001f, 0x0000018d, 0x0000018a, 0x0000018c, 0x0004003d, 0x0000001f, + 0x0000018e, 0x00000156, 0x0004003d, 0x0000001f, 0x0000018f, 0x00000159, 0x0007000c, 0x0000001f, + 0x00000190, 0x00000001, 0x00000044, 0x0000018e, 0x0000018f, 0x00050041, 0x0000000d, 0x00000191, + 0x00000162, 0x00000097, 0x0004003d, 0x00000006, 0x00000192, 0x00000191, 0x0005008e, 0x0000001f, + 0x00000193, 0x00000190, 0x00000192, 0x00050081, 0x0000001f, 0x00000194, 0x0000018d, 0x00000193, + 0x0006000c, 0x0000001f, 0x00000195, 0x00000001, 0x00000045, 0x00000194, 0x0003003e, 0x00000187, + 0x00000195, 0x0004003d, 0x0000001f, 0x00000197, 0x0000015c, 0x0004003d, 0x0000001f, 0x00000198, + 0x00000156, 0x0007000c, 0x0000001f, 0x00000199, 0x00000001, 0x00000044, 0x00000197, 0x00000198, + 0x00050041, 0x0000000d, 0x0000019a, 0x0000015f, 0x0000009c, 0x0004003d, 0x00000006, 0x0000019b, + 0x0000019a, 0x0005008e, 0x0000001f, 0x0000019c, 0x00000199, 0x0000019b, 0x0004003d, 0x0000001f, + 0x0000019d, 0x00000156, 0x0004003d, 0x0000001f, 0x0000019e, 0x00000159, 0x0007000c, 0x0000001f, + 0x0000019f, 0x00000001, 0x00000044, 0x0000019d, 0x0000019e, 0x00050041, 0x0000000d, 0x000001a0, + 0x00000162, 0x0000009c, 0x0004003d, 0x00000006, 0x000001a1, 0x000001a0, 0x0005008e, 0x0000001f, + 0x000001a2, 0x0000019f, 0x000001a1, 0x00050081, 0x0000001f, 0x000001a3, 0x0000019c, 0x000001a2, + 0x0006000c, 0x0000001f, 0x000001a4, 0x00000001, 0x00000045, 0x000001a3, 0x0003003e, 0x00000196, + 0x000001a4, 0x0004003d, 0x0000001f, 0x000001a5, 0x00000187, 0x0006000c, 0x00000006, 0x000001a6, + 0x00000001, 0x00000042, 0x000001a5, 0x000500b8, 0x000000af, 0x000001a7, 0x000001a6, 0x000000ae, + 0x000400a8, 0x000000af, 0x000001a8, 0x000001a7, 0x000300f7, 0x000001aa, 0x00000000, 0x000400fa, + 0x000001a8, 0x000001a9, 0x000001aa, 0x000200f8, 0x000001a9, 0x0004003d, 0x0000001f, 0x000001ab, + 0x00000196, 0x0006000c, 0x00000006, 0x000001ac, 0x00000001, 0x00000042, 0x000001ab, 0x000500b8, + 0x000000af, 0x000001ad, 0x000001ac, 0x000000ae, 0x000200f9, 0x000001aa, 0x000200f8, 0x000001aa, + 0x000700f5, 0x000000af, 0x000001ae, 0x000001a7, 0x00000176, 0x000001ad, 0x000001a9, 0x000300f7, + 0x000001b0, 0x00000000, 0x000400fa, 0x000001ae, 0x000001af, 0x000001b0, 0x000200f8, 0x000001af, + 0x0004003d, 0x0000001f, 0x000001b1, 0x00000156, 0x00050051, 0x00000006, 0x000001b2, 0x00000177, + 0x00000000, 0x00050051, 0x00000006, 0x000001b3, 0x00000177, 0x00000001, 0x00050051, 0x00000006, + 0x000001b4, 0x00000177, 0x00000002, 0x00050051, 0x00000006, 0x000001b5, 0x00000177, 0x00000000, + 0x00050051, 0x00000006, 0x000001b6, 0x00000177, 0x00000001, 0x00050051, 0x00000006, 0x000001b7, + 0x00000177, 0x00000002, 0x00050051, 0x00000006, 0x000001b8, 0x000001b1, 0x00000000, 0x00050051, + 0x00000006, 0x000001b9, 0x000001b1, 0x00000001, 0x00050051, 0x00000006, 0x000001ba, 0x000001b1, + 0x00000002, 0x00060050, 0x0000001f, 0x000001bb, 0x000001b2, 0x000001b3, 0x000001b4, 0x00060050, + 0x0000001f, 0x000001bc, 0x000001b5, 0x000001b6, 0x000001b7, 0x00060050, 0x0000001f, 0x000001bd, + 0x000001b8, 0x000001b9, 0x000001ba, 0x00060050, 0x00000021, 0x000001be, 0x000001bb, 0x000001bc, + 0x000001bd, 0x000200fe, 0x000001be, 0x000200f8, 0x000001b0, 0x0004003d, 0x0000001f, 0x000001c0, + 0x00000187, 0x0004003d, 0x0000001f, 0x000001c1, 0x00000196, 0x0004003d, 0x0000001f, 0x000001c2, + 0x00000156, 0x00050051, 0x00000006, 0x000001c3, 0x000001c0, 0x00000000, 0x00050051, 0x00000006, + 0x000001c4, 0x000001c0, 0x00000001, 0x00050051, 0x00000006, 0x000001c5, 0x000001c0, 0x00000002, + 0x00050051, 0x00000006, 0x000001c6, 0x000001c1, 0x00000000, 0x00050051, 0x00000006, 0x000001c7, + 0x000001c1, 0x00000001, 0x00050051, 0x00000006, 0x000001c8, 0x000001c1, 0x00000002, 0x00050051, + 0x00000006, 0x000001c9, 0x000001c2, 0x00000000, 0x00050051, 0x00000006, 0x000001ca, 0x000001c2, + 0x00000001, 0x00050051, 0x00000006, 0x000001cb, 0x000001c2, 0x00000002, 0x00060050, 0x0000001f, + 0x000001cc, 0x000001c3, 0x000001c4, 0x000001c5, 0x00060050, 0x0000001f, 0x000001cd, 0x000001c6, + 0x000001c7, 0x000001c8, 0x00060050, 0x0000001f, 0x000001ce, 0x000001c9, 0x000001ca, 0x000001cb, + 0x00060050, 0x00000021, 0x000001cf, 0x000001cc, 0x000001cd, 0x000001ce, 0x000200fe, 0x000001cf, + 0x00010038, 0x00050036, 0x00000007, 0x0000002f, 0x00000000, 0x00000028, 0x00030037, 0x00000015, + 0x00000029, 0x00030037, 0x00000008, 0x0000002a, 0x00030037, 0x00000020, 0x0000002b, 0x00030037, + 0x0000000d, 0x0000002c, 0x00030037, 0x0000000d, 0x0000002d, 0x00030037, 0x0000000d, 0x0000002e, + 0x000200f8, 0x00000030, 0x0004003b, 0x0000000d, 0x000001d9, 0x00000007, 0x0004003b, 0x0000000d, + 0x000001e7, 0x00000007, 0x0004003b, 0x0000000d, 0x000001ea, 0x00000007, 0x0004003b, 0x00000008, + 0x000001f0, 0x00000007, 0x0004003b, 0x00000008, 0x000001f8, 0x00000007, 0x0004003b, 0x00000008, + 0x000001fd, 0x00000007, 0x0004003b, 0x0000000d, 0x000001ff, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000200, 0x00000007, 0x0004003b, 0x0000000d, 0x00000205, 0x00000007, 0x0004003b, 0x000000e2, + 0x00000208, 0x00000007, 0x0004003b, 0x00000008, 0x0000022d, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000231, 0x00000007, 0x0004003b, 0x0000000d, 0x00000235, 0x00000007, 0x0004003b, 0x0000000d, + 0x0000023f, 0x00000007, 0x0004003b, 0x0000000d, 0x00000243, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000247, 0x00000007, 0x0004003d, 0x00000006, 0x000001d2, 0x0000002c, 0x000500b8, 0x000000af, + 0x000001d4, 0x000001d2, 0x000001d3, 0x000300f7, 0x000001d6, 0x00000000, 0x000400fa, 0x000001d4, + 0x000001d5, 0x000001d6, 0x000200f8, 0x000001d5, 0x0004003d, 0x00000007, 0x000001d7, 0x0000002a, + 0x000200fe, 0x000001d7, 0x000200f8, 0x000001d6, 0x0004003d, 0x00000006, 0x000001da, 0x0000002e, + 0x0007000c, 0x00000006, 0x000001db, 0x00000001, 0x00000028, 0x000001da, 0x0000010d, 0x0004003d, + 0x00000006, 0x000001dc, 0x0000002d, 0x0007000c, 0x00000006, 0x000001dd, 0x00000001, 0x00000028, + 0x000001dc, 0x0000010d, 0x00050041, 0x0000000d, 0x000001df, 0x0000002b, 0x000001de, 0x0004003d, + 0x00000006, 0x000001e0, 0x000001df, 0x0006000c, 0x00000006, 0x000001e1, 0x00000001, 0x00000004, + 0x000001e0, 0x0008000c, 0x00000006, 0x000001e2, 0x00000001, 0x0000002b, 0x000001e1, 0x000000df, + 0x0000010d, 0x0008000c, 0x00000006, 0x000001e3, 0x00000001, 0x0000002e, 0x000001db, 0x000001dd, + 0x000001e2, 0x0003003e, 0x000001d9, 0x000001e3, 0x0004003d, 0x00000006, 0x000001e4, 0x000001d9, + 0x0008000c, 0x00000006, 0x000001e6, 0x00000001, 0x0000002b, 0x000001e4, 0x0000010d, 0x000001e5, + 0x0003003e, 0x000001d9, 0x000001e6, 0x0004003d, 0x00000006, 0x000001e8, 0x000001d9, 0x00050088, + 0x00000006, 0x000001e9, 0x0000010d, 0x000001e8, 0x0003003e, 0x000001e7, 0x000001e9, 0x00050041, + 0x0000000d, 0x000001eb, 0x0000002b, 0x000001de, 0x0004003d, 0x00000006, 0x000001ec, 0x000001eb, + 0x0006000c, 0x00000006, 0x000001ed, 0x00000001, 0x00000004, 0x000001ec, 0x0007000c, 0x00000006, + 0x000001ef, 0x00000001, 0x00000028, 0x000001ed, 0x000001ee, 0x0003003e, 0x000001ea, 0x000001ef, + 0x0004003d, 0x0000001f, 0x000001f1, 0x0000002b, 0x0007004f, 0x00000007, 0x000001f2, 0x000001f1, + 0x000001f1, 0x00000000, 0x00000001, 0x0004003d, 0x00000006, 0x000001f3, 0x000001ea, 0x00050050, + 0x00000007, 0x000001f4, 0x000001f3, 0x000001f3, 0x00050088, 0x00000007, 0x000001f5, 0x000001f2, + 0x000001f4, 0x0004003d, 0x00000006, 0x000001f6, 0x0000002c, 0x0005008e, 0x00000007, 0x000001f7, + 0x000001f5, 0x000001f6, 0x0003003e, 0x000001f0, 0x000001f7, 0x0004003d, 0x00000007, 0x000001f9, + 0x000001f0, 0x0004003d, 0x00000006, 0x000001fa, 0x000001d9, 0x00050050, 0x00000007, 0x000001fb, + 0x000001fa, 0x000001fa, 0x00050088, 0x00000007, 0x000001fc, 0x000001f9, 0x000001fb, 0x0003003e, + 0x000001f8, 0x000001fc, 0x0004003d, 0x00000007, 0x000001fe, 0x0000002a, 0x0003003e, 0x000001fd, + 0x000001fe, 0x0003003e, 0x000001ff, 0x000000df, 0x0004003d, 0x00000014, 0x00000201, 0x00000029, + 0x0004003d, 0x00000007, 0x00000202, 0x000001fd, 0x00050057, 0x00000016, 0x00000203, 0x00000201, + 0x00000202, 0x00050051, 0x00000006, 0x00000204, 0x00000203, 0x00000000, 0x0003003e, 0x00000200, + 0x00000204, 0x0004003d, 0x00000006, 0x00000206, 0x00000200, 0x00050083, 0x00000006, 0x00000207, + 0x0000010d, 0x00000206, 0x0003003e, 0x00000205, 0x00000207, 0x0003003e, 0x00000208, 0x000000e4, + 0x000200f9, 0x00000209, 0x000200f8, 0x00000209, 0x000400f6, 0x0000020b, 0x0000020c, 0x00000000, + 0x000200f9, 0x0000020d, 0x000200f8, 0x0000020d, 0x0004003d, 0x000000e1, 0x0000020e, 0x00000208, + 0x000500b1, 0x000000af, 0x00000210, 0x0000020e, 0x0000020f, 0x000400fa, 0x00000210, 0x0000020a, + 0x0000020b, 0x000200f8, 0x0000020a, 0x0004003d, 0x00000006, 0x00000211, 0x000001ff, 0x0004003d, + 0x00000006, 0x00000212, 0x00000205, 0x000500be, 0x000000af, 0x00000213, 0x00000211, 0x00000212, + 0x000400a8, 0x000000af, 0x00000214, 0x00000213, 0x000300f7, 0x00000216, 0x00000000, 0x000400fa, + 0x00000214, 0x00000215, 0x00000216, 0x000200f8, 0x00000215, 0x0004003d, 0x000000e1, 0x00000217, + 0x00000208, 0x0004006f, 0x00000006, 0x00000218, 0x00000217, 0x0004003d, 0x00000006, 0x00000219, + 0x000001d9, 0x000500be, 0x000000af, 0x0000021a, 0x00000218, 0x00000219, 0x000200f9, 0x00000216, + 0x000200f8, 0x00000216, 0x000700f5, 0x000000af, 0x0000021b, 0x00000213, 0x0000020a, 0x0000021a, + 0x00000215, 0x000300f7, 0x0000021d, 0x00000000, 0x000400fa, 0x0000021b, 0x0000021c, 0x0000021d, + 0x000200f8, 0x0000021c, 0x000200f9, 0x0000020b, 0x000200f8, 0x0000021d, 0x0004003d, 0x00000007, + 0x0000021f, 0x000001f8, 0x0004003d, 0x00000007, 0x00000220, 0x000001fd, 0x00050083, 0x00000007, + 0x00000221, 0x00000220, 0x0000021f, 0x0003003e, 0x000001fd, 0x00000221, 0x0004003d, 0x00000014, + 0x00000222, 0x00000029, 0x0004003d, 0x00000007, 0x00000223, 0x000001fd, 0x00050057, 0x00000016, + 0x00000224, 0x00000222, 0x00000223, 0x00050051, 0x00000006, 0x00000225, 0x00000224, 0x00000000, + 0x0003003e, 0x00000200, 0x00000225, 0x0004003d, 0x00000006, 0x00000226, 0x00000200, 0x00050083, + 0x00000006, 0x00000227, 0x0000010d, 0x00000226, 0x0003003e, 0x00000205, 0x00000227, 0x0004003d, + 0x00000006, 0x00000228, 0x000001e7, 0x0004003d, 0x00000006, 0x00000229, 0x000001ff, 0x00050081, + 0x00000006, 0x0000022a, 0x00000229, 0x00000228, 0x0003003e, 0x000001ff, 0x0000022a, 0x000200f9, + 0x0000020c, 0x000200f8, 0x0000020c, 0x0004003d, 0x000000e1, 0x0000022b, 0x00000208, 0x00050080, + 0x000000e1, 0x0000022c, 0x0000022b, 0x000000eb, 0x0003003e, 0x00000208, 0x0000022c, 0x000200f9, + 0x00000209, 0x000200f8, 0x0000020b, 0x0004003d, 0x00000007, 0x0000022e, 0x000001fd, 0x0004003d, + 0x00000007, 0x0000022f, 0x000001f8, 0x00050081, 0x00000007, 0x00000230, 0x0000022e, 0x0000022f, + 0x0003003e, 0x0000022d, 0x00000230, 0x0004003d, 0x00000006, 0x00000232, 0x00000205, 0x0004003d, + 0x00000006, 0x00000233, 0x000001ff, 0x00050083, 0x00000006, 0x00000234, 0x00000232, 0x00000233, + 0x0003003e, 0x00000231, 0x00000234, 0x0004003d, 0x00000014, 0x00000236, 0x00000029, 0x0004003d, + 0x00000007, 0x00000237, 0x0000022d, 0x00050057, 0x00000016, 0x00000238, 0x00000236, 0x00000237, + 0x00050051, 0x00000006, 0x00000239, 0x00000238, 0x00000000, 0x00050083, 0x00000006, 0x0000023a, + 0x0000010d, 0x00000239, 0x0004003d, 0x00000006, 0x0000023b, 0x000001ff, 0x0004003d, 0x00000006, + 0x0000023c, 0x000001e7, 0x00050083, 0x00000006, 0x0000023d, 0x0000023b, 0x0000023c, 0x00050083, + 0x00000006, 0x0000023e, 0x0000023a, 0x0000023d, 0x0003003e, 0x00000235, 0x0000023e, 0x0004003d, + 0x00000006, 0x00000240, 0x00000231, 0x0004003d, 0x00000006, 0x00000241, 0x00000235, 0x00050083, + 0x00000006, 0x00000242, 0x00000240, 0x00000241, 0x0003003e, 0x0000023f, 0x00000242, 0x0004003d, + 0x00000006, 0x00000244, 0x0000023f, 0x0006000c, 0x00000006, 0x00000245, 0x00000001, 0x00000004, + 0x00000244, 0x000500b8, 0x000000af, 0x00000246, 0x00000245, 0x000001d3, 0x000300f7, 0x00000249, + 0x00000000, 0x000400fa, 0x00000246, 0x00000248, 0x0000024a, 0x000200f8, 0x00000248, 0x0003003e, + 0x00000247, 0x00000122, 0x000200f9, 0x00000249, 0x000200f8, 0x0000024a, 0x0004003d, 0x00000006, + 0x0000024b, 0x00000231, 0x0004003d, 0x00000006, 0x0000024c, 0x0000023f, 0x00050088, 0x00000006, + 0x0000024d, 0x0000024b, 0x0000024c, 0x0008000c, 0x00000006, 0x0000024e, 0x00000001, 0x0000002b, + 0x0000024d, 0x000000df, 0x0000010d, 0x0003003e, 0x00000247, 0x0000024e, 0x000200f9, 0x00000249, + 0x000200f8, 0x00000249, 0x0004003d, 0x00000006, 0x0000024f, 0x00000247, 0x0003003e, 0x00000243, + 0x0000024f, 0x0004003d, 0x00000007, 0x00000250, 0x000001fd, 0x0004003d, 0x00000007, 0x00000251, + 0x0000022d, 0x0004003d, 0x00000006, 0x00000252, 0x00000243, 0x00050050, 0x00000007, 0x00000253, + 0x00000252, 0x00000252, 0x0008000c, 0x00000007, 0x00000254, 0x00000001, 0x0000002e, 0x00000250, + 0x00000251, 0x00000253, 0x000200fe, 0x00000254, 0x00010038, 0x00050036, 0x00000007, 0x0000003a, + 0x00000000, 0x00000031, 0x00030037, 0x00000015, 0x00000032, 0x00030037, 0x00000008, 0x00000033, + 0x00030037, 0x00000020, 0x00000034, 0x00030037, 0x00000020, 0x00000035, 0x00030037, 0x00000020, + 0x00000036, 0x00030037, 0x0000000d, 0x00000037, 0x00030037, 0x0000000d, 0x00000038, 0x00030037, + 0x0000000d, 0x00000039, 0x000200f8, 0x0000003b, 0x0004003b, 0x0000025d, 0x0000025e, 0x00000007, + 0x0004003b, 0x00000020, 0x0000025f, 0x00000007, 0x0004003b, 0x00000020, 0x00000261, 0x00000007, + 0x0004003b, 0x00000008, 0x00000263, 0x00000007, 0x0004003b, 0x00000020, 0x0000026e, 0x00000007, + 0x0004003b, 0x00000008, 0x00000274, 0x00000007, 0x0004003b, 0x00000020, 0x00000276, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000278, 0x00000007, 0x0004003b, 0x0000000d, 0x0000027a, 0x00000007, + 0x0004003b, 0x0000000d, 0x0000027c, 0x00000007, 0x0004003d, 0x00000006, 0x00000257, 0x00000037, + 0x000500b8, 0x000000af, 0x00000258, 0x00000257, 0x000001d3, 0x000300f7, 0x0000025a, 0x00000000, + 0x000400fa, 0x00000258, 0x00000259, 0x0000025a, 0x000200f8, 0x00000259, 0x0004003d, 0x00000007, + 0x0000025b, 0x00000033, 0x000200fe, 0x0000025b, 0x000200f8, 0x0000025a, 0x0004003d, 0x0000001f, + 0x00000260, 0x00000034, 0x0003003e, 0x0000025f, 0x00000260, 0x0004003d, 0x0000001f, 0x00000262, + 0x00000035, 0x0003003e, 0x00000261, 0x00000262, 0x0004003d, 0x00000007, 0x00000264, 0x00000033, + 0x0003003e, 0x00000263, 0x00000264, 0x00070039, 0x00000021, 0x00000265, 0x00000026, 0x0000025f, + 0x00000261, 0x00000263, 0x0003003e, 0x0000025e, 0x00000265, 0x00050041, 0x00000020, 0x00000266, + 0x0000025e, 0x000000e4, 0x0004003d, 0x0000001f, 0x00000267, 0x00000266, 0x0006000c, 0x00000006, + 0x00000268, 0x00000001, 0x00000042, 0x00000267, 0x000500b8, 0x000000af, 0x00000269, 0x00000268, + 0x000000ae, 0x000300f7, 0x0000026b, 0x00000000, 0x000400fa, 0x00000269, 0x0000026a, 0x0000026b, + 0x000200f8, 0x0000026a, 0x0004003d, 0x00000007, 0x0000026c, 0x00000033, 0x000200fe, 0x0000026c, + 0x000200f8, 0x0000026b, 0x0004003d, 0x00000021, 0x0000026f, 0x0000025e, 0x00040054, 0x00000021, + 0x00000270, 0x0000026f, 0x0004003d, 0x0000001f, 0x00000271, 0x00000036, 0x00050091, 0x0000001f, + 0x00000272, 0x00000270, 0x00000271, 0x0006000c, 0x0000001f, 0x00000273, 0x00000001, 0x00000045, + 0x00000272, 0x0003003e, 0x0000026e, 0x00000273, 0x0004003d, 0x00000007, 0x00000275, 0x00000033, + 0x0003003e, 0x00000274, 0x00000275, 0x0004003d, 0x0000001f, 0x00000277, 0x0000026e, 0x0003003e, + 0x00000276, 0x00000277, 0x0004003d, 0x00000006, 0x00000279, 0x00000037, 0x0003003e, 0x00000278, + 0x00000279, 0x0004003d, 0x00000006, 0x0000027b, 0x00000038, 0x0003003e, 0x0000027a, 0x0000027b, + 0x0004003d, 0x00000006, 0x0000027d, 0x00000039, 0x0003003e, 0x0000027c, 0x0000027d, 0x000a0039, + 0x00000007, 0x0000027e, 0x0000002f, 0x00000032, 0x00000274, 0x00000276, 0x00000278, 0x0000027a, + 0x0000027c, 0x000200fe, 0x0000027e, 0x00010038, 0x00050036, 0x0000001f, 0x0000003e, 0x00000000, + 0x0000003c, 0x00030037, 0x00000020, 0x0000003d, 0x000200f8, 0x0000003f, 0x0004003b, 0x00000020, + 0x00000281, 0x00000007, 0x0004003b, 0x0000000d, 0x00000287, 0x00000007, 0x0004003d, 0x0000001f, + 0x00000282, 0x0000003d, 0x00050083, 0x0000001f, 0x00000285, 0x00000282, 0x00000284, 0x0007000c, + 0x0000001f, 0x00000286, 0x00000001, 0x00000028, 0x00000285, 0x00000177, 0x0003003e, 0x00000281, + 0x00000286, 0x0003003e, 0x00000287, 0x00000288, 0x0004003d, 0x0000001f, 0x00000289, 0x0000003d, + 0x0007000c, 0x0000001f, 0x0000028a, 0x00000001, 0x00000025, 0x00000289, 0x00000284, 0x0004003d, + 0x00000006, 0x0000028b, 0x00000287, 0x00060050, 0x0000001f, 0x0000028c, 0x0000028b, 0x0000028b, + 0x0000028b, 0x0004003d, 0x0000001f, 0x0000028d, 0x00000281, 0x0004003d, 0x0000001f, 0x0000028e, + 0x00000281, 0x00050081, 0x0000001f, 0x00000290, 0x0000028e, 0x0000028f, 0x00050088, 0x0000001f, + 0x00000291, 0x0000028d, 0x00000290, 0x00050085, 0x0000001f, 0x00000292, 0x0000028c, 0x00000291, + 0x00050081, 0x0000001f, 0x00000293, 0x0000028a, 0x00000292, 0x000200fe, 0x00000293, 0x00010038, + 0x00050036, 0x00000006, 0x00000044, 0x00000000, 0x00000040, 0x00030037, 0x00000020, 0x00000041, + 0x00030037, 0x00000020, 0x00000042, 0x00030037, 0x0000000d, 0x00000043, 0x000200f8, 0x00000045, + 0x0004003b, 0x0000000d, 0x00000296, 0x00000007, 0x0004003b, 0x0000000d, 0x0000029c, 0x00000007, + 0x0004003b, 0x0000000d, 0x000002a0, 0x00000007, 0x0004003b, 0x0000000d, 0x000002a5, 0x00000007, + 0x0004003d, 0x00000006, 0x00000297, 0x00000043, 0x0004003d, 0x00000006, 0x00000298, 0x00000043, + 0x00050085, 0x00000006, 0x00000299, 0x00000297, 0x00000298, 0x0007000c, 0x00000006, 0x0000029b, + 0x00000001, 0x00000028, 0x00000299, 0x0000029a, 0x0003003e, 0x00000296, 0x0000029b, 0x0004003d, + 0x00000006, 0x0000029d, 0x00000296, 0x0004003d, 0x00000006, 0x0000029e, 0x00000296, 0x00050085, + 0x00000006, 0x0000029f, 0x0000029d, 0x0000029e, 0x0003003e, 0x0000029c, 0x0000029f, 0x0004003d, + 0x0000001f, 0x000002a1, 0x00000041, 0x0004003d, 0x0000001f, 0x000002a2, 0x00000042, 0x00050094, + 0x00000006, 0x000002a3, 0x000002a1, 0x000002a2, 0x0007000c, 0x00000006, 0x000002a4, 0x00000001, + 0x00000028, 0x000002a3, 0x000000df, 0x0003003e, 0x000002a0, 0x000002a4, 0x0004003d, 0x00000006, + 0x000002a6, 0x000002a0, 0x0004003d, 0x00000006, 0x000002a7, 0x000002a0, 0x00050085, 0x00000006, + 0x000002a8, 0x000002a6, 0x000002a7, 0x0004003d, 0x00000006, 0x000002a9, 0x0000029c, 0x00050083, + 0x00000006, 0x000002aa, 0x000002a9, 0x0000010d, 0x00050085, 0x00000006, 0x000002ab, 0x000002a8, + 0x000002aa, 0x00050081, 0x00000006, 0x000002ac, 0x000002ab, 0x0000010d, 0x0003003e, 0x000002a5, + 0x000002ac, 0x0004003d, 0x00000006, 0x000002ad, 0x0000029c, 0x0004003d, 0x00000006, 0x000002ae, + 0x000002a5, 0x00050085, 0x00000006, 0x000002af, 0x00000119, 0x000002ae, 0x0004003d, 0x00000006, + 0x000002b0, 0x000002a5, 0x00050085, 0x00000006, 0x000002b1, 0x000002af, 0x000002b0, 0x0007000c, + 0x00000006, 0x000002b2, 0x00000001, 0x00000028, 0x000002b1, 0x000000ae, 0x00050088, 0x00000006, + 0x000002b3, 0x000002ad, 0x000002b2, 0x000200fe, 0x000002b3, 0x00010038, 0x00050036, 0x00000006, + 0x00000049, 0x00000000, 0x00000046, 0x00030037, 0x0000000d, 0x00000047, 0x00030037, 0x0000000d, + 0x00000048, 0x000200f8, 0x0000004a, 0x0004003b, 0x0000000d, 0x000002b6, 0x00000007, 0x0004003b, + 0x0000000d, 0x000002b9, 0x00000007, 0x0004003d, 0x00000006, 0x000002b7, 0x00000048, 0x00050081, + 0x00000006, 0x000002b8, 0x000002b7, 0x0000010d, 0x0003003e, 0x000002b6, 0x000002b8, 0x0004003d, + 0x00000006, 0x000002ba, 0x000002b6, 0x0004003d, 0x00000006, 0x000002bb, 0x000002b6, 0x00050085, + 0x00000006, 0x000002bc, 0x000002ba, 0x000002bb, 0x00050088, 0x00000006, 0x000002be, 0x000002bc, + 0x000002bd, 0x0003003e, 0x000002b9, 0x000002be, 0x0004003d, 0x00000006, 0x000002bf, 0x00000047, + 0x0004003d, 0x00000006, 0x000002c0, 0x00000047, 0x0004003d, 0x00000006, 0x000002c1, 0x000002b9, + 0x00050083, 0x00000006, 0x000002c2, 0x0000010d, 0x000002c1, 0x00050085, 0x00000006, 0x000002c3, + 0x000002c0, 0x000002c2, 0x0004003d, 0x00000006, 0x000002c4, 0x000002b9, 0x00050081, 0x00000006, + 0x000002c5, 0x000002c3, 0x000002c4, 0x0007000c, 0x00000006, 0x000002c6, 0x00000001, 0x00000028, + 0x000002c5, 0x000000ae, 0x00050088, 0x00000006, 0x000002c7, 0x000002bf, 0x000002c6, 0x000200fe, + 0x000002c7, 0x00010038, 0x00050036, 0x00000006, 0x00000050, 0x00000000, 0x0000004b, 0x00030037, + 0x00000020, 0x0000004c, 0x00030037, 0x00000020, 0x0000004d, 0x00030037, 0x00000020, 0x0000004e, + 0x00030037, 0x0000000d, 0x0000004f, 0x000200f8, 0x00000051, 0x0004003b, 0x0000000d, 0x000002ce, + 0x00000007, 0x0004003b, 0x0000000d, 0x000002cf, 0x00000007, 0x0004003b, 0x0000000d, 0x000002d6, + 0x00000007, 0x0004003b, 0x0000000d, 0x000002d7, 0x00000007, 0x0004003d, 0x0000001f, 0x000002ca, + 0x0000004c, 0x0004003d, 0x0000001f, 0x000002cb, 0x0000004d, 0x00050094, 0x00000006, 0x000002cc, + 0x000002ca, 0x000002cb, 0x0007000c, 0x00000006, 0x000002cd, 0x00000001, 0x00000028, 0x000002cc, + 0x000000df, 0x0003003e, 0x000002ce, 0x000002cd, 0x0004003d, 0x00000006, 0x000002d0, 0x0000004f, + 0x0003003e, 0x000002cf, 0x000002d0, 0x00060039, 0x00000006, 0x000002d1, 0x00000049, 0x000002ce, + 0x000002cf, 0x0004003d, 0x0000001f, 0x000002d2, 0x0000004c, 0x0004003d, 0x0000001f, 0x000002d3, + 0x0000004e, 0x00050094, 0x00000006, 0x000002d4, 0x000002d2, 0x000002d3, 0x0007000c, 0x00000006, + 0x000002d5, 0x00000001, 0x00000028, 0x000002d4, 0x000000df, 0x0003003e, 0x000002d6, 0x000002d5, + 0x0004003d, 0x00000006, 0x000002d8, 0x0000004f, 0x0003003e, 0x000002d7, 0x000002d8, 0x00060039, + 0x00000006, 0x000002d9, 0x00000049, 0x000002d6, 0x000002d7, 0x00050085, 0x00000006, 0x000002da, + 0x000002d1, 0x000002d9, 0x000200fe, 0x000002da, 0x00010038, 0x00050036, 0x0000001f, 0x00000055, + 0x00000000, 0x00000052, 0x00030037, 0x0000000d, 0x00000053, 0x00030037, 0x00000020, 0x00000054, + 0x000200f8, 0x00000056, 0x0004003d, 0x0000001f, 0x000002dd, 0x00000054, 0x0004003d, 0x0000001f, + 0x000002de, 0x00000054, 0x00060050, 0x0000001f, 0x000002df, 0x0000010d, 0x0000010d, 0x0000010d, + 0x00050083, 0x0000001f, 0x000002e0, 0x000002df, 0x000002de, 0x0004003d, 0x00000006, 0x000002e1, + 0x00000053, 0x00050083, 0x00000006, 0x000002e2, 0x0000010d, 0x000002e1, 0x0008000c, 0x00000006, + 0x000002e3, 0x00000001, 0x0000002b, 0x000002e2, 0x000000df, 0x0000010d, 0x0007000c, 0x00000006, + 0x000002e5, 0x00000001, 0x0000001a, 0x000002e3, 0x000002e4, 0x0005008e, 0x0000001f, 0x000002e6, + 0x000002e0, 0x000002e5, 0x00050081, 0x0000001f, 0x000002e7, 0x000002dd, 0x000002e6, 0x000200fe, + 0x000002e7, 0x00010038, 0x00050036, 0x0000001f, 0x0000005c, 0x00000000, 0x00000057, 0x00030037, + 0x00000020, 0x00000058, 0x00030037, 0x00000020, 0x00000059, 0x00030037, 0x00000020, 0x0000005a, + 0x00030037, 0x00000008, 0x0000005b, 0x000200f8, 0x0000005d, 0x0004003b, 0x00000020, 0x000002ea, + 0x00000007, 0x0004003b, 0x00000020, 0x000002ff, 0x00000007, 0x0004003b, 0x00000020, 0x00000302, + 0x00000007, 0x0004003b, 0x00000008, 0x00000305, 0x00000007, 0x0004003b, 0x00000008, 0x00000308, + 0x00000007, 0x0004003b, 0x0000000d, 0x0000030b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000320, + 0x00000007, 0x0004003b, 0x00000020, 0x00000323, 0x00000007, 0x0004003b, 0x00000020, 0x0000032f, + 0x00000007, 0x0004003b, 0x0000000d, 0x00000344, 0x00000007, 0x0004003b, 0x0000000d, 0x00000347, + 0x00000007, 0x0004003d, 0x0000001f, 0x000002eb, 0x00000059, 0x0005008e, 0x0000001f, 0x000002ec, + 0x000002eb, 0x0000010b, 0x00060050, 0x0000001f, 0x000002ed, 0x0000010d, 0x0000010d, 0x0000010d, + 0x00050083, 0x0000001f, 0x000002ee, 0x000002ec, 0x000002ed, 0x0003003e, 0x000002ea, 0x000002ee, + 0x0004003d, 0x0000001f, 0x000002ef, 0x000002ea, 0x0007004f, 0x00000007, 0x000002f0, 0x000002ef, + 0x000002ef, 0x00000000, 0x00000001, 0x0006000c, 0x00000006, 0x000002f1, 0x00000001, 0x00000042, + 0x000002f0, 0x000500b8, 0x000000af, 0x000002f3, 0x000002f1, 0x000002f2, 0x000300f7, 0x000002f5, + 0x00000000, 0x000400fa, 0x000002f3, 0x000002f4, 0x000002f5, 0x000200f8, 0x000002f4, 0x00050041, + 0x0000000d, 0x000002f6, 0x000002ea, 0x000001de, 0x0004003d, 0x00000006, 0x000002f7, 0x000002f6, + 0x000500ba, 0x000000af, 0x000002f8, 0x000002f7, 0x00000283, 0x000200f9, 0x000002f5, 0x000200f8, + 0x000002f5, 0x000700f5, 0x000000af, 0x000002f9, 0x000002f3, 0x0000005d, 0x000002f8, 0x000002f4, + 0x000300f7, 0x000002fb, 0x00000000, 0x000400fa, 0x000002f9, 0x000002fa, 0x000002fb, 0x000200f8, + 0x000002fa, 0x0004003d, 0x0000001f, 0x000002fc, 0x00000058, 0x0006000c, 0x0000001f, 0x000002fd, + 0x00000001, 0x00000045, 0x000002fc, 0x000200fe, 0x000002fd, 0x000200f8, 0x000002fb, 0x0004003d, + 0x0000001f, 0x00000300, 0x0000005a, 0x000400cf, 0x0000001f, 0x00000301, 0x00000300, 0x0003003e, + 0x000002ff, 0x00000301, 0x0004003d, 0x0000001f, 0x00000303, 0x0000005a, 0x000400d0, 0x0000001f, + 0x00000304, 0x00000303, 0x0003003e, 0x00000302, 0x00000304, 0x0004003d, 0x00000007, 0x00000306, + 0x0000005b, 0x000400cf, 0x00000007, 0x00000307, 0x00000306, 0x0003003e, 0x00000305, 0x00000307, + 0x0004003d, 0x00000007, 0x00000309, 0x0000005b, 0x000400d0, 0x00000007, 0x0000030a, 0x00000309, + 0x0003003e, 0x00000308, 0x0000030a, 0x00050041, 0x0000000d, 0x0000030c, 0x00000305, 0x00000097, + 0x0004003d, 0x00000006, 0x0000030d, 0x0000030c, 0x00050041, 0x0000000d, 0x0000030e, 0x00000308, + 0x0000009c, 0x0004003d, 0x00000006, 0x0000030f, 0x0000030e, 0x00050085, 0x00000006, 0x00000310, + 0x0000030d, 0x0000030f, 0x00050041, 0x0000000d, 0x00000311, 0x00000308, 0x00000097, 0x0004003d, + 0x00000006, 0x00000312, 0x00000311, 0x00050041, 0x0000000d, 0x00000313, 0x00000305, 0x0000009c, + 0x0004003d, 0x00000006, 0x00000314, 0x00000313, 0x00050085, 0x00000006, 0x00000315, 0x00000312, + 0x00000314, 0x00050083, 0x00000006, 0x00000316, 0x00000310, 0x00000315, 0x0003003e, 0x0000030b, + 0x00000316, 0x0004003d, 0x00000006, 0x00000317, 0x0000030b, 0x0006000c, 0x00000006, 0x00000318, + 0x00000001, 0x00000004, 0x00000317, 0x000500b8, 0x000000af, 0x0000031a, 0x00000318, 0x00000319, + 0x000300f7, 0x0000031c, 0x00000000, 0x000400fa, 0x0000031a, 0x0000031b, 0x0000031c, 0x000200f8, + 0x0000031b, 0x0004003d, 0x0000001f, 0x0000031d, 0x00000058, 0x0006000c, 0x0000001f, 0x0000031e, + 0x00000001, 0x00000045, 0x0000031d, 0x000200fe, 0x0000031e, 0x000200f8, 0x0000031c, 0x0004003d, + 0x00000006, 0x00000321, 0x0000030b, 0x00050088, 0x00000006, 0x00000322, 0x0000010d, 0x00000321, + 0x0003003e, 0x00000320, 0x00000322, 0x0004003d, 0x0000001f, 0x00000324, 0x000002ff, 0x00050041, + 0x0000000d, 0x00000325, 0x00000308, 0x0000009c, 0x0004003d, 0x00000006, 0x00000326, 0x00000325, + 0x0005008e, 0x0000001f, 0x00000327, 0x00000324, 0x00000326, 0x0004003d, 0x0000001f, 0x00000328, + 0x00000302, 0x00050041, 0x0000000d, 0x00000329, 0x00000305, 0x0000009c, 0x0004003d, 0x00000006, + 0x0000032a, 0x00000329, 0x0005008e, 0x0000001f, 0x0000032b, 0x00000328, 0x0000032a, 0x00050083, + 0x0000001f, 0x0000032c, 0x00000327, 0x0000032b, 0x0004003d, 0x00000006, 0x0000032d, 0x00000320, + 0x0005008e, 0x0000001f, 0x0000032e, 0x0000032c, 0x0000032d, 0x0003003e, 0x00000323, 0x0000032e, + 0x0004003d, 0x0000001f, 0x00000330, 0x00000302, 0x00050041, 0x0000000d, 0x00000331, 0x00000305, + 0x00000097, 0x0004003d, 0x00000006, 0x00000332, 0x00000331, 0x0005008e, 0x0000001f, 0x00000333, + 0x00000330, 0x00000332, 0x0004003d, 0x0000001f, 0x00000334, 0x000002ff, 0x00050041, 0x0000000d, + 0x00000335, 0x00000308, 0x00000097, 0x0004003d, 0x00000006, 0x00000336, 0x00000335, 0x0005008e, + 0x0000001f, 0x00000337, 0x00000334, 0x00000336, 0x00050083, 0x0000001f, 0x00000338, 0x00000333, + 0x00000337, 0x0004003d, 0x00000006, 0x00000339, 0x00000320, 0x0005008e, 0x0000001f, 0x0000033a, + 0x00000338, 0x00000339, 0x0003003e, 0x0000032f, 0x0000033a, 0x0004003d, 0x0000001f, 0x0000033b, + 0x00000058, 0x0006000c, 0x0000001f, 0x0000033c, 0x00000001, 0x00000045, 0x0000033b, 0x0003003e, + 0x00000058, 0x0000033c, 0x0004003d, 0x0000001f, 0x0000033d, 0x00000323, 0x0004003d, 0x0000001f, + 0x0000033e, 0x00000058, 0x0004003d, 0x0000001f, 0x0000033f, 0x00000058, 0x0004003d, 0x0000001f, + 0x00000340, 0x00000323, 0x00050094, 0x00000006, 0x00000341, 0x0000033f, 0x00000340, 0x0005008e, + 0x0000001f, 0x00000342, 0x0000033e, 0x00000341, 0x00050083, 0x0000001f, 0x00000343, 0x0000033d, + 0x00000342, 0x0003003e, 0x00000323, 0x00000343, 0x0004003d, 0x0000001f, 0x00000345, 0x00000323, + 0x0006000c, 0x00000006, 0x00000346, 0x00000001, 0x00000042, 0x00000345, 0x0003003e, 0x00000344, + 0x00000346, 0x0004003d, 0x0000001f, 0x00000348, 0x0000032f, 0x0006000c, 0x00000006, 0x00000349, + 0x00000001, 0x00000042, 0x00000348, 0x0003003e, 0x00000347, 0x00000349, 0x0004003d, 0x00000006, + 0x0000034a, 0x00000344, 0x000500b8, 0x000000af, 0x0000034b, 0x0000034a, 0x000000ae, 0x0004003d, + 0x00000006, 0x0000034c, 0x00000347, 0x000500b8, 0x000000af, 0x0000034d, 0x0000034c, 0x000000ae, + 0x000500a6, 0x000000af, 0x0000034e, 0x0000034b, 0x0000034d, 0x000300f7, 0x00000350, 0x00000000, + 0x000400fa, 0x0000034e, 0x0000034f, 0x00000350, 0x000200f8, 0x0000034f, 0x0004003d, 0x0000001f, + 0x00000351, 0x00000058, 0x000200fe, 0x00000351, 0x000200f8, 0x00000350, 0x0004003d, 0x00000006, + 0x00000353, 0x00000344, 0x0004003d, 0x0000001f, 0x00000354, 0x00000323, 0x00060050, 0x0000001f, + 0x00000355, 0x00000353, 0x00000353, 0x00000353, 0x00050088, 0x0000001f, 0x00000356, 0x00000354, + 0x00000355, 0x0003003e, 0x00000323, 0x00000356, 0x0004003d, 0x0000001f, 0x00000357, 0x0000032f, + 0x0004003d, 0x0000001f, 0x00000358, 0x00000058, 0x0004003d, 0x0000001f, 0x00000359, 0x00000058, + 0x0004003d, 0x0000001f, 0x0000035a, 0x0000032f, 0x00050094, 0x00000006, 0x0000035b, 0x00000359, + 0x0000035a, 0x0005008e, 0x0000001f, 0x0000035c, 0x00000358, 0x0000035b, 0x00050083, 0x0000001f, + 0x0000035d, 0x00000357, 0x0000035c, 0x0004003d, 0x0000001f, 0x0000035e, 0x00000323, 0x0004003d, + 0x0000001f, 0x0000035f, 0x00000323, 0x0004003d, 0x0000001f, 0x00000360, 0x0000032f, 0x00050094, + 0x00000006, 0x00000361, 0x0000035f, 0x00000360, 0x0005008e, 0x0000001f, 0x00000362, 0x0000035e, + 0x00000361, 0x00050083, 0x0000001f, 0x00000363, 0x0000035d, 0x00000362, 0x0006000c, 0x0000001f, + 0x00000364, 0x00000001, 0x00000045, 0x00000363, 0x0003003e, 0x0000032f, 0x00000364, 0x0004003d, + 0x0000001f, 0x00000365, 0x00000323, 0x0004003d, 0x0000001f, 0x00000366, 0x0000032f, 0x00050094, + 0x00000006, 0x00000367, 0x00000365, 0x00000366, 0x0006000c, 0x00000006, 0x00000368, 0x00000001, + 0x00000004, 0x00000367, 0x000500ba, 0x000000af, 0x0000036a, 0x00000368, 0x00000369, 0x000300f7, + 0x0000036c, 0x00000000, 0x000400fa, 0x0000036a, 0x0000036b, 0x0000036c, 0x000200f8, 0x0000036b, + 0x0004003d, 0x0000001f, 0x0000036d, 0x00000058, 0x000200fe, 0x0000036d, 0x000200f8, 0x0000036c, + 0x0004003d, 0x0000001f, 0x0000036f, 0x00000323, 0x0004003d, 0x0000001f, 0x00000370, 0x0000032f, + 0x0004003d, 0x0000001f, 0x00000371, 0x00000058, 0x00050051, 0x00000006, 0x00000372, 0x0000036f, + 0x00000000, 0x00050051, 0x00000006, 0x00000373, 0x0000036f, 0x00000001, 0x00050051, 0x00000006, + 0x00000374, 0x0000036f, 0x00000002, 0x00050051, 0x00000006, 0x00000375, 0x00000370, 0x00000000, + 0x00050051, 0x00000006, 0x00000376, 0x00000370, 0x00000001, 0x00050051, 0x00000006, 0x00000377, + 0x00000370, 0x00000002, 0x00050051, 0x00000006, 0x00000378, 0x00000371, 0x00000000, 0x00050051, + 0x00000006, 0x00000379, 0x00000371, 0x00000001, 0x00050051, 0x00000006, 0x0000037a, 0x00000371, + 0x00000002, 0x00060050, 0x0000001f, 0x0000037b, 0x00000372, 0x00000373, 0x00000374, 0x00060050, + 0x0000001f, 0x0000037c, 0x00000375, 0x00000376, 0x00000377, 0x00060050, 0x0000001f, 0x0000037d, + 0x00000378, 0x00000379, 0x0000037a, 0x00060050, 0x00000021, 0x0000037e, 0x0000037b, 0x0000037c, + 0x0000037d, 0x0004003d, 0x0000001f, 0x0000037f, 0x000002ea, 0x00050091, 0x0000001f, 0x00000380, + 0x0000037e, 0x0000037f, 0x0006000c, 0x0000001f, 0x00000381, 0x00000001, 0x00000045, 0x00000380, + 0x000200fe, 0x00000381, 0x00010038, 0x00050036, 0x0000001f, 0x00000066, 0x00000000, 0x0000005e, + 0x00030037, 0x00000020, 0x0000005f, 0x00030037, 0x00000020, 0x00000060, 0x00030037, 0x00000020, + 0x00000061, 0x00030037, 0x0000000d, 0x00000062, 0x00030037, 0x0000000d, 0x00000063, 0x00030037, + 0x00000020, 0x00000064, 0x00030037, 0x00000020, 0x00000065, 0x000200f8, 0x00000067, 0x0004003b, + 0x0000000d, 0x00000384, 0x00000007, 0x0004003b, 0x0000000d, 0x00000389, 0x00000007, 0x0004003b, + 0x00000020, 0x00000390, 0x00000007, 0x0004003b, 0x00000020, 0x00000395, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000039b, 0x00000007, 0x0004003b, 0x00000020, 0x0000039c, 0x00000007, 0x0004003b, + 0x00000020, 0x0000039e, 0x00000007, 0x0004003b, 0x0000000d, 0x000003a0, 0x00000007, 0x0004003b, + 0x0000000d, 0x000003a3, 0x00000007, 0x0004003b, 0x00000020, 0x000003a4, 0x00000007, 0x0004003b, + 0x00000020, 0x000003a6, 0x00000007, 0x0004003b, 0x00000020, 0x000003a8, 0x00000007, 0x0004003b, + 0x0000000d, 0x000003aa, 0x00000007, 0x0004003b, 0x00000020, 0x000003ad, 0x00000007, 0x0004003b, + 0x0000000d, 0x000003b2, 0x00000007, 0x0004003b, 0x00000020, 0x000003b3, 0x00000007, 0x0004003b, + 0x00000020, 0x000003b6, 0x00000007, 0x0004003b, 0x00000020, 0x000003c8, 0x00000007, 0x0004003d, + 0x0000001f, 0x00000385, 0x0000005f, 0x0004003d, 0x0000001f, 0x00000386, 0x00000064, 0x00050094, + 0x00000006, 0x00000387, 0x00000385, 0x00000386, 0x0007000c, 0x00000006, 0x00000388, 0x00000001, + 0x00000028, 0x00000387, 0x000000df, 0x0003003e, 0x00000384, 0x00000388, 0x0004003d, 0x00000006, + 0x0000038a, 0x00000384, 0x0004003d, 0x00000006, 0x0000038b, 0x00000384, 0x00050085, 0x00000006, + 0x0000038c, 0x0000038b, 0x00000122, 0x00050081, 0x00000006, 0x0000038d, 0x0000038c, 0x00000122, + 0x0008000c, 0x00000006, 0x0000038f, 0x00000001, 0x0000002e, 0x0000038a, 0x0000038d, 0x0000038e, + 0x0003003e, 0x00000389, 0x0000038f, 0x0004003d, 0x0000001f, 0x00000391, 0x00000060, 0x0004003d, + 0x0000001f, 0x00000392, 0x00000064, 0x00050081, 0x0000001f, 0x00000393, 0x00000391, 0x00000392, + 0x0006000c, 0x0000001f, 0x00000394, 0x00000001, 0x00000045, 0x00000393, 0x0003003e, 0x00000390, + 0x00000394, 0x0004003d, 0x0000001f, 0x00000397, 0x00000061, 0x0004003d, 0x00000006, 0x00000398, + 0x00000062, 0x00060050, 0x0000001f, 0x00000399, 0x00000398, 0x00000398, 0x00000398, 0x0008000c, + 0x0000001f, 0x0000039a, 0x00000001, 0x0000002e, 0x00000396, 0x00000397, 0x00000399, 0x0003003e, + 0x00000395, 0x0000039a, 0x0004003d, 0x0000001f, 0x0000039d, 0x0000005f, 0x0003003e, 0x0000039c, + 0x0000039d, 0x0004003d, 0x0000001f, 0x0000039f, 0x00000390, 0x0003003e, 0x0000039e, 0x0000039f, + 0x0004003d, 0x00000006, 0x000003a1, 0x00000063, 0x0003003e, 0x000003a0, 0x000003a1, 0x00070039, + 0x00000006, 0x000003a2, 0x00000044, 0x0000039c, 0x0000039e, 0x000003a0, 0x0003003e, 0x0000039b, + 0x000003a2, 0x0004003d, 0x0000001f, 0x000003a5, 0x0000005f, 0x0003003e, 0x000003a4, 0x000003a5, + 0x0004003d, 0x0000001f, 0x000003a7, 0x00000060, 0x0003003e, 0x000003a6, 0x000003a7, 0x0004003d, + 0x0000001f, 0x000003a9, 0x00000064, 0x0003003e, 0x000003a8, 0x000003a9, 0x0004003d, 0x00000006, + 0x000003ab, 0x00000063, 0x0003003e, 0x000003aa, 0x000003ab, 0x00080039, 0x00000006, 0x000003ac, + 0x00000050, 0x000003a4, 0x000003a6, 0x000003a8, 0x000003aa, 0x0003003e, 0x000003a3, 0x000003ac, + 0x0004003d, 0x0000001f, 0x000003ae, 0x00000390, 0x0004003d, 0x0000001f, 0x000003af, 0x00000060, + 0x00050094, 0x00000006, 0x000003b0, 0x000003ae, 0x000003af, 0x0007000c, 0x00000006, 0x000003b1, + 0x00000001, 0x00000028, 0x000003b0, 0x000000df, 0x0003003e, 0x000003b2, 0x000003b1, 0x0004003d, + 0x0000001f, 0x000003b4, 0x00000395, 0x0003003e, 0x000003b3, 0x000003b4, 0x00060039, 0x0000001f, + 0x000003b5, 0x00000055, 0x000003b2, 0x000003b3, 0x0003003e, 0x000003ad, 0x000003b5, 0x0004003d, + 0x00000006, 0x000003b7, 0x0000039b, 0x0004003d, 0x00000006, 0x000003b8, 0x000003a3, 0x00050085, + 0x00000006, 0x000003b9, 0x000003b7, 0x000003b8, 0x0004003d, 0x0000001f, 0x000003ba, 0x000003ad, + 0x0005008e, 0x0000001f, 0x000003bb, 0x000003ba, 0x000003b9, 0x0004003d, 0x0000001f, 0x000003bd, + 0x0000005f, 0x0004003d, 0x0000001f, 0x000003be, 0x00000060, 0x00050094, 0x00000006, 0x000003bf, + 0x000003bd, 0x000003be, 0x0007000c, 0x00000006, 0x000003c0, 0x00000001, 0x00000028, 0x000003bf, + 0x000000df, 0x00050085, 0x00000006, 0x000003c1, 0x000003bc, 0x000003c0, 0x0004003d, 0x00000006, + 0x000003c2, 0x00000384, 0x0007000c, 0x00000006, 0x000003c3, 0x00000001, 0x00000028, 0x000003c2, + 0x000000b9, 0x00050085, 0x00000006, 0x000003c4, 0x000003c1, 0x000003c3, 0x0007000c, 0x00000006, + 0x000003c5, 0x00000001, 0x00000028, 0x000003c4, 0x000000b9, 0x00060050, 0x0000001f, 0x000003c6, + 0x000003c5, 0x000003c5, 0x000003c5, 0x00050088, 0x0000001f, 0x000003c7, 0x000003bb, 0x000003c6, + 0x0003003e, 0x000003b6, 0x000003c7, 0x0004003d, 0x0000001f, 0x000003c9, 0x000003ad, 0x00050083, + 0x0000001f, 0x000003ca, 0x0000028f, 0x000003c9, 0x0004003d, 0x00000006, 0x000003cb, 0x00000062, + 0x00050083, 0x00000006, 0x000003cc, 0x0000010d, 0x000003cb, 0x0005008e, 0x0000001f, 0x000003cd, + 0x000003ca, 0x000003cc, 0x0003003e, 0x000003c8, 0x000003cd, 0x0004003d, 0x0000001f, 0x000003ce, + 0x000003c8, 0x0004003d, 0x0000001f, 0x000003cf, 0x00000061, 0x00050085, 0x0000001f, 0x000003d0, + 0x000003ce, 0x000003cf, 0x0004003d, 0x00000006, 0x000003d1, 0x00000389, 0x0005008e, 0x0000001f, + 0x000003d2, 0x000003d0, 0x000003d1, 0x0004003d, 0x0000001f, 0x000003d3, 0x000003b6, 0x0004003d, + 0x00000006, 0x000003d4, 0x00000384, 0x0005008e, 0x0000001f, 0x000003d5, 0x000003d3, 0x000003d4, + 0x00050081, 0x0000001f, 0x000003d6, 0x000003d2, 0x000003d5, 0x0004003d, 0x0000001f, 0x000003d7, + 0x00000065, 0x00050085, 0x0000001f, 0x000003d8, 0x000003d6, 0x000003d7, 0x000200fe, 0x000003d8, + 0x00010038, 0x00050036, 0x00000006, 0x0000006c, 0x00000000, 0x00000068, 0x00030037, 0x00000020, + 0x00000069, 0x00030037, 0x0000000d, 0x0000006a, 0x00030037, 0x0000000d, 0x0000006b, 0x000200f8, + 0x0000006d, 0x0004003b, 0x000000e2, 0x000003f7, 0x00000007, 0x0004003b, 0x000000dd, 0x00000405, + 0x00000007, 0x0004003b, 0x00000020, 0x00000410, 0x00000007, 0x0004003b, 0x00000008, 0x00000418, + 0x00000007, 0x0004003b, 0x0000000d, 0x0000041e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000442, + 0x00000007, 0x0004003b, 0x00000008, 0x0000044b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000459, + 0x00000007, 0x0004003b, 0x000000e2, 0x0000045a, 0x00000007, 0x0004003b, 0x000000e2, 0x00000463, + 0x00000007, 0x0004003b, 0x0000000d, 0x0000046b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000489, + 0x00000007, 0x00060041, 0x000003e2, 0x000003e3, 0x000003e0, 0x000003e1, 0x0000009c, 0x0004003d, + 0x00000006, 0x000003e4, 0x000003e3, 0x000500b8, 0x000000af, 0x000003e5, 0x000003e4, 0x00000122, + 0x000400a8, 0x000000af, 0x000003e6, 0x000003e5, 0x000300f7, 0x000003e8, 0x00000000, 0x000400fa, + 0x000003e6, 0x000003e7, 0x000003e8, 0x000200f8, 0x000003e7, 0x00060041, 0x000003e2, 0x000003e9, + 0x000003e0, 0x000003e1, 0x000001de, 0x0004003d, 0x00000006, 0x000003ea, 0x000003e9, 0x000500b8, + 0x000000af, 0x000003eb, 0x000003ea, 0x00000122, 0x000200f9, 0x000003e8, 0x000200f8, 0x000003e8, + 0x000700f5, 0x000000af, 0x000003ec, 0x000003e5, 0x0000006d, 0x000003eb, 0x000003e7, 0x000400a8, + 0x000000af, 0x000003ed, 0x000003ec, 0x000300f7, 0x000003ef, 0x00000000, 0x000400fa, 0x000003ed, + 0x000003ee, 0x000003ef, 0x000200f8, 0x000003ee, 0x00060041, 0x000003e2, 0x000003f0, 0x000003e0, + 0x000000eb, 0x000003dc, 0x0004003d, 0x00000006, 0x000003f1, 0x000003f0, 0x000500b8, 0x000000af, + 0x000003f2, 0x000003f1, 0x000000ae, 0x000200f9, 0x000003ef, 0x000200f8, 0x000003ef, 0x000700f5, + 0x000000af, 0x000003f3, 0x000003ec, 0x000003e8, 0x000003f2, 0x000003ee, 0x000300f7, 0x000003f5, + 0x00000000, 0x000400fa, 0x000003f3, 0x000003f4, 0x000003f5, 0x000200f8, 0x000003f4, 0x000200fe, + 0x0000010d, 0x000200f8, 0x000003f5, 0x0003003e, 0x000003f7, 0x000003e1, 0x0004003d, 0x00000006, + 0x000003f8, 0x0000006a, 0x00060041, 0x000003e2, 0x000003f9, 0x000003e0, 0x000000eb, 0x00000097, + 0x0004003d, 0x00000006, 0x000003fa, 0x000003f9, 0x000500b8, 0x000000af, 0x000003fb, 0x000003f8, + 0x000003fa, 0x000300f7, 0x000003fd, 0x00000000, 0x000400fa, 0x000003fb, 0x000003fc, 0x000003fe, + 0x000200f8, 0x000003fc, 0x0003003e, 0x000003f7, 0x000000e4, 0x000200f9, 0x000003fd, 0x000200f8, + 0x000003fe, 0x0004003d, 0x00000006, 0x000003ff, 0x0000006a, 0x00060041, 0x000003e2, 0x00000400, + 0x000003e0, 0x000000eb, 0x0000009c, 0x0004003d, 0x00000006, 0x00000401, 0x00000400, 0x000500b8, + 0x000000af, 0x00000402, 0x000003ff, 0x00000401, 0x000300f7, 0x00000404, 0x00000000, 0x000400fa, + 0x00000402, 0x00000403, 0x00000404, 0x000200f8, 0x00000403, 0x0003003e, 0x000003f7, 0x000000eb, + 0x000200f9, 0x00000404, 0x000200f8, 0x00000404, 0x000200f9, 0x000003fd, 0x000200f8, 0x000003fd, + 0x0004003d, 0x000000e1, 0x00000406, 0x000003f7, 0x00060041, 0x00000407, 0x00000408, 0x000003e0, + 0x000000e4, 0x00000406, 0x0004003d, 0x000003db, 0x00000409, 0x00000408, 0x0004003d, 0x0000001f, + 0x0000040a, 0x00000069, 0x00050051, 0x00000006, 0x0000040b, 0x0000040a, 0x00000000, 0x00050051, + 0x00000006, 0x0000040c, 0x0000040a, 0x00000001, 0x00050051, 0x00000006, 0x0000040d, 0x0000040a, + 0x00000002, 0x00070050, 0x00000016, 0x0000040e, 0x0000040b, 0x0000040c, 0x0000040d, 0x0000010d, + 0x00050091, 0x00000016, 0x0000040f, 0x00000409, 0x0000040e, 0x0003003e, 0x00000405, 0x0000040f, + 0x0004003d, 0x00000016, 0x00000411, 0x00000405, 0x0008004f, 0x0000001f, 0x00000412, 0x00000411, + 0x00000411, 0x00000000, 0x00000001, 0x00000002, 0x00050041, 0x0000000d, 0x00000413, 0x00000405, + 0x000003dc, 0x0004003d, 0x00000006, 0x00000414, 0x00000413, 0x0007000c, 0x00000006, 0x00000415, + 0x00000001, 0x00000028, 0x00000414, 0x00000319, 0x00060050, 0x0000001f, 0x00000416, 0x00000415, + 0x00000415, 0x00000415, 0x00050088, 0x0000001f, 0x00000417, 0x00000412, 0x00000416, 0x0003003e, + 0x00000410, 0x00000417, 0x0004003d, 0x0000001f, 0x00000419, 0x00000410, 0x0007004f, 0x00000007, + 0x0000041a, 0x00000419, 0x00000419, 0x00000000, 0x00000001, 0x0005008e, 0x00000007, 0x0000041b, + 0x0000041a, 0x00000122, 0x00050050, 0x00000007, 0x0000041c, 0x00000122, 0x00000122, 0x00050081, + 0x00000007, 0x0000041d, 0x0000041b, 0x0000041c, 0x0003003e, 0x00000418, 0x0000041d, 0x00050041, + 0x0000000d, 0x0000041f, 0x00000410, 0x000001de, 0x0004003d, 0x00000006, 0x00000420, 0x0000041f, + 0x0003003e, 0x0000041e, 0x00000420, 0x00050041, 0x0000000d, 0x00000421, 0x00000418, 0x00000097, + 0x0004003d, 0x00000006, 0x00000422, 0x00000421, 0x000500b8, 0x000000af, 0x00000423, 0x00000422, + 0x000000df, 0x000400a8, 0x000000af, 0x00000424, 0x00000423, 0x000300f7, 0x00000426, 0x00000000, + 0x000400fa, 0x00000424, 0x00000425, 0x00000426, 0x000200f8, 0x00000425, 0x00050041, 0x0000000d, + 0x00000427, 0x00000418, 0x00000097, 0x0004003d, 0x00000006, 0x00000428, 0x00000427, 0x000500ba, + 0x000000af, 0x00000429, 0x00000428, 0x0000010d, 0x000200f9, 0x00000426, 0x000200f8, 0x00000426, + 0x000700f5, 0x000000af, 0x0000042a, 0x00000423, 0x000003fd, 0x00000429, 0x00000425, 0x000400a8, + 0x000000af, 0x0000042b, 0x0000042a, 0x000300f7, 0x0000042d, 0x00000000, 0x000400fa, 0x0000042b, + 0x0000042c, 0x0000042d, 0x000200f8, 0x0000042c, 0x00050041, 0x0000000d, 0x0000042e, 0x00000418, + 0x0000009c, 0x0004003d, 0x00000006, 0x0000042f, 0x0000042e, 0x000500b8, 0x000000af, 0x00000430, + 0x0000042f, 0x000000df, 0x000200f9, 0x0000042d, 0x000200f8, 0x0000042d, 0x000700f5, 0x000000af, + 0x00000431, 0x0000042a, 0x00000426, 0x00000430, 0x0000042c, 0x000400a8, 0x000000af, 0x00000432, + 0x00000431, 0x000300f7, 0x00000434, 0x00000000, 0x000400fa, 0x00000432, 0x00000433, 0x00000434, + 0x000200f8, 0x00000433, 0x00050041, 0x0000000d, 0x00000435, 0x00000418, 0x0000009c, 0x0004003d, + 0x00000006, 0x00000436, 0x00000435, 0x000500ba, 0x000000af, 0x00000437, 0x00000436, 0x0000010d, + 0x000200f9, 0x00000434, 0x000200f8, 0x00000434, 0x000700f5, 0x000000af, 0x00000438, 0x00000431, + 0x0000042d, 0x00000437, 0x00000433, 0x0004003d, 0x00000006, 0x00000439, 0x0000041e, 0x000500b8, + 0x000000af, 0x0000043a, 0x00000439, 0x000000df, 0x000500a6, 0x000000af, 0x0000043b, 0x00000438, + 0x0000043a, 0x0004003d, 0x00000006, 0x0000043c, 0x0000041e, 0x000500ba, 0x000000af, 0x0000043d, + 0x0000043c, 0x0000010d, 0x000500a6, 0x000000af, 0x0000043e, 0x0000043b, 0x0000043d, 0x000300f7, + 0x00000440, 0x00000000, 0x000400fa, 0x0000043e, 0x0000043f, 0x00000440, 0x000200f8, 0x0000043f, + 0x000200fe, 0x0000010d, 0x000200f8, 0x00000440, 0x00060041, 0x000003e2, 0x00000443, 0x000003e0, + 0x000003e1, 0x00000097, 0x0004003d, 0x00000006, 0x00000444, 0x00000443, 0x0004003d, 0x00000006, + 0x00000445, 0x0000006b, 0x0008000c, 0x00000006, 0x00000446, 0x00000001, 0x0000002b, 0x00000445, + 0x000000df, 0x0000010d, 0x00050083, 0x00000006, 0x00000447, 0x0000010d, 0x00000446, 0x00050085, + 0x00000006, 0x00000448, 0x00000447, 0x0000010b, 0x00050081, 0x00000006, 0x00000449, 0x0000010d, + 0x00000448, 0x00050085, 0x00000006, 0x0000044a, 0x00000444, 0x00000449, 0x0003003e, 0x00000442, + 0x0000044a, 0x0004003d, 0x0000044d, 0x00000450, 0x0000044f, 0x00040064, 0x0000044c, 0x00000451, + 0x00000450, 0x00050067, 0x00000452, 0x00000453, 0x00000451, 0x000000e4, 0x0007004f, 0x00000454, + 0x00000455, 0x00000453, 0x00000453, 0x00000000, 0x00000001, 0x0004006f, 0x00000007, 0x00000456, + 0x00000455, 0x00050050, 0x00000007, 0x00000457, 0x0000010d, 0x0000010d, 0x00050088, 0x00000007, + 0x00000458, 0x00000457, 0x00000456, 0x0003003e, 0x0000044b, 0x00000458, 0x0003003e, 0x00000459, + 0x000000df, 0x0003003e, 0x0000045a, 0x0000045b, 0x000200f9, 0x0000045c, 0x000200f8, 0x0000045c, + 0x000400f6, 0x0000045e, 0x0000045f, 0x00000000, 0x000200f9, 0x00000460, 0x000200f8, 0x00000460, + 0x0004003d, 0x000000e1, 0x00000461, 0x0000045a, 0x000500b3, 0x000000af, 0x00000462, 0x00000461, + 0x000000eb, 0x000400fa, 0x00000462, 0x0000045d, 0x0000045e, 0x000200f8, 0x0000045d, 0x0003003e, + 0x00000463, 0x0000045b, 0x000200f9, 0x00000464, 0x000200f8, 0x00000464, 0x000400f6, 0x00000466, + 0x00000467, 0x00000000, 0x000200f9, 0x00000468, 0x000200f8, 0x00000468, 0x0004003d, 0x000000e1, + 0x00000469, 0x00000463, 0x000500b3, 0x000000af, 0x0000046a, 0x00000469, 0x000000eb, 0x000400fa, + 0x0000046a, 0x00000465, 0x00000466, 0x000200f8, 0x00000465, 0x0004003d, 0x0000044d, 0x0000046c, + 0x0000044f, 0x0004003d, 0x00000007, 0x0000046d, 0x00000418, 0x0004003d, 0x000000e1, 0x0000046e, + 0x00000463, 0x0004006f, 0x00000006, 0x0000046f, 0x0000046e, 0x0004003d, 0x000000e1, 0x00000470, + 0x0000045a, 0x0004006f, 0x00000006, 0x00000471, 0x00000470, 0x00050050, 0x00000007, 0x00000472, + 0x0000046f, 0x00000471, 0x0004003d, 0x00000007, 0x00000473, 0x0000044b, 0x00050085, 0x00000007, + 0x00000474, 0x00000472, 0x00000473, 0x00050081, 0x00000007, 0x00000475, 0x0000046d, 0x00000474, + 0x0004003d, 0x000000e1, 0x00000476, 0x000003f7, 0x0004006f, 0x00000006, 0x00000477, 0x00000476, + 0x00050051, 0x00000006, 0x00000478, 0x00000475, 0x00000000, 0x00050051, 0x00000006, 0x00000479, + 0x00000475, 0x00000001, 0x00060050, 0x0000001f, 0x0000047a, 0x00000478, 0x00000479, 0x00000477, + 0x00050057, 0x00000016, 0x0000047b, 0x0000046c, 0x0000047a, 0x00050051, 0x00000006, 0x0000047c, + 0x0000047b, 0x00000000, 0x0003003e, 0x0000046b, 0x0000047c, 0x0004003d, 0x00000006, 0x0000047d, + 0x0000041e, 0x0004003d, 0x00000006, 0x0000047e, 0x00000442, 0x00050083, 0x00000006, 0x0000047f, + 0x0000047d, 0x0000047e, 0x0004003d, 0x00000006, 0x00000480, 0x0000046b, 0x000500ba, 0x000000af, + 0x00000481, 0x0000047f, 0x00000480, 0x000600a9, 0x00000006, 0x00000482, 0x00000481, 0x000000df, + 0x0000010d, 0x0004003d, 0x00000006, 0x00000483, 0x00000459, 0x00050081, 0x00000006, 0x00000484, + 0x00000483, 0x00000482, 0x0003003e, 0x00000459, 0x00000484, 0x000200f9, 0x00000467, 0x000200f8, + 0x00000467, 0x0004003d, 0x000000e1, 0x00000485, 0x00000463, 0x00050080, 0x000000e1, 0x00000486, + 0x00000485, 0x000000eb, 0x0003003e, 0x00000463, 0x00000486, 0x000200f9, 0x00000464, 0x000200f8, + 0x00000466, 0x000200f9, 0x0000045f, 0x000200f8, 0x0000045f, 0x0004003d, 0x000000e1, 0x00000487, + 0x0000045a, 0x00050080, 0x000000e1, 0x00000488, 0x00000487, 0x000000eb, 0x0003003e, 0x0000045a, + 0x00000488, 0x000200f9, 0x0000045c, 0x000200f8, 0x0000045e, 0x0004003d, 0x00000006, 0x0000048a, + 0x00000459, 0x00050088, 0x00000006, 0x0000048c, 0x0000048a, 0x0000048b, 0x00060041, 0x000003e2, + 0x0000048d, 0x000003e0, 0x000000eb, 0x000003dc, 0x0004003d, 0x00000006, 0x0000048e, 0x0000048d, + 0x0008000c, 0x00000006, 0x0000048f, 0x00000001, 0x0000002b, 0x0000048e, 0x000000df, 0x0000010d, + 0x0008000c, 0x00000006, 0x00000490, 0x00000001, 0x0000002e, 0x0000010d, 0x0000048c, 0x0000048f, + 0x0003003e, 0x00000489, 0x00000490, 0x0004003d, 0x00000006, 0x00000492, 0x00000489, 0x0008000c, + 0x00000006, 0x00000493, 0x00000001, 0x0000002e, 0x00000491, 0x0000010d, 0x00000492, 0x000200fe, + 0x00000493, 0x00010038, 0x00050036, 0x0000006e, 0x00000070, 0x00000000, 0x0000006f, 0x000200f8, + 0x00000071, 0x0004003b, 0x000000e2, 0x00000496, 0x00000007, 0x0004003b, 0x000000e2, 0x0000049f, + 0x00000007, 0x0004003b, 0x000000e2, 0x000004a4, 0x00000007, 0x0004003b, 0x0000000d, 0x000004a9, + 0x00000007, 0x0004003b, 0x0000000d, 0x000004ad, 0x00000007, 0x0004003b, 0x0000000d, 0x000004b3, + 0x00000007, 0x0004003b, 0x0000000d, 0x000004b7, 0x00000007, 0x0004003b, 0x000000e2, 0x000004bb, + 0x00000007, 0x0004003b, 0x000000e2, 0x000004cb, 0x00000007, 0x0004003b, 0x0000000d, 0x000004d8, + 0x00000007, 0x0004003b, 0x000000e2, 0x000004e0, 0x00000007, 0x00060041, 0x000003e2, 0x0000049b, + 0x00000499, 0x0000049a, 0x00000097, 0x0004003d, 0x00000006, 0x0000049c, 0x0000049b, 0x00050081, + 0x00000006, 0x0000049d, 0x0000049c, 0x00000122, 0x0004006e, 0x000000e1, 0x0000049e, 0x0000049d, + 0x0003003e, 0x00000496, 0x0000049e, 0x00060041, 0x000003e2, 0x000004a0, 0x00000499, 0x0000049a, + 0x0000009c, 0x0004003d, 0x00000006, 0x000004a1, 0x000004a0, 0x00050081, 0x00000006, 0x000004a2, + 0x000004a1, 0x00000122, 0x0004006e, 0x000000e1, 0x000004a3, 0x000004a2, 0x0003003e, 0x0000049f, + 0x000004a3, 0x00060041, 0x000003e2, 0x000004a5, 0x00000499, 0x0000049a, 0x000001de, 0x0004003d, + 0x00000006, 0x000004a6, 0x000004a5, 0x00050081, 0x00000006, 0x000004a7, 0x000004a6, 0x00000122, + 0x0004006e, 0x000000e1, 0x000004a8, 0x000004a7, 0x0003003e, 0x000004a4, 0x000004a8, 0x00060041, + 0x000003e2, 0x000004ab, 0x00000499, 0x000004aa, 0x00000097, 0x0004003d, 0x00000006, 0x000004ac, + 0x000004ab, 0x0003003e, 0x000004a9, 0x000004ac, 0x00060041, 0x000003e2, 0x000004ae, 0x00000499, + 0x000004aa, 0x0000009c, 0x0004003d, 0x00000006, 0x000004af, 0x000004ae, 0x0004003d, 0x00000006, + 0x000004b0, 0x000004a9, 0x00050081, 0x00000006, 0x000004b1, 0x000004b0, 0x000000b9, 0x0007000c, + 0x00000006, 0x000004b2, 0x00000001, 0x00000028, 0x000004af, 0x000004b1, 0x0003003e, 0x000004ad, + 0x000004b2, 0x00060041, 0x000003e2, 0x000004b4, 0x00000499, 0x000004aa, 0x000001de, 0x0004003d, + 0x00000006, 0x000004b5, 0x000004b4, 0x0007000c, 0x00000006, 0x000004b6, 0x00000001, 0x00000028, + 0x000004b5, 0x0000010d, 0x0003003e, 0x000004b3, 0x000004b6, 0x00060041, 0x000003e2, 0x000004b8, + 0x00000499, 0x000004aa, 0x000003dc, 0x0004003d, 0x00000006, 0x000004b9, 0x000004b8, 0x0007000c, + 0x00000006, 0x000004ba, 0x00000001, 0x00000028, 0x000004b9, 0x0000010d, 0x0003003e, 0x000004b7, + 0x000004ba, 0x00050041, 0x000004be, 0x000004bf, 0x000004bd, 0x00000097, 0x0004003d, 0x00000006, + 0x000004c0, 0x000004bf, 0x0004003d, 0x00000006, 0x000004c1, 0x000004b3, 0x00050088, 0x00000006, + 0x000004c2, 0x000004c0, 0x000004c1, 0x0004003d, 0x000000e1, 0x000004c3, 0x00000496, 0x0004006f, + 0x00000006, 0x000004c4, 0x000004c3, 0x00050085, 0x00000006, 0x000004c5, 0x000004c2, 0x000004c4, + 0x0006000c, 0x00000006, 0x000004c6, 0x00000001, 0x00000008, 0x000004c5, 0x0004006e, 0x000000e1, + 0x000004c7, 0x000004c6, 0x0004003d, 0x000000e1, 0x000004c8, 0x00000496, 0x00050082, 0x000000e1, + 0x000004c9, 0x000004c8, 0x000000eb, 0x0008000c, 0x000000e1, 0x000004ca, 0x00000001, 0x0000002d, + 0x000004c7, 0x000000e4, 0x000004c9, 0x0003003e, 0x000004bb, 0x000004ca, 0x00050041, 0x000004be, + 0x000004cc, 0x000004bd, 0x0000009c, 0x0004003d, 0x00000006, 0x000004cd, 0x000004cc, 0x0004003d, + 0x00000006, 0x000004ce, 0x000004b7, 0x00050088, 0x00000006, 0x000004cf, 0x000004cd, 0x000004ce, + 0x0004003d, 0x000000e1, 0x000004d0, 0x0000049f, 0x0004006f, 0x00000006, 0x000004d1, 0x000004d0, + 0x00050085, 0x00000006, 0x000004d2, 0x000004cf, 0x000004d1, 0x0006000c, 0x00000006, 0x000004d3, + 0x00000001, 0x00000008, 0x000004d2, 0x0004006e, 0x000000e1, 0x000004d4, 0x000004d3, 0x0004003d, + 0x000000e1, 0x000004d5, 0x0000049f, 0x00050082, 0x000000e1, 0x000004d6, 0x000004d5, 0x000000eb, + 0x0008000c, 0x000000e1, 0x000004d7, 0x00000001, 0x0000002d, 0x000004d4, 0x000000e4, 0x000004d6, + 0x0003003e, 0x000004cb, 0x000004d7, 0x00050041, 0x000004be, 0x000004db, 0x000004da, 0x000001de, + 0x0004003d, 0x00000006, 0x000004dc, 0x000004db, 0x0004007f, 0x00000006, 0x000004dd, 0x000004dc, + 0x0004003d, 0x00000006, 0x000004de, 0x000004a9, 0x0007000c, 0x00000006, 0x000004df, 0x00000001, + 0x00000028, 0x000004dd, 0x000004de, 0x0003003e, 0x000004d8, 0x000004df, 0x0004003d, 0x00000006, + 0x000004e1, 0x000004d8, 0x0004003d, 0x00000006, 0x000004e2, 0x000004a9, 0x00050083, 0x00000006, + 0x000004e3, 0x000004e1, 0x000004e2, 0x0004003d, 0x00000006, 0x000004e4, 0x000004ad, 0x0004003d, + 0x00000006, 0x000004e5, 0x000004a9, 0x00050083, 0x00000006, 0x000004e6, 0x000004e4, 0x000004e5, + 0x00050088, 0x00000006, 0x000004e7, 0x000004e3, 0x000004e6, 0x0004003d, 0x000000e1, 0x000004e8, + 0x000004a4, 0x0004006f, 0x00000006, 0x000004e9, 0x000004e8, 0x00050085, 0x00000006, 0x000004ea, + 0x000004e7, 0x000004e9, 0x0006000c, 0x00000006, 0x000004eb, 0x00000001, 0x00000008, 0x000004ea, + 0x0004006e, 0x000000e1, 0x000004ec, 0x000004eb, 0x0004003d, 0x000000e1, 0x000004ed, 0x000004a4, + 0x00050082, 0x000000e1, 0x000004ee, 0x000004ed, 0x000000eb, 0x0008000c, 0x000000e1, 0x000004ef, + 0x00000001, 0x0000002d, 0x000004ec, 0x000000e4, 0x000004ee, 0x0003003e, 0x000004e0, 0x000004ef, + 0x0004003d, 0x000000e1, 0x000004f0, 0x000004e0, 0x0004003d, 0x000000e1, 0x000004f1, 0x0000049f, + 0x00050084, 0x000000e1, 0x000004f2, 0x000004f0, 0x000004f1, 0x0004003d, 0x000000e1, 0x000004f3, + 0x000004cb, 0x00050080, 0x000000e1, 0x000004f4, 0x000004f2, 0x000004f3, 0x0004003d, 0x000000e1, + 0x000004f5, 0x00000496, 0x00050084, 0x000000e1, 0x000004f6, 0x000004f4, 0x000004f5, 0x0004003d, + 0x000000e1, 0x000004f7, 0x000004bb, 0x00050080, 0x000000e1, 0x000004f8, 0x000004f6, 0x000004f7, + 0x0004007c, 0x0000006e, 0x000004f9, 0x000004f8, 0x000200fe, 0x000004f9, 0x00010038, }; static const size_t mesh3d_clustered_frag_spv_count = sizeof(mesh3d_clustered_frag_spv)/sizeof(mesh3d_clustered_frag_spv[0]); diff --git a/src/modules/graphics/shaders/mesh3d_frag_spv.inc b/src/modules/graphics/shaders/mesh3d_frag_spv.inc index 7dbfe6a5..21c3612a 100644 --- a/src/modules/graphics/shaders/mesh3d_frag_spv.inc +++ b/src/modules/graphics/shaders/mesh3d_frag_spv.inc @@ -1,8 +1,8 @@ static const uint32_t mesh3d_frag_spv[] = { - 0x07230203, 0x00010000, 0x000d000b, 0x00000611, 0x00000000, 0x00020011, 0x00000001, 0x00020011, + 0x07230203, 0x00010000, 0x000d000b, 0x00000654, 0x00000000, 0x00020011, 0x00000001, 0x00020011, 0x00000032, 0x0006000b, 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, 0x000c000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x000004a6, - 0x000004aa, 0x000004ac, 0x000004bb, 0x000004db, 0x00000516, 0x00000609, 0x00030010, 0x00000004, + 0x000004aa, 0x000004ac, 0x000004bb, 0x000004db, 0x00000516, 0x0000064d, 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x000a0004, 0x475f4c47, 0x4c474f4f, 0x70635f45, 0x74735f70, 0x5f656c79, 0x656e696c, 0x7269645f, 0x69746365, 0x00006576, 0x00080004, 0x475f4c47, 0x4c474f4f, 0x6e695f45, 0x64756c63, 0x69645f65, 0x74636572, 0x00657669, 0x00040005, 0x00000004, @@ -113,1054 +113,1104 @@ static const uint32_t mesh3d_frag_spv[] = { 0x00000005, 0x656d6163, 0x6f506172, 0x00000073, 0x00050006, 0x00000498, 0x00000006, 0x69626d61, 0x00746e65, 0x00050006, 0x00000498, 0x00000007, 0x6867696c, 0x00007374, 0x00050006, 0x00000498, 0x00000008, 0x42786574, 0x00626d6f, 0x00060006, 0x00000498, 0x00000009, 0x61726170, 0x78616c6c, - 0x00000000, 0x00050006, 0x00000498, 0x0000000a, 0x77656976, 0x00000000, 0x00030005, 0x0000049a, - 0x006f6275, 0x00060005, 0x0000049e, 0x626d6f62, 0x65727453, 0x6874676e, 0x00000000, 0x00040005, - 0x000004a1, 0x626d6f62, 0x00746f52, 0x00040005, 0x000004a4, 0x6f65674e, 0x0000006d, 0x00040005, - 0x000004a6, 0x726f4e76, 0x006c616d, 0x00030005, 0x000004a9, 0x00000056, 0x00050005, 0x000004aa, - 0x6d614376, 0x50617265, 0x0000736f, 0x00050005, 0x000004ac, 0x726f5776, 0x6f50646c, 0x00000073, - 0x00030005, 0x000004b8, 0x00007675, 0x00060005, 0x000004b9, 0x67696568, 0x61537468, 0x656c706d, - 0x00000072, 0x00030005, 0x000004bb, 0x00565576, 0x00040005, 0x000004bd, 0x61726170, 0x0000006d, - 0x00040005, 0x000004bf, 0x61726170, 0x0000006d, 0x00040005, 0x000004c1, 0x61726170, 0x0000006d, - 0x00040005, 0x000004c3, 0x61726170, 0x0000006d, 0x00040005, 0x000004c5, 0x61726170, 0x0000006d, - 0x00040005, 0x000004c8, 0x61726170, 0x0000006d, 0x00040005, 0x000004cb, 0x61726170, 0x0000006d, - 0x00040005, 0x000004cf, 0x65736162, 0x00000000, 0x00060005, 0x000004d0, 0x65626c61, 0x61536f64, - 0x656c706d, 0x00000072, 0x00040005, 0x000004d1, 0x61726170, 0x0000006d, 0x00040005, 0x000004d3, - 0x61726170, 0x0000006d, 0x00040005, 0x000004d5, 0x61726170, 0x0000006d, 0x00040005, 0x000004d7, - 0x61726170, 0x0000006d, 0x00040005, 0x000004db, 0x6e695476, 0x00000074, 0x00040005, 0x000004e4, - 0x65626c61, 0x00006f64, 0x00050005, 0x000004e7, 0x6174656d, 0x63696c6c, 0x00000000, 0x00050005, - 0x000004ec, 0x67756f72, 0x73656e68, 0x00000073, 0x00040005, 0x000004f1, 0x6e756f63, 0x00000074, - 0x00030005, 0x000004f6, 0x0000004e, 0x00040005, 0x000004f8, 0x6d61536e, 0x00656c70, 0x00060005, - 0x000004f9, 0x6d726f6e, 0x61536c61, 0x656c706d, 0x00000072, 0x00040005, 0x000004fa, 0x61726170, - 0x0000006d, 0x00040005, 0x000004fc, 0x61726170, 0x0000006d, 0x00040005, 0x000004fe, 0x61726170, - 0x0000006d, 0x00040005, 0x00000500, 0x61726170, 0x0000006d, 0x00040005, 0x0000050b, 0x61726170, - 0x0000006d, 0x00040005, 0x0000050d, 0x61726170, 0x0000006d, 0x00040005, 0x0000050f, 0x61726170, - 0x0000006d, 0x00040005, 0x00000511, 0x61726170, 0x0000006d, 0x00030005, 0x00000514, 0x00006f4c, - 0x00050005, 0x00000515, 0x77656976, 0x74706544, 0x00000068, 0x00050005, 0x00000516, 0x65695676, - 0x736f5077, 0x00000000, 0x00050005, 0x0000051c, 0x6d697270, 0x4c797261, 0x00000000, 0x00050005, - 0x00000522, 0x64616873, 0x6956776f, 0x00000073, 0x00040005, 0x00000527, 0x61726170, 0x0000006d, - 0x00040005, 0x00000529, 0x61726170, 0x0000006d, 0x00040005, 0x0000052b, 0x61726170, 0x0000006d, - 0x00040005, 0x00000535, 0x61726170, 0x0000006d, 0x00040005, 0x00000537, 0x61726170, 0x0000006d, - 0x00040005, 0x00000539, 0x61726170, 0x0000006d, 0x00040005, 0x0000053b, 0x61726170, 0x0000006d, - 0x00040005, 0x0000053d, 0x61726170, 0x0000006d, 0x00040005, 0x0000053f, 0x61726170, 0x0000006d, - 0x00040005, 0x00000541, 0x61726170, 0x0000006d, 0x00030005, 0x0000054a, 0x00000069, 0x00040005, - 0x00000558, 0x6867694c, 0x00443374, 0x00060006, 0x00000558, 0x00000000, 0x52736f70, 0x75696461, - 0x00000073, 0x00050006, 0x00000558, 0x00000001, 0x6f6c6f63, 0x00000072, 0x00030005, 0x0000055a, - 0x0074674c, 0x00050005, 0x00000564, 0x69646172, 0x65636e61, 0x00000000, 0x00030005, 0x0000056d, - 0x0000004c, 0x00030005, 0x0000057b, 0x004c6f74, 0x00040005, 0x00000581, 0x74736964, 0x00000000, - 0x00040005, 0x00000589, 0x65747461, 0x0000006e, 0x00040005, 0x00000597, 0x61726170, 0x0000006d, - 0x00040005, 0x00000599, 0x61726170, 0x0000006d, 0x00040005, 0x0000059b, 0x61726170, 0x0000006d, - 0x00040005, 0x0000059d, 0x61726170, 0x0000006d, 0x00040005, 0x0000059f, 0x61726170, 0x0000006d, - 0x00040005, 0x000005a1, 0x61726170, 0x0000006d, 0x00040005, 0x000005a3, 0x61726170, 0x0000006d, - 0x00040005, 0x000005aa, 0x696d6568, 0x00000000, 0x00030005, 0x000005b0, 0x00626d61, 0x00040005, - 0x000005b9, 0x6f6c6f63, 0x00000072, 0x00060005, 0x000005c2, 0x49766e65, 0x6e65746e, 0x79746973, - 0x00000000, 0x00030005, 0x000005c9, 0x00000052, 0x00030005, 0x000005ce, 0x00646f6c, 0x00040005, - 0x000005d1, 0x53766e65, 0x00636570, 0x00050005, 0x000005d5, 0x53766e65, 0x6c706d61, 0x00007265, - 0x00030005, 0x000005dd, 0x00003046, 0x00030005, 0x000005e2, 0x00000046, 0x00040005, 0x000005e7, - 0x61726170, 0x0000006d, 0x00040005, 0x000005e8, 0x61726170, 0x0000006d, 0x00030005, 0x000005f0, - 0x00727269, 0x00040005, 0x00000605, 0x61726170, 0x0000006d, 0x00050005, 0x00000609, 0x4374756f, - 0x726f6c6f, 0x00000000, 0x00040047, 0x000003da, 0x00000006, 0x00000040, 0x00030047, 0x000003db, - 0x00000002, 0x00040048, 0x000003db, 0x00000000, 0x00000005, 0x00050048, 0x000003db, 0x00000000, - 0x00000007, 0x00000010, 0x00050048, 0x000003db, 0x00000000, 0x00000023, 0x00000000, 0x00050048, - 0x000003db, 0x00000001, 0x00000023, 0x000000c0, 0x00050048, 0x000003db, 0x00000002, 0x00000023, - 0x000000d0, 0x00040047, 0x000003dd, 0x00000021, 0x00000004, 0x00040047, 0x000003dd, 0x00000022, - 0x00000000, 0x00040047, 0x0000044c, 0x00000021, 0x00000005, 0x00040047, 0x0000044c, 0x00000022, - 0x00000000, 0x00050048, 0x00000495, 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x00000495, - 0x00000001, 0x00000023, 0x00000010, 0x00040047, 0x00000497, 0x00000006, 0x00000020, 0x00030047, - 0x00000498, 0x00000002, 0x00040048, 0x00000498, 0x00000000, 0x00000005, 0x00050048, 0x00000498, - 0x00000000, 0x00000007, 0x00000010, 0x00050048, 0x00000498, 0x00000000, 0x00000023, 0x00000000, - 0x00040048, 0x00000498, 0x00000001, 0x00000005, 0x00050048, 0x00000498, 0x00000001, 0x00000007, - 0x00000010, 0x00050048, 0x00000498, 0x00000001, 0x00000023, 0x00000040, 0x00050048, 0x00000498, - 0x00000002, 0x00000023, 0x00000080, 0x00050048, 0x00000498, 0x00000003, 0x00000023, 0x00000090, - 0x00050048, 0x00000498, 0x00000004, 0x00000023, 0x000000a0, 0x00050048, 0x00000498, 0x00000005, - 0x00000023, 0x000000b0, 0x00050048, 0x00000498, 0x00000006, 0x00000023, 0x000000c0, 0x00050048, - 0x00000498, 0x00000007, 0x00000023, 0x000000d0, 0x00050048, 0x00000498, 0x00000008, 0x00000023, - 0x000001d0, 0x00050048, 0x00000498, 0x00000009, 0x00000023, 0x000001e0, 0x00040048, 0x00000498, - 0x0000000a, 0x00000005, 0x00050048, 0x00000498, 0x0000000a, 0x00000007, 0x00000010, 0x00050048, - 0x00000498, 0x0000000a, 0x00000023, 0x000001f0, 0x00040047, 0x0000049a, 0x00000021, 0x00000000, - 0x00040047, 0x0000049a, 0x00000022, 0x00000000, 0x00040047, 0x000004a6, 0x0000001e, 0x00000000, - 0x00040047, 0x000004aa, 0x0000001e, 0x00000004, 0x00040047, 0x000004ac, 0x0000001e, 0x00000003, - 0x00040047, 0x000004b9, 0x00000021, 0x00000006, 0x00040047, 0x000004b9, 0x00000022, 0x00000000, - 0x00040047, 0x000004bb, 0x0000001e, 0x00000001, 0x00040047, 0x000004d0, 0x00000021, 0x00000001, - 0x00040047, 0x000004d0, 0x00000022, 0x00000000, 0x00040047, 0x000004db, 0x0000001e, 0x00000002, - 0x00040047, 0x000004f9, 0x00000021, 0x00000002, 0x00040047, 0x000004f9, 0x00000022, 0x00000000, - 0x00040047, 0x00000516, 0x0000001e, 0x00000005, 0x00040047, 0x000005d5, 0x00000021, 0x00000003, - 0x00040047, 0x000005d5, 0x00000022, 0x00000000, 0x00040047, 0x00000609, 0x0000001e, 0x00000000, - 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, - 0x00040017, 0x00000007, 0x00000006, 0x00000002, 0x00040020, 0x00000008, 0x00000007, 0x00000007, - 0x00040021, 0x00000009, 0x00000007, 0x00000008, 0x00040020, 0x0000000d, 0x00000007, 0x00000006, - 0x00050021, 0x0000000e, 0x00000007, 0x00000008, 0x0000000d, 0x00090019, 0x00000013, 0x00000006, - 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x00000014, - 0x00000013, 0x00040020, 0x00000015, 0x00000000, 0x00000014, 0x00040017, 0x00000016, 0x00000006, - 0x00000004, 0x00080021, 0x00000017, 0x00000016, 0x00000015, 0x00000008, 0x0000000d, 0x0000000d, - 0x0000000d, 0x00040017, 0x0000001f, 0x00000006, 0x00000003, 0x00040020, 0x00000020, 0x00000007, - 0x0000001f, 0x00040018, 0x00000021, 0x0000001f, 0x00000003, 0x00060021, 0x00000022, 0x00000021, - 0x00000020, 0x00000020, 0x00000008, 0x00090021, 0x00000028, 0x00000007, 0x00000015, 0x00000008, - 0x00000020, 0x0000000d, 0x0000000d, 0x0000000d, 0x000b0021, 0x00000031, 0x00000007, 0x00000015, - 0x00000008, 0x00000020, 0x00000020, 0x00000020, 0x0000000d, 0x0000000d, 0x0000000d, 0x00040021, - 0x0000003c, 0x0000001f, 0x00000020, 0x00060021, 0x00000040, 0x00000006, 0x00000020, 0x00000020, - 0x0000000d, 0x00050021, 0x00000046, 0x00000006, 0x0000000d, 0x0000000d, 0x00070021, 0x0000004b, - 0x00000006, 0x00000020, 0x00000020, 0x00000020, 0x0000000d, 0x00050021, 0x00000052, 0x0000001f, - 0x0000000d, 0x00000020, 0x00070021, 0x00000057, 0x0000001f, 0x00000020, 0x00000020, 0x00000020, - 0x00000008, 0x000a0021, 0x0000005e, 0x0000001f, 0x00000020, 0x00000020, 0x00000020, 0x0000000d, - 0x0000000d, 0x00000020, 0x00000020, 0x00060021, 0x00000068, 0x00000006, 0x00000020, 0x0000000d, - 0x0000000d, 0x0004002b, 0x00000006, 0x00000071, 0x3dd32618, 0x0004002b, 0x00000006, 0x00000072, - 0x3dd2f1aa, 0x0004002b, 0x00000006, 0x00000073, 0x3dc74539, 0x0006002c, 0x0000001f, 0x00000074, - 0x00000071, 0x00000072, 0x00000073, 0x0004002b, 0x00000006, 0x0000007a, 0x420551ec, 0x00040015, - 0x00000093, 0x00000020, 0x00000000, 0x0004002b, 0x00000093, 0x00000094, 0x00000000, 0x0004002b, - 0x00000093, 0x00000099, 0x00000001, 0x0004002b, 0x00000006, 0x000000ab, 0x38d1b717, 0x00020014, - 0x000000ac, 0x0004002b, 0x00000006, 0x000000b6, 0x3a83126f, 0x0004002b, 0x00000006, 0x000000d0, - 0x40c00000, 0x0004002b, 0x00000006, 0x000000d2, 0x41700000, 0x0004002b, 0x00000006, 0x000000d6, - 0x41200000, 0x00040020, 0x000000da, 0x00000007, 0x00000016, 0x0004002b, 0x00000006, 0x000000dc, - 0x00000000, 0x0007002c, 0x00000016, 0x000000dd, 0x000000dc, 0x000000dc, 0x000000dc, 0x000000dc, - 0x00040015, 0x000000de, 0x00000020, 0x00000001, 0x00040020, 0x000000df, 0x00000007, 0x000000de, - 0x0004002b, 0x000000de, 0x000000e1, 0x00000000, 0x0004002b, 0x000000de, 0x000000e8, 0x00000001, - 0x0004002b, 0x00000006, 0x00000100, 0x41980000, 0x0004002b, 0x00000006, 0x00000101, 0x423c0000, - 0x0005002c, 0x00000007, 0x00000102, 0x00000100, 0x00000101, 0x0004002b, 0x00000006, 0x00000108, - 0x40000000, 0x0004002b, 0x00000006, 0x0000010a, 0x3f800000, 0x0004002b, 0x00000006, 0x00000116, - 0x40490fdb, 0x0004002b, 0x00000006, 0x0000011f, 0x3f000000, 0x0005002c, 0x00000007, 0x00000120, - 0x0000011f, 0x0000011f, 0x0004002b, 0x00000006, 0x00000170, 0x322bcc77, 0x0006002c, 0x0000001f, - 0x00000174, 0x000000dc, 0x000000dc, 0x000000dc, 0x0004002b, 0x00000006, 0x000001d0, 0x3727c5ac, - 0x0004002b, 0x00000093, 0x000001db, 0x00000002, 0x0004002b, 0x00000006, 0x000001e2, 0x42800000, - 0x0004002b, 0x00000006, 0x000001eb, 0x3da3d70a, 0x0004002b, 0x000000de, 0x0000020c, 0x00000040, - 0x00040020, 0x0000025a, 0x00000007, 0x00000021, 0x0004002b, 0x00000006, 0x00000280, 0x3f59999a, - 0x0006002c, 0x0000001f, 0x00000281, 0x00000280, 0x00000280, 0x00000280, 0x0004002b, 0x00000006, - 0x00000285, 0x3e19999a, 0x0006002c, 0x0000001f, 0x0000028c, 0x0000010a, 0x0000010a, 0x0000010a, - 0x0004002b, 0x00000006, 0x00000297, 0x3b03126f, 0x0004002b, 0x00000006, 0x000002ba, 0x41000000, - 0x0004002b, 0x00000006, 0x000002e1, 0x40a00000, 0x0004002b, 0x00000006, 0x000002ef, 0x3d23d70a, - 0x0004002b, 0x00000006, 0x00000316, 0x358637bd, 0x0004002b, 0x00000006, 0x00000366, 0x3eb33333, - 0x0004002b, 0x00000006, 0x0000038b, 0x3e800000, 0x0006002c, 0x0000001f, 0x00000393, 0x000002ef, - 0x000002ef, 0x000002ef, 0x0004002b, 0x00000006, 0x000003b9, 0x40800000, 0x00040018, 0x000003d8, - 0x00000016, 0x00000004, 0x0004002b, 0x00000093, 0x000003d9, 0x00000003, 0x0004001c, 0x000003da, - 0x000003d8, 0x000003d9, 0x0005001e, 0x000003db, 0x000003da, 0x00000016, 0x00000016, 0x00040020, - 0x000003dc, 0x00000002, 0x000003db, 0x0004003b, 0x000003dc, 0x000003dd, 0x00000002, 0x0004002b, - 0x000000de, 0x000003de, 0x00000002, 0x00040020, 0x000003df, 0x00000002, 0x00000006, 0x00040020, - 0x00000404, 0x00000002, 0x000003d8, 0x00090019, 0x00000449, 0x00000006, 0x00000001, 0x00000000, - 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x0000044a, 0x00000449, 0x00040020, - 0x0000044b, 0x00000000, 0x0000044a, 0x0004003b, 0x0000044b, 0x0000044c, 0x00000000, 0x00040017, - 0x0000044f, 0x000000de, 0x00000003, 0x00040017, 0x00000451, 0x000000de, 0x00000002, 0x0004002b, - 0x000000de, 0x00000458, 0xffffffff, 0x0004002b, 0x00000006, 0x00000488, 0x41100000, 0x0004002b, - 0x00000006, 0x0000048f, 0x3e3851ec, 0x0004001e, 0x00000495, 0x00000016, 0x00000016, 0x0004002b, - 0x00000093, 0x00000496, 0x00000008, 0x0004001c, 0x00000497, 0x00000495, 0x00000496, 0x000d001e, - 0x00000498, 0x000003d8, 0x000003d8, 0x00000016, 0x00000016, 0x00000016, 0x00000016, 0x00000016, - 0x00000497, 0x00000016, 0x00000016, 0x000003d8, 0x00040020, 0x00000499, 0x00000002, 0x00000498, - 0x0004003b, 0x00000499, 0x0000049a, 0x00000002, 0x0004002b, 0x000000de, 0x0000049b, 0x00000008, - 0x00040020, 0x000004a5, 0x00000001, 0x0000001f, 0x0004003b, 0x000004a5, 0x000004a6, 0x00000001, - 0x0004003b, 0x000004a5, 0x000004aa, 0x00000001, 0x0004003b, 0x000004a5, 0x000004ac, 0x00000001, - 0x0004003b, 0x00000015, 0x000004b9, 0x00000000, 0x00040020, 0x000004ba, 0x00000001, 0x00000007, - 0x0004003b, 0x000004ba, 0x000004bb, 0x00000001, 0x0004002b, 0x000000de, 0x000004bc, 0x00000009, - 0x0004003b, 0x00000015, 0x000004d0, 0x00000000, 0x00040020, 0x000004da, 0x00000001, 0x00000016, - 0x0004003b, 0x000004da, 0x000004db, 0x00000001, 0x0004002b, 0x000000de, 0x000004e8, 0x00000006, - 0x0004002b, 0x000000de, 0x000004ed, 0x00000005, 0x0004003b, 0x00000015, 0x000004f9, 0x00000000, - 0x0006002c, 0x0000001f, 0x00000505, 0x0000011f, 0x0000011f, 0x0000010a, 0x0004003b, 0x000004a5, - 0x00000516, 0x00000001, 0x00040020, 0x00000517, 0x00000001, 0x00000006, 0x00040020, 0x0000051d, - 0x00000002, 0x00000016, 0x0004002b, 0x000000de, 0x0000052d, 0x00000003, 0x0004001e, 0x00000558, - 0x00000016, 0x00000016, 0x00040020, 0x00000559, 0x00000007, 0x00000558, 0x0004002b, 0x000000de, - 0x0000055b, 0x00000007, 0x00040020, 0x0000055d, 0x00000002, 0x00000495, 0x0004002b, 0x00000006, - 0x000005b4, 0x3f333333, 0x0004002b, 0x00000006, 0x000005b5, 0x3fa00000, 0x00090019, 0x000005d2, - 0x00000006, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, - 0x000005d3, 0x000005d2, 0x00040020, 0x000005d4, 0x00000000, 0x000005d3, 0x0004003b, 0x000005d4, - 0x000005d5, 0x00000000, 0x0004002b, 0x00000006, 0x00000601, 0x3ee66666, 0x00040020, 0x00000608, - 0x00000003, 0x00000016, 0x0004003b, 0x00000608, 0x00000609, 0x00000003, 0x00050036, 0x00000002, - 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x0000000d, 0x00000494, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000049e, 0x00000007, 0x0004003b, 0x0000000d, 0x000004a1, - 0x00000007, 0x0004003b, 0x00000020, 0x000004a4, 0x00000007, 0x0004003b, 0x00000020, 0x000004a9, - 0x00000007, 0x0004003b, 0x00000008, 0x000004b8, 0x00000007, 0x0004003b, 0x00000008, 0x000004bd, - 0x00000007, 0x0004003b, 0x00000020, 0x000004bf, 0x00000007, 0x0004003b, 0x00000020, 0x000004c1, - 0x00000007, 0x0004003b, 0x00000020, 0x000004c3, 0x00000007, 0x0004003b, 0x0000000d, 0x000004c5, - 0x00000007, 0x0004003b, 0x0000000d, 0x000004c8, 0x00000007, 0x0004003b, 0x0000000d, 0x000004cb, - 0x00000007, 0x0004003b, 0x000000da, 0x000004cf, 0x00000007, 0x0004003b, 0x00000008, 0x000004d1, - 0x00000007, 0x0004003b, 0x0000000d, 0x000004d3, 0x00000007, 0x0004003b, 0x0000000d, 0x000004d5, - 0x00000007, 0x0004003b, 0x0000000d, 0x000004d7, 0x00000007, 0x0004003b, 0x00000020, 0x000004e4, - 0x00000007, 0x0004003b, 0x0000000d, 0x000004e7, 0x00000007, 0x0004003b, 0x0000000d, 0x000004ec, - 0x00000007, 0x0004003b, 0x000000df, 0x000004f1, 0x00000007, 0x0004003b, 0x00000020, 0x000004f6, - 0x00000007, 0x0004003b, 0x00000020, 0x000004f8, 0x00000007, 0x0004003b, 0x00000008, 0x000004fa, - 0x00000007, 0x0004003b, 0x0000000d, 0x000004fc, 0x00000007, 0x0004003b, 0x0000000d, 0x000004fe, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000500, 0x00000007, 0x0004003b, 0x00000020, 0x0000050b, - 0x00000007, 0x0004003b, 0x00000020, 0x0000050d, 0x00000007, 0x0004003b, 0x00000020, 0x0000050f, - 0x00000007, 0x0004003b, 0x00000008, 0x00000511, 0x00000007, 0x0004003b, 0x00000020, 0x00000514, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000515, 0x00000007, 0x0004003b, 0x00000020, 0x0000051c, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000522, 0x00000007, 0x0004003b, 0x00000020, 0x00000527, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000529, 0x00000007, 0x0004003b, 0x0000000d, 0x0000052b, - 0x00000007, 0x0004003b, 0x00000020, 0x00000535, 0x00000007, 0x0004003b, 0x00000020, 0x00000537, - 0x00000007, 0x0004003b, 0x00000020, 0x00000539, 0x00000007, 0x0004003b, 0x0000000d, 0x0000053b, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000053d, 0x00000007, 0x0004003b, 0x00000020, 0x0000053f, - 0x00000007, 0x0004003b, 0x00000020, 0x00000541, 0x00000007, 0x0004003b, 0x000000df, 0x0000054a, - 0x00000007, 0x0004003b, 0x00000559, 0x0000055a, 0x00000007, 0x0004003b, 0x00000020, 0x00000564, - 0x00000007, 0x0004003b, 0x00000020, 0x0000056d, 0x00000007, 0x0004003b, 0x00000020, 0x0000057b, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000581, 0x00000007, 0x0004003b, 0x0000000d, 0x00000589, - 0x00000007, 0x0004003b, 0x00000020, 0x00000597, 0x00000007, 0x0004003b, 0x00000020, 0x00000599, - 0x00000007, 0x0004003b, 0x00000020, 0x0000059b, 0x00000007, 0x0004003b, 0x0000000d, 0x0000059d, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000059f, 0x00000007, 0x0004003b, 0x00000020, 0x000005a1, - 0x00000007, 0x0004003b, 0x00000020, 0x000005a3, 0x00000007, 0x0004003b, 0x0000000d, 0x000005aa, - 0x00000007, 0x0004003b, 0x00000020, 0x000005b0, 0x00000007, 0x0004003b, 0x00000020, 0x000005b9, - 0x00000007, 0x0004003b, 0x0000000d, 0x000005c2, 0x00000007, 0x0004003b, 0x00000020, 0x000005c9, - 0x00000007, 0x0004003b, 0x0000000d, 0x000005ce, 0x00000007, 0x0004003b, 0x00000020, 0x000005d1, - 0x00000007, 0x0004003b, 0x00000020, 0x000005dd, 0x00000007, 0x0004003b, 0x00000020, 0x000005e2, - 0x00000007, 0x0004003b, 0x0000000d, 0x000005e7, 0x00000007, 0x0004003b, 0x00000020, 0x000005e8, - 0x00000007, 0x0004003b, 0x00000020, 0x000005f0, 0x00000007, 0x0004003b, 0x00000020, 0x00000605, - 0x00000007, 0x00060041, 0x000003df, 0x0000049c, 0x0000049a, 0x0000049b, 0x00000094, 0x0004003d, - 0x00000006, 0x0000049d, 0x0000049c, 0x0003003e, 0x00000494, 0x0000049d, 0x00060041, 0x000003df, - 0x0000049f, 0x0000049a, 0x0000049b, 0x00000099, 0x0004003d, 0x00000006, 0x000004a0, 0x0000049f, - 0x0003003e, 0x0000049e, 0x000004a0, 0x00060041, 0x000003df, 0x000004a2, 0x0000049a, 0x0000049b, - 0x000001db, 0x0004003d, 0x00000006, 0x000004a3, 0x000004a2, 0x0003003e, 0x000004a1, 0x000004a3, - 0x0004003d, 0x0000001f, 0x000004a7, 0x000004a6, 0x0006000c, 0x0000001f, 0x000004a8, 0x00000001, - 0x00000045, 0x000004a7, 0x0003003e, 0x000004a4, 0x000004a8, 0x0004003d, 0x0000001f, 0x000004ab, - 0x000004aa, 0x0004003d, 0x0000001f, 0x000004ad, 0x000004ac, 0x00050083, 0x0000001f, 0x000004ae, - 0x000004ab, 0x000004ad, 0x0006000c, 0x0000001f, 0x000004af, 0x00000001, 0x00000045, 0x000004ae, - 0x0003003e, 0x000004a9, 0x000004af, 0x0004003d, 0x0000001f, 0x000004b0, 0x000004a4, 0x0004003d, - 0x0000001f, 0x000004b1, 0x000004a9, 0x00050094, 0x00000006, 0x000004b2, 0x000004b0, 0x000004b1, - 0x000500b8, 0x000000ac, 0x000004b3, 0x000004b2, 0x000000dc, 0x000300f7, 0x000004b5, 0x00000000, - 0x000400fa, 0x000004b3, 0x000004b4, 0x000004b5, 0x000200f8, 0x000004b4, 0x0004003d, 0x0000001f, - 0x000004b6, 0x000004a4, 0x0004007f, 0x0000001f, 0x000004b7, 0x000004b6, 0x0003003e, 0x000004a4, - 0x000004b7, 0x000200f9, 0x000004b5, 0x000200f8, 0x000004b5, 0x0004003d, 0x00000007, 0x000004be, - 0x000004bb, 0x0003003e, 0x000004bd, 0x000004be, 0x0004003d, 0x0000001f, 0x000004c0, 0x000004a4, - 0x0003003e, 0x000004bf, 0x000004c0, 0x0004003d, 0x0000001f, 0x000004c2, 0x000004ac, 0x0003003e, - 0x000004c1, 0x000004c2, 0x0004003d, 0x0000001f, 0x000004c4, 0x000004a9, 0x0003003e, 0x000004c3, - 0x000004c4, 0x00060041, 0x000003df, 0x000004c6, 0x0000049a, 0x000004bc, 0x00000094, 0x0004003d, - 0x00000006, 0x000004c7, 0x000004c6, 0x0003003e, 0x000004c5, 0x000004c7, 0x00060041, 0x000003df, - 0x000004c9, 0x0000049a, 0x000004bc, 0x00000099, 0x0004003d, 0x00000006, 0x000004ca, 0x000004c9, - 0x0003003e, 0x000004c8, 0x000004ca, 0x00060041, 0x000003df, 0x000004cc, 0x0000049a, 0x000004bc, - 0x000001db, 0x0004003d, 0x00000006, 0x000004cd, 0x000004cc, 0x0003003e, 0x000004cb, 0x000004cd, - 0x000c0039, 0x00000007, 0x000004ce, 0x0000003a, 0x000004b9, 0x000004bd, 0x000004bf, 0x000004c1, - 0x000004c3, 0x000004c5, 0x000004c8, 0x000004cb, 0x0003003e, 0x000004b8, 0x000004ce, 0x0004003d, - 0x00000007, 0x000004d2, 0x000004b8, 0x0003003e, 0x000004d1, 0x000004d2, 0x0004003d, 0x00000006, - 0x000004d4, 0x00000494, 0x0003003e, 0x000004d3, 0x000004d4, 0x0004003d, 0x00000006, 0x000004d6, - 0x0000049e, 0x0003003e, 0x000004d5, 0x000004d6, 0x0004003d, 0x00000006, 0x000004d8, 0x000004a1, - 0x0003003e, 0x000004d7, 0x000004d8, 0x00090039, 0x00000016, 0x000004d9, 0x0000001d, 0x000004d0, - 0x000004d1, 0x000004d3, 0x000004d5, 0x000004d7, 0x0004003d, 0x00000016, 0x000004dc, 0x000004db, - 0x00050085, 0x00000016, 0x000004dd, 0x000004d9, 0x000004dc, 0x0003003e, 0x000004cf, 0x000004dd, - 0x00050041, 0x0000000d, 0x000004de, 0x000004cf, 0x000003d9, 0x0004003d, 0x00000006, 0x000004df, - 0x000004de, 0x000500b8, 0x000000ac, 0x000004e0, 0x000004df, 0x0000011f, 0x000300f7, 0x000004e2, - 0x00000000, 0x000400fa, 0x000004e0, 0x000004e1, 0x000004e2, 0x000200f8, 0x000004e1, 0x000100fc, - 0x000200f8, 0x000004e2, 0x0004003d, 0x00000016, 0x000004e5, 0x000004cf, 0x0008004f, 0x0000001f, - 0x000004e6, 0x000004e5, 0x000004e5, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x000004e4, - 0x000004e6, 0x00060041, 0x000003df, 0x000004e9, 0x0000049a, 0x000004e8, 0x000003d9, 0x0004003d, - 0x00000006, 0x000004ea, 0x000004e9, 0x0008000c, 0x00000006, 0x000004eb, 0x00000001, 0x0000002b, - 0x000004ea, 0x000000dc, 0x0000010a, 0x0003003e, 0x000004e7, 0x000004eb, 0x00060041, 0x000003df, - 0x000004ee, 0x0000049a, 0x000004ed, 0x000003d9, 0x0004003d, 0x00000006, 0x000004ef, 0x000004ee, - 0x0008000c, 0x00000006, 0x000004f0, 0x00000001, 0x0000002b, 0x000004ef, 0x000002ef, 0x0000010a, - 0x0003003e, 0x000004ec, 0x000004f0, 0x00060041, 0x000003df, 0x000004f2, 0x0000049a, 0x000003de, - 0x000003d9, 0x0004003d, 0x00000006, 0x000004f3, 0x000004f2, 0x00050081, 0x00000006, 0x000004f4, - 0x000004f3, 0x0000011f, 0x0004006e, 0x000000de, 0x000004f5, 0x000004f4, 0x0003003e, 0x000004f1, - 0x000004f5, 0x0004003d, 0x0000001f, 0x000004f7, 0x000004a4, 0x0003003e, 0x000004f6, 0x000004f7, - 0x0004003d, 0x00000007, 0x000004fb, 0x000004b8, 0x0003003e, 0x000004fa, 0x000004fb, 0x0004003d, - 0x00000006, 0x000004fd, 0x00000494, 0x0003003e, 0x000004fc, 0x000004fd, 0x0004003d, 0x00000006, - 0x000004ff, 0x0000049e, 0x0003003e, 0x000004fe, 0x000004ff, 0x0004003d, 0x00000006, 0x00000501, - 0x000004a1, 0x0003003e, 0x00000500, 0x00000501, 0x00090039, 0x00000016, 0x00000502, 0x0000001d, - 0x000004f9, 0x000004fa, 0x000004fc, 0x000004fe, 0x00000500, 0x0008004f, 0x0000001f, 0x00000503, - 0x00000502, 0x00000502, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x000004f8, 0x00000503, - 0x0004003d, 0x0000001f, 0x00000504, 0x000004f8, 0x00050083, 0x0000001f, 0x00000506, 0x00000504, - 0x00000505, 0x0006000c, 0x00000006, 0x00000507, 0x00000001, 0x00000042, 0x00000506, 0x000500ba, - 0x000000ac, 0x00000508, 0x00000507, 0x000002ef, 0x000300f7, 0x0000050a, 0x00000000, 0x000400fa, - 0x00000508, 0x00000509, 0x0000050a, 0x000200f8, 0x00000509, 0x0004003d, 0x0000001f, 0x0000050c, - 0x000004f6, 0x0003003e, 0x0000050b, 0x0000050c, 0x0004003d, 0x0000001f, 0x0000050e, 0x000004f8, - 0x0003003e, 0x0000050d, 0x0000050e, 0x0004003d, 0x0000001f, 0x00000510, 0x000004ac, 0x0003003e, - 0x0000050f, 0x00000510, 0x0004003d, 0x00000007, 0x00000512, 0x000004b8, 0x0003003e, 0x00000511, - 0x00000512, 0x00080039, 0x0000001f, 0x00000513, 0x0000005c, 0x0000050b, 0x0000050d, 0x0000050f, - 0x00000511, 0x0003003e, 0x000004f6, 0x00000513, 0x000200f9, 0x0000050a, 0x000200f8, 0x0000050a, - 0x0003003e, 0x00000514, 0x00000174, 0x00050041, 0x00000517, 0x00000518, 0x00000516, 0x000001db, - 0x0004003d, 0x00000006, 0x00000519, 0x00000518, 0x0004007f, 0x00000006, 0x0000051a, 0x00000519, - 0x0007000c, 0x00000006, 0x0000051b, 0x00000001, 0x00000028, 0x0000051a, 0x000000dc, 0x0003003e, - 0x00000515, 0x0000051b, 0x00050041, 0x0000051d, 0x0000051e, 0x0000049a, 0x000003de, 0x0004003d, - 0x00000016, 0x0000051f, 0x0000051e, 0x0008004f, 0x0000001f, 0x00000520, 0x0000051f, 0x0000051f, - 0x00000000, 0x00000001, 0x00000002, 0x0006000c, 0x0000001f, 0x00000521, 0x00000001, 0x00000045, - 0x00000520, 0x0003003e, 0x0000051c, 0x00000521, 0x0004003d, 0x0000001f, 0x00000523, 0x000004f6, - 0x0004003d, 0x0000001f, 0x00000524, 0x0000051c, 0x00050094, 0x00000006, 0x00000525, 0x00000523, - 0x00000524, 0x0007000c, 0x00000006, 0x00000526, 0x00000001, 0x00000028, 0x00000525, 0x000000dc, - 0x0004003d, 0x0000001f, 0x00000528, 0x000004ac, 0x0003003e, 0x00000527, 0x00000528, 0x0004003d, - 0x00000006, 0x0000052a, 0x00000515, 0x0003003e, 0x00000529, 0x0000052a, 0x0003003e, 0x0000052b, - 0x00000526, 0x00070039, 0x00000006, 0x0000052c, 0x0000006c, 0x00000527, 0x00000529, 0x0000052b, - 0x0003003e, 0x00000522, 0x0000052c, 0x00050041, 0x0000051d, 0x0000052e, 0x0000049a, 0x0000052d, - 0x0004003d, 0x00000016, 0x0000052f, 0x0000052e, 0x0008004f, 0x0000001f, 0x00000530, 0x0000052f, - 0x0000052f, 0x00000000, 0x00000001, 0x00000002, 0x0006000c, 0x00000006, 0x00000531, 0x00000001, - 0x00000042, 0x00000530, 0x000500ba, 0x000000ac, 0x00000532, 0x00000531, 0x00000316, 0x000300f7, - 0x00000534, 0x00000000, 0x000400fa, 0x00000532, 0x00000533, 0x00000534, 0x000200f8, 0x00000533, - 0x0004003d, 0x0000001f, 0x00000536, 0x000004f6, 0x0003003e, 0x00000535, 0x00000536, 0x0004003d, - 0x0000001f, 0x00000538, 0x000004a9, 0x0003003e, 0x00000537, 0x00000538, 0x0004003d, 0x0000001f, - 0x0000053a, 0x000004e4, 0x0003003e, 0x00000539, 0x0000053a, 0x0004003d, 0x00000006, 0x0000053c, - 0x000004e7, 0x0003003e, 0x0000053b, 0x0000053c, 0x0004003d, 0x00000006, 0x0000053e, 0x000004ec, - 0x0003003e, 0x0000053d, 0x0000053e, 0x0004003d, 0x0000001f, 0x00000540, 0x0000051c, 0x0003003e, - 0x0000053f, 0x00000540, 0x00050041, 0x0000051d, 0x00000542, 0x0000049a, 0x0000052d, 0x0004003d, - 0x00000016, 0x00000543, 0x00000542, 0x0008004f, 0x0000001f, 0x00000544, 0x00000543, 0x00000543, - 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000541, 0x00000544, 0x000b0039, 0x0000001f, - 0x00000545, 0x00000066, 0x00000535, 0x00000537, 0x00000539, 0x0000053b, 0x0000053d, 0x0000053f, - 0x00000541, 0x0004003d, 0x00000006, 0x00000546, 0x00000522, 0x0005008e, 0x0000001f, 0x00000547, - 0x00000545, 0x00000546, 0x0004003d, 0x0000001f, 0x00000548, 0x00000514, 0x00050081, 0x0000001f, - 0x00000549, 0x00000548, 0x00000547, 0x0003003e, 0x00000514, 0x00000549, 0x000200f9, 0x00000534, - 0x000200f8, 0x00000534, 0x0003003e, 0x0000054a, 0x000000e1, 0x000200f9, 0x0000054b, 0x000200f8, - 0x0000054b, 0x000400f6, 0x0000054d, 0x0000054e, 0x00000000, 0x000200f9, 0x0000054f, 0x000200f8, - 0x0000054f, 0x0004003d, 0x000000de, 0x00000550, 0x0000054a, 0x000500b1, 0x000000ac, 0x00000551, - 0x00000550, 0x0000049b, 0x000400fa, 0x00000551, 0x0000054c, 0x0000054d, 0x000200f8, 0x0000054c, - 0x0004003d, 0x000000de, 0x00000552, 0x0000054a, 0x0004003d, 0x000000de, 0x00000553, 0x000004f1, - 0x000500af, 0x000000ac, 0x00000554, 0x00000552, 0x00000553, 0x000300f7, 0x00000556, 0x00000000, - 0x000400fa, 0x00000554, 0x00000555, 0x00000556, 0x000200f8, 0x00000555, 0x000200f9, 0x0000054d, - 0x000200f8, 0x00000556, 0x0004003d, 0x000000de, 0x0000055c, 0x0000054a, 0x00060041, 0x0000055d, - 0x0000055e, 0x0000049a, 0x0000055b, 0x0000055c, 0x0004003d, 0x00000495, 0x0000055f, 0x0000055e, - 0x00050051, 0x00000016, 0x00000560, 0x0000055f, 0x00000000, 0x00050041, 0x000000da, 0x00000561, - 0x0000055a, 0x000000e1, 0x0003003e, 0x00000561, 0x00000560, 0x00050051, 0x00000016, 0x00000562, - 0x0000055f, 0x00000001, 0x00050041, 0x000000da, 0x00000563, 0x0000055a, 0x000000e8, 0x0003003e, - 0x00000563, 0x00000562, 0x00050041, 0x000000da, 0x00000565, 0x0000055a, 0x000000e8, 0x0004003d, - 0x00000016, 0x00000566, 0x00000565, 0x0008004f, 0x0000001f, 0x00000567, 0x00000566, 0x00000566, - 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000564, 0x00000567, 0x00060041, 0x0000000d, - 0x00000568, 0x0000055a, 0x000000e1, 0x000003d9, 0x0004003d, 0x00000006, 0x00000569, 0x00000568, - 0x000500bc, 0x000000ac, 0x0000056a, 0x00000569, 0x000000dc, 0x000300f7, 0x0000056c, 0x00000000, - 0x000400fa, 0x0000056a, 0x0000056b, 0x0000057a, 0x000200f8, 0x0000056b, 0x00050041, 0x000000da, - 0x0000056e, 0x0000055a, 0x000000e1, 0x0004003d, 0x00000016, 0x0000056f, 0x0000056e, 0x0008004f, - 0x0000001f, 0x00000570, 0x0000056f, 0x0000056f, 0x00000000, 0x00000001, 0x00000002, 0x0006000c, - 0x0000001f, 0x00000571, 0x00000001, 0x00000045, 0x00000570, 0x0003003e, 0x0000056d, 0x00000571, - 0x0004003d, 0x0000001f, 0x00000572, 0x0000056d, 0x0004003d, 0x0000001f, 0x00000573, 0x0000051c, - 0x00050083, 0x0000001f, 0x00000574, 0x00000572, 0x00000573, 0x0006000c, 0x00000006, 0x00000575, - 0x00000001, 0x00000042, 0x00000574, 0x000500b8, 0x000000ac, 0x00000576, 0x00000575, 0x000000b6, - 0x000300f7, 0x00000578, 0x00000000, 0x000400fa, 0x00000576, 0x00000577, 0x00000578, 0x000200f8, - 0x00000577, 0x000200f9, 0x0000054e, 0x000200f8, 0x00000578, 0x000200f9, 0x0000056c, 0x000200f8, - 0x0000057a, 0x00050041, 0x000000da, 0x0000057c, 0x0000055a, 0x000000e1, 0x0004003d, 0x00000016, - 0x0000057d, 0x0000057c, 0x0008004f, 0x0000001f, 0x0000057e, 0x0000057d, 0x0000057d, 0x00000000, - 0x00000001, 0x00000002, 0x0004003d, 0x0000001f, 0x0000057f, 0x000004ac, 0x00050083, 0x0000001f, - 0x00000580, 0x0000057e, 0x0000057f, 0x0003003e, 0x0000057b, 0x00000580, 0x0004003d, 0x0000001f, - 0x00000582, 0x0000057b, 0x0006000c, 0x00000006, 0x00000583, 0x00000001, 0x00000042, 0x00000582, - 0x0003003e, 0x00000581, 0x00000583, 0x0004003d, 0x0000001f, 0x00000584, 0x0000057b, 0x0004003d, - 0x00000006, 0x00000585, 0x00000581, 0x0007000c, 0x00000006, 0x00000586, 0x00000001, 0x00000028, - 0x00000585, 0x000000ab, 0x00060050, 0x0000001f, 0x00000587, 0x00000586, 0x00000586, 0x00000586, - 0x00050088, 0x0000001f, 0x00000588, 0x00000584, 0x00000587, 0x0003003e, 0x0000056d, 0x00000588, - 0x0004003d, 0x00000006, 0x0000058a, 0x00000581, 0x00060041, 0x0000000d, 0x0000058b, 0x0000055a, - 0x000000e1, 0x000003d9, 0x0004003d, 0x00000006, 0x0000058c, 0x0000058b, 0x0007000c, 0x00000006, - 0x0000058d, 0x00000001, 0x00000028, 0x0000058c, 0x000000b6, 0x00050088, 0x00000006, 0x0000058e, - 0x0000058a, 0x0000058d, 0x00050083, 0x00000006, 0x0000058f, 0x0000010a, 0x0000058e, 0x0008000c, - 0x00000006, 0x00000590, 0x00000001, 0x0000002b, 0x0000058f, 0x000000dc, 0x0000010a, 0x0003003e, - 0x00000589, 0x00000590, 0x0004003d, 0x00000006, 0x00000591, 0x00000589, 0x0004003d, 0x00000006, - 0x00000592, 0x00000589, 0x00050085, 0x00000006, 0x00000593, 0x00000592, 0x00000591, 0x0003003e, - 0x00000589, 0x00000593, 0x0004003d, 0x00000006, 0x00000594, 0x00000589, 0x0004003d, 0x0000001f, - 0x00000595, 0x00000564, 0x0005008e, 0x0000001f, 0x00000596, 0x00000595, 0x00000594, 0x0003003e, - 0x00000564, 0x00000596, 0x000200f9, 0x0000056c, 0x000200f8, 0x0000056c, 0x0004003d, 0x0000001f, - 0x00000598, 0x000004f6, 0x0003003e, 0x00000597, 0x00000598, 0x0004003d, 0x0000001f, 0x0000059a, - 0x000004a9, 0x0003003e, 0x00000599, 0x0000059a, 0x0004003d, 0x0000001f, 0x0000059c, 0x000004e4, - 0x0003003e, 0x0000059b, 0x0000059c, 0x0004003d, 0x00000006, 0x0000059e, 0x000004e7, 0x0003003e, - 0x0000059d, 0x0000059e, 0x0004003d, 0x00000006, 0x000005a0, 0x000004ec, 0x0003003e, 0x0000059f, - 0x000005a0, 0x0004003d, 0x0000001f, 0x000005a2, 0x0000056d, 0x0003003e, 0x000005a1, 0x000005a2, - 0x0004003d, 0x0000001f, 0x000005a4, 0x00000564, 0x0003003e, 0x000005a3, 0x000005a4, 0x000b0039, - 0x0000001f, 0x000005a5, 0x00000066, 0x00000597, 0x00000599, 0x0000059b, 0x0000059d, 0x0000059f, - 0x000005a1, 0x000005a3, 0x0004003d, 0x0000001f, 0x000005a6, 0x00000514, 0x00050081, 0x0000001f, - 0x000005a7, 0x000005a6, 0x000005a5, 0x0003003e, 0x00000514, 0x000005a7, 0x000200f9, 0x0000054e, - 0x000200f8, 0x0000054e, 0x0004003d, 0x000000de, 0x000005a8, 0x0000054a, 0x00050080, 0x000000de, - 0x000005a9, 0x000005a8, 0x000000e8, 0x0003003e, 0x0000054a, 0x000005a9, 0x000200f9, 0x0000054b, - 0x000200f8, 0x0000054d, 0x00050041, 0x0000000d, 0x000005ab, 0x000004f6, 0x00000099, 0x0004003d, - 0x00000006, 0x000005ac, 0x000005ab, 0x00050085, 0x00000006, 0x000005ad, 0x000005ac, 0x0000011f, - 0x00050081, 0x00000006, 0x000005ae, 0x000005ad, 0x0000011f, 0x0008000c, 0x00000006, 0x000005af, - 0x00000001, 0x0000002b, 0x000005ae, 0x000000dc, 0x0000010a, 0x0003003e, 0x000005aa, 0x000005af, - 0x00050041, 0x0000051d, 0x000005b1, 0x0000049a, 0x000004e8, 0x0004003d, 0x00000016, 0x000005b2, - 0x000005b1, 0x0008004f, 0x0000001f, 0x000005b3, 0x000005b2, 0x000005b2, 0x00000000, 0x00000001, - 0x00000002, 0x0004003d, 0x00000006, 0x000005b6, 0x000005aa, 0x0008000c, 0x00000006, 0x000005b7, - 0x00000001, 0x0000002e, 0x000005b4, 0x000005b5, 0x000005b6, 0x0005008e, 0x0000001f, 0x000005b8, - 0x000005b3, 0x000005b7, 0x0003003e, 0x000005b0, 0x000005b8, 0x0004003d, 0x0000001f, 0x000005ba, - 0x000004e4, 0x0004003d, 0x0000001f, 0x000005bb, 0x000005b0, 0x00050085, 0x0000001f, 0x000005bc, - 0x000005ba, 0x000005bb, 0x0004003d, 0x00000006, 0x000005bd, 0x000004e7, 0x00050083, 0x00000006, - 0x000005be, 0x0000010a, 0x000005bd, 0x0005008e, 0x0000001f, 0x000005bf, 0x000005bc, 0x000005be, - 0x0004003d, 0x0000001f, 0x000005c0, 0x00000514, 0x00050081, 0x0000001f, 0x000005c1, 0x000005bf, - 0x000005c0, 0x0003003e, 0x000005b9, 0x000005c1, 0x00060041, 0x000003df, 0x000005c3, 0x0000049a, - 0x0000052d, 0x000003d9, 0x0004003d, 0x00000006, 0x000005c4, 0x000005c3, 0x0003003e, 0x000005c2, - 0x000005c4, 0x0004003d, 0x00000006, 0x000005c5, 0x000005c2, 0x000500ba, 0x000000ac, 0x000005c6, - 0x000005c5, 0x000000ab, 0x000300f7, 0x000005c8, 0x00000000, 0x000400fa, 0x000005c6, 0x000005c7, - 0x000005c8, 0x000200f8, 0x000005c7, 0x0004003d, 0x0000001f, 0x000005ca, 0x000004a9, 0x0004007f, - 0x0000001f, 0x000005cb, 0x000005ca, 0x0004003d, 0x0000001f, 0x000005cc, 0x000004f6, 0x0007000c, - 0x0000001f, 0x000005cd, 0x00000001, 0x00000047, 0x000005cb, 0x000005cc, 0x0003003e, 0x000005c9, - 0x000005cd, 0x0004003d, 0x00000006, 0x000005cf, 0x000004ec, 0x00050085, 0x00000006, 0x000005d0, - 0x000005cf, 0x000002e1, 0x0003003e, 0x000005ce, 0x000005d0, 0x0004003d, 0x000005d3, 0x000005d6, - 0x000005d5, 0x0004003d, 0x0000001f, 0x000005d7, 0x000005c9, 0x0004003d, 0x00000006, 0x000005d8, - 0x000005ce, 0x00070058, 0x00000016, 0x000005d9, 0x000005d6, 0x000005d7, 0x00000002, 0x000005d8, - 0x0008004f, 0x0000001f, 0x000005da, 0x000005d9, 0x000005d9, 0x00000000, 0x00000001, 0x00000002, - 0x0004003d, 0x00000006, 0x000005db, 0x000005c2, 0x0005008e, 0x0000001f, 0x000005dc, 0x000005da, - 0x000005db, 0x0003003e, 0x000005d1, 0x000005dc, 0x0004003d, 0x0000001f, 0x000005de, 0x000004e4, - 0x0004003d, 0x00000006, 0x000005df, 0x000004e7, 0x00060050, 0x0000001f, 0x000005e0, 0x000005df, - 0x000005df, 0x000005df, 0x0008000c, 0x0000001f, 0x000005e1, 0x00000001, 0x0000002e, 0x00000393, - 0x000005de, 0x000005e0, 0x0003003e, 0x000005dd, 0x000005e1, 0x0004003d, 0x0000001f, 0x000005e3, - 0x000004f6, 0x0004003d, 0x0000001f, 0x000005e4, 0x000004a9, 0x00050094, 0x00000006, 0x000005e5, - 0x000005e3, 0x000005e4, 0x0007000c, 0x00000006, 0x000005e6, 0x00000001, 0x00000028, 0x000005e5, - 0x000000dc, 0x0003003e, 0x000005e7, 0x000005e6, 0x0004003d, 0x0000001f, 0x000005e9, 0x000005dd, - 0x0003003e, 0x000005e8, 0x000005e9, 0x00060039, 0x0000001f, 0x000005ea, 0x00000055, 0x000005e7, - 0x000005e8, 0x0003003e, 0x000005e2, 0x000005ea, 0x0004003d, 0x0000001f, 0x000005eb, 0x000005d1, - 0x0004003d, 0x0000001f, 0x000005ec, 0x000005e2, 0x00050085, 0x0000001f, 0x000005ed, 0x000005eb, - 0x000005ec, 0x0004003d, 0x0000001f, 0x000005ee, 0x000005b9, 0x00050081, 0x0000001f, 0x000005ef, - 0x000005ee, 0x000005ed, 0x0003003e, 0x000005b9, 0x000005ef, 0x0004003d, 0x000005d3, 0x000005f1, - 0x000005d5, 0x0004003d, 0x0000001f, 0x000005f2, 0x000004f6, 0x00070058, 0x00000016, 0x000005f3, - 0x000005f1, 0x000005f2, 0x00000002, 0x000002e1, 0x0008004f, 0x0000001f, 0x000005f4, 0x000005f3, - 0x000005f3, 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x00000006, 0x000005f5, 0x000005c2, - 0x0005008e, 0x0000001f, 0x000005f6, 0x000005f4, 0x000005f5, 0x0003003e, 0x000005f0, 0x000005f6, - 0x0004003d, 0x0000001f, 0x000005f7, 0x000004e4, 0x0004003d, 0x0000001f, 0x000005f8, 0x000005f0, - 0x00050085, 0x0000001f, 0x000005f9, 0x000005f7, 0x000005f8, 0x0004003d, 0x00000006, 0x000005fa, - 0x000004e7, 0x00050083, 0x00000006, 0x000005fb, 0x0000010a, 0x000005fa, 0x0005008e, 0x0000001f, - 0x000005fc, 0x000005f9, 0x000005fb, 0x0004003d, 0x0000001f, 0x000005fd, 0x000005e2, 0x00060050, - 0x0000001f, 0x000005fe, 0x0000010a, 0x0000010a, 0x0000010a, 0x00050083, 0x0000001f, 0x000005ff, - 0x000005fe, 0x000005fd, 0x00050085, 0x0000001f, 0x00000600, 0x000005fc, 0x000005ff, 0x0005008e, - 0x0000001f, 0x00000602, 0x00000600, 0x00000601, 0x0004003d, 0x0000001f, 0x00000603, 0x000005b9, - 0x00050081, 0x0000001f, 0x00000604, 0x00000603, 0x00000602, 0x0003003e, 0x000005b9, 0x00000604, - 0x000200f9, 0x000005c8, 0x000200f8, 0x000005c8, 0x0004003d, 0x0000001f, 0x00000606, 0x000005b9, - 0x0003003e, 0x00000605, 0x00000606, 0x00050039, 0x0000001f, 0x00000607, 0x0000003e, 0x00000605, - 0x0003003e, 0x000005b9, 0x00000607, 0x0004003d, 0x0000001f, 0x0000060a, 0x000005b9, 0x00050041, - 0x0000000d, 0x0000060b, 0x000004cf, 0x000003d9, 0x0004003d, 0x00000006, 0x0000060c, 0x0000060b, - 0x00050051, 0x00000006, 0x0000060d, 0x0000060a, 0x00000000, 0x00050051, 0x00000006, 0x0000060e, - 0x0000060a, 0x00000001, 0x00050051, 0x00000006, 0x0000060f, 0x0000060a, 0x00000002, 0x00070050, - 0x00000016, 0x00000610, 0x0000060d, 0x0000060e, 0x0000060f, 0x0000060c, 0x0003003e, 0x00000609, - 0x00000610, 0x000100fd, 0x00010038, 0x00050036, 0x00000007, 0x0000000b, 0x00000000, 0x00000009, - 0x00030037, 0x00000008, 0x0000000a, 0x000200f8, 0x0000000c, 0x0004003b, 0x00000020, 0x0000006e, - 0x00000007, 0x0004003d, 0x00000007, 0x0000006f, 0x0000000a, 0x0008004f, 0x0000001f, 0x00000070, - 0x0000006f, 0x0000006f, 0x00000000, 0x00000001, 0x00000000, 0x00050085, 0x0000001f, 0x00000075, - 0x00000070, 0x00000074, 0x0006000c, 0x0000001f, 0x00000076, 0x00000001, 0x0000000a, 0x00000075, - 0x0003003e, 0x0000006e, 0x00000076, 0x0004003d, 0x0000001f, 0x00000077, 0x0000006e, 0x0004003d, - 0x0000001f, 0x00000078, 0x0000006e, 0x0008004f, 0x0000001f, 0x00000079, 0x00000078, 0x00000078, - 0x00000001, 0x00000002, 0x00000000, 0x00060050, 0x0000001f, 0x0000007b, 0x0000007a, 0x0000007a, - 0x0000007a, 0x00050081, 0x0000001f, 0x0000007c, 0x00000079, 0x0000007b, 0x00050094, 0x00000006, - 0x0000007d, 0x00000077, 0x0000007c, 0x0004003d, 0x0000001f, 0x0000007e, 0x0000006e, 0x00060050, - 0x0000001f, 0x0000007f, 0x0000007d, 0x0000007d, 0x0000007d, 0x00050081, 0x0000001f, 0x00000080, - 0x0000007e, 0x0000007f, 0x0003003e, 0x0000006e, 0x00000080, 0x0004003d, 0x0000001f, 0x00000081, - 0x0000006e, 0x0007004f, 0x00000007, 0x00000082, 0x00000081, 0x00000081, 0x00000000, 0x00000000, - 0x0004003d, 0x0000001f, 0x00000083, 0x0000006e, 0x0007004f, 0x00000007, 0x00000084, 0x00000083, - 0x00000083, 0x00000001, 0x00000002, 0x00050081, 0x00000007, 0x00000085, 0x00000082, 0x00000084, - 0x0004003d, 0x0000001f, 0x00000086, 0x0000006e, 0x0007004f, 0x00000007, 0x00000087, 0x00000086, - 0x00000086, 0x00000002, 0x00000001, 0x00050085, 0x00000007, 0x00000088, 0x00000085, 0x00000087, - 0x0006000c, 0x00000007, 0x00000089, 0x00000001, 0x0000000a, 0x00000088, 0x000200fe, 0x00000089, - 0x00010038, 0x00050036, 0x00000007, 0x00000011, 0x00000000, 0x0000000e, 0x00030037, 0x00000008, - 0x0000000f, 0x00030037, 0x0000000d, 0x00000010, 0x000200f8, 0x00000012, 0x0004003b, 0x0000000d, - 0x0000008c, 0x00000007, 0x0004003b, 0x0000000d, 0x0000008f, 0x00000007, 0x0004003d, 0x00000006, - 0x0000008d, 0x00000010, 0x0006000c, 0x00000006, 0x0000008e, 0x00000001, 0x0000000d, 0x0000008d, - 0x0003003e, 0x0000008c, 0x0000008e, 0x0004003d, 0x00000006, 0x00000090, 0x00000010, 0x0006000c, - 0x00000006, 0x00000091, 0x00000001, 0x0000000e, 0x00000090, 0x0003003e, 0x0000008f, 0x00000091, - 0x0004003d, 0x00000006, 0x00000092, 0x0000008f, 0x00050041, 0x0000000d, 0x00000095, 0x0000000f, - 0x00000094, 0x0004003d, 0x00000006, 0x00000096, 0x00000095, 0x00050085, 0x00000006, 0x00000097, - 0x00000092, 0x00000096, 0x0004003d, 0x00000006, 0x00000098, 0x0000008c, 0x00050041, 0x0000000d, - 0x0000009a, 0x0000000f, 0x00000099, 0x0004003d, 0x00000006, 0x0000009b, 0x0000009a, 0x00050085, - 0x00000006, 0x0000009c, 0x00000098, 0x0000009b, 0x00050083, 0x00000006, 0x0000009d, 0x00000097, - 0x0000009c, 0x0004003d, 0x00000006, 0x0000009e, 0x0000008c, 0x00050041, 0x0000000d, 0x0000009f, - 0x0000000f, 0x00000094, 0x0004003d, 0x00000006, 0x000000a0, 0x0000009f, 0x00050085, 0x00000006, - 0x000000a1, 0x0000009e, 0x000000a0, 0x0004003d, 0x00000006, 0x000000a2, 0x0000008f, 0x00050041, - 0x0000000d, 0x000000a3, 0x0000000f, 0x00000099, 0x0004003d, 0x00000006, 0x000000a4, 0x000000a3, - 0x00050085, 0x00000006, 0x000000a5, 0x000000a2, 0x000000a4, 0x00050081, 0x00000006, 0x000000a6, - 0x000000a1, 0x000000a5, 0x00050050, 0x00000007, 0x000000a7, 0x0000009d, 0x000000a6, 0x000200fe, - 0x000000a7, 0x00010038, 0x00050036, 0x00000016, 0x0000001d, 0x00000000, 0x00000017, 0x00030037, - 0x00000015, 0x00000018, 0x00030037, 0x00000008, 0x00000019, 0x00030037, 0x0000000d, 0x0000001a, - 0x00030037, 0x0000000d, 0x0000001b, 0x00030037, 0x0000000d, 0x0000001c, 0x000200f8, 0x0000001e, - 0x0004003b, 0x0000000d, 0x000000b4, 0x00000007, 0x0004003b, 0x00000008, 0x000000b8, 0x00000007, - 0x0004003b, 0x00000008, 0x000000bb, 0x00000007, 0x0004003b, 0x00000008, 0x000000be, 0x00000007, - 0x0004003b, 0x00000008, 0x000000c2, 0x00000007, 0x0004003b, 0x00000008, 0x000000c5, 0x00000007, - 0x0004003b, 0x00000008, 0x000000c8, 0x00000007, 0x0004003b, 0x000000da, 0x000000db, 0x00000007, - 0x0004003b, 0x000000df, 0x000000e0, 0x00000007, 0x0004003b, 0x000000df, 0x000000ea, 0x00000007, - 0x0004003b, 0x00000008, 0x000000f2, 0x00000007, 0x0004003b, 0x00000008, 0x000000fa, 0x00000007, - 0x0004003b, 0x00000008, 0x000000fb, 0x00000007, 0x0004003b, 0x00000008, 0x000000fe, 0x00000007, - 0x0004003b, 0x00000008, 0x00000104, 0x00000007, 0x0004003b, 0x00000008, 0x00000106, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000111, 0x00000007, 0x0004003b, 0x00000008, 0x0000011d, 0x00000007, - 0x0004003b, 0x00000008, 0x00000125, 0x00000007, 0x0004003b, 0x00000008, 0x0000012a, 0x00000007, - 0x0004003b, 0x0000000d, 0x0000012b, 0x00000007, 0x0004003b, 0x0000000d, 0x00000131, 0x00000007, - 0x0004003d, 0x00000006, 0x000000aa, 0x0000001b, 0x000500b8, 0x000000ac, 0x000000ad, 0x000000aa, - 0x000000ab, 0x000300f7, 0x000000af, 0x00000000, 0x000400fa, 0x000000ad, 0x000000ae, 0x000000af, - 0x000200f8, 0x000000ae, 0x0004003d, 0x00000014, 0x000000b0, 0x00000018, 0x0004003d, 0x00000007, - 0x000000b1, 0x00000019, 0x00050057, 0x00000016, 0x000000b2, 0x000000b0, 0x000000b1, 0x000200fe, - 0x000000b2, 0x000200f8, 0x000000af, 0x0004003d, 0x00000006, 0x000000b5, 0x0000001a, 0x0007000c, - 0x00000006, 0x000000b7, 0x00000001, 0x00000028, 0x000000b5, 0x000000b6, 0x0003003e, 0x000000b4, - 0x000000b7, 0x0004003d, 0x00000007, 0x000000b9, 0x00000019, 0x000400cf, 0x00000007, 0x000000ba, - 0x000000b9, 0x0003003e, 0x000000b8, 0x000000ba, 0x0004003d, 0x00000007, 0x000000bc, 0x00000019, - 0x000400d0, 0x00000007, 0x000000bd, 0x000000bc, 0x0003003e, 0x000000bb, 0x000000bd, 0x0004003d, - 0x00000007, 0x000000bf, 0x00000019, 0x0004003d, 0x00000006, 0x000000c0, 0x000000b4, 0x0005008e, - 0x00000007, 0x000000c1, 0x000000bf, 0x000000c0, 0x0003003e, 0x000000be, 0x000000c1, 0x0004003d, - 0x00000007, 0x000000c3, 0x000000be, 0x0006000c, 0x00000007, 0x000000c4, 0x00000001, 0x00000008, - 0x000000c3, 0x0003003e, 0x000000c2, 0x000000c4, 0x0004003d, 0x00000007, 0x000000c6, 0x000000be, - 0x0006000c, 0x00000007, 0x000000c7, 0x00000001, 0x0000000a, 0x000000c6, 0x0003003e, 0x000000c5, - 0x000000c7, 0x0004003d, 0x00000007, 0x000000c9, 0x000000c5, 0x0004003d, 0x00000007, 0x000000ca, - 0x000000c5, 0x00050085, 0x00000007, 0x000000cb, 0x000000c9, 0x000000ca, 0x0004003d, 0x00000007, - 0x000000cc, 0x000000c5, 0x00050085, 0x00000007, 0x000000cd, 0x000000cb, 0x000000cc, 0x0004003d, - 0x00000007, 0x000000ce, 0x000000c5, 0x0004003d, 0x00000007, 0x000000cf, 0x000000c5, 0x0005008e, - 0x00000007, 0x000000d1, 0x000000cf, 0x000000d0, 0x00050050, 0x00000007, 0x000000d3, 0x000000d2, - 0x000000d2, 0x00050083, 0x00000007, 0x000000d4, 0x000000d1, 0x000000d3, 0x00050085, 0x00000007, - 0x000000d5, 0x000000ce, 0x000000d4, 0x00050050, 0x00000007, 0x000000d7, 0x000000d6, 0x000000d6, - 0x00050081, 0x00000007, 0x000000d8, 0x000000d5, 0x000000d7, 0x00050085, 0x00000007, 0x000000d9, - 0x000000cd, 0x000000d8, 0x0003003e, 0x000000c8, 0x000000d9, 0x0003003e, 0x000000db, 0x000000dd, - 0x0003003e, 0x000000e0, 0x000000e1, 0x000200f9, 0x000000e2, 0x000200f8, 0x000000e2, 0x000400f6, - 0x000000e4, 0x000000e5, 0x00000000, 0x000200f9, 0x000000e6, 0x000200f8, 0x000000e6, 0x0004003d, - 0x000000de, 0x000000e7, 0x000000e0, 0x000500b3, 0x000000ac, 0x000000e9, 0x000000e7, 0x000000e8, - 0x000400fa, 0x000000e9, 0x000000e3, 0x000000e4, 0x000200f8, 0x000000e3, 0x0003003e, 0x000000ea, - 0x000000e1, 0x000200f9, 0x000000eb, 0x000200f8, 0x000000eb, 0x000400f6, 0x000000ed, 0x000000ee, - 0x00000000, 0x000200f9, 0x000000ef, 0x000200f8, 0x000000ef, 0x0004003d, 0x000000de, 0x000000f0, - 0x000000ea, 0x000500b3, 0x000000ac, 0x000000f1, 0x000000f0, 0x000000e8, 0x000400fa, 0x000000f1, - 0x000000ec, 0x000000ed, 0x000200f8, 0x000000ec, 0x0004003d, 0x00000007, 0x000000f3, 0x000000c2, - 0x0004003d, 0x000000de, 0x000000f4, 0x000000ea, 0x0004006f, 0x00000006, 0x000000f5, 0x000000f4, - 0x0004003d, 0x000000de, 0x000000f6, 0x000000e0, 0x0004006f, 0x00000006, 0x000000f7, 0x000000f6, - 0x00050050, 0x00000007, 0x000000f8, 0x000000f5, 0x000000f7, 0x00050081, 0x00000007, 0x000000f9, - 0x000000f3, 0x000000f8, 0x0003003e, 0x000000f2, 0x000000f9, 0x0004003d, 0x00000007, 0x000000fc, - 0x000000f2, 0x0003003e, 0x000000fb, 0x000000fc, 0x00050039, 0x00000007, 0x000000fd, 0x0000000b, - 0x000000fb, 0x0003003e, 0x000000fa, 0x000000fd, 0x0004003d, 0x00000007, 0x000000ff, 0x000000f2, - 0x00050081, 0x00000007, 0x00000103, 0x000000ff, 0x00000102, 0x0003003e, 0x00000104, 0x00000103, - 0x00050039, 0x00000007, 0x00000105, 0x0000000b, 0x00000104, 0x0003003e, 0x000000fe, 0x00000105, - 0x0004003d, 0x00000007, 0x00000107, 0x000000fa, 0x0005008e, 0x00000007, 0x00000109, 0x00000107, - 0x00000108, 0x00050050, 0x00000007, 0x0000010b, 0x0000010a, 0x0000010a, 0x00050083, 0x00000007, - 0x0000010c, 0x00000109, 0x0000010b, 0x0004003d, 0x00000006, 0x0000010d, 0x0000001b, 0x0004003d, - 0x00000006, 0x0000010e, 0x000000b4, 0x00050088, 0x00000006, 0x0000010f, 0x0000010d, 0x0000010e, - 0x0005008e, 0x00000007, 0x00000110, 0x0000010c, 0x0000010f, 0x0003003e, 0x00000106, 0x00000110, - 0x00050041, 0x0000000d, 0x00000112, 0x000000fe, 0x00000094, 0x0004003d, 0x00000006, 0x00000113, - 0x00000112, 0x00050085, 0x00000006, 0x00000114, 0x00000113, 0x00000108, 0x00050083, 0x00000006, - 0x00000115, 0x00000114, 0x0000010a, 0x00050085, 0x00000006, 0x00000117, 0x00000115, 0x00000116, - 0x0004003d, 0x00000006, 0x00000118, 0x0000001c, 0x0008000c, 0x00000006, 0x00000119, 0x00000001, - 0x0000002b, 0x00000118, 0x000000dc, 0x0000010a, 0x00050085, 0x00000006, 0x0000011a, 0x00000117, - 0x00000119, 0x0004003d, 0x00000006, 0x0000011b, 0x0000001b, 0x00050085, 0x00000006, 0x0000011c, - 0x0000011a, 0x0000011b, 0x0003003e, 0x00000111, 0x0000011c, 0x0004003d, 0x00000007, 0x0000011e, - 0x000000f2, 0x00050081, 0x00000007, 0x00000121, 0x0000011e, 0x00000120, 0x0004003d, 0x00000006, - 0x00000122, 0x000000b4, 0x00050050, 0x00000007, 0x00000123, 0x00000122, 0x00000122, 0x00050088, - 0x00000007, 0x00000124, 0x00000121, 0x00000123, 0x0003003e, 0x0000011d, 0x00000124, 0x0004003d, - 0x00000007, 0x00000126, 0x0000011d, 0x0004003d, 0x00000007, 0x00000127, 0x00000019, 0x0004003d, - 0x00000007, 0x00000128, 0x0000011d, 0x00050083, 0x00000007, 0x00000129, 0x00000127, 0x00000128, - 0x0003003e, 0x0000012a, 0x00000129, 0x0004003d, 0x00000006, 0x0000012c, 0x00000111, 0x0003003e, - 0x0000012b, 0x0000012c, 0x00060039, 0x00000007, 0x0000012d, 0x00000011, 0x0000012a, 0x0000012b, - 0x00050081, 0x00000007, 0x0000012e, 0x00000126, 0x0000012d, 0x0004003d, 0x00000007, 0x0000012f, - 0x00000106, 0x00050081, 0x00000007, 0x00000130, 0x0000012e, 0x0000012f, 0x0003003e, 0x00000125, - 0x00000130, 0x00050041, 0x0000000d, 0x00000132, 0x000000c8, 0x00000094, 0x0004003d, 0x00000006, - 0x00000133, 0x00000132, 0x00050083, 0x00000006, 0x00000134, 0x0000010a, 0x00000133, 0x00050041, - 0x0000000d, 0x00000135, 0x000000c8, 0x00000094, 0x0004003d, 0x00000006, 0x00000136, 0x00000135, - 0x0004003d, 0x000000de, 0x00000137, 0x000000ea, 0x0004006f, 0x00000006, 0x00000138, 0x00000137, - 0x0008000c, 0x00000006, 0x00000139, 0x00000001, 0x0000002e, 0x00000134, 0x00000136, 0x00000138, - 0x00050041, 0x0000000d, 0x0000013a, 0x000000c8, 0x00000099, 0x0004003d, 0x00000006, 0x0000013b, - 0x0000013a, 0x00050083, 0x00000006, 0x0000013c, 0x0000010a, 0x0000013b, 0x00050041, 0x0000000d, - 0x0000013d, 0x000000c8, 0x00000099, 0x0004003d, 0x00000006, 0x0000013e, 0x0000013d, 0x0004003d, - 0x000000de, 0x0000013f, 0x000000e0, 0x0004006f, 0x00000006, 0x00000140, 0x0000013f, 0x0008000c, - 0x00000006, 0x00000141, 0x00000001, 0x0000002e, 0x0000013c, 0x0000013e, 0x00000140, 0x00050085, - 0x00000006, 0x00000142, 0x00000139, 0x00000141, 0x0003003e, 0x00000131, 0x00000142, 0x0004003d, - 0x00000014, 0x00000143, 0x00000018, 0x0004003d, 0x00000007, 0x00000144, 0x00000125, 0x0004003d, - 0x00000007, 0x00000145, 0x000000b8, 0x0004003d, 0x00000007, 0x00000146, 0x000000bb, 0x00080058, - 0x00000016, 0x00000147, 0x00000143, 0x00000144, 0x00000004, 0x00000145, 0x00000146, 0x0004003d, - 0x00000006, 0x00000148, 0x00000131, 0x0005008e, 0x00000016, 0x00000149, 0x00000147, 0x00000148, - 0x0004003d, 0x00000016, 0x0000014a, 0x000000db, 0x00050081, 0x00000016, 0x0000014b, 0x0000014a, - 0x00000149, 0x0003003e, 0x000000db, 0x0000014b, 0x000200f9, 0x000000ee, 0x000200f8, 0x000000ee, - 0x0004003d, 0x000000de, 0x0000014c, 0x000000ea, 0x00050080, 0x000000de, 0x0000014d, 0x0000014c, - 0x000000e8, 0x0003003e, 0x000000ea, 0x0000014d, 0x000200f9, 0x000000eb, 0x000200f8, 0x000000ed, - 0x000200f9, 0x000000e5, 0x000200f8, 0x000000e5, 0x0004003d, 0x000000de, 0x0000014e, 0x000000e0, - 0x00050080, 0x000000de, 0x0000014f, 0x0000014e, 0x000000e8, 0x0003003e, 0x000000e0, 0x0000014f, - 0x000200f9, 0x000000e2, 0x000200f8, 0x000000e4, 0x0004003d, 0x00000016, 0x00000150, 0x000000db, - 0x000200fe, 0x00000150, 0x00010038, 0x00050036, 0x00000021, 0x00000026, 0x00000000, 0x00000022, - 0x00030037, 0x00000020, 0x00000023, 0x00030037, 0x00000020, 0x00000024, 0x00030037, 0x00000008, - 0x00000025, 0x000200f8, 0x00000027, 0x0004003b, 0x00000020, 0x00000153, 0x00000007, 0x0004003b, - 0x00000020, 0x00000156, 0x00000007, 0x0004003b, 0x00000020, 0x00000159, 0x00000007, 0x0004003b, - 0x00000008, 0x0000015c, 0x00000007, 0x0004003b, 0x00000008, 0x0000015f, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000162, 0x00000007, 0x0004003b, 0x00000020, 0x00000184, 0x00000007, 0x0004003b, - 0x00000020, 0x00000193, 0x00000007, 0x0004003d, 0x0000001f, 0x00000154, 0x00000023, 0x0006000c, - 0x0000001f, 0x00000155, 0x00000001, 0x00000045, 0x00000154, 0x0003003e, 0x00000153, 0x00000155, - 0x0004003d, 0x0000001f, 0x00000157, 0x00000024, 0x000400cf, 0x0000001f, 0x00000158, 0x00000157, - 0x0003003e, 0x00000156, 0x00000158, 0x0004003d, 0x0000001f, 0x0000015a, 0x00000024, 0x000400d0, - 0x0000001f, 0x0000015b, 0x0000015a, 0x0003003e, 0x00000159, 0x0000015b, 0x0004003d, 0x00000007, - 0x0000015d, 0x00000025, 0x000400cf, 0x00000007, 0x0000015e, 0x0000015d, 0x0003003e, 0x0000015c, - 0x0000015e, 0x0004003d, 0x00000007, 0x00000160, 0x00000025, 0x000400d0, 0x00000007, 0x00000161, - 0x00000160, 0x0003003e, 0x0000015f, 0x00000161, 0x00050041, 0x0000000d, 0x00000163, 0x0000015c, - 0x00000094, 0x0004003d, 0x00000006, 0x00000164, 0x00000163, 0x00050041, 0x0000000d, 0x00000165, - 0x0000015f, 0x00000099, 0x0004003d, 0x00000006, 0x00000166, 0x00000165, 0x00050085, 0x00000006, - 0x00000167, 0x00000164, 0x00000166, 0x00050041, 0x0000000d, 0x00000168, 0x0000015f, 0x00000094, - 0x0004003d, 0x00000006, 0x00000169, 0x00000168, 0x00050041, 0x0000000d, 0x0000016a, 0x0000015c, - 0x00000099, 0x0004003d, 0x00000006, 0x0000016b, 0x0000016a, 0x00050085, 0x00000006, 0x0000016c, - 0x00000169, 0x0000016b, 0x00050083, 0x00000006, 0x0000016d, 0x00000167, 0x0000016c, 0x0003003e, - 0x00000162, 0x0000016d, 0x0004003d, 0x00000006, 0x0000016e, 0x00000162, 0x0006000c, 0x00000006, - 0x0000016f, 0x00000001, 0x00000004, 0x0000016e, 0x000500b8, 0x000000ac, 0x00000171, 0x0000016f, - 0x00000170, 0x000300f7, 0x00000173, 0x00000000, 0x000400fa, 0x00000171, 0x00000172, 0x00000173, - 0x000200f8, 0x00000172, 0x0004003d, 0x0000001f, 0x00000175, 0x00000153, 0x00050051, 0x00000006, - 0x00000176, 0x00000174, 0x00000000, 0x00050051, 0x00000006, 0x00000177, 0x00000174, 0x00000001, - 0x00050051, 0x00000006, 0x00000178, 0x00000174, 0x00000002, 0x00050051, 0x00000006, 0x00000179, - 0x00000174, 0x00000000, 0x00050051, 0x00000006, 0x0000017a, 0x00000174, 0x00000001, 0x00050051, - 0x00000006, 0x0000017b, 0x00000174, 0x00000002, 0x00050051, 0x00000006, 0x0000017c, 0x00000175, - 0x00000000, 0x00050051, 0x00000006, 0x0000017d, 0x00000175, 0x00000001, 0x00050051, 0x00000006, - 0x0000017e, 0x00000175, 0x00000002, 0x00060050, 0x0000001f, 0x0000017f, 0x00000176, 0x00000177, - 0x00000178, 0x00060050, 0x0000001f, 0x00000180, 0x00000179, 0x0000017a, 0x0000017b, 0x00060050, - 0x0000001f, 0x00000181, 0x0000017c, 0x0000017d, 0x0000017e, 0x00060050, 0x00000021, 0x00000182, - 0x0000017f, 0x00000180, 0x00000181, 0x000200fe, 0x00000182, 0x000200f8, 0x00000173, 0x0004003d, - 0x0000001f, 0x00000185, 0x00000159, 0x0004003d, 0x0000001f, 0x00000186, 0x00000153, 0x0007000c, - 0x0000001f, 0x00000187, 0x00000001, 0x00000044, 0x00000185, 0x00000186, 0x00050041, 0x0000000d, - 0x00000188, 0x0000015c, 0x00000094, 0x0004003d, 0x00000006, 0x00000189, 0x00000188, 0x0005008e, - 0x0000001f, 0x0000018a, 0x00000187, 0x00000189, 0x0004003d, 0x0000001f, 0x0000018b, 0x00000153, - 0x0004003d, 0x0000001f, 0x0000018c, 0x00000156, 0x0007000c, 0x0000001f, 0x0000018d, 0x00000001, - 0x00000044, 0x0000018b, 0x0000018c, 0x00050041, 0x0000000d, 0x0000018e, 0x0000015f, 0x00000094, - 0x0004003d, 0x00000006, 0x0000018f, 0x0000018e, 0x0005008e, 0x0000001f, 0x00000190, 0x0000018d, - 0x0000018f, 0x00050081, 0x0000001f, 0x00000191, 0x0000018a, 0x00000190, 0x0006000c, 0x0000001f, - 0x00000192, 0x00000001, 0x00000045, 0x00000191, 0x0003003e, 0x00000184, 0x00000192, 0x0004003d, - 0x0000001f, 0x00000194, 0x00000159, 0x0004003d, 0x0000001f, 0x00000195, 0x00000153, 0x0007000c, - 0x0000001f, 0x00000196, 0x00000001, 0x00000044, 0x00000194, 0x00000195, 0x00050041, 0x0000000d, - 0x00000197, 0x0000015c, 0x00000099, 0x0004003d, 0x00000006, 0x00000198, 0x00000197, 0x0005008e, - 0x0000001f, 0x00000199, 0x00000196, 0x00000198, 0x0004003d, 0x0000001f, 0x0000019a, 0x00000153, - 0x0004003d, 0x0000001f, 0x0000019b, 0x00000156, 0x0007000c, 0x0000001f, 0x0000019c, 0x00000001, - 0x00000044, 0x0000019a, 0x0000019b, 0x00050041, 0x0000000d, 0x0000019d, 0x0000015f, 0x00000099, - 0x0004003d, 0x00000006, 0x0000019e, 0x0000019d, 0x0005008e, 0x0000001f, 0x0000019f, 0x0000019c, - 0x0000019e, 0x00050081, 0x0000001f, 0x000001a0, 0x00000199, 0x0000019f, 0x0006000c, 0x0000001f, - 0x000001a1, 0x00000001, 0x00000045, 0x000001a0, 0x0003003e, 0x00000193, 0x000001a1, 0x0004003d, - 0x0000001f, 0x000001a2, 0x00000184, 0x0006000c, 0x00000006, 0x000001a3, 0x00000001, 0x00000042, - 0x000001a2, 0x000500b8, 0x000000ac, 0x000001a4, 0x000001a3, 0x000000ab, 0x000400a8, 0x000000ac, - 0x000001a5, 0x000001a4, 0x000300f7, 0x000001a7, 0x00000000, 0x000400fa, 0x000001a5, 0x000001a6, - 0x000001a7, 0x000200f8, 0x000001a6, 0x0004003d, 0x0000001f, 0x000001a8, 0x00000193, 0x0006000c, - 0x00000006, 0x000001a9, 0x00000001, 0x00000042, 0x000001a8, 0x000500b8, 0x000000ac, 0x000001aa, - 0x000001a9, 0x000000ab, 0x000200f9, 0x000001a7, 0x000200f8, 0x000001a7, 0x000700f5, 0x000000ac, - 0x000001ab, 0x000001a4, 0x00000173, 0x000001aa, 0x000001a6, 0x000300f7, 0x000001ad, 0x00000000, - 0x000400fa, 0x000001ab, 0x000001ac, 0x000001ad, 0x000200f8, 0x000001ac, 0x0004003d, 0x0000001f, - 0x000001ae, 0x00000153, 0x00050051, 0x00000006, 0x000001af, 0x00000174, 0x00000000, 0x00050051, - 0x00000006, 0x000001b0, 0x00000174, 0x00000001, 0x00050051, 0x00000006, 0x000001b1, 0x00000174, - 0x00000002, 0x00050051, 0x00000006, 0x000001b2, 0x00000174, 0x00000000, 0x00050051, 0x00000006, - 0x000001b3, 0x00000174, 0x00000001, 0x00050051, 0x00000006, 0x000001b4, 0x00000174, 0x00000002, - 0x00050051, 0x00000006, 0x000001b5, 0x000001ae, 0x00000000, 0x00050051, 0x00000006, 0x000001b6, - 0x000001ae, 0x00000001, 0x00050051, 0x00000006, 0x000001b7, 0x000001ae, 0x00000002, 0x00060050, - 0x0000001f, 0x000001b8, 0x000001af, 0x000001b0, 0x000001b1, 0x00060050, 0x0000001f, 0x000001b9, - 0x000001b2, 0x000001b3, 0x000001b4, 0x00060050, 0x0000001f, 0x000001ba, 0x000001b5, 0x000001b6, - 0x000001b7, 0x00060050, 0x00000021, 0x000001bb, 0x000001b8, 0x000001b9, 0x000001ba, 0x000200fe, - 0x000001bb, 0x000200f8, 0x000001ad, 0x0004003d, 0x0000001f, 0x000001bd, 0x00000184, 0x0004003d, - 0x0000001f, 0x000001be, 0x00000193, 0x0004003d, 0x0000001f, 0x000001bf, 0x00000153, 0x00050051, - 0x00000006, 0x000001c0, 0x000001bd, 0x00000000, 0x00050051, 0x00000006, 0x000001c1, 0x000001bd, - 0x00000001, 0x00050051, 0x00000006, 0x000001c2, 0x000001bd, 0x00000002, 0x00050051, 0x00000006, - 0x000001c3, 0x000001be, 0x00000000, 0x00050051, 0x00000006, 0x000001c4, 0x000001be, 0x00000001, - 0x00050051, 0x00000006, 0x000001c5, 0x000001be, 0x00000002, 0x00050051, 0x00000006, 0x000001c6, - 0x000001bf, 0x00000000, 0x00050051, 0x00000006, 0x000001c7, 0x000001bf, 0x00000001, 0x00050051, - 0x00000006, 0x000001c8, 0x000001bf, 0x00000002, 0x00060050, 0x0000001f, 0x000001c9, 0x000001c0, - 0x000001c1, 0x000001c2, 0x00060050, 0x0000001f, 0x000001ca, 0x000001c3, 0x000001c4, 0x000001c5, - 0x00060050, 0x0000001f, 0x000001cb, 0x000001c6, 0x000001c7, 0x000001c8, 0x00060050, 0x00000021, - 0x000001cc, 0x000001c9, 0x000001ca, 0x000001cb, 0x000200fe, 0x000001cc, 0x00010038, 0x00050036, - 0x00000007, 0x0000002f, 0x00000000, 0x00000028, 0x00030037, 0x00000015, 0x00000029, 0x00030037, - 0x00000008, 0x0000002a, 0x00030037, 0x00000020, 0x0000002b, 0x00030037, 0x0000000d, 0x0000002c, - 0x00030037, 0x0000000d, 0x0000002d, 0x00030037, 0x0000000d, 0x0000002e, 0x000200f8, 0x00000030, - 0x0004003b, 0x0000000d, 0x000001d6, 0x00000007, 0x0004003b, 0x0000000d, 0x000001e4, 0x00000007, - 0x0004003b, 0x0000000d, 0x000001e7, 0x00000007, 0x0004003b, 0x00000008, 0x000001ed, 0x00000007, - 0x0004003b, 0x00000008, 0x000001f5, 0x00000007, 0x0004003b, 0x00000008, 0x000001fa, 0x00000007, - 0x0004003b, 0x0000000d, 0x000001fc, 0x00000007, 0x0004003b, 0x0000000d, 0x000001fd, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000202, 0x00000007, 0x0004003b, 0x000000df, 0x00000205, 0x00000007, - 0x0004003b, 0x00000008, 0x0000022a, 0x00000007, 0x0004003b, 0x0000000d, 0x0000022e, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000232, 0x00000007, 0x0004003b, 0x0000000d, 0x0000023c, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000240, 0x00000007, 0x0004003b, 0x0000000d, 0x00000244, 0x00000007, - 0x0004003d, 0x00000006, 0x000001cf, 0x0000002c, 0x000500b8, 0x000000ac, 0x000001d1, 0x000001cf, - 0x000001d0, 0x000300f7, 0x000001d3, 0x00000000, 0x000400fa, 0x000001d1, 0x000001d2, 0x000001d3, - 0x000200f8, 0x000001d2, 0x0004003d, 0x00000007, 0x000001d4, 0x0000002a, 0x000200fe, 0x000001d4, - 0x000200f8, 0x000001d3, 0x0004003d, 0x00000006, 0x000001d7, 0x0000002e, 0x0007000c, 0x00000006, - 0x000001d8, 0x00000001, 0x00000028, 0x000001d7, 0x0000010a, 0x0004003d, 0x00000006, 0x000001d9, - 0x0000002d, 0x0007000c, 0x00000006, 0x000001da, 0x00000001, 0x00000028, 0x000001d9, 0x0000010a, - 0x00050041, 0x0000000d, 0x000001dc, 0x0000002b, 0x000001db, 0x0004003d, 0x00000006, 0x000001dd, - 0x000001dc, 0x0006000c, 0x00000006, 0x000001de, 0x00000001, 0x00000004, 0x000001dd, 0x0008000c, - 0x00000006, 0x000001df, 0x00000001, 0x0000002b, 0x000001de, 0x000000dc, 0x0000010a, 0x0008000c, - 0x00000006, 0x000001e0, 0x00000001, 0x0000002e, 0x000001d8, 0x000001da, 0x000001df, 0x0003003e, - 0x000001d6, 0x000001e0, 0x0004003d, 0x00000006, 0x000001e1, 0x000001d6, 0x0008000c, 0x00000006, - 0x000001e3, 0x00000001, 0x0000002b, 0x000001e1, 0x0000010a, 0x000001e2, 0x0003003e, 0x000001d6, - 0x000001e3, 0x0004003d, 0x00000006, 0x000001e5, 0x000001d6, 0x00050088, 0x00000006, 0x000001e6, - 0x0000010a, 0x000001e5, 0x0003003e, 0x000001e4, 0x000001e6, 0x00050041, 0x0000000d, 0x000001e8, - 0x0000002b, 0x000001db, 0x0004003d, 0x00000006, 0x000001e9, 0x000001e8, 0x0006000c, 0x00000006, - 0x000001ea, 0x00000001, 0x00000004, 0x000001e9, 0x0007000c, 0x00000006, 0x000001ec, 0x00000001, - 0x00000028, 0x000001ea, 0x000001eb, 0x0003003e, 0x000001e7, 0x000001ec, 0x0004003d, 0x0000001f, - 0x000001ee, 0x0000002b, 0x0007004f, 0x00000007, 0x000001ef, 0x000001ee, 0x000001ee, 0x00000000, - 0x00000001, 0x0004003d, 0x00000006, 0x000001f0, 0x000001e7, 0x00050050, 0x00000007, 0x000001f1, - 0x000001f0, 0x000001f0, 0x00050088, 0x00000007, 0x000001f2, 0x000001ef, 0x000001f1, 0x0004003d, - 0x00000006, 0x000001f3, 0x0000002c, 0x0005008e, 0x00000007, 0x000001f4, 0x000001f2, 0x000001f3, - 0x0003003e, 0x000001ed, 0x000001f4, 0x0004003d, 0x00000007, 0x000001f6, 0x000001ed, 0x0004003d, - 0x00000006, 0x000001f7, 0x000001d6, 0x00050050, 0x00000007, 0x000001f8, 0x000001f7, 0x000001f7, - 0x00050088, 0x00000007, 0x000001f9, 0x000001f6, 0x000001f8, 0x0003003e, 0x000001f5, 0x000001f9, - 0x0004003d, 0x00000007, 0x000001fb, 0x0000002a, 0x0003003e, 0x000001fa, 0x000001fb, 0x0003003e, - 0x000001fc, 0x000000dc, 0x0004003d, 0x00000014, 0x000001fe, 0x00000029, 0x0004003d, 0x00000007, - 0x000001ff, 0x000001fa, 0x00050057, 0x00000016, 0x00000200, 0x000001fe, 0x000001ff, 0x00050051, - 0x00000006, 0x00000201, 0x00000200, 0x00000000, 0x0003003e, 0x000001fd, 0x00000201, 0x0004003d, - 0x00000006, 0x00000203, 0x000001fd, 0x00050083, 0x00000006, 0x00000204, 0x0000010a, 0x00000203, - 0x0003003e, 0x00000202, 0x00000204, 0x0003003e, 0x00000205, 0x000000e1, 0x000200f9, 0x00000206, - 0x000200f8, 0x00000206, 0x000400f6, 0x00000208, 0x00000209, 0x00000000, 0x000200f9, 0x0000020a, - 0x000200f8, 0x0000020a, 0x0004003d, 0x000000de, 0x0000020b, 0x00000205, 0x000500b1, 0x000000ac, - 0x0000020d, 0x0000020b, 0x0000020c, 0x000400fa, 0x0000020d, 0x00000207, 0x00000208, 0x000200f8, - 0x00000207, 0x0004003d, 0x00000006, 0x0000020e, 0x000001fc, 0x0004003d, 0x00000006, 0x0000020f, - 0x00000202, 0x000500be, 0x000000ac, 0x00000210, 0x0000020e, 0x0000020f, 0x000400a8, 0x000000ac, - 0x00000211, 0x00000210, 0x000300f7, 0x00000213, 0x00000000, 0x000400fa, 0x00000211, 0x00000212, - 0x00000213, 0x000200f8, 0x00000212, 0x0004003d, 0x000000de, 0x00000214, 0x00000205, 0x0004006f, - 0x00000006, 0x00000215, 0x00000214, 0x0004003d, 0x00000006, 0x00000216, 0x000001d6, 0x000500be, - 0x000000ac, 0x00000217, 0x00000215, 0x00000216, 0x000200f9, 0x00000213, 0x000200f8, 0x00000213, - 0x000700f5, 0x000000ac, 0x00000218, 0x00000210, 0x00000207, 0x00000217, 0x00000212, 0x000300f7, - 0x0000021a, 0x00000000, 0x000400fa, 0x00000218, 0x00000219, 0x0000021a, 0x000200f8, 0x00000219, - 0x000200f9, 0x00000208, 0x000200f8, 0x0000021a, 0x0004003d, 0x00000007, 0x0000021c, 0x000001f5, - 0x0004003d, 0x00000007, 0x0000021d, 0x000001fa, 0x00050083, 0x00000007, 0x0000021e, 0x0000021d, - 0x0000021c, 0x0003003e, 0x000001fa, 0x0000021e, 0x0004003d, 0x00000014, 0x0000021f, 0x00000029, - 0x0004003d, 0x00000007, 0x00000220, 0x000001fa, 0x00050057, 0x00000016, 0x00000221, 0x0000021f, - 0x00000220, 0x00050051, 0x00000006, 0x00000222, 0x00000221, 0x00000000, 0x0003003e, 0x000001fd, - 0x00000222, 0x0004003d, 0x00000006, 0x00000223, 0x000001fd, 0x00050083, 0x00000006, 0x00000224, - 0x0000010a, 0x00000223, 0x0003003e, 0x00000202, 0x00000224, 0x0004003d, 0x00000006, 0x00000225, - 0x000001e4, 0x0004003d, 0x00000006, 0x00000226, 0x000001fc, 0x00050081, 0x00000006, 0x00000227, - 0x00000226, 0x00000225, 0x0003003e, 0x000001fc, 0x00000227, 0x000200f9, 0x00000209, 0x000200f8, - 0x00000209, 0x0004003d, 0x000000de, 0x00000228, 0x00000205, 0x00050080, 0x000000de, 0x00000229, - 0x00000228, 0x000000e8, 0x0003003e, 0x00000205, 0x00000229, 0x000200f9, 0x00000206, 0x000200f8, - 0x00000208, 0x0004003d, 0x00000007, 0x0000022b, 0x000001fa, 0x0004003d, 0x00000007, 0x0000022c, - 0x000001f5, 0x00050081, 0x00000007, 0x0000022d, 0x0000022b, 0x0000022c, 0x0003003e, 0x0000022a, - 0x0000022d, 0x0004003d, 0x00000006, 0x0000022f, 0x00000202, 0x0004003d, 0x00000006, 0x00000230, - 0x000001fc, 0x00050083, 0x00000006, 0x00000231, 0x0000022f, 0x00000230, 0x0003003e, 0x0000022e, - 0x00000231, 0x0004003d, 0x00000014, 0x00000233, 0x00000029, 0x0004003d, 0x00000007, 0x00000234, - 0x0000022a, 0x00050057, 0x00000016, 0x00000235, 0x00000233, 0x00000234, 0x00050051, 0x00000006, - 0x00000236, 0x00000235, 0x00000000, 0x00050083, 0x00000006, 0x00000237, 0x0000010a, 0x00000236, - 0x0004003d, 0x00000006, 0x00000238, 0x000001fc, 0x0004003d, 0x00000006, 0x00000239, 0x000001e4, - 0x00050083, 0x00000006, 0x0000023a, 0x00000238, 0x00000239, 0x00050083, 0x00000006, 0x0000023b, - 0x00000237, 0x0000023a, 0x0003003e, 0x00000232, 0x0000023b, 0x0004003d, 0x00000006, 0x0000023d, - 0x0000022e, 0x0004003d, 0x00000006, 0x0000023e, 0x00000232, 0x00050083, 0x00000006, 0x0000023f, - 0x0000023d, 0x0000023e, 0x0003003e, 0x0000023c, 0x0000023f, 0x0004003d, 0x00000006, 0x00000241, - 0x0000023c, 0x0006000c, 0x00000006, 0x00000242, 0x00000001, 0x00000004, 0x00000241, 0x000500b8, - 0x000000ac, 0x00000243, 0x00000242, 0x000001d0, 0x000300f7, 0x00000246, 0x00000000, 0x000400fa, - 0x00000243, 0x00000245, 0x00000247, 0x000200f8, 0x00000245, 0x0003003e, 0x00000244, 0x0000011f, - 0x000200f9, 0x00000246, 0x000200f8, 0x00000247, 0x0004003d, 0x00000006, 0x00000248, 0x0000022e, - 0x0004003d, 0x00000006, 0x00000249, 0x0000023c, 0x00050088, 0x00000006, 0x0000024a, 0x00000248, - 0x00000249, 0x0008000c, 0x00000006, 0x0000024b, 0x00000001, 0x0000002b, 0x0000024a, 0x000000dc, - 0x0000010a, 0x0003003e, 0x00000244, 0x0000024b, 0x000200f9, 0x00000246, 0x000200f8, 0x00000246, - 0x0004003d, 0x00000006, 0x0000024c, 0x00000244, 0x0003003e, 0x00000240, 0x0000024c, 0x0004003d, - 0x00000007, 0x0000024d, 0x000001fa, 0x0004003d, 0x00000007, 0x0000024e, 0x0000022a, 0x0004003d, - 0x00000006, 0x0000024f, 0x00000240, 0x00050050, 0x00000007, 0x00000250, 0x0000024f, 0x0000024f, - 0x0008000c, 0x00000007, 0x00000251, 0x00000001, 0x0000002e, 0x0000024d, 0x0000024e, 0x00000250, - 0x000200fe, 0x00000251, 0x00010038, 0x00050036, 0x00000007, 0x0000003a, 0x00000000, 0x00000031, - 0x00030037, 0x00000015, 0x00000032, 0x00030037, 0x00000008, 0x00000033, 0x00030037, 0x00000020, - 0x00000034, 0x00030037, 0x00000020, 0x00000035, 0x00030037, 0x00000020, 0x00000036, 0x00030037, - 0x0000000d, 0x00000037, 0x00030037, 0x0000000d, 0x00000038, 0x00030037, 0x0000000d, 0x00000039, - 0x000200f8, 0x0000003b, 0x0004003b, 0x0000025a, 0x0000025b, 0x00000007, 0x0004003b, 0x00000020, - 0x0000025c, 0x00000007, 0x0004003b, 0x00000020, 0x0000025e, 0x00000007, 0x0004003b, 0x00000008, - 0x00000260, 0x00000007, 0x0004003b, 0x00000020, 0x0000026b, 0x00000007, 0x0004003b, 0x00000008, - 0x00000271, 0x00000007, 0x0004003b, 0x00000020, 0x00000273, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000275, 0x00000007, 0x0004003b, 0x0000000d, 0x00000277, 0x00000007, 0x0004003b, 0x0000000d, - 0x00000279, 0x00000007, 0x0004003d, 0x00000006, 0x00000254, 0x00000037, 0x000500b8, 0x000000ac, - 0x00000255, 0x00000254, 0x000001d0, 0x000300f7, 0x00000257, 0x00000000, 0x000400fa, 0x00000255, - 0x00000256, 0x00000257, 0x000200f8, 0x00000256, 0x0004003d, 0x00000007, 0x00000258, 0x00000033, - 0x000200fe, 0x00000258, 0x000200f8, 0x00000257, 0x0004003d, 0x0000001f, 0x0000025d, 0x00000034, - 0x0003003e, 0x0000025c, 0x0000025d, 0x0004003d, 0x0000001f, 0x0000025f, 0x00000035, 0x0003003e, - 0x0000025e, 0x0000025f, 0x0004003d, 0x00000007, 0x00000261, 0x00000033, 0x0003003e, 0x00000260, - 0x00000261, 0x00070039, 0x00000021, 0x00000262, 0x00000026, 0x0000025c, 0x0000025e, 0x00000260, - 0x0003003e, 0x0000025b, 0x00000262, 0x00050041, 0x00000020, 0x00000263, 0x0000025b, 0x000000e1, - 0x0004003d, 0x0000001f, 0x00000264, 0x00000263, 0x0006000c, 0x00000006, 0x00000265, 0x00000001, - 0x00000042, 0x00000264, 0x000500b8, 0x000000ac, 0x00000266, 0x00000265, 0x000000ab, 0x000300f7, - 0x00000268, 0x00000000, 0x000400fa, 0x00000266, 0x00000267, 0x00000268, 0x000200f8, 0x00000267, - 0x0004003d, 0x00000007, 0x00000269, 0x00000033, 0x000200fe, 0x00000269, 0x000200f8, 0x00000268, - 0x0004003d, 0x00000021, 0x0000026c, 0x0000025b, 0x00040054, 0x00000021, 0x0000026d, 0x0000026c, - 0x0004003d, 0x0000001f, 0x0000026e, 0x00000036, 0x00050091, 0x0000001f, 0x0000026f, 0x0000026d, - 0x0000026e, 0x0006000c, 0x0000001f, 0x00000270, 0x00000001, 0x00000045, 0x0000026f, 0x0003003e, - 0x0000026b, 0x00000270, 0x0004003d, 0x00000007, 0x00000272, 0x00000033, 0x0003003e, 0x00000271, - 0x00000272, 0x0004003d, 0x0000001f, 0x00000274, 0x0000026b, 0x0003003e, 0x00000273, 0x00000274, - 0x0004003d, 0x00000006, 0x00000276, 0x00000037, 0x0003003e, 0x00000275, 0x00000276, 0x0004003d, - 0x00000006, 0x00000278, 0x00000038, 0x0003003e, 0x00000277, 0x00000278, 0x0004003d, 0x00000006, - 0x0000027a, 0x00000039, 0x0003003e, 0x00000279, 0x0000027a, 0x000a0039, 0x00000007, 0x0000027b, - 0x0000002f, 0x00000032, 0x00000271, 0x00000273, 0x00000275, 0x00000277, 0x00000279, 0x000200fe, - 0x0000027b, 0x00010038, 0x00050036, 0x0000001f, 0x0000003e, 0x00000000, 0x0000003c, 0x00030037, - 0x00000020, 0x0000003d, 0x000200f8, 0x0000003f, 0x0004003b, 0x00000020, 0x0000027e, 0x00000007, - 0x0004003b, 0x0000000d, 0x00000284, 0x00000007, 0x0004003d, 0x0000001f, 0x0000027f, 0x0000003d, - 0x00050083, 0x0000001f, 0x00000282, 0x0000027f, 0x00000281, 0x0007000c, 0x0000001f, 0x00000283, - 0x00000001, 0x00000028, 0x00000282, 0x00000174, 0x0003003e, 0x0000027e, 0x00000283, 0x0003003e, - 0x00000284, 0x00000285, 0x0004003d, 0x0000001f, 0x00000286, 0x0000003d, 0x0007000c, 0x0000001f, - 0x00000287, 0x00000001, 0x00000025, 0x00000286, 0x00000281, 0x0004003d, 0x00000006, 0x00000288, - 0x00000284, 0x00060050, 0x0000001f, 0x00000289, 0x00000288, 0x00000288, 0x00000288, 0x0004003d, - 0x0000001f, 0x0000028a, 0x0000027e, 0x0004003d, 0x0000001f, 0x0000028b, 0x0000027e, 0x00050081, - 0x0000001f, 0x0000028d, 0x0000028b, 0x0000028c, 0x00050088, 0x0000001f, 0x0000028e, 0x0000028a, - 0x0000028d, 0x00050085, 0x0000001f, 0x0000028f, 0x00000289, 0x0000028e, 0x00050081, 0x0000001f, - 0x00000290, 0x00000287, 0x0000028f, 0x000200fe, 0x00000290, 0x00010038, 0x00050036, 0x00000006, - 0x00000044, 0x00000000, 0x00000040, 0x00030037, 0x00000020, 0x00000041, 0x00030037, 0x00000020, - 0x00000042, 0x00030037, 0x0000000d, 0x00000043, 0x000200f8, 0x00000045, 0x0004003b, 0x0000000d, - 0x00000293, 0x00000007, 0x0004003b, 0x0000000d, 0x00000299, 0x00000007, 0x0004003b, 0x0000000d, - 0x0000029d, 0x00000007, 0x0004003b, 0x0000000d, 0x000002a2, 0x00000007, 0x0004003d, 0x00000006, - 0x00000294, 0x00000043, 0x0004003d, 0x00000006, 0x00000295, 0x00000043, 0x00050085, 0x00000006, - 0x00000296, 0x00000294, 0x00000295, 0x0007000c, 0x00000006, 0x00000298, 0x00000001, 0x00000028, - 0x00000296, 0x00000297, 0x0003003e, 0x00000293, 0x00000298, 0x0004003d, 0x00000006, 0x0000029a, - 0x00000293, 0x0004003d, 0x00000006, 0x0000029b, 0x00000293, 0x00050085, 0x00000006, 0x0000029c, - 0x0000029a, 0x0000029b, 0x0003003e, 0x00000299, 0x0000029c, 0x0004003d, 0x0000001f, 0x0000029e, - 0x00000041, 0x0004003d, 0x0000001f, 0x0000029f, 0x00000042, 0x00050094, 0x00000006, 0x000002a0, - 0x0000029e, 0x0000029f, 0x0007000c, 0x00000006, 0x000002a1, 0x00000001, 0x00000028, 0x000002a0, - 0x000000dc, 0x0003003e, 0x0000029d, 0x000002a1, 0x0004003d, 0x00000006, 0x000002a3, 0x0000029d, - 0x0004003d, 0x00000006, 0x000002a4, 0x0000029d, 0x00050085, 0x00000006, 0x000002a5, 0x000002a3, - 0x000002a4, 0x0004003d, 0x00000006, 0x000002a6, 0x00000299, 0x00050083, 0x00000006, 0x000002a7, - 0x000002a6, 0x0000010a, 0x00050085, 0x00000006, 0x000002a8, 0x000002a5, 0x000002a7, 0x00050081, - 0x00000006, 0x000002a9, 0x000002a8, 0x0000010a, 0x0003003e, 0x000002a2, 0x000002a9, 0x0004003d, - 0x00000006, 0x000002aa, 0x00000299, 0x0004003d, 0x00000006, 0x000002ab, 0x000002a2, 0x00050085, - 0x00000006, 0x000002ac, 0x00000116, 0x000002ab, 0x0004003d, 0x00000006, 0x000002ad, 0x000002a2, - 0x00050085, 0x00000006, 0x000002ae, 0x000002ac, 0x000002ad, 0x0007000c, 0x00000006, 0x000002af, - 0x00000001, 0x00000028, 0x000002ae, 0x000000ab, 0x00050088, 0x00000006, 0x000002b0, 0x000002aa, - 0x000002af, 0x000200fe, 0x000002b0, 0x00010038, 0x00050036, 0x00000006, 0x00000049, 0x00000000, - 0x00000046, 0x00030037, 0x0000000d, 0x00000047, 0x00030037, 0x0000000d, 0x00000048, 0x000200f8, - 0x0000004a, 0x0004003b, 0x0000000d, 0x000002b3, 0x00000007, 0x0004003b, 0x0000000d, 0x000002b6, - 0x00000007, 0x0004003d, 0x00000006, 0x000002b4, 0x00000048, 0x00050081, 0x00000006, 0x000002b5, - 0x000002b4, 0x0000010a, 0x0003003e, 0x000002b3, 0x000002b5, 0x0004003d, 0x00000006, 0x000002b7, - 0x000002b3, 0x0004003d, 0x00000006, 0x000002b8, 0x000002b3, 0x00050085, 0x00000006, 0x000002b9, - 0x000002b7, 0x000002b8, 0x00050088, 0x00000006, 0x000002bb, 0x000002b9, 0x000002ba, 0x0003003e, - 0x000002b6, 0x000002bb, 0x0004003d, 0x00000006, 0x000002bc, 0x00000047, 0x0004003d, 0x00000006, - 0x000002bd, 0x00000047, 0x0004003d, 0x00000006, 0x000002be, 0x000002b6, 0x00050083, 0x00000006, - 0x000002bf, 0x0000010a, 0x000002be, 0x00050085, 0x00000006, 0x000002c0, 0x000002bd, 0x000002bf, - 0x0004003d, 0x00000006, 0x000002c1, 0x000002b6, 0x00050081, 0x00000006, 0x000002c2, 0x000002c0, - 0x000002c1, 0x0007000c, 0x00000006, 0x000002c3, 0x00000001, 0x00000028, 0x000002c2, 0x000000ab, - 0x00050088, 0x00000006, 0x000002c4, 0x000002bc, 0x000002c3, 0x000200fe, 0x000002c4, 0x00010038, - 0x00050036, 0x00000006, 0x00000050, 0x00000000, 0x0000004b, 0x00030037, 0x00000020, 0x0000004c, - 0x00030037, 0x00000020, 0x0000004d, 0x00030037, 0x00000020, 0x0000004e, 0x00030037, 0x0000000d, - 0x0000004f, 0x000200f8, 0x00000051, 0x0004003b, 0x0000000d, 0x000002cb, 0x00000007, 0x0004003b, - 0x0000000d, 0x000002cc, 0x00000007, 0x0004003b, 0x0000000d, 0x000002d3, 0x00000007, 0x0004003b, - 0x0000000d, 0x000002d4, 0x00000007, 0x0004003d, 0x0000001f, 0x000002c7, 0x0000004c, 0x0004003d, - 0x0000001f, 0x000002c8, 0x0000004d, 0x00050094, 0x00000006, 0x000002c9, 0x000002c7, 0x000002c8, - 0x0007000c, 0x00000006, 0x000002ca, 0x00000001, 0x00000028, 0x000002c9, 0x000000dc, 0x0003003e, - 0x000002cb, 0x000002ca, 0x0004003d, 0x00000006, 0x000002cd, 0x0000004f, 0x0003003e, 0x000002cc, - 0x000002cd, 0x00060039, 0x00000006, 0x000002ce, 0x00000049, 0x000002cb, 0x000002cc, 0x0004003d, - 0x0000001f, 0x000002cf, 0x0000004c, 0x0004003d, 0x0000001f, 0x000002d0, 0x0000004e, 0x00050094, - 0x00000006, 0x000002d1, 0x000002cf, 0x000002d0, 0x0007000c, 0x00000006, 0x000002d2, 0x00000001, - 0x00000028, 0x000002d1, 0x000000dc, 0x0003003e, 0x000002d3, 0x000002d2, 0x0004003d, 0x00000006, - 0x000002d5, 0x0000004f, 0x0003003e, 0x000002d4, 0x000002d5, 0x00060039, 0x00000006, 0x000002d6, - 0x00000049, 0x000002d3, 0x000002d4, 0x00050085, 0x00000006, 0x000002d7, 0x000002ce, 0x000002d6, - 0x000200fe, 0x000002d7, 0x00010038, 0x00050036, 0x0000001f, 0x00000055, 0x00000000, 0x00000052, - 0x00030037, 0x0000000d, 0x00000053, 0x00030037, 0x00000020, 0x00000054, 0x000200f8, 0x00000056, - 0x0004003d, 0x0000001f, 0x000002da, 0x00000054, 0x0004003d, 0x0000001f, 0x000002db, 0x00000054, - 0x00060050, 0x0000001f, 0x000002dc, 0x0000010a, 0x0000010a, 0x0000010a, 0x00050083, 0x0000001f, - 0x000002dd, 0x000002dc, 0x000002db, 0x0004003d, 0x00000006, 0x000002de, 0x00000053, 0x00050083, - 0x00000006, 0x000002df, 0x0000010a, 0x000002de, 0x0008000c, 0x00000006, 0x000002e0, 0x00000001, - 0x0000002b, 0x000002df, 0x000000dc, 0x0000010a, 0x0007000c, 0x00000006, 0x000002e2, 0x00000001, - 0x0000001a, 0x000002e0, 0x000002e1, 0x0005008e, 0x0000001f, 0x000002e3, 0x000002dd, 0x000002e2, - 0x00050081, 0x0000001f, 0x000002e4, 0x000002da, 0x000002e3, 0x000200fe, 0x000002e4, 0x00010038, - 0x00050036, 0x0000001f, 0x0000005c, 0x00000000, 0x00000057, 0x00030037, 0x00000020, 0x00000058, - 0x00030037, 0x00000020, 0x00000059, 0x00030037, 0x00000020, 0x0000005a, 0x00030037, 0x00000008, - 0x0000005b, 0x000200f8, 0x0000005d, 0x0004003b, 0x00000020, 0x000002e7, 0x00000007, 0x0004003b, - 0x00000020, 0x000002fc, 0x00000007, 0x0004003b, 0x00000020, 0x000002ff, 0x00000007, 0x0004003b, - 0x00000008, 0x00000302, 0x00000007, 0x0004003b, 0x00000008, 0x00000305, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000308, 0x00000007, 0x0004003b, 0x0000000d, 0x0000031d, 0x00000007, 0x0004003b, - 0x00000020, 0x00000320, 0x00000007, 0x0004003b, 0x00000020, 0x0000032c, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000341, 0x00000007, 0x0004003b, 0x0000000d, 0x00000344, 0x00000007, 0x0004003d, - 0x0000001f, 0x000002e8, 0x00000059, 0x0005008e, 0x0000001f, 0x000002e9, 0x000002e8, 0x00000108, - 0x00060050, 0x0000001f, 0x000002ea, 0x0000010a, 0x0000010a, 0x0000010a, 0x00050083, 0x0000001f, - 0x000002eb, 0x000002e9, 0x000002ea, 0x0003003e, 0x000002e7, 0x000002eb, 0x0004003d, 0x0000001f, - 0x000002ec, 0x000002e7, 0x0007004f, 0x00000007, 0x000002ed, 0x000002ec, 0x000002ec, 0x00000000, - 0x00000001, 0x0006000c, 0x00000006, 0x000002ee, 0x00000001, 0x00000042, 0x000002ed, 0x000500b8, - 0x000000ac, 0x000002f0, 0x000002ee, 0x000002ef, 0x000300f7, 0x000002f2, 0x00000000, 0x000400fa, - 0x000002f0, 0x000002f1, 0x000002f2, 0x000200f8, 0x000002f1, 0x00050041, 0x0000000d, 0x000002f3, - 0x000002e7, 0x000001db, 0x0004003d, 0x00000006, 0x000002f4, 0x000002f3, 0x000500ba, 0x000000ac, - 0x000002f5, 0x000002f4, 0x00000280, 0x000200f9, 0x000002f2, 0x000200f8, 0x000002f2, 0x000700f5, - 0x000000ac, 0x000002f6, 0x000002f0, 0x0000005d, 0x000002f5, 0x000002f1, 0x000300f7, 0x000002f8, - 0x00000000, 0x000400fa, 0x000002f6, 0x000002f7, 0x000002f8, 0x000200f8, 0x000002f7, 0x0004003d, - 0x0000001f, 0x000002f9, 0x00000058, 0x0006000c, 0x0000001f, 0x000002fa, 0x00000001, 0x00000045, - 0x000002f9, 0x000200fe, 0x000002fa, 0x000200f8, 0x000002f8, 0x0004003d, 0x0000001f, 0x000002fd, - 0x0000005a, 0x000400cf, 0x0000001f, 0x000002fe, 0x000002fd, 0x0003003e, 0x000002fc, 0x000002fe, - 0x0004003d, 0x0000001f, 0x00000300, 0x0000005a, 0x000400d0, 0x0000001f, 0x00000301, 0x00000300, - 0x0003003e, 0x000002ff, 0x00000301, 0x0004003d, 0x00000007, 0x00000303, 0x0000005b, 0x000400cf, - 0x00000007, 0x00000304, 0x00000303, 0x0003003e, 0x00000302, 0x00000304, 0x0004003d, 0x00000007, - 0x00000306, 0x0000005b, 0x000400d0, 0x00000007, 0x00000307, 0x00000306, 0x0003003e, 0x00000305, - 0x00000307, 0x00050041, 0x0000000d, 0x00000309, 0x00000302, 0x00000094, 0x0004003d, 0x00000006, - 0x0000030a, 0x00000309, 0x00050041, 0x0000000d, 0x0000030b, 0x00000305, 0x00000099, 0x0004003d, - 0x00000006, 0x0000030c, 0x0000030b, 0x00050085, 0x00000006, 0x0000030d, 0x0000030a, 0x0000030c, - 0x00050041, 0x0000000d, 0x0000030e, 0x00000305, 0x00000094, 0x0004003d, 0x00000006, 0x0000030f, - 0x0000030e, 0x00050041, 0x0000000d, 0x00000310, 0x00000302, 0x00000099, 0x0004003d, 0x00000006, - 0x00000311, 0x00000310, 0x00050085, 0x00000006, 0x00000312, 0x0000030f, 0x00000311, 0x00050083, - 0x00000006, 0x00000313, 0x0000030d, 0x00000312, 0x0003003e, 0x00000308, 0x00000313, 0x0004003d, - 0x00000006, 0x00000314, 0x00000308, 0x0006000c, 0x00000006, 0x00000315, 0x00000001, 0x00000004, - 0x00000314, 0x000500b8, 0x000000ac, 0x00000317, 0x00000315, 0x00000316, 0x000300f7, 0x00000319, - 0x00000000, 0x000400fa, 0x00000317, 0x00000318, 0x00000319, 0x000200f8, 0x00000318, 0x0004003d, - 0x0000001f, 0x0000031a, 0x00000058, 0x0006000c, 0x0000001f, 0x0000031b, 0x00000001, 0x00000045, - 0x0000031a, 0x000200fe, 0x0000031b, 0x000200f8, 0x00000319, 0x0004003d, 0x00000006, 0x0000031e, - 0x00000308, 0x00050088, 0x00000006, 0x0000031f, 0x0000010a, 0x0000031e, 0x0003003e, 0x0000031d, - 0x0000031f, 0x0004003d, 0x0000001f, 0x00000321, 0x000002fc, 0x00050041, 0x0000000d, 0x00000322, - 0x00000305, 0x00000099, 0x0004003d, 0x00000006, 0x00000323, 0x00000322, 0x0005008e, 0x0000001f, - 0x00000324, 0x00000321, 0x00000323, 0x0004003d, 0x0000001f, 0x00000325, 0x000002ff, 0x00050041, - 0x0000000d, 0x00000326, 0x00000302, 0x00000099, 0x0004003d, 0x00000006, 0x00000327, 0x00000326, - 0x0005008e, 0x0000001f, 0x00000328, 0x00000325, 0x00000327, 0x00050083, 0x0000001f, 0x00000329, - 0x00000324, 0x00000328, 0x0004003d, 0x00000006, 0x0000032a, 0x0000031d, 0x0005008e, 0x0000001f, - 0x0000032b, 0x00000329, 0x0000032a, 0x0003003e, 0x00000320, 0x0000032b, 0x0004003d, 0x0000001f, - 0x0000032d, 0x000002ff, 0x00050041, 0x0000000d, 0x0000032e, 0x00000302, 0x00000094, 0x0004003d, - 0x00000006, 0x0000032f, 0x0000032e, 0x0005008e, 0x0000001f, 0x00000330, 0x0000032d, 0x0000032f, - 0x0004003d, 0x0000001f, 0x00000331, 0x000002fc, 0x00050041, 0x0000000d, 0x00000332, 0x00000305, - 0x00000094, 0x0004003d, 0x00000006, 0x00000333, 0x00000332, 0x0005008e, 0x0000001f, 0x00000334, - 0x00000331, 0x00000333, 0x00050083, 0x0000001f, 0x00000335, 0x00000330, 0x00000334, 0x0004003d, - 0x00000006, 0x00000336, 0x0000031d, 0x0005008e, 0x0000001f, 0x00000337, 0x00000335, 0x00000336, - 0x0003003e, 0x0000032c, 0x00000337, 0x0004003d, 0x0000001f, 0x00000338, 0x00000058, 0x0006000c, - 0x0000001f, 0x00000339, 0x00000001, 0x00000045, 0x00000338, 0x0003003e, 0x00000058, 0x00000339, - 0x0004003d, 0x0000001f, 0x0000033a, 0x00000320, 0x0004003d, 0x0000001f, 0x0000033b, 0x00000058, - 0x0004003d, 0x0000001f, 0x0000033c, 0x00000058, 0x0004003d, 0x0000001f, 0x0000033d, 0x00000320, - 0x00050094, 0x00000006, 0x0000033e, 0x0000033c, 0x0000033d, 0x0005008e, 0x0000001f, 0x0000033f, - 0x0000033b, 0x0000033e, 0x00050083, 0x0000001f, 0x00000340, 0x0000033a, 0x0000033f, 0x0003003e, - 0x00000320, 0x00000340, 0x0004003d, 0x0000001f, 0x00000342, 0x00000320, 0x0006000c, 0x00000006, - 0x00000343, 0x00000001, 0x00000042, 0x00000342, 0x0003003e, 0x00000341, 0x00000343, 0x0004003d, - 0x0000001f, 0x00000345, 0x0000032c, 0x0006000c, 0x00000006, 0x00000346, 0x00000001, 0x00000042, - 0x00000345, 0x0003003e, 0x00000344, 0x00000346, 0x0004003d, 0x00000006, 0x00000347, 0x00000341, - 0x000500b8, 0x000000ac, 0x00000348, 0x00000347, 0x000000ab, 0x0004003d, 0x00000006, 0x00000349, - 0x00000344, 0x000500b8, 0x000000ac, 0x0000034a, 0x00000349, 0x000000ab, 0x000500a6, 0x000000ac, - 0x0000034b, 0x00000348, 0x0000034a, 0x000300f7, 0x0000034d, 0x00000000, 0x000400fa, 0x0000034b, - 0x0000034c, 0x0000034d, 0x000200f8, 0x0000034c, 0x0004003d, 0x0000001f, 0x0000034e, 0x00000058, - 0x000200fe, 0x0000034e, 0x000200f8, 0x0000034d, 0x0004003d, 0x00000006, 0x00000350, 0x00000341, - 0x0004003d, 0x0000001f, 0x00000351, 0x00000320, 0x00060050, 0x0000001f, 0x00000352, 0x00000350, - 0x00000350, 0x00000350, 0x00050088, 0x0000001f, 0x00000353, 0x00000351, 0x00000352, 0x0003003e, - 0x00000320, 0x00000353, 0x0004003d, 0x0000001f, 0x00000354, 0x0000032c, 0x0004003d, 0x0000001f, - 0x00000355, 0x00000058, 0x0004003d, 0x0000001f, 0x00000356, 0x00000058, 0x0004003d, 0x0000001f, - 0x00000357, 0x0000032c, 0x00050094, 0x00000006, 0x00000358, 0x00000356, 0x00000357, 0x0005008e, - 0x0000001f, 0x00000359, 0x00000355, 0x00000358, 0x00050083, 0x0000001f, 0x0000035a, 0x00000354, - 0x00000359, 0x0004003d, 0x0000001f, 0x0000035b, 0x00000320, 0x0004003d, 0x0000001f, 0x0000035c, - 0x00000320, 0x0004003d, 0x0000001f, 0x0000035d, 0x0000032c, 0x00050094, 0x00000006, 0x0000035e, - 0x0000035c, 0x0000035d, 0x0005008e, 0x0000001f, 0x0000035f, 0x0000035b, 0x0000035e, 0x00050083, - 0x0000001f, 0x00000360, 0x0000035a, 0x0000035f, 0x0006000c, 0x0000001f, 0x00000361, 0x00000001, - 0x00000045, 0x00000360, 0x0003003e, 0x0000032c, 0x00000361, 0x0004003d, 0x0000001f, 0x00000362, - 0x00000320, 0x0004003d, 0x0000001f, 0x00000363, 0x0000032c, 0x00050094, 0x00000006, 0x00000364, - 0x00000362, 0x00000363, 0x0006000c, 0x00000006, 0x00000365, 0x00000001, 0x00000004, 0x00000364, - 0x000500ba, 0x000000ac, 0x00000367, 0x00000365, 0x00000366, 0x000300f7, 0x00000369, 0x00000000, - 0x000400fa, 0x00000367, 0x00000368, 0x00000369, 0x000200f8, 0x00000368, 0x0004003d, 0x0000001f, - 0x0000036a, 0x00000058, 0x000200fe, 0x0000036a, 0x000200f8, 0x00000369, 0x0004003d, 0x0000001f, - 0x0000036c, 0x00000320, 0x0004003d, 0x0000001f, 0x0000036d, 0x0000032c, 0x0004003d, 0x0000001f, - 0x0000036e, 0x00000058, 0x00050051, 0x00000006, 0x0000036f, 0x0000036c, 0x00000000, 0x00050051, - 0x00000006, 0x00000370, 0x0000036c, 0x00000001, 0x00050051, 0x00000006, 0x00000371, 0x0000036c, - 0x00000002, 0x00050051, 0x00000006, 0x00000372, 0x0000036d, 0x00000000, 0x00050051, 0x00000006, - 0x00000373, 0x0000036d, 0x00000001, 0x00050051, 0x00000006, 0x00000374, 0x0000036d, 0x00000002, - 0x00050051, 0x00000006, 0x00000375, 0x0000036e, 0x00000000, 0x00050051, 0x00000006, 0x00000376, - 0x0000036e, 0x00000001, 0x00050051, 0x00000006, 0x00000377, 0x0000036e, 0x00000002, 0x00060050, - 0x0000001f, 0x00000378, 0x0000036f, 0x00000370, 0x00000371, 0x00060050, 0x0000001f, 0x00000379, - 0x00000372, 0x00000373, 0x00000374, 0x00060050, 0x0000001f, 0x0000037a, 0x00000375, 0x00000376, - 0x00000377, 0x00060050, 0x00000021, 0x0000037b, 0x00000378, 0x00000379, 0x0000037a, 0x0004003d, - 0x0000001f, 0x0000037c, 0x000002e7, 0x00050091, 0x0000001f, 0x0000037d, 0x0000037b, 0x0000037c, - 0x0006000c, 0x0000001f, 0x0000037e, 0x00000001, 0x00000045, 0x0000037d, 0x000200fe, 0x0000037e, - 0x00010038, 0x00050036, 0x0000001f, 0x00000066, 0x00000000, 0x0000005e, 0x00030037, 0x00000020, - 0x0000005f, 0x00030037, 0x00000020, 0x00000060, 0x00030037, 0x00000020, 0x00000061, 0x00030037, - 0x0000000d, 0x00000062, 0x00030037, 0x0000000d, 0x00000063, 0x00030037, 0x00000020, 0x00000064, - 0x00030037, 0x00000020, 0x00000065, 0x000200f8, 0x00000067, 0x0004003b, 0x0000000d, 0x00000381, - 0x00000007, 0x0004003b, 0x0000000d, 0x00000386, 0x00000007, 0x0004003b, 0x00000020, 0x0000038d, - 0x00000007, 0x0004003b, 0x00000020, 0x00000392, 0x00000007, 0x0004003b, 0x0000000d, 0x00000398, - 0x00000007, 0x0004003b, 0x00000020, 0x00000399, 0x00000007, 0x0004003b, 0x00000020, 0x0000039b, - 0x00000007, 0x0004003b, 0x0000000d, 0x0000039d, 0x00000007, 0x0004003b, 0x0000000d, 0x000003a0, - 0x00000007, 0x0004003b, 0x00000020, 0x000003a1, 0x00000007, 0x0004003b, 0x00000020, 0x000003a3, - 0x00000007, 0x0004003b, 0x00000020, 0x000003a5, 0x00000007, 0x0004003b, 0x0000000d, 0x000003a7, - 0x00000007, 0x0004003b, 0x00000020, 0x000003aa, 0x00000007, 0x0004003b, 0x0000000d, 0x000003af, - 0x00000007, 0x0004003b, 0x00000020, 0x000003b0, 0x00000007, 0x0004003b, 0x00000020, 0x000003b3, - 0x00000007, 0x0004003b, 0x00000020, 0x000003c5, 0x00000007, 0x0004003d, 0x0000001f, 0x00000382, - 0x0000005f, 0x0004003d, 0x0000001f, 0x00000383, 0x00000064, 0x00050094, 0x00000006, 0x00000384, - 0x00000382, 0x00000383, 0x0007000c, 0x00000006, 0x00000385, 0x00000001, 0x00000028, 0x00000384, - 0x000000dc, 0x0003003e, 0x00000381, 0x00000385, 0x0004003d, 0x00000006, 0x00000387, 0x00000381, - 0x0004003d, 0x00000006, 0x00000388, 0x00000381, 0x00050085, 0x00000006, 0x00000389, 0x00000388, - 0x0000011f, 0x00050081, 0x00000006, 0x0000038a, 0x00000389, 0x0000011f, 0x0008000c, 0x00000006, - 0x0000038c, 0x00000001, 0x0000002e, 0x00000387, 0x0000038a, 0x0000038b, 0x0003003e, 0x00000386, - 0x0000038c, 0x0004003d, 0x0000001f, 0x0000038e, 0x00000060, 0x0004003d, 0x0000001f, 0x0000038f, - 0x00000064, 0x00050081, 0x0000001f, 0x00000390, 0x0000038e, 0x0000038f, 0x0006000c, 0x0000001f, - 0x00000391, 0x00000001, 0x00000045, 0x00000390, 0x0003003e, 0x0000038d, 0x00000391, 0x0004003d, - 0x0000001f, 0x00000394, 0x00000061, 0x0004003d, 0x00000006, 0x00000395, 0x00000062, 0x00060050, - 0x0000001f, 0x00000396, 0x00000395, 0x00000395, 0x00000395, 0x0008000c, 0x0000001f, 0x00000397, - 0x00000001, 0x0000002e, 0x00000393, 0x00000394, 0x00000396, 0x0003003e, 0x00000392, 0x00000397, - 0x0004003d, 0x0000001f, 0x0000039a, 0x0000005f, 0x0003003e, 0x00000399, 0x0000039a, 0x0004003d, - 0x0000001f, 0x0000039c, 0x0000038d, 0x0003003e, 0x0000039b, 0x0000039c, 0x0004003d, 0x00000006, - 0x0000039e, 0x00000063, 0x0003003e, 0x0000039d, 0x0000039e, 0x00070039, 0x00000006, 0x0000039f, - 0x00000044, 0x00000399, 0x0000039b, 0x0000039d, 0x0003003e, 0x00000398, 0x0000039f, 0x0004003d, - 0x0000001f, 0x000003a2, 0x0000005f, 0x0003003e, 0x000003a1, 0x000003a2, 0x0004003d, 0x0000001f, - 0x000003a4, 0x00000060, 0x0003003e, 0x000003a3, 0x000003a4, 0x0004003d, 0x0000001f, 0x000003a6, - 0x00000064, 0x0003003e, 0x000003a5, 0x000003a6, 0x0004003d, 0x00000006, 0x000003a8, 0x00000063, - 0x0003003e, 0x000003a7, 0x000003a8, 0x00080039, 0x00000006, 0x000003a9, 0x00000050, 0x000003a1, - 0x000003a3, 0x000003a5, 0x000003a7, 0x0003003e, 0x000003a0, 0x000003a9, 0x0004003d, 0x0000001f, - 0x000003ab, 0x0000038d, 0x0004003d, 0x0000001f, 0x000003ac, 0x00000060, 0x00050094, 0x00000006, - 0x000003ad, 0x000003ab, 0x000003ac, 0x0007000c, 0x00000006, 0x000003ae, 0x00000001, 0x00000028, - 0x000003ad, 0x000000dc, 0x0003003e, 0x000003af, 0x000003ae, 0x0004003d, 0x0000001f, 0x000003b1, - 0x00000392, 0x0003003e, 0x000003b0, 0x000003b1, 0x00060039, 0x0000001f, 0x000003b2, 0x00000055, - 0x000003af, 0x000003b0, 0x0003003e, 0x000003aa, 0x000003b2, 0x0004003d, 0x00000006, 0x000003b4, - 0x00000398, 0x0004003d, 0x00000006, 0x000003b5, 0x000003a0, 0x00050085, 0x00000006, 0x000003b6, - 0x000003b4, 0x000003b5, 0x0004003d, 0x0000001f, 0x000003b7, 0x000003aa, 0x0005008e, 0x0000001f, - 0x000003b8, 0x000003b7, 0x000003b6, 0x0004003d, 0x0000001f, 0x000003ba, 0x0000005f, 0x0004003d, - 0x0000001f, 0x000003bb, 0x00000060, 0x00050094, 0x00000006, 0x000003bc, 0x000003ba, 0x000003bb, - 0x0007000c, 0x00000006, 0x000003bd, 0x00000001, 0x00000028, 0x000003bc, 0x000000dc, 0x00050085, - 0x00000006, 0x000003be, 0x000003b9, 0x000003bd, 0x0004003d, 0x00000006, 0x000003bf, 0x00000381, - 0x0007000c, 0x00000006, 0x000003c0, 0x00000001, 0x00000028, 0x000003bf, 0x000000b6, 0x00050085, - 0x00000006, 0x000003c1, 0x000003be, 0x000003c0, 0x0007000c, 0x00000006, 0x000003c2, 0x00000001, - 0x00000028, 0x000003c1, 0x000000b6, 0x00060050, 0x0000001f, 0x000003c3, 0x000003c2, 0x000003c2, - 0x000003c2, 0x00050088, 0x0000001f, 0x000003c4, 0x000003b8, 0x000003c3, 0x0003003e, 0x000003b3, - 0x000003c4, 0x0004003d, 0x0000001f, 0x000003c6, 0x000003aa, 0x00050083, 0x0000001f, 0x000003c7, - 0x0000028c, 0x000003c6, 0x0004003d, 0x00000006, 0x000003c8, 0x00000062, 0x00050083, 0x00000006, - 0x000003c9, 0x0000010a, 0x000003c8, 0x0005008e, 0x0000001f, 0x000003ca, 0x000003c7, 0x000003c9, - 0x0003003e, 0x000003c5, 0x000003ca, 0x0004003d, 0x0000001f, 0x000003cb, 0x000003c5, 0x0004003d, - 0x0000001f, 0x000003cc, 0x00000061, 0x00050085, 0x0000001f, 0x000003cd, 0x000003cb, 0x000003cc, - 0x0004003d, 0x00000006, 0x000003ce, 0x00000386, 0x0005008e, 0x0000001f, 0x000003cf, 0x000003cd, - 0x000003ce, 0x0004003d, 0x0000001f, 0x000003d0, 0x000003b3, 0x0004003d, 0x00000006, 0x000003d1, - 0x00000381, 0x0005008e, 0x0000001f, 0x000003d2, 0x000003d0, 0x000003d1, 0x00050081, 0x0000001f, - 0x000003d3, 0x000003cf, 0x000003d2, 0x0004003d, 0x0000001f, 0x000003d4, 0x00000065, 0x00050085, - 0x0000001f, 0x000003d5, 0x000003d3, 0x000003d4, 0x000200fe, 0x000003d5, 0x00010038, 0x00050036, - 0x00000006, 0x0000006c, 0x00000000, 0x00000068, 0x00030037, 0x00000020, 0x00000069, 0x00030037, - 0x0000000d, 0x0000006a, 0x00030037, 0x0000000d, 0x0000006b, 0x000200f8, 0x0000006d, 0x0004003b, - 0x000000df, 0x000003f4, 0x00000007, 0x0004003b, 0x000000da, 0x00000402, 0x00000007, 0x0004003b, - 0x00000020, 0x0000040d, 0x00000007, 0x0004003b, 0x00000008, 0x00000415, 0x00000007, 0x0004003b, - 0x0000000d, 0x0000041b, 0x00000007, 0x0004003b, 0x0000000d, 0x0000043f, 0x00000007, 0x0004003b, - 0x00000008, 0x00000448, 0x00000007, 0x0004003b, 0x0000000d, 0x00000456, 0x00000007, 0x0004003b, - 0x000000df, 0x00000457, 0x00000007, 0x0004003b, 0x000000df, 0x00000460, 0x00000007, 0x0004003b, - 0x0000000d, 0x00000468, 0x00000007, 0x0004003b, 0x0000000d, 0x00000486, 0x00000007, 0x00060041, - 0x000003df, 0x000003e0, 0x000003dd, 0x000003de, 0x00000099, 0x0004003d, 0x00000006, 0x000003e1, - 0x000003e0, 0x000500b8, 0x000000ac, 0x000003e2, 0x000003e1, 0x0000011f, 0x000400a8, 0x000000ac, - 0x000003e3, 0x000003e2, 0x000300f7, 0x000003e5, 0x00000000, 0x000400fa, 0x000003e3, 0x000003e4, - 0x000003e5, 0x000200f8, 0x000003e4, 0x00060041, 0x000003df, 0x000003e6, 0x000003dd, 0x000003de, - 0x000001db, 0x0004003d, 0x00000006, 0x000003e7, 0x000003e6, 0x000500b8, 0x000000ac, 0x000003e8, - 0x000003e7, 0x0000011f, 0x000200f9, 0x000003e5, 0x000200f8, 0x000003e5, 0x000700f5, 0x000000ac, - 0x000003e9, 0x000003e2, 0x0000006d, 0x000003e8, 0x000003e4, 0x000400a8, 0x000000ac, 0x000003ea, - 0x000003e9, 0x000300f7, 0x000003ec, 0x00000000, 0x000400fa, 0x000003ea, 0x000003eb, 0x000003ec, - 0x000200f8, 0x000003eb, 0x00060041, 0x000003df, 0x000003ed, 0x000003dd, 0x000000e8, 0x000003d9, - 0x0004003d, 0x00000006, 0x000003ee, 0x000003ed, 0x000500b8, 0x000000ac, 0x000003ef, 0x000003ee, - 0x000000ab, 0x000200f9, 0x000003ec, 0x000200f8, 0x000003ec, 0x000700f5, 0x000000ac, 0x000003f0, - 0x000003e9, 0x000003e5, 0x000003ef, 0x000003eb, 0x000300f7, 0x000003f2, 0x00000000, 0x000400fa, - 0x000003f0, 0x000003f1, 0x000003f2, 0x000200f8, 0x000003f1, 0x000200fe, 0x0000010a, 0x000200f8, - 0x000003f2, 0x0003003e, 0x000003f4, 0x000003de, 0x0004003d, 0x00000006, 0x000003f5, 0x0000006a, - 0x00060041, 0x000003df, 0x000003f6, 0x000003dd, 0x000000e8, 0x00000094, 0x0004003d, 0x00000006, - 0x000003f7, 0x000003f6, 0x000500b8, 0x000000ac, 0x000003f8, 0x000003f5, 0x000003f7, 0x000300f7, - 0x000003fa, 0x00000000, 0x000400fa, 0x000003f8, 0x000003f9, 0x000003fb, 0x000200f8, 0x000003f9, - 0x0003003e, 0x000003f4, 0x000000e1, 0x000200f9, 0x000003fa, 0x000200f8, 0x000003fb, 0x0004003d, - 0x00000006, 0x000003fc, 0x0000006a, 0x00060041, 0x000003df, 0x000003fd, 0x000003dd, 0x000000e8, - 0x00000099, 0x0004003d, 0x00000006, 0x000003fe, 0x000003fd, 0x000500b8, 0x000000ac, 0x000003ff, - 0x000003fc, 0x000003fe, 0x000300f7, 0x00000401, 0x00000000, 0x000400fa, 0x000003ff, 0x00000400, - 0x00000401, 0x000200f8, 0x00000400, 0x0003003e, 0x000003f4, 0x000000e8, 0x000200f9, 0x00000401, - 0x000200f8, 0x00000401, 0x000200f9, 0x000003fa, 0x000200f8, 0x000003fa, 0x0004003d, 0x000000de, - 0x00000403, 0x000003f4, 0x00060041, 0x00000404, 0x00000405, 0x000003dd, 0x000000e1, 0x00000403, - 0x0004003d, 0x000003d8, 0x00000406, 0x00000405, 0x0004003d, 0x0000001f, 0x00000407, 0x00000069, - 0x00050051, 0x00000006, 0x00000408, 0x00000407, 0x00000000, 0x00050051, 0x00000006, 0x00000409, - 0x00000407, 0x00000001, 0x00050051, 0x00000006, 0x0000040a, 0x00000407, 0x00000002, 0x00070050, - 0x00000016, 0x0000040b, 0x00000408, 0x00000409, 0x0000040a, 0x0000010a, 0x00050091, 0x00000016, - 0x0000040c, 0x00000406, 0x0000040b, 0x0003003e, 0x00000402, 0x0000040c, 0x0004003d, 0x00000016, - 0x0000040e, 0x00000402, 0x0008004f, 0x0000001f, 0x0000040f, 0x0000040e, 0x0000040e, 0x00000000, - 0x00000001, 0x00000002, 0x00050041, 0x0000000d, 0x00000410, 0x00000402, 0x000003d9, 0x0004003d, - 0x00000006, 0x00000411, 0x00000410, 0x0007000c, 0x00000006, 0x00000412, 0x00000001, 0x00000028, - 0x00000411, 0x00000316, 0x00060050, 0x0000001f, 0x00000413, 0x00000412, 0x00000412, 0x00000412, - 0x00050088, 0x0000001f, 0x00000414, 0x0000040f, 0x00000413, 0x0003003e, 0x0000040d, 0x00000414, - 0x0004003d, 0x0000001f, 0x00000416, 0x0000040d, 0x0007004f, 0x00000007, 0x00000417, 0x00000416, - 0x00000416, 0x00000000, 0x00000001, 0x0005008e, 0x00000007, 0x00000418, 0x00000417, 0x0000011f, - 0x00050050, 0x00000007, 0x00000419, 0x0000011f, 0x0000011f, 0x00050081, 0x00000007, 0x0000041a, - 0x00000418, 0x00000419, 0x0003003e, 0x00000415, 0x0000041a, 0x00050041, 0x0000000d, 0x0000041c, - 0x0000040d, 0x000001db, 0x0004003d, 0x00000006, 0x0000041d, 0x0000041c, 0x0003003e, 0x0000041b, - 0x0000041d, 0x00050041, 0x0000000d, 0x0000041e, 0x00000415, 0x00000094, 0x0004003d, 0x00000006, - 0x0000041f, 0x0000041e, 0x000500b8, 0x000000ac, 0x00000420, 0x0000041f, 0x000000dc, 0x000400a8, - 0x000000ac, 0x00000421, 0x00000420, 0x000300f7, 0x00000423, 0x00000000, 0x000400fa, 0x00000421, - 0x00000422, 0x00000423, 0x000200f8, 0x00000422, 0x00050041, 0x0000000d, 0x00000424, 0x00000415, - 0x00000094, 0x0004003d, 0x00000006, 0x00000425, 0x00000424, 0x000500ba, 0x000000ac, 0x00000426, - 0x00000425, 0x0000010a, 0x000200f9, 0x00000423, 0x000200f8, 0x00000423, 0x000700f5, 0x000000ac, - 0x00000427, 0x00000420, 0x000003fa, 0x00000426, 0x00000422, 0x000400a8, 0x000000ac, 0x00000428, - 0x00000427, 0x000300f7, 0x0000042a, 0x00000000, 0x000400fa, 0x00000428, 0x00000429, 0x0000042a, - 0x000200f8, 0x00000429, 0x00050041, 0x0000000d, 0x0000042b, 0x00000415, 0x00000099, 0x0004003d, - 0x00000006, 0x0000042c, 0x0000042b, 0x000500b8, 0x000000ac, 0x0000042d, 0x0000042c, 0x000000dc, - 0x000200f9, 0x0000042a, 0x000200f8, 0x0000042a, 0x000700f5, 0x000000ac, 0x0000042e, 0x00000427, - 0x00000423, 0x0000042d, 0x00000429, 0x000400a8, 0x000000ac, 0x0000042f, 0x0000042e, 0x000300f7, - 0x00000431, 0x00000000, 0x000400fa, 0x0000042f, 0x00000430, 0x00000431, 0x000200f8, 0x00000430, - 0x00050041, 0x0000000d, 0x00000432, 0x00000415, 0x00000099, 0x0004003d, 0x00000006, 0x00000433, - 0x00000432, 0x000500ba, 0x000000ac, 0x00000434, 0x00000433, 0x0000010a, 0x000200f9, 0x00000431, - 0x000200f8, 0x00000431, 0x000700f5, 0x000000ac, 0x00000435, 0x0000042e, 0x0000042a, 0x00000434, - 0x00000430, 0x0004003d, 0x00000006, 0x00000436, 0x0000041b, 0x000500b8, 0x000000ac, 0x00000437, - 0x00000436, 0x000000dc, 0x000500a6, 0x000000ac, 0x00000438, 0x00000435, 0x00000437, 0x0004003d, - 0x00000006, 0x00000439, 0x0000041b, 0x000500ba, 0x000000ac, 0x0000043a, 0x00000439, 0x0000010a, - 0x000500a6, 0x000000ac, 0x0000043b, 0x00000438, 0x0000043a, 0x000300f7, 0x0000043d, 0x00000000, - 0x000400fa, 0x0000043b, 0x0000043c, 0x0000043d, 0x000200f8, 0x0000043c, 0x000200fe, 0x0000010a, - 0x000200f8, 0x0000043d, 0x00060041, 0x000003df, 0x00000440, 0x000003dd, 0x000003de, 0x00000094, - 0x0004003d, 0x00000006, 0x00000441, 0x00000440, 0x0004003d, 0x00000006, 0x00000442, 0x0000006b, - 0x0008000c, 0x00000006, 0x00000443, 0x00000001, 0x0000002b, 0x00000442, 0x000000dc, 0x0000010a, - 0x00050083, 0x00000006, 0x00000444, 0x0000010a, 0x00000443, 0x00050085, 0x00000006, 0x00000445, - 0x00000444, 0x00000108, 0x00050081, 0x00000006, 0x00000446, 0x0000010a, 0x00000445, 0x00050085, - 0x00000006, 0x00000447, 0x00000441, 0x00000446, 0x0003003e, 0x0000043f, 0x00000447, 0x0004003d, - 0x0000044a, 0x0000044d, 0x0000044c, 0x00040064, 0x00000449, 0x0000044e, 0x0000044d, 0x00050067, - 0x0000044f, 0x00000450, 0x0000044e, 0x000000e1, 0x0007004f, 0x00000451, 0x00000452, 0x00000450, - 0x00000450, 0x00000000, 0x00000001, 0x0004006f, 0x00000007, 0x00000453, 0x00000452, 0x00050050, - 0x00000007, 0x00000454, 0x0000010a, 0x0000010a, 0x00050088, 0x00000007, 0x00000455, 0x00000454, - 0x00000453, 0x0003003e, 0x00000448, 0x00000455, 0x0003003e, 0x00000456, 0x000000dc, 0x0003003e, - 0x00000457, 0x00000458, 0x000200f9, 0x00000459, 0x000200f8, 0x00000459, 0x000400f6, 0x0000045b, - 0x0000045c, 0x00000000, 0x000200f9, 0x0000045d, 0x000200f8, 0x0000045d, 0x0004003d, 0x000000de, - 0x0000045e, 0x00000457, 0x000500b3, 0x000000ac, 0x0000045f, 0x0000045e, 0x000000e8, 0x000400fa, - 0x0000045f, 0x0000045a, 0x0000045b, 0x000200f8, 0x0000045a, 0x0003003e, 0x00000460, 0x00000458, - 0x000200f9, 0x00000461, 0x000200f8, 0x00000461, 0x000400f6, 0x00000463, 0x00000464, 0x00000000, - 0x000200f9, 0x00000465, 0x000200f8, 0x00000465, 0x0004003d, 0x000000de, 0x00000466, 0x00000460, - 0x000500b3, 0x000000ac, 0x00000467, 0x00000466, 0x000000e8, 0x000400fa, 0x00000467, 0x00000462, - 0x00000463, 0x000200f8, 0x00000462, 0x0004003d, 0x0000044a, 0x00000469, 0x0000044c, 0x0004003d, - 0x00000007, 0x0000046a, 0x00000415, 0x0004003d, 0x000000de, 0x0000046b, 0x00000460, 0x0004006f, - 0x00000006, 0x0000046c, 0x0000046b, 0x0004003d, 0x000000de, 0x0000046d, 0x00000457, 0x0004006f, - 0x00000006, 0x0000046e, 0x0000046d, 0x00050050, 0x00000007, 0x0000046f, 0x0000046c, 0x0000046e, - 0x0004003d, 0x00000007, 0x00000470, 0x00000448, 0x00050085, 0x00000007, 0x00000471, 0x0000046f, - 0x00000470, 0x00050081, 0x00000007, 0x00000472, 0x0000046a, 0x00000471, 0x0004003d, 0x000000de, - 0x00000473, 0x000003f4, 0x0004006f, 0x00000006, 0x00000474, 0x00000473, 0x00050051, 0x00000006, - 0x00000475, 0x00000472, 0x00000000, 0x00050051, 0x00000006, 0x00000476, 0x00000472, 0x00000001, - 0x00060050, 0x0000001f, 0x00000477, 0x00000475, 0x00000476, 0x00000474, 0x00050057, 0x00000016, - 0x00000478, 0x00000469, 0x00000477, 0x00050051, 0x00000006, 0x00000479, 0x00000478, 0x00000000, - 0x0003003e, 0x00000468, 0x00000479, 0x0004003d, 0x00000006, 0x0000047a, 0x0000041b, 0x0004003d, - 0x00000006, 0x0000047b, 0x0000043f, 0x00050083, 0x00000006, 0x0000047c, 0x0000047a, 0x0000047b, - 0x0004003d, 0x00000006, 0x0000047d, 0x00000468, 0x000500ba, 0x000000ac, 0x0000047e, 0x0000047c, - 0x0000047d, 0x000600a9, 0x00000006, 0x0000047f, 0x0000047e, 0x000000dc, 0x0000010a, 0x0004003d, - 0x00000006, 0x00000480, 0x00000456, 0x00050081, 0x00000006, 0x00000481, 0x00000480, 0x0000047f, - 0x0003003e, 0x00000456, 0x00000481, 0x000200f9, 0x00000464, 0x000200f8, 0x00000464, 0x0004003d, - 0x000000de, 0x00000482, 0x00000460, 0x00050080, 0x000000de, 0x00000483, 0x00000482, 0x000000e8, - 0x0003003e, 0x00000460, 0x00000483, 0x000200f9, 0x00000461, 0x000200f8, 0x00000463, 0x000200f9, - 0x0000045c, 0x000200f8, 0x0000045c, 0x0004003d, 0x000000de, 0x00000484, 0x00000457, 0x00050080, - 0x000000de, 0x00000485, 0x00000484, 0x000000e8, 0x0003003e, 0x00000457, 0x00000485, 0x000200f9, - 0x00000459, 0x000200f8, 0x0000045b, 0x0004003d, 0x00000006, 0x00000487, 0x00000456, 0x00050088, - 0x00000006, 0x00000489, 0x00000487, 0x00000488, 0x0003003e, 0x00000486, 0x00000489, 0x0004003d, - 0x00000006, 0x0000048a, 0x00000486, 0x00060041, 0x000003df, 0x0000048b, 0x000003dd, 0x000000e8, - 0x000003d9, 0x0004003d, 0x00000006, 0x0000048c, 0x0000048b, 0x0008000c, 0x00000006, 0x0000048d, - 0x00000001, 0x0000002b, 0x0000048c, 0x000000dc, 0x0000010a, 0x0008000c, 0x00000006, 0x0000048e, - 0x00000001, 0x0000002e, 0x0000010a, 0x0000048a, 0x0000048d, 0x0003003e, 0x00000486, 0x0000048e, - 0x0004003d, 0x00000006, 0x00000490, 0x00000486, 0x0008000c, 0x00000006, 0x00000491, 0x00000001, - 0x0000002e, 0x0000048f, 0x0000010a, 0x00000490, 0x000200fe, 0x00000491, 0x00010038, + 0x00000000, 0x00050006, 0x00000498, 0x0000000a, 0x77656976, 0x00000000, 0x00060006, 0x00000498, + 0x0000000b, 0x70696c63, 0x6f666e49, 0x00000000, 0x00030005, 0x0000049a, 0x006f6275, 0x00060005, + 0x0000049e, 0x626d6f62, 0x65727453, 0x6874676e, 0x00000000, 0x00040005, 0x000004a1, 0x626d6f62, + 0x00746f52, 0x00040005, 0x000004a4, 0x6f65674e, 0x0000006d, 0x00040005, 0x000004a6, 0x726f4e76, + 0x006c616d, 0x00030005, 0x000004a9, 0x00000056, 0x00050005, 0x000004aa, 0x6d614376, 0x50617265, + 0x0000736f, 0x00050005, 0x000004ac, 0x726f5776, 0x6f50646c, 0x00000073, 0x00030005, 0x000004b8, + 0x00007675, 0x00060005, 0x000004b9, 0x67696568, 0x61537468, 0x656c706d, 0x00000072, 0x00030005, + 0x000004bb, 0x00565576, 0x00040005, 0x000004bd, 0x61726170, 0x0000006d, 0x00040005, 0x000004bf, + 0x61726170, 0x0000006d, 0x00040005, 0x000004c1, 0x61726170, 0x0000006d, 0x00040005, 0x000004c3, + 0x61726170, 0x0000006d, 0x00040005, 0x000004c5, 0x61726170, 0x0000006d, 0x00040005, 0x000004c8, + 0x61726170, 0x0000006d, 0x00040005, 0x000004cb, 0x61726170, 0x0000006d, 0x00040005, 0x000004cf, + 0x65736162, 0x00000000, 0x00060005, 0x000004d0, 0x65626c61, 0x61536f64, 0x656c706d, 0x00000072, + 0x00040005, 0x000004d1, 0x61726170, 0x0000006d, 0x00040005, 0x000004d3, 0x61726170, 0x0000006d, + 0x00040005, 0x000004d5, 0x61726170, 0x0000006d, 0x00040005, 0x000004d7, 0x61726170, 0x0000006d, + 0x00040005, 0x000004db, 0x6e695476, 0x00000074, 0x00040005, 0x000004e4, 0x65626c61, 0x00006f64, + 0x00050005, 0x000004e7, 0x6174656d, 0x63696c6c, 0x00000000, 0x00050005, 0x000004ec, 0x67756f72, + 0x73656e68, 0x00000073, 0x00040005, 0x000004f1, 0x6e756f63, 0x00000074, 0x00030005, 0x000004f6, + 0x0000004e, 0x00040005, 0x000004f8, 0x6d61536e, 0x00656c70, 0x00060005, 0x000004f9, 0x6d726f6e, + 0x61536c61, 0x656c706d, 0x00000072, 0x00040005, 0x000004fa, 0x61726170, 0x0000006d, 0x00040005, + 0x000004fc, 0x61726170, 0x0000006d, 0x00040005, 0x000004fe, 0x61726170, 0x0000006d, 0x00040005, + 0x00000500, 0x61726170, 0x0000006d, 0x00040005, 0x0000050b, 0x61726170, 0x0000006d, 0x00040005, + 0x0000050d, 0x61726170, 0x0000006d, 0x00040005, 0x0000050f, 0x61726170, 0x0000006d, 0x00040005, + 0x00000511, 0x61726170, 0x0000006d, 0x00030005, 0x00000514, 0x00006f4c, 0x00050005, 0x00000515, + 0x77656976, 0x74706544, 0x00000068, 0x00050005, 0x00000516, 0x65695676, 0x736f5077, 0x00000000, + 0x00050005, 0x0000051c, 0x6d697270, 0x4c797261, 0x00000000, 0x00050005, 0x00000522, 0x64616873, + 0x6956776f, 0x00000073, 0x00040005, 0x00000527, 0x61726170, 0x0000006d, 0x00040005, 0x00000529, + 0x61726170, 0x0000006d, 0x00040005, 0x0000052b, 0x61726170, 0x0000006d, 0x00040005, 0x00000535, + 0x61726170, 0x0000006d, 0x00040005, 0x00000537, 0x61726170, 0x0000006d, 0x00040005, 0x00000539, + 0x61726170, 0x0000006d, 0x00040005, 0x0000053b, 0x61726170, 0x0000006d, 0x00040005, 0x0000053d, + 0x61726170, 0x0000006d, 0x00040005, 0x0000053f, 0x61726170, 0x0000006d, 0x00040005, 0x00000541, + 0x61726170, 0x0000006d, 0x00030005, 0x0000054a, 0x00000069, 0x00040005, 0x00000558, 0x6867694c, + 0x00443374, 0x00060006, 0x00000558, 0x00000000, 0x52736f70, 0x75696461, 0x00000073, 0x00050006, + 0x00000558, 0x00000001, 0x6f6c6f63, 0x00000072, 0x00030005, 0x0000055a, 0x0074674c, 0x00050005, + 0x00000564, 0x69646172, 0x65636e61, 0x00000000, 0x00030005, 0x0000056d, 0x0000004c, 0x00030005, + 0x0000057b, 0x004c6f74, 0x00040005, 0x00000581, 0x74736964, 0x00000000, 0x00040005, 0x00000589, + 0x65747461, 0x0000006e, 0x00040005, 0x00000597, 0x61726170, 0x0000006d, 0x00040005, 0x00000599, + 0x61726170, 0x0000006d, 0x00040005, 0x0000059b, 0x61726170, 0x0000006d, 0x00040005, 0x0000059d, + 0x61726170, 0x0000006d, 0x00040005, 0x0000059f, 0x61726170, 0x0000006d, 0x00040005, 0x000005a1, + 0x61726170, 0x0000006d, 0x00040005, 0x000005a3, 0x61726170, 0x0000006d, 0x00040005, 0x000005aa, + 0x696d6568, 0x00000000, 0x00040005, 0x000005b0, 0x49796b73, 0x00007272, 0x00040005, 0x000005bc, + 0x49646e67, 0x00007272, 0x00030005, 0x000005c5, 0x00727269, 0x00030005, 0x000005cb, 0x00006967, + 0x00040005, 0x000005d2, 0x70617277, 0x00000000, 0x00040005, 0x000005e9, 0x6f6c6f63, 0x00000072, + 0x00060005, 0x000005ed, 0x49766e65, 0x6e65746e, 0x79746973, 0x00000000, 0x00030005, 0x000005f4, + 0x00000052, 0x00030005, 0x000005f9, 0x00646f6c, 0x00040005, 0x000005fc, 0x53766e65, 0x00636570, + 0x00050005, 0x00000600, 0x53766e65, 0x6c706d61, 0x00007265, 0x00030005, 0x00000608, 0x00003046, + 0x00030005, 0x0000060d, 0x00000046, 0x00040005, 0x00000612, 0x61726170, 0x0000006d, 0x00040005, + 0x00000613, 0x61726170, 0x0000006d, 0x00030005, 0x0000061b, 0x00727269, 0x00040005, 0x00000630, + 0x61726170, 0x0000006d, 0x00040005, 0x00000633, 0x7261656e, 0x0000005a, 0x00040005, 0x00000638, + 0x5a726166, 0x00000000, 0x00040005, 0x0000063e, 0x77656976, 0x0000005a, 0x00050005, 0x00000643, + 0x656e696c, 0x31307261, 0x00000000, 0x00050005, 0x0000064d, 0x4374756f, 0x726f6c6f, 0x00000000, + 0x00040047, 0x000003da, 0x00000006, 0x00000040, 0x00030047, 0x000003db, 0x00000002, 0x00040048, + 0x000003db, 0x00000000, 0x00000005, 0x00050048, 0x000003db, 0x00000000, 0x00000007, 0x00000010, + 0x00050048, 0x000003db, 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x000003db, 0x00000001, + 0x00000023, 0x000000c0, 0x00050048, 0x000003db, 0x00000002, 0x00000023, 0x000000d0, 0x00040047, + 0x000003dd, 0x00000021, 0x00000004, 0x00040047, 0x000003dd, 0x00000022, 0x00000000, 0x00040047, + 0x0000044c, 0x00000021, 0x00000005, 0x00040047, 0x0000044c, 0x00000022, 0x00000000, 0x00050048, + 0x00000495, 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x00000495, 0x00000001, 0x00000023, + 0x00000010, 0x00040047, 0x00000497, 0x00000006, 0x00000020, 0x00030047, 0x00000498, 0x00000002, + 0x00040048, 0x00000498, 0x00000000, 0x00000005, 0x00050048, 0x00000498, 0x00000000, 0x00000007, + 0x00000010, 0x00050048, 0x00000498, 0x00000000, 0x00000023, 0x00000000, 0x00040048, 0x00000498, + 0x00000001, 0x00000005, 0x00050048, 0x00000498, 0x00000001, 0x00000007, 0x00000010, 0x00050048, + 0x00000498, 0x00000001, 0x00000023, 0x00000040, 0x00050048, 0x00000498, 0x00000002, 0x00000023, + 0x00000080, 0x00050048, 0x00000498, 0x00000003, 0x00000023, 0x00000090, 0x00050048, 0x00000498, + 0x00000004, 0x00000023, 0x000000a0, 0x00050048, 0x00000498, 0x00000005, 0x00000023, 0x000000b0, + 0x00050048, 0x00000498, 0x00000006, 0x00000023, 0x000000c0, 0x00050048, 0x00000498, 0x00000007, + 0x00000023, 0x000000d0, 0x00050048, 0x00000498, 0x00000008, 0x00000023, 0x000001d0, 0x00050048, + 0x00000498, 0x00000009, 0x00000023, 0x000001e0, 0x00040048, 0x00000498, 0x0000000a, 0x00000005, + 0x00050048, 0x00000498, 0x0000000a, 0x00000007, 0x00000010, 0x00050048, 0x00000498, 0x0000000a, + 0x00000023, 0x000001f0, 0x00050048, 0x00000498, 0x0000000b, 0x00000023, 0x00000230, 0x00040047, + 0x0000049a, 0x00000021, 0x00000000, 0x00040047, 0x0000049a, 0x00000022, 0x00000000, 0x00040047, + 0x000004a6, 0x0000001e, 0x00000000, 0x00040047, 0x000004aa, 0x0000001e, 0x00000004, 0x00040047, + 0x000004ac, 0x0000001e, 0x00000003, 0x00040047, 0x000004b9, 0x00000021, 0x00000006, 0x00040047, + 0x000004b9, 0x00000022, 0x00000000, 0x00040047, 0x000004bb, 0x0000001e, 0x00000001, 0x00040047, + 0x000004d0, 0x00000021, 0x00000001, 0x00040047, 0x000004d0, 0x00000022, 0x00000000, 0x00040047, + 0x000004db, 0x0000001e, 0x00000002, 0x00040047, 0x000004f9, 0x00000021, 0x00000002, 0x00040047, + 0x000004f9, 0x00000022, 0x00000000, 0x00040047, 0x00000516, 0x0000001e, 0x00000005, 0x00040047, + 0x00000600, 0x00000021, 0x00000003, 0x00040047, 0x00000600, 0x00000022, 0x00000000, 0x00040047, + 0x0000064d, 0x0000001e, 0x00000000, 0x00020013, 0x00000002, 0x00030021, 0x00000003, 0x00000002, + 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000002, 0x00040020, + 0x00000008, 0x00000007, 0x00000007, 0x00040021, 0x00000009, 0x00000007, 0x00000008, 0x00040020, + 0x0000000d, 0x00000007, 0x00000006, 0x00050021, 0x0000000e, 0x00000007, 0x00000008, 0x0000000d, + 0x00090019, 0x00000013, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, + 0x00000000, 0x0003001b, 0x00000014, 0x00000013, 0x00040020, 0x00000015, 0x00000000, 0x00000014, + 0x00040017, 0x00000016, 0x00000006, 0x00000004, 0x00080021, 0x00000017, 0x00000016, 0x00000015, + 0x00000008, 0x0000000d, 0x0000000d, 0x0000000d, 0x00040017, 0x0000001f, 0x00000006, 0x00000003, + 0x00040020, 0x00000020, 0x00000007, 0x0000001f, 0x00040018, 0x00000021, 0x0000001f, 0x00000003, + 0x00060021, 0x00000022, 0x00000021, 0x00000020, 0x00000020, 0x00000008, 0x00090021, 0x00000028, + 0x00000007, 0x00000015, 0x00000008, 0x00000020, 0x0000000d, 0x0000000d, 0x0000000d, 0x000b0021, + 0x00000031, 0x00000007, 0x00000015, 0x00000008, 0x00000020, 0x00000020, 0x00000020, 0x0000000d, + 0x0000000d, 0x0000000d, 0x00040021, 0x0000003c, 0x0000001f, 0x00000020, 0x00060021, 0x00000040, + 0x00000006, 0x00000020, 0x00000020, 0x0000000d, 0x00050021, 0x00000046, 0x00000006, 0x0000000d, + 0x0000000d, 0x00070021, 0x0000004b, 0x00000006, 0x00000020, 0x00000020, 0x00000020, 0x0000000d, + 0x00050021, 0x00000052, 0x0000001f, 0x0000000d, 0x00000020, 0x00070021, 0x00000057, 0x0000001f, + 0x00000020, 0x00000020, 0x00000020, 0x00000008, 0x000a0021, 0x0000005e, 0x0000001f, 0x00000020, + 0x00000020, 0x00000020, 0x0000000d, 0x0000000d, 0x00000020, 0x00000020, 0x00060021, 0x00000068, + 0x00000006, 0x00000020, 0x0000000d, 0x0000000d, 0x0004002b, 0x00000006, 0x00000071, 0x3dd32618, + 0x0004002b, 0x00000006, 0x00000072, 0x3dd2f1aa, 0x0004002b, 0x00000006, 0x00000073, 0x3dc74539, + 0x0006002c, 0x0000001f, 0x00000074, 0x00000071, 0x00000072, 0x00000073, 0x0004002b, 0x00000006, + 0x0000007a, 0x420551ec, 0x00040015, 0x00000093, 0x00000020, 0x00000000, 0x0004002b, 0x00000093, + 0x00000094, 0x00000000, 0x0004002b, 0x00000093, 0x00000099, 0x00000001, 0x0004002b, 0x00000006, + 0x000000ab, 0x38d1b717, 0x00020014, 0x000000ac, 0x0004002b, 0x00000006, 0x000000b6, 0x3a83126f, + 0x0004002b, 0x00000006, 0x000000d0, 0x40c00000, 0x0004002b, 0x00000006, 0x000000d2, 0x41700000, + 0x0004002b, 0x00000006, 0x000000d6, 0x41200000, 0x00040020, 0x000000da, 0x00000007, 0x00000016, + 0x0004002b, 0x00000006, 0x000000dc, 0x00000000, 0x0007002c, 0x00000016, 0x000000dd, 0x000000dc, + 0x000000dc, 0x000000dc, 0x000000dc, 0x00040015, 0x000000de, 0x00000020, 0x00000001, 0x00040020, + 0x000000df, 0x00000007, 0x000000de, 0x0004002b, 0x000000de, 0x000000e1, 0x00000000, 0x0004002b, + 0x000000de, 0x000000e8, 0x00000001, 0x0004002b, 0x00000006, 0x00000100, 0x41980000, 0x0004002b, + 0x00000006, 0x00000101, 0x423c0000, 0x0005002c, 0x00000007, 0x00000102, 0x00000100, 0x00000101, + 0x0004002b, 0x00000006, 0x00000108, 0x40000000, 0x0004002b, 0x00000006, 0x0000010a, 0x3f800000, + 0x0004002b, 0x00000006, 0x00000116, 0x40490fdb, 0x0004002b, 0x00000006, 0x0000011f, 0x3f000000, + 0x0005002c, 0x00000007, 0x00000120, 0x0000011f, 0x0000011f, 0x0004002b, 0x00000006, 0x00000170, + 0x322bcc77, 0x0006002c, 0x0000001f, 0x00000174, 0x000000dc, 0x000000dc, 0x000000dc, 0x0004002b, + 0x00000006, 0x000001d0, 0x3727c5ac, 0x0004002b, 0x00000093, 0x000001db, 0x00000002, 0x0004002b, + 0x00000006, 0x000001e2, 0x42800000, 0x0004002b, 0x00000006, 0x000001eb, 0x3da3d70a, 0x0004002b, + 0x000000de, 0x0000020c, 0x00000040, 0x00040020, 0x0000025a, 0x00000007, 0x00000021, 0x0004002b, + 0x00000006, 0x00000280, 0x3f59999a, 0x0006002c, 0x0000001f, 0x00000281, 0x00000280, 0x00000280, + 0x00000280, 0x0004002b, 0x00000006, 0x00000285, 0x3e19999a, 0x0006002c, 0x0000001f, 0x0000028c, + 0x0000010a, 0x0000010a, 0x0000010a, 0x0004002b, 0x00000006, 0x00000297, 0x3b03126f, 0x0004002b, + 0x00000006, 0x000002ba, 0x41000000, 0x0004002b, 0x00000006, 0x000002e1, 0x40a00000, 0x0004002b, + 0x00000006, 0x000002ef, 0x3d23d70a, 0x0004002b, 0x00000006, 0x00000316, 0x358637bd, 0x0004002b, + 0x00000006, 0x00000366, 0x3eb33333, 0x0004002b, 0x00000006, 0x0000038b, 0x3e800000, 0x0006002c, + 0x0000001f, 0x00000393, 0x000002ef, 0x000002ef, 0x000002ef, 0x0004002b, 0x00000006, 0x000003b9, + 0x40800000, 0x00040018, 0x000003d8, 0x00000016, 0x00000004, 0x0004002b, 0x00000093, 0x000003d9, + 0x00000003, 0x0004001c, 0x000003da, 0x000003d8, 0x000003d9, 0x0005001e, 0x000003db, 0x000003da, + 0x00000016, 0x00000016, 0x00040020, 0x000003dc, 0x00000002, 0x000003db, 0x0004003b, 0x000003dc, + 0x000003dd, 0x00000002, 0x0004002b, 0x000000de, 0x000003de, 0x00000002, 0x00040020, 0x000003df, + 0x00000002, 0x00000006, 0x00040020, 0x00000404, 0x00000002, 0x000003d8, 0x00090019, 0x00000449, + 0x00000006, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x0003001b, + 0x0000044a, 0x00000449, 0x00040020, 0x0000044b, 0x00000000, 0x0000044a, 0x0004003b, 0x0000044b, + 0x0000044c, 0x00000000, 0x00040017, 0x0000044f, 0x000000de, 0x00000003, 0x00040017, 0x00000451, + 0x000000de, 0x00000002, 0x0004002b, 0x000000de, 0x00000458, 0xffffffff, 0x0004002b, 0x00000006, + 0x00000488, 0x41100000, 0x0004002b, 0x00000006, 0x0000048f, 0x3e3851ec, 0x0004001e, 0x00000495, + 0x00000016, 0x00000016, 0x0004002b, 0x00000093, 0x00000496, 0x00000008, 0x0004001c, 0x00000497, + 0x00000495, 0x00000496, 0x000e001e, 0x00000498, 0x000003d8, 0x000003d8, 0x00000016, 0x00000016, + 0x00000016, 0x00000016, 0x00000016, 0x00000497, 0x00000016, 0x00000016, 0x000003d8, 0x00000016, + 0x00040020, 0x00000499, 0x00000002, 0x00000498, 0x0004003b, 0x00000499, 0x0000049a, 0x00000002, + 0x0004002b, 0x000000de, 0x0000049b, 0x00000008, 0x00040020, 0x000004a5, 0x00000001, 0x0000001f, + 0x0004003b, 0x000004a5, 0x000004a6, 0x00000001, 0x0004003b, 0x000004a5, 0x000004aa, 0x00000001, + 0x0004003b, 0x000004a5, 0x000004ac, 0x00000001, 0x0004003b, 0x00000015, 0x000004b9, 0x00000000, + 0x00040020, 0x000004ba, 0x00000001, 0x00000007, 0x0004003b, 0x000004ba, 0x000004bb, 0x00000001, + 0x0004002b, 0x000000de, 0x000004bc, 0x00000009, 0x0004003b, 0x00000015, 0x000004d0, 0x00000000, + 0x00040020, 0x000004da, 0x00000001, 0x00000016, 0x0004003b, 0x000004da, 0x000004db, 0x00000001, + 0x0004002b, 0x000000de, 0x000004e8, 0x00000006, 0x0004002b, 0x000000de, 0x000004ed, 0x00000005, + 0x0004003b, 0x00000015, 0x000004f9, 0x00000000, 0x0006002c, 0x0000001f, 0x00000505, 0x0000011f, + 0x0000011f, 0x0000010a, 0x0004003b, 0x000004a5, 0x00000516, 0x00000001, 0x00040020, 0x00000517, + 0x00000001, 0x00000006, 0x00040020, 0x0000051d, 0x00000002, 0x00000016, 0x0004002b, 0x000000de, + 0x0000052d, 0x00000003, 0x0004001e, 0x00000558, 0x00000016, 0x00000016, 0x00040020, 0x00000559, + 0x00000007, 0x00000558, 0x0004002b, 0x000000de, 0x0000055b, 0x00000007, 0x00040020, 0x0000055d, + 0x00000002, 0x00000495, 0x0004002b, 0x00000006, 0x000005b4, 0x3f8ccccd, 0x0004002b, 0x00000006, + 0x000005b9, 0x3df5c28f, 0x0004002b, 0x00000006, 0x000005c0, 0x3f3851ec, 0x0004002b, 0x00000006, + 0x000005c1, 0x3f1eb852, 0x0004002b, 0x00000006, 0x000005c2, 0x3f051eb8, 0x0006002c, 0x0000001f, + 0x000005c3, 0x000005c0, 0x000005c1, 0x000005c2, 0x0004002b, 0x00000006, 0x000005e2, 0x3d75c28f, + 0x00090019, 0x000005fd, 0x00000006, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 0x00000001, + 0x00000000, 0x0003001b, 0x000005fe, 0x000005fd, 0x00040020, 0x000005ff, 0x00000000, 0x000005fe, + 0x0004003b, 0x000005ff, 0x00000600, 0x00000000, 0x0004002b, 0x00000006, 0x0000062c, 0x3ee66666, + 0x0004002b, 0x000000de, 0x00000634, 0x0000000b, 0x00040020, 0x0000064c, 0x00000003, 0x00000016, + 0x0004003b, 0x0000064c, 0x0000064d, 0x00000003, 0x00050036, 0x00000002, 0x00000004, 0x00000000, + 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x0000000d, 0x00000494, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000049e, 0x00000007, 0x0004003b, 0x0000000d, 0x000004a1, 0x00000007, 0x0004003b, + 0x00000020, 0x000004a4, 0x00000007, 0x0004003b, 0x00000020, 0x000004a9, 0x00000007, 0x0004003b, + 0x00000008, 0x000004b8, 0x00000007, 0x0004003b, 0x00000008, 0x000004bd, 0x00000007, 0x0004003b, + 0x00000020, 0x000004bf, 0x00000007, 0x0004003b, 0x00000020, 0x000004c1, 0x00000007, 0x0004003b, + 0x00000020, 0x000004c3, 0x00000007, 0x0004003b, 0x0000000d, 0x000004c5, 0x00000007, 0x0004003b, + 0x0000000d, 0x000004c8, 0x00000007, 0x0004003b, 0x0000000d, 0x000004cb, 0x00000007, 0x0004003b, + 0x000000da, 0x000004cf, 0x00000007, 0x0004003b, 0x00000008, 0x000004d1, 0x00000007, 0x0004003b, + 0x0000000d, 0x000004d3, 0x00000007, 0x0004003b, 0x0000000d, 0x000004d5, 0x00000007, 0x0004003b, + 0x0000000d, 0x000004d7, 0x00000007, 0x0004003b, 0x00000020, 0x000004e4, 0x00000007, 0x0004003b, + 0x0000000d, 0x000004e7, 0x00000007, 0x0004003b, 0x0000000d, 0x000004ec, 0x00000007, 0x0004003b, + 0x000000df, 0x000004f1, 0x00000007, 0x0004003b, 0x00000020, 0x000004f6, 0x00000007, 0x0004003b, + 0x00000020, 0x000004f8, 0x00000007, 0x0004003b, 0x00000008, 0x000004fa, 0x00000007, 0x0004003b, + 0x0000000d, 0x000004fc, 0x00000007, 0x0004003b, 0x0000000d, 0x000004fe, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000500, 0x00000007, 0x0004003b, 0x00000020, 0x0000050b, 0x00000007, 0x0004003b, + 0x00000020, 0x0000050d, 0x00000007, 0x0004003b, 0x00000020, 0x0000050f, 0x00000007, 0x0004003b, + 0x00000008, 0x00000511, 0x00000007, 0x0004003b, 0x00000020, 0x00000514, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000515, 0x00000007, 0x0004003b, 0x00000020, 0x0000051c, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000522, 0x00000007, 0x0004003b, 0x00000020, 0x00000527, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000529, 0x00000007, 0x0004003b, 0x0000000d, 0x0000052b, 0x00000007, 0x0004003b, + 0x00000020, 0x00000535, 0x00000007, 0x0004003b, 0x00000020, 0x00000537, 0x00000007, 0x0004003b, + 0x00000020, 0x00000539, 0x00000007, 0x0004003b, 0x0000000d, 0x0000053b, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000053d, 0x00000007, 0x0004003b, 0x00000020, 0x0000053f, 0x00000007, 0x0004003b, + 0x00000020, 0x00000541, 0x00000007, 0x0004003b, 0x000000df, 0x0000054a, 0x00000007, 0x0004003b, + 0x00000559, 0x0000055a, 0x00000007, 0x0004003b, 0x00000020, 0x00000564, 0x00000007, 0x0004003b, + 0x00000020, 0x0000056d, 0x00000007, 0x0004003b, 0x00000020, 0x0000057b, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000581, 0x00000007, 0x0004003b, 0x0000000d, 0x00000589, 0x00000007, 0x0004003b, + 0x00000020, 0x00000597, 0x00000007, 0x0004003b, 0x00000020, 0x00000599, 0x00000007, 0x0004003b, + 0x00000020, 0x0000059b, 0x00000007, 0x0004003b, 0x0000000d, 0x0000059d, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000059f, 0x00000007, 0x0004003b, 0x00000020, 0x000005a1, 0x00000007, 0x0004003b, + 0x00000020, 0x000005a3, 0x00000007, 0x0004003b, 0x0000000d, 0x000005aa, 0x00000007, 0x0004003b, + 0x00000020, 0x000005b0, 0x00000007, 0x0004003b, 0x00000020, 0x000005bc, 0x00000007, 0x0004003b, + 0x00000020, 0x000005c5, 0x00000007, 0x0004003b, 0x00000020, 0x000005cb, 0x00000007, 0x0004003b, + 0x0000000d, 0x000005d2, 0x00000007, 0x0004003b, 0x00000020, 0x000005e9, 0x00000007, 0x0004003b, + 0x0000000d, 0x000005ed, 0x00000007, 0x0004003b, 0x00000020, 0x000005f4, 0x00000007, 0x0004003b, + 0x0000000d, 0x000005f9, 0x00000007, 0x0004003b, 0x00000020, 0x000005fc, 0x00000007, 0x0004003b, + 0x00000020, 0x00000608, 0x00000007, 0x0004003b, 0x00000020, 0x0000060d, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000612, 0x00000007, 0x0004003b, 0x00000020, 0x00000613, 0x00000007, 0x0004003b, + 0x00000020, 0x0000061b, 0x00000007, 0x0004003b, 0x00000020, 0x00000630, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000633, 0x00000007, 0x0004003b, 0x0000000d, 0x00000638, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000063e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000643, 0x00000007, 0x00060041, + 0x000003df, 0x0000049c, 0x0000049a, 0x0000049b, 0x00000094, 0x0004003d, 0x00000006, 0x0000049d, + 0x0000049c, 0x0003003e, 0x00000494, 0x0000049d, 0x00060041, 0x000003df, 0x0000049f, 0x0000049a, + 0x0000049b, 0x00000099, 0x0004003d, 0x00000006, 0x000004a0, 0x0000049f, 0x0003003e, 0x0000049e, + 0x000004a0, 0x00060041, 0x000003df, 0x000004a2, 0x0000049a, 0x0000049b, 0x000001db, 0x0004003d, + 0x00000006, 0x000004a3, 0x000004a2, 0x0003003e, 0x000004a1, 0x000004a3, 0x0004003d, 0x0000001f, + 0x000004a7, 0x000004a6, 0x0006000c, 0x0000001f, 0x000004a8, 0x00000001, 0x00000045, 0x000004a7, + 0x0003003e, 0x000004a4, 0x000004a8, 0x0004003d, 0x0000001f, 0x000004ab, 0x000004aa, 0x0004003d, + 0x0000001f, 0x000004ad, 0x000004ac, 0x00050083, 0x0000001f, 0x000004ae, 0x000004ab, 0x000004ad, + 0x0006000c, 0x0000001f, 0x000004af, 0x00000001, 0x00000045, 0x000004ae, 0x0003003e, 0x000004a9, + 0x000004af, 0x0004003d, 0x0000001f, 0x000004b0, 0x000004a4, 0x0004003d, 0x0000001f, 0x000004b1, + 0x000004a9, 0x00050094, 0x00000006, 0x000004b2, 0x000004b0, 0x000004b1, 0x000500b8, 0x000000ac, + 0x000004b3, 0x000004b2, 0x000000dc, 0x000300f7, 0x000004b5, 0x00000000, 0x000400fa, 0x000004b3, + 0x000004b4, 0x000004b5, 0x000200f8, 0x000004b4, 0x0004003d, 0x0000001f, 0x000004b6, 0x000004a4, + 0x0004007f, 0x0000001f, 0x000004b7, 0x000004b6, 0x0003003e, 0x000004a4, 0x000004b7, 0x000200f9, + 0x000004b5, 0x000200f8, 0x000004b5, 0x0004003d, 0x00000007, 0x000004be, 0x000004bb, 0x0003003e, + 0x000004bd, 0x000004be, 0x0004003d, 0x0000001f, 0x000004c0, 0x000004a4, 0x0003003e, 0x000004bf, + 0x000004c0, 0x0004003d, 0x0000001f, 0x000004c2, 0x000004ac, 0x0003003e, 0x000004c1, 0x000004c2, + 0x0004003d, 0x0000001f, 0x000004c4, 0x000004a9, 0x0003003e, 0x000004c3, 0x000004c4, 0x00060041, + 0x000003df, 0x000004c6, 0x0000049a, 0x000004bc, 0x00000094, 0x0004003d, 0x00000006, 0x000004c7, + 0x000004c6, 0x0003003e, 0x000004c5, 0x000004c7, 0x00060041, 0x000003df, 0x000004c9, 0x0000049a, + 0x000004bc, 0x00000099, 0x0004003d, 0x00000006, 0x000004ca, 0x000004c9, 0x0003003e, 0x000004c8, + 0x000004ca, 0x00060041, 0x000003df, 0x000004cc, 0x0000049a, 0x000004bc, 0x000001db, 0x0004003d, + 0x00000006, 0x000004cd, 0x000004cc, 0x0003003e, 0x000004cb, 0x000004cd, 0x000c0039, 0x00000007, + 0x000004ce, 0x0000003a, 0x000004b9, 0x000004bd, 0x000004bf, 0x000004c1, 0x000004c3, 0x000004c5, + 0x000004c8, 0x000004cb, 0x0003003e, 0x000004b8, 0x000004ce, 0x0004003d, 0x00000007, 0x000004d2, + 0x000004b8, 0x0003003e, 0x000004d1, 0x000004d2, 0x0004003d, 0x00000006, 0x000004d4, 0x00000494, + 0x0003003e, 0x000004d3, 0x000004d4, 0x0004003d, 0x00000006, 0x000004d6, 0x0000049e, 0x0003003e, + 0x000004d5, 0x000004d6, 0x0004003d, 0x00000006, 0x000004d8, 0x000004a1, 0x0003003e, 0x000004d7, + 0x000004d8, 0x00090039, 0x00000016, 0x000004d9, 0x0000001d, 0x000004d0, 0x000004d1, 0x000004d3, + 0x000004d5, 0x000004d7, 0x0004003d, 0x00000016, 0x000004dc, 0x000004db, 0x00050085, 0x00000016, + 0x000004dd, 0x000004d9, 0x000004dc, 0x0003003e, 0x000004cf, 0x000004dd, 0x00050041, 0x0000000d, + 0x000004de, 0x000004cf, 0x000003d9, 0x0004003d, 0x00000006, 0x000004df, 0x000004de, 0x000500b8, + 0x000000ac, 0x000004e0, 0x000004df, 0x0000011f, 0x000300f7, 0x000004e2, 0x00000000, 0x000400fa, + 0x000004e0, 0x000004e1, 0x000004e2, 0x000200f8, 0x000004e1, 0x000100fc, 0x000200f8, 0x000004e2, + 0x0004003d, 0x00000016, 0x000004e5, 0x000004cf, 0x0008004f, 0x0000001f, 0x000004e6, 0x000004e5, + 0x000004e5, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x000004e4, 0x000004e6, 0x00060041, + 0x000003df, 0x000004e9, 0x0000049a, 0x000004e8, 0x000003d9, 0x0004003d, 0x00000006, 0x000004ea, + 0x000004e9, 0x0008000c, 0x00000006, 0x000004eb, 0x00000001, 0x0000002b, 0x000004ea, 0x000000dc, + 0x0000010a, 0x0003003e, 0x000004e7, 0x000004eb, 0x00060041, 0x000003df, 0x000004ee, 0x0000049a, + 0x000004ed, 0x000003d9, 0x0004003d, 0x00000006, 0x000004ef, 0x000004ee, 0x0008000c, 0x00000006, + 0x000004f0, 0x00000001, 0x0000002b, 0x000004ef, 0x000002ef, 0x0000010a, 0x0003003e, 0x000004ec, + 0x000004f0, 0x00060041, 0x000003df, 0x000004f2, 0x0000049a, 0x000003de, 0x000003d9, 0x0004003d, + 0x00000006, 0x000004f3, 0x000004f2, 0x00050081, 0x00000006, 0x000004f4, 0x000004f3, 0x0000011f, + 0x0004006e, 0x000000de, 0x000004f5, 0x000004f4, 0x0003003e, 0x000004f1, 0x000004f5, 0x0004003d, + 0x0000001f, 0x000004f7, 0x000004a4, 0x0003003e, 0x000004f6, 0x000004f7, 0x0004003d, 0x00000007, + 0x000004fb, 0x000004b8, 0x0003003e, 0x000004fa, 0x000004fb, 0x0004003d, 0x00000006, 0x000004fd, + 0x00000494, 0x0003003e, 0x000004fc, 0x000004fd, 0x0004003d, 0x00000006, 0x000004ff, 0x0000049e, + 0x0003003e, 0x000004fe, 0x000004ff, 0x0004003d, 0x00000006, 0x00000501, 0x000004a1, 0x0003003e, + 0x00000500, 0x00000501, 0x00090039, 0x00000016, 0x00000502, 0x0000001d, 0x000004f9, 0x000004fa, + 0x000004fc, 0x000004fe, 0x00000500, 0x0008004f, 0x0000001f, 0x00000503, 0x00000502, 0x00000502, + 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x000004f8, 0x00000503, 0x0004003d, 0x0000001f, + 0x00000504, 0x000004f8, 0x00050083, 0x0000001f, 0x00000506, 0x00000504, 0x00000505, 0x0006000c, + 0x00000006, 0x00000507, 0x00000001, 0x00000042, 0x00000506, 0x000500ba, 0x000000ac, 0x00000508, + 0x00000507, 0x000002ef, 0x000300f7, 0x0000050a, 0x00000000, 0x000400fa, 0x00000508, 0x00000509, + 0x0000050a, 0x000200f8, 0x00000509, 0x0004003d, 0x0000001f, 0x0000050c, 0x000004f6, 0x0003003e, + 0x0000050b, 0x0000050c, 0x0004003d, 0x0000001f, 0x0000050e, 0x000004f8, 0x0003003e, 0x0000050d, + 0x0000050e, 0x0004003d, 0x0000001f, 0x00000510, 0x000004ac, 0x0003003e, 0x0000050f, 0x00000510, + 0x0004003d, 0x00000007, 0x00000512, 0x000004b8, 0x0003003e, 0x00000511, 0x00000512, 0x00080039, + 0x0000001f, 0x00000513, 0x0000005c, 0x0000050b, 0x0000050d, 0x0000050f, 0x00000511, 0x0003003e, + 0x000004f6, 0x00000513, 0x000200f9, 0x0000050a, 0x000200f8, 0x0000050a, 0x0003003e, 0x00000514, + 0x00000174, 0x00050041, 0x00000517, 0x00000518, 0x00000516, 0x000001db, 0x0004003d, 0x00000006, + 0x00000519, 0x00000518, 0x0004007f, 0x00000006, 0x0000051a, 0x00000519, 0x0007000c, 0x00000006, + 0x0000051b, 0x00000001, 0x00000028, 0x0000051a, 0x000000dc, 0x0003003e, 0x00000515, 0x0000051b, + 0x00050041, 0x0000051d, 0x0000051e, 0x0000049a, 0x000003de, 0x0004003d, 0x00000016, 0x0000051f, + 0x0000051e, 0x0008004f, 0x0000001f, 0x00000520, 0x0000051f, 0x0000051f, 0x00000000, 0x00000001, + 0x00000002, 0x0006000c, 0x0000001f, 0x00000521, 0x00000001, 0x00000045, 0x00000520, 0x0003003e, + 0x0000051c, 0x00000521, 0x0004003d, 0x0000001f, 0x00000523, 0x000004f6, 0x0004003d, 0x0000001f, + 0x00000524, 0x0000051c, 0x00050094, 0x00000006, 0x00000525, 0x00000523, 0x00000524, 0x0007000c, + 0x00000006, 0x00000526, 0x00000001, 0x00000028, 0x00000525, 0x000000dc, 0x0004003d, 0x0000001f, + 0x00000528, 0x000004ac, 0x0003003e, 0x00000527, 0x00000528, 0x0004003d, 0x00000006, 0x0000052a, + 0x00000515, 0x0003003e, 0x00000529, 0x0000052a, 0x0003003e, 0x0000052b, 0x00000526, 0x00070039, + 0x00000006, 0x0000052c, 0x0000006c, 0x00000527, 0x00000529, 0x0000052b, 0x0003003e, 0x00000522, + 0x0000052c, 0x00050041, 0x0000051d, 0x0000052e, 0x0000049a, 0x0000052d, 0x0004003d, 0x00000016, + 0x0000052f, 0x0000052e, 0x0008004f, 0x0000001f, 0x00000530, 0x0000052f, 0x0000052f, 0x00000000, + 0x00000001, 0x00000002, 0x0006000c, 0x00000006, 0x00000531, 0x00000001, 0x00000042, 0x00000530, + 0x000500ba, 0x000000ac, 0x00000532, 0x00000531, 0x00000316, 0x000300f7, 0x00000534, 0x00000000, + 0x000400fa, 0x00000532, 0x00000533, 0x00000534, 0x000200f8, 0x00000533, 0x0004003d, 0x0000001f, + 0x00000536, 0x000004f6, 0x0003003e, 0x00000535, 0x00000536, 0x0004003d, 0x0000001f, 0x00000538, + 0x000004a9, 0x0003003e, 0x00000537, 0x00000538, 0x0004003d, 0x0000001f, 0x0000053a, 0x000004e4, + 0x0003003e, 0x00000539, 0x0000053a, 0x0004003d, 0x00000006, 0x0000053c, 0x000004e7, 0x0003003e, + 0x0000053b, 0x0000053c, 0x0004003d, 0x00000006, 0x0000053e, 0x000004ec, 0x0003003e, 0x0000053d, + 0x0000053e, 0x0004003d, 0x0000001f, 0x00000540, 0x0000051c, 0x0003003e, 0x0000053f, 0x00000540, + 0x00050041, 0x0000051d, 0x00000542, 0x0000049a, 0x0000052d, 0x0004003d, 0x00000016, 0x00000543, + 0x00000542, 0x0008004f, 0x0000001f, 0x00000544, 0x00000543, 0x00000543, 0x00000000, 0x00000001, + 0x00000002, 0x0003003e, 0x00000541, 0x00000544, 0x000b0039, 0x0000001f, 0x00000545, 0x00000066, + 0x00000535, 0x00000537, 0x00000539, 0x0000053b, 0x0000053d, 0x0000053f, 0x00000541, 0x0004003d, + 0x00000006, 0x00000546, 0x00000522, 0x0005008e, 0x0000001f, 0x00000547, 0x00000545, 0x00000546, + 0x0004003d, 0x0000001f, 0x00000548, 0x00000514, 0x00050081, 0x0000001f, 0x00000549, 0x00000548, + 0x00000547, 0x0003003e, 0x00000514, 0x00000549, 0x000200f9, 0x00000534, 0x000200f8, 0x00000534, + 0x0003003e, 0x0000054a, 0x000000e1, 0x000200f9, 0x0000054b, 0x000200f8, 0x0000054b, 0x000400f6, + 0x0000054d, 0x0000054e, 0x00000000, 0x000200f9, 0x0000054f, 0x000200f8, 0x0000054f, 0x0004003d, + 0x000000de, 0x00000550, 0x0000054a, 0x000500b1, 0x000000ac, 0x00000551, 0x00000550, 0x0000049b, + 0x000400fa, 0x00000551, 0x0000054c, 0x0000054d, 0x000200f8, 0x0000054c, 0x0004003d, 0x000000de, + 0x00000552, 0x0000054a, 0x0004003d, 0x000000de, 0x00000553, 0x000004f1, 0x000500af, 0x000000ac, + 0x00000554, 0x00000552, 0x00000553, 0x000300f7, 0x00000556, 0x00000000, 0x000400fa, 0x00000554, + 0x00000555, 0x00000556, 0x000200f8, 0x00000555, 0x000200f9, 0x0000054d, 0x000200f8, 0x00000556, + 0x0004003d, 0x000000de, 0x0000055c, 0x0000054a, 0x00060041, 0x0000055d, 0x0000055e, 0x0000049a, + 0x0000055b, 0x0000055c, 0x0004003d, 0x00000495, 0x0000055f, 0x0000055e, 0x00050051, 0x00000016, + 0x00000560, 0x0000055f, 0x00000000, 0x00050041, 0x000000da, 0x00000561, 0x0000055a, 0x000000e1, + 0x0003003e, 0x00000561, 0x00000560, 0x00050051, 0x00000016, 0x00000562, 0x0000055f, 0x00000001, + 0x00050041, 0x000000da, 0x00000563, 0x0000055a, 0x000000e8, 0x0003003e, 0x00000563, 0x00000562, + 0x00050041, 0x000000da, 0x00000565, 0x0000055a, 0x000000e8, 0x0004003d, 0x00000016, 0x00000566, + 0x00000565, 0x0008004f, 0x0000001f, 0x00000567, 0x00000566, 0x00000566, 0x00000000, 0x00000001, + 0x00000002, 0x0003003e, 0x00000564, 0x00000567, 0x00060041, 0x0000000d, 0x00000568, 0x0000055a, + 0x000000e1, 0x000003d9, 0x0004003d, 0x00000006, 0x00000569, 0x00000568, 0x000500bc, 0x000000ac, + 0x0000056a, 0x00000569, 0x000000dc, 0x000300f7, 0x0000056c, 0x00000000, 0x000400fa, 0x0000056a, + 0x0000056b, 0x0000057a, 0x000200f8, 0x0000056b, 0x00050041, 0x000000da, 0x0000056e, 0x0000055a, + 0x000000e1, 0x0004003d, 0x00000016, 0x0000056f, 0x0000056e, 0x0008004f, 0x0000001f, 0x00000570, + 0x0000056f, 0x0000056f, 0x00000000, 0x00000001, 0x00000002, 0x0006000c, 0x0000001f, 0x00000571, + 0x00000001, 0x00000045, 0x00000570, 0x0003003e, 0x0000056d, 0x00000571, 0x0004003d, 0x0000001f, + 0x00000572, 0x0000056d, 0x0004003d, 0x0000001f, 0x00000573, 0x0000051c, 0x00050083, 0x0000001f, + 0x00000574, 0x00000572, 0x00000573, 0x0006000c, 0x00000006, 0x00000575, 0x00000001, 0x00000042, + 0x00000574, 0x000500b8, 0x000000ac, 0x00000576, 0x00000575, 0x000000b6, 0x000300f7, 0x00000578, + 0x00000000, 0x000400fa, 0x00000576, 0x00000577, 0x00000578, 0x000200f8, 0x00000577, 0x000200f9, + 0x0000054e, 0x000200f8, 0x00000578, 0x000200f9, 0x0000056c, 0x000200f8, 0x0000057a, 0x00050041, + 0x000000da, 0x0000057c, 0x0000055a, 0x000000e1, 0x0004003d, 0x00000016, 0x0000057d, 0x0000057c, + 0x0008004f, 0x0000001f, 0x0000057e, 0x0000057d, 0x0000057d, 0x00000000, 0x00000001, 0x00000002, + 0x0004003d, 0x0000001f, 0x0000057f, 0x000004ac, 0x00050083, 0x0000001f, 0x00000580, 0x0000057e, + 0x0000057f, 0x0003003e, 0x0000057b, 0x00000580, 0x0004003d, 0x0000001f, 0x00000582, 0x0000057b, + 0x0006000c, 0x00000006, 0x00000583, 0x00000001, 0x00000042, 0x00000582, 0x0003003e, 0x00000581, + 0x00000583, 0x0004003d, 0x0000001f, 0x00000584, 0x0000057b, 0x0004003d, 0x00000006, 0x00000585, + 0x00000581, 0x0007000c, 0x00000006, 0x00000586, 0x00000001, 0x00000028, 0x00000585, 0x000000ab, + 0x00060050, 0x0000001f, 0x00000587, 0x00000586, 0x00000586, 0x00000586, 0x00050088, 0x0000001f, + 0x00000588, 0x00000584, 0x00000587, 0x0003003e, 0x0000056d, 0x00000588, 0x0004003d, 0x00000006, + 0x0000058a, 0x00000581, 0x00060041, 0x0000000d, 0x0000058b, 0x0000055a, 0x000000e1, 0x000003d9, + 0x0004003d, 0x00000006, 0x0000058c, 0x0000058b, 0x0007000c, 0x00000006, 0x0000058d, 0x00000001, + 0x00000028, 0x0000058c, 0x000000b6, 0x00050088, 0x00000006, 0x0000058e, 0x0000058a, 0x0000058d, + 0x00050083, 0x00000006, 0x0000058f, 0x0000010a, 0x0000058e, 0x0008000c, 0x00000006, 0x00000590, + 0x00000001, 0x0000002b, 0x0000058f, 0x000000dc, 0x0000010a, 0x0003003e, 0x00000589, 0x00000590, + 0x0004003d, 0x00000006, 0x00000591, 0x00000589, 0x0004003d, 0x00000006, 0x00000592, 0x00000589, + 0x00050085, 0x00000006, 0x00000593, 0x00000592, 0x00000591, 0x0003003e, 0x00000589, 0x00000593, + 0x0004003d, 0x00000006, 0x00000594, 0x00000589, 0x0004003d, 0x0000001f, 0x00000595, 0x00000564, + 0x0005008e, 0x0000001f, 0x00000596, 0x00000595, 0x00000594, 0x0003003e, 0x00000564, 0x00000596, + 0x000200f9, 0x0000056c, 0x000200f8, 0x0000056c, 0x0004003d, 0x0000001f, 0x00000598, 0x000004f6, + 0x0003003e, 0x00000597, 0x00000598, 0x0004003d, 0x0000001f, 0x0000059a, 0x000004a9, 0x0003003e, + 0x00000599, 0x0000059a, 0x0004003d, 0x0000001f, 0x0000059c, 0x000004e4, 0x0003003e, 0x0000059b, + 0x0000059c, 0x0004003d, 0x00000006, 0x0000059e, 0x000004e7, 0x0003003e, 0x0000059d, 0x0000059e, + 0x0004003d, 0x00000006, 0x000005a0, 0x000004ec, 0x0003003e, 0x0000059f, 0x000005a0, 0x0004003d, + 0x0000001f, 0x000005a2, 0x0000056d, 0x0003003e, 0x000005a1, 0x000005a2, 0x0004003d, 0x0000001f, + 0x000005a4, 0x00000564, 0x0003003e, 0x000005a3, 0x000005a4, 0x000b0039, 0x0000001f, 0x000005a5, + 0x00000066, 0x00000597, 0x00000599, 0x0000059b, 0x0000059d, 0x0000059f, 0x000005a1, 0x000005a3, + 0x0004003d, 0x0000001f, 0x000005a6, 0x00000514, 0x00050081, 0x0000001f, 0x000005a7, 0x000005a6, + 0x000005a5, 0x0003003e, 0x00000514, 0x000005a7, 0x000200f9, 0x0000054e, 0x000200f8, 0x0000054e, + 0x0004003d, 0x000000de, 0x000005a8, 0x0000054a, 0x00050080, 0x000000de, 0x000005a9, 0x000005a8, + 0x000000e8, 0x0003003e, 0x0000054a, 0x000005a9, 0x000200f9, 0x0000054b, 0x000200f8, 0x0000054d, + 0x00050041, 0x0000000d, 0x000005ab, 0x000004f6, 0x00000099, 0x0004003d, 0x00000006, 0x000005ac, + 0x000005ab, 0x00050085, 0x00000006, 0x000005ad, 0x000005ac, 0x0000011f, 0x00050081, 0x00000006, + 0x000005ae, 0x000005ad, 0x0000011f, 0x0008000c, 0x00000006, 0x000005af, 0x00000001, 0x0000002b, + 0x000005ae, 0x000000dc, 0x0000010a, 0x0003003e, 0x000005aa, 0x000005af, 0x00050041, 0x0000051d, + 0x000005b1, 0x0000049a, 0x000004e8, 0x0004003d, 0x00000016, 0x000005b2, 0x000005b1, 0x0008004f, + 0x0000001f, 0x000005b3, 0x000005b2, 0x000005b2, 0x00000000, 0x00000001, 0x00000002, 0x0005008e, + 0x0000001f, 0x000005b5, 0x000005b3, 0x000005b4, 0x00050041, 0x0000051d, 0x000005b6, 0x0000049a, + 0x0000052d, 0x0004003d, 0x00000016, 0x000005b7, 0x000005b6, 0x0008004f, 0x0000001f, 0x000005b8, + 0x000005b7, 0x000005b7, 0x00000000, 0x00000001, 0x00000002, 0x0005008e, 0x0000001f, 0x000005ba, + 0x000005b8, 0x000005b9, 0x00050081, 0x0000001f, 0x000005bb, 0x000005b5, 0x000005ba, 0x0003003e, + 0x000005b0, 0x000005bb, 0x00050041, 0x0000051d, 0x000005bd, 0x0000049a, 0x000004e8, 0x0004003d, + 0x00000016, 0x000005be, 0x000005bd, 0x0008004f, 0x0000001f, 0x000005bf, 0x000005be, 0x000005be, + 0x00000000, 0x00000001, 0x00000002, 0x00050085, 0x0000001f, 0x000005c4, 0x000005bf, 0x000005c3, + 0x0003003e, 0x000005bc, 0x000005c4, 0x0004003d, 0x0000001f, 0x000005c6, 0x000005bc, 0x0004003d, + 0x0000001f, 0x000005c7, 0x000005b0, 0x0004003d, 0x00000006, 0x000005c8, 0x000005aa, 0x00060050, + 0x0000001f, 0x000005c9, 0x000005c8, 0x000005c8, 0x000005c8, 0x0008000c, 0x0000001f, 0x000005ca, + 0x00000001, 0x0000002e, 0x000005c6, 0x000005c7, 0x000005c9, 0x0003003e, 0x000005c5, 0x000005ca, + 0x0004003d, 0x0000001f, 0x000005cc, 0x000004e4, 0x0004003d, 0x0000001f, 0x000005cd, 0x000005c5, + 0x00050085, 0x0000001f, 0x000005ce, 0x000005cc, 0x000005cd, 0x0004003d, 0x00000006, 0x000005cf, + 0x000004e7, 0x00050083, 0x00000006, 0x000005d0, 0x0000010a, 0x000005cf, 0x0005008e, 0x0000001f, + 0x000005d1, 0x000005ce, 0x000005d0, 0x0003003e, 0x000005cb, 0x000005d1, 0x0004003d, 0x0000001f, + 0x000005d3, 0x000004f6, 0x0004003d, 0x0000001f, 0x000005d4, 0x0000051c, 0x00050094, 0x00000006, + 0x000005d5, 0x000005d3, 0x000005d4, 0x00050085, 0x00000006, 0x000005d6, 0x000005d5, 0x0000011f, + 0x00050081, 0x00000006, 0x000005d7, 0x000005d6, 0x0000011f, 0x0007000c, 0x00000006, 0x000005d8, + 0x00000001, 0x00000028, 0x000005d7, 0x000000dc, 0x0003003e, 0x000005d2, 0x000005d8, 0x0004003d, + 0x0000001f, 0x000005d9, 0x000004e4, 0x00050041, 0x0000051d, 0x000005da, 0x0000049a, 0x0000052d, + 0x0004003d, 0x00000016, 0x000005db, 0x000005da, 0x0008004f, 0x0000001f, 0x000005dc, 0x000005db, + 0x000005db, 0x00000000, 0x00000001, 0x00000002, 0x00050085, 0x0000001f, 0x000005dd, 0x000005d9, + 0x000005dc, 0x0004003d, 0x00000006, 0x000005de, 0x000005d2, 0x0004003d, 0x00000006, 0x000005df, + 0x000005d2, 0x00050085, 0x00000006, 0x000005e0, 0x000005de, 0x000005df, 0x0005008e, 0x0000001f, + 0x000005e1, 0x000005dd, 0x000005e0, 0x0005008e, 0x0000001f, 0x000005e3, 0x000005e1, 0x000005e2, + 0x0004003d, 0x00000006, 0x000005e4, 0x000004e7, 0x00050083, 0x00000006, 0x000005e5, 0x0000010a, + 0x000005e4, 0x0005008e, 0x0000001f, 0x000005e6, 0x000005e3, 0x000005e5, 0x0004003d, 0x0000001f, + 0x000005e7, 0x000005cb, 0x00050081, 0x0000001f, 0x000005e8, 0x000005e7, 0x000005e6, 0x0003003e, + 0x000005cb, 0x000005e8, 0x0004003d, 0x0000001f, 0x000005ea, 0x000005cb, 0x0004003d, 0x0000001f, + 0x000005eb, 0x00000514, 0x00050081, 0x0000001f, 0x000005ec, 0x000005ea, 0x000005eb, 0x0003003e, + 0x000005e9, 0x000005ec, 0x00060041, 0x000003df, 0x000005ee, 0x0000049a, 0x0000052d, 0x000003d9, + 0x0004003d, 0x00000006, 0x000005ef, 0x000005ee, 0x0003003e, 0x000005ed, 0x000005ef, 0x0004003d, + 0x00000006, 0x000005f0, 0x000005ed, 0x000500ba, 0x000000ac, 0x000005f1, 0x000005f0, 0x000000ab, + 0x000300f7, 0x000005f3, 0x00000000, 0x000400fa, 0x000005f1, 0x000005f2, 0x000005f3, 0x000200f8, + 0x000005f2, 0x0004003d, 0x0000001f, 0x000005f5, 0x000004a9, 0x0004007f, 0x0000001f, 0x000005f6, + 0x000005f5, 0x0004003d, 0x0000001f, 0x000005f7, 0x000004f6, 0x0007000c, 0x0000001f, 0x000005f8, + 0x00000001, 0x00000047, 0x000005f6, 0x000005f7, 0x0003003e, 0x000005f4, 0x000005f8, 0x0004003d, + 0x00000006, 0x000005fa, 0x000004ec, 0x00050085, 0x00000006, 0x000005fb, 0x000005fa, 0x000002e1, + 0x0003003e, 0x000005f9, 0x000005fb, 0x0004003d, 0x000005fe, 0x00000601, 0x00000600, 0x0004003d, + 0x0000001f, 0x00000602, 0x000005f4, 0x0004003d, 0x00000006, 0x00000603, 0x000005f9, 0x00070058, + 0x00000016, 0x00000604, 0x00000601, 0x00000602, 0x00000002, 0x00000603, 0x0008004f, 0x0000001f, + 0x00000605, 0x00000604, 0x00000604, 0x00000000, 0x00000001, 0x00000002, 0x0004003d, 0x00000006, + 0x00000606, 0x000005ed, 0x0005008e, 0x0000001f, 0x00000607, 0x00000605, 0x00000606, 0x0003003e, + 0x000005fc, 0x00000607, 0x0004003d, 0x0000001f, 0x00000609, 0x000004e4, 0x0004003d, 0x00000006, + 0x0000060a, 0x000004e7, 0x00060050, 0x0000001f, 0x0000060b, 0x0000060a, 0x0000060a, 0x0000060a, + 0x0008000c, 0x0000001f, 0x0000060c, 0x00000001, 0x0000002e, 0x00000393, 0x00000609, 0x0000060b, + 0x0003003e, 0x00000608, 0x0000060c, 0x0004003d, 0x0000001f, 0x0000060e, 0x000004f6, 0x0004003d, + 0x0000001f, 0x0000060f, 0x000004a9, 0x00050094, 0x00000006, 0x00000610, 0x0000060e, 0x0000060f, + 0x0007000c, 0x00000006, 0x00000611, 0x00000001, 0x00000028, 0x00000610, 0x000000dc, 0x0003003e, + 0x00000612, 0x00000611, 0x0004003d, 0x0000001f, 0x00000614, 0x00000608, 0x0003003e, 0x00000613, + 0x00000614, 0x00060039, 0x0000001f, 0x00000615, 0x00000055, 0x00000612, 0x00000613, 0x0003003e, + 0x0000060d, 0x00000615, 0x0004003d, 0x0000001f, 0x00000616, 0x000005fc, 0x0004003d, 0x0000001f, + 0x00000617, 0x0000060d, 0x00050085, 0x0000001f, 0x00000618, 0x00000616, 0x00000617, 0x0004003d, + 0x0000001f, 0x00000619, 0x000005e9, 0x00050081, 0x0000001f, 0x0000061a, 0x00000619, 0x00000618, + 0x0003003e, 0x000005e9, 0x0000061a, 0x0004003d, 0x000005fe, 0x0000061c, 0x00000600, 0x0004003d, + 0x0000001f, 0x0000061d, 0x000004f6, 0x00070058, 0x00000016, 0x0000061e, 0x0000061c, 0x0000061d, + 0x00000002, 0x000002e1, 0x0008004f, 0x0000001f, 0x0000061f, 0x0000061e, 0x0000061e, 0x00000000, + 0x00000001, 0x00000002, 0x0004003d, 0x00000006, 0x00000620, 0x000005ed, 0x0005008e, 0x0000001f, + 0x00000621, 0x0000061f, 0x00000620, 0x0003003e, 0x0000061b, 0x00000621, 0x0004003d, 0x0000001f, + 0x00000622, 0x000004e4, 0x0004003d, 0x0000001f, 0x00000623, 0x0000061b, 0x00050085, 0x0000001f, + 0x00000624, 0x00000622, 0x00000623, 0x0004003d, 0x00000006, 0x00000625, 0x000004e7, 0x00050083, + 0x00000006, 0x00000626, 0x0000010a, 0x00000625, 0x0005008e, 0x0000001f, 0x00000627, 0x00000624, + 0x00000626, 0x0004003d, 0x0000001f, 0x00000628, 0x0000060d, 0x00060050, 0x0000001f, 0x00000629, + 0x0000010a, 0x0000010a, 0x0000010a, 0x00050083, 0x0000001f, 0x0000062a, 0x00000629, 0x00000628, + 0x00050085, 0x0000001f, 0x0000062b, 0x00000627, 0x0000062a, 0x0005008e, 0x0000001f, 0x0000062d, + 0x0000062b, 0x0000062c, 0x0004003d, 0x0000001f, 0x0000062e, 0x000005e9, 0x00050081, 0x0000001f, + 0x0000062f, 0x0000062e, 0x0000062d, 0x0003003e, 0x000005e9, 0x0000062f, 0x000200f9, 0x000005f3, + 0x000200f8, 0x000005f3, 0x0004003d, 0x0000001f, 0x00000631, 0x000005e9, 0x0003003e, 0x00000630, + 0x00000631, 0x00050039, 0x0000001f, 0x00000632, 0x0000003e, 0x00000630, 0x0003003e, 0x000005e9, + 0x00000632, 0x00060041, 0x000003df, 0x00000635, 0x0000049a, 0x00000634, 0x00000094, 0x0004003d, + 0x00000006, 0x00000636, 0x00000635, 0x0007000c, 0x00000006, 0x00000637, 0x00000001, 0x00000028, + 0x00000636, 0x000000ab, 0x0003003e, 0x00000633, 0x00000637, 0x00060041, 0x000003df, 0x00000639, + 0x0000049a, 0x00000634, 0x00000099, 0x0004003d, 0x00000006, 0x0000063a, 0x00000639, 0x0004003d, + 0x00000006, 0x0000063b, 0x00000633, 0x00050081, 0x00000006, 0x0000063c, 0x0000063b, 0x000000b6, + 0x0007000c, 0x00000006, 0x0000063d, 0x00000001, 0x00000028, 0x0000063a, 0x0000063c, 0x0003003e, + 0x00000638, 0x0000063d, 0x00050041, 0x00000517, 0x0000063f, 0x00000516, 0x000001db, 0x0004003d, + 0x00000006, 0x00000640, 0x0000063f, 0x0004007f, 0x00000006, 0x00000641, 0x00000640, 0x0007000c, + 0x00000006, 0x00000642, 0x00000001, 0x00000028, 0x00000641, 0x000000dc, 0x0003003e, 0x0000063e, + 0x00000642, 0x0004003d, 0x00000006, 0x00000644, 0x0000063e, 0x0004003d, 0x00000006, 0x00000645, + 0x00000633, 0x00050083, 0x00000006, 0x00000646, 0x00000644, 0x00000645, 0x0004003d, 0x00000006, + 0x00000647, 0x00000638, 0x0004003d, 0x00000006, 0x00000648, 0x00000633, 0x00050083, 0x00000006, + 0x00000649, 0x00000647, 0x00000648, 0x00050088, 0x00000006, 0x0000064a, 0x00000646, 0x00000649, + 0x0008000c, 0x00000006, 0x0000064b, 0x00000001, 0x0000002b, 0x0000064a, 0x000000dc, 0x0000010a, + 0x0003003e, 0x00000643, 0x0000064b, 0x0004003d, 0x0000001f, 0x0000064e, 0x000005e9, 0x0004003d, + 0x00000006, 0x0000064f, 0x00000643, 0x00050051, 0x00000006, 0x00000650, 0x0000064e, 0x00000000, + 0x00050051, 0x00000006, 0x00000651, 0x0000064e, 0x00000001, 0x00050051, 0x00000006, 0x00000652, + 0x0000064e, 0x00000002, 0x00070050, 0x00000016, 0x00000653, 0x00000650, 0x00000651, 0x00000652, + 0x0000064f, 0x0003003e, 0x0000064d, 0x00000653, 0x000100fd, 0x00010038, 0x00050036, 0x00000007, + 0x0000000b, 0x00000000, 0x00000009, 0x00030037, 0x00000008, 0x0000000a, 0x000200f8, 0x0000000c, + 0x0004003b, 0x00000020, 0x0000006e, 0x00000007, 0x0004003d, 0x00000007, 0x0000006f, 0x0000000a, + 0x0008004f, 0x0000001f, 0x00000070, 0x0000006f, 0x0000006f, 0x00000000, 0x00000001, 0x00000000, + 0x00050085, 0x0000001f, 0x00000075, 0x00000070, 0x00000074, 0x0006000c, 0x0000001f, 0x00000076, + 0x00000001, 0x0000000a, 0x00000075, 0x0003003e, 0x0000006e, 0x00000076, 0x0004003d, 0x0000001f, + 0x00000077, 0x0000006e, 0x0004003d, 0x0000001f, 0x00000078, 0x0000006e, 0x0008004f, 0x0000001f, + 0x00000079, 0x00000078, 0x00000078, 0x00000001, 0x00000002, 0x00000000, 0x00060050, 0x0000001f, + 0x0000007b, 0x0000007a, 0x0000007a, 0x0000007a, 0x00050081, 0x0000001f, 0x0000007c, 0x00000079, + 0x0000007b, 0x00050094, 0x00000006, 0x0000007d, 0x00000077, 0x0000007c, 0x0004003d, 0x0000001f, + 0x0000007e, 0x0000006e, 0x00060050, 0x0000001f, 0x0000007f, 0x0000007d, 0x0000007d, 0x0000007d, + 0x00050081, 0x0000001f, 0x00000080, 0x0000007e, 0x0000007f, 0x0003003e, 0x0000006e, 0x00000080, + 0x0004003d, 0x0000001f, 0x00000081, 0x0000006e, 0x0007004f, 0x00000007, 0x00000082, 0x00000081, + 0x00000081, 0x00000000, 0x00000000, 0x0004003d, 0x0000001f, 0x00000083, 0x0000006e, 0x0007004f, + 0x00000007, 0x00000084, 0x00000083, 0x00000083, 0x00000001, 0x00000002, 0x00050081, 0x00000007, + 0x00000085, 0x00000082, 0x00000084, 0x0004003d, 0x0000001f, 0x00000086, 0x0000006e, 0x0007004f, + 0x00000007, 0x00000087, 0x00000086, 0x00000086, 0x00000002, 0x00000001, 0x00050085, 0x00000007, + 0x00000088, 0x00000085, 0x00000087, 0x0006000c, 0x00000007, 0x00000089, 0x00000001, 0x0000000a, + 0x00000088, 0x000200fe, 0x00000089, 0x00010038, 0x00050036, 0x00000007, 0x00000011, 0x00000000, + 0x0000000e, 0x00030037, 0x00000008, 0x0000000f, 0x00030037, 0x0000000d, 0x00000010, 0x000200f8, + 0x00000012, 0x0004003b, 0x0000000d, 0x0000008c, 0x00000007, 0x0004003b, 0x0000000d, 0x0000008f, + 0x00000007, 0x0004003d, 0x00000006, 0x0000008d, 0x00000010, 0x0006000c, 0x00000006, 0x0000008e, + 0x00000001, 0x0000000d, 0x0000008d, 0x0003003e, 0x0000008c, 0x0000008e, 0x0004003d, 0x00000006, + 0x00000090, 0x00000010, 0x0006000c, 0x00000006, 0x00000091, 0x00000001, 0x0000000e, 0x00000090, + 0x0003003e, 0x0000008f, 0x00000091, 0x0004003d, 0x00000006, 0x00000092, 0x0000008f, 0x00050041, + 0x0000000d, 0x00000095, 0x0000000f, 0x00000094, 0x0004003d, 0x00000006, 0x00000096, 0x00000095, + 0x00050085, 0x00000006, 0x00000097, 0x00000092, 0x00000096, 0x0004003d, 0x00000006, 0x00000098, + 0x0000008c, 0x00050041, 0x0000000d, 0x0000009a, 0x0000000f, 0x00000099, 0x0004003d, 0x00000006, + 0x0000009b, 0x0000009a, 0x00050085, 0x00000006, 0x0000009c, 0x00000098, 0x0000009b, 0x00050083, + 0x00000006, 0x0000009d, 0x00000097, 0x0000009c, 0x0004003d, 0x00000006, 0x0000009e, 0x0000008c, + 0x00050041, 0x0000000d, 0x0000009f, 0x0000000f, 0x00000094, 0x0004003d, 0x00000006, 0x000000a0, + 0x0000009f, 0x00050085, 0x00000006, 0x000000a1, 0x0000009e, 0x000000a0, 0x0004003d, 0x00000006, + 0x000000a2, 0x0000008f, 0x00050041, 0x0000000d, 0x000000a3, 0x0000000f, 0x00000099, 0x0004003d, + 0x00000006, 0x000000a4, 0x000000a3, 0x00050085, 0x00000006, 0x000000a5, 0x000000a2, 0x000000a4, + 0x00050081, 0x00000006, 0x000000a6, 0x000000a1, 0x000000a5, 0x00050050, 0x00000007, 0x000000a7, + 0x0000009d, 0x000000a6, 0x000200fe, 0x000000a7, 0x00010038, 0x00050036, 0x00000016, 0x0000001d, + 0x00000000, 0x00000017, 0x00030037, 0x00000015, 0x00000018, 0x00030037, 0x00000008, 0x00000019, + 0x00030037, 0x0000000d, 0x0000001a, 0x00030037, 0x0000000d, 0x0000001b, 0x00030037, 0x0000000d, + 0x0000001c, 0x000200f8, 0x0000001e, 0x0004003b, 0x0000000d, 0x000000b4, 0x00000007, 0x0004003b, + 0x00000008, 0x000000b8, 0x00000007, 0x0004003b, 0x00000008, 0x000000bb, 0x00000007, 0x0004003b, + 0x00000008, 0x000000be, 0x00000007, 0x0004003b, 0x00000008, 0x000000c2, 0x00000007, 0x0004003b, + 0x00000008, 0x000000c5, 0x00000007, 0x0004003b, 0x00000008, 0x000000c8, 0x00000007, 0x0004003b, + 0x000000da, 0x000000db, 0x00000007, 0x0004003b, 0x000000df, 0x000000e0, 0x00000007, 0x0004003b, + 0x000000df, 0x000000ea, 0x00000007, 0x0004003b, 0x00000008, 0x000000f2, 0x00000007, 0x0004003b, + 0x00000008, 0x000000fa, 0x00000007, 0x0004003b, 0x00000008, 0x000000fb, 0x00000007, 0x0004003b, + 0x00000008, 0x000000fe, 0x00000007, 0x0004003b, 0x00000008, 0x00000104, 0x00000007, 0x0004003b, + 0x00000008, 0x00000106, 0x00000007, 0x0004003b, 0x0000000d, 0x00000111, 0x00000007, 0x0004003b, + 0x00000008, 0x0000011d, 0x00000007, 0x0004003b, 0x00000008, 0x00000125, 0x00000007, 0x0004003b, + 0x00000008, 0x0000012a, 0x00000007, 0x0004003b, 0x0000000d, 0x0000012b, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000131, 0x00000007, 0x0004003d, 0x00000006, 0x000000aa, 0x0000001b, 0x000500b8, + 0x000000ac, 0x000000ad, 0x000000aa, 0x000000ab, 0x000300f7, 0x000000af, 0x00000000, 0x000400fa, + 0x000000ad, 0x000000ae, 0x000000af, 0x000200f8, 0x000000ae, 0x0004003d, 0x00000014, 0x000000b0, + 0x00000018, 0x0004003d, 0x00000007, 0x000000b1, 0x00000019, 0x00050057, 0x00000016, 0x000000b2, + 0x000000b0, 0x000000b1, 0x000200fe, 0x000000b2, 0x000200f8, 0x000000af, 0x0004003d, 0x00000006, + 0x000000b5, 0x0000001a, 0x0007000c, 0x00000006, 0x000000b7, 0x00000001, 0x00000028, 0x000000b5, + 0x000000b6, 0x0003003e, 0x000000b4, 0x000000b7, 0x0004003d, 0x00000007, 0x000000b9, 0x00000019, + 0x000400cf, 0x00000007, 0x000000ba, 0x000000b9, 0x0003003e, 0x000000b8, 0x000000ba, 0x0004003d, + 0x00000007, 0x000000bc, 0x00000019, 0x000400d0, 0x00000007, 0x000000bd, 0x000000bc, 0x0003003e, + 0x000000bb, 0x000000bd, 0x0004003d, 0x00000007, 0x000000bf, 0x00000019, 0x0004003d, 0x00000006, + 0x000000c0, 0x000000b4, 0x0005008e, 0x00000007, 0x000000c1, 0x000000bf, 0x000000c0, 0x0003003e, + 0x000000be, 0x000000c1, 0x0004003d, 0x00000007, 0x000000c3, 0x000000be, 0x0006000c, 0x00000007, + 0x000000c4, 0x00000001, 0x00000008, 0x000000c3, 0x0003003e, 0x000000c2, 0x000000c4, 0x0004003d, + 0x00000007, 0x000000c6, 0x000000be, 0x0006000c, 0x00000007, 0x000000c7, 0x00000001, 0x0000000a, + 0x000000c6, 0x0003003e, 0x000000c5, 0x000000c7, 0x0004003d, 0x00000007, 0x000000c9, 0x000000c5, + 0x0004003d, 0x00000007, 0x000000ca, 0x000000c5, 0x00050085, 0x00000007, 0x000000cb, 0x000000c9, + 0x000000ca, 0x0004003d, 0x00000007, 0x000000cc, 0x000000c5, 0x00050085, 0x00000007, 0x000000cd, + 0x000000cb, 0x000000cc, 0x0004003d, 0x00000007, 0x000000ce, 0x000000c5, 0x0004003d, 0x00000007, + 0x000000cf, 0x000000c5, 0x0005008e, 0x00000007, 0x000000d1, 0x000000cf, 0x000000d0, 0x00050050, + 0x00000007, 0x000000d3, 0x000000d2, 0x000000d2, 0x00050083, 0x00000007, 0x000000d4, 0x000000d1, + 0x000000d3, 0x00050085, 0x00000007, 0x000000d5, 0x000000ce, 0x000000d4, 0x00050050, 0x00000007, + 0x000000d7, 0x000000d6, 0x000000d6, 0x00050081, 0x00000007, 0x000000d8, 0x000000d5, 0x000000d7, + 0x00050085, 0x00000007, 0x000000d9, 0x000000cd, 0x000000d8, 0x0003003e, 0x000000c8, 0x000000d9, + 0x0003003e, 0x000000db, 0x000000dd, 0x0003003e, 0x000000e0, 0x000000e1, 0x000200f9, 0x000000e2, + 0x000200f8, 0x000000e2, 0x000400f6, 0x000000e4, 0x000000e5, 0x00000000, 0x000200f9, 0x000000e6, + 0x000200f8, 0x000000e6, 0x0004003d, 0x000000de, 0x000000e7, 0x000000e0, 0x000500b3, 0x000000ac, + 0x000000e9, 0x000000e7, 0x000000e8, 0x000400fa, 0x000000e9, 0x000000e3, 0x000000e4, 0x000200f8, + 0x000000e3, 0x0003003e, 0x000000ea, 0x000000e1, 0x000200f9, 0x000000eb, 0x000200f8, 0x000000eb, + 0x000400f6, 0x000000ed, 0x000000ee, 0x00000000, 0x000200f9, 0x000000ef, 0x000200f8, 0x000000ef, + 0x0004003d, 0x000000de, 0x000000f0, 0x000000ea, 0x000500b3, 0x000000ac, 0x000000f1, 0x000000f0, + 0x000000e8, 0x000400fa, 0x000000f1, 0x000000ec, 0x000000ed, 0x000200f8, 0x000000ec, 0x0004003d, + 0x00000007, 0x000000f3, 0x000000c2, 0x0004003d, 0x000000de, 0x000000f4, 0x000000ea, 0x0004006f, + 0x00000006, 0x000000f5, 0x000000f4, 0x0004003d, 0x000000de, 0x000000f6, 0x000000e0, 0x0004006f, + 0x00000006, 0x000000f7, 0x000000f6, 0x00050050, 0x00000007, 0x000000f8, 0x000000f5, 0x000000f7, + 0x00050081, 0x00000007, 0x000000f9, 0x000000f3, 0x000000f8, 0x0003003e, 0x000000f2, 0x000000f9, + 0x0004003d, 0x00000007, 0x000000fc, 0x000000f2, 0x0003003e, 0x000000fb, 0x000000fc, 0x00050039, + 0x00000007, 0x000000fd, 0x0000000b, 0x000000fb, 0x0003003e, 0x000000fa, 0x000000fd, 0x0004003d, + 0x00000007, 0x000000ff, 0x000000f2, 0x00050081, 0x00000007, 0x00000103, 0x000000ff, 0x00000102, + 0x0003003e, 0x00000104, 0x00000103, 0x00050039, 0x00000007, 0x00000105, 0x0000000b, 0x00000104, + 0x0003003e, 0x000000fe, 0x00000105, 0x0004003d, 0x00000007, 0x00000107, 0x000000fa, 0x0005008e, + 0x00000007, 0x00000109, 0x00000107, 0x00000108, 0x00050050, 0x00000007, 0x0000010b, 0x0000010a, + 0x0000010a, 0x00050083, 0x00000007, 0x0000010c, 0x00000109, 0x0000010b, 0x0004003d, 0x00000006, + 0x0000010d, 0x0000001b, 0x0004003d, 0x00000006, 0x0000010e, 0x000000b4, 0x00050088, 0x00000006, + 0x0000010f, 0x0000010d, 0x0000010e, 0x0005008e, 0x00000007, 0x00000110, 0x0000010c, 0x0000010f, + 0x0003003e, 0x00000106, 0x00000110, 0x00050041, 0x0000000d, 0x00000112, 0x000000fe, 0x00000094, + 0x0004003d, 0x00000006, 0x00000113, 0x00000112, 0x00050085, 0x00000006, 0x00000114, 0x00000113, + 0x00000108, 0x00050083, 0x00000006, 0x00000115, 0x00000114, 0x0000010a, 0x00050085, 0x00000006, + 0x00000117, 0x00000115, 0x00000116, 0x0004003d, 0x00000006, 0x00000118, 0x0000001c, 0x0008000c, + 0x00000006, 0x00000119, 0x00000001, 0x0000002b, 0x00000118, 0x000000dc, 0x0000010a, 0x00050085, + 0x00000006, 0x0000011a, 0x00000117, 0x00000119, 0x0004003d, 0x00000006, 0x0000011b, 0x0000001b, + 0x00050085, 0x00000006, 0x0000011c, 0x0000011a, 0x0000011b, 0x0003003e, 0x00000111, 0x0000011c, + 0x0004003d, 0x00000007, 0x0000011e, 0x000000f2, 0x00050081, 0x00000007, 0x00000121, 0x0000011e, + 0x00000120, 0x0004003d, 0x00000006, 0x00000122, 0x000000b4, 0x00050050, 0x00000007, 0x00000123, + 0x00000122, 0x00000122, 0x00050088, 0x00000007, 0x00000124, 0x00000121, 0x00000123, 0x0003003e, + 0x0000011d, 0x00000124, 0x0004003d, 0x00000007, 0x00000126, 0x0000011d, 0x0004003d, 0x00000007, + 0x00000127, 0x00000019, 0x0004003d, 0x00000007, 0x00000128, 0x0000011d, 0x00050083, 0x00000007, + 0x00000129, 0x00000127, 0x00000128, 0x0003003e, 0x0000012a, 0x00000129, 0x0004003d, 0x00000006, + 0x0000012c, 0x00000111, 0x0003003e, 0x0000012b, 0x0000012c, 0x00060039, 0x00000007, 0x0000012d, + 0x00000011, 0x0000012a, 0x0000012b, 0x00050081, 0x00000007, 0x0000012e, 0x00000126, 0x0000012d, + 0x0004003d, 0x00000007, 0x0000012f, 0x00000106, 0x00050081, 0x00000007, 0x00000130, 0x0000012e, + 0x0000012f, 0x0003003e, 0x00000125, 0x00000130, 0x00050041, 0x0000000d, 0x00000132, 0x000000c8, + 0x00000094, 0x0004003d, 0x00000006, 0x00000133, 0x00000132, 0x00050083, 0x00000006, 0x00000134, + 0x0000010a, 0x00000133, 0x00050041, 0x0000000d, 0x00000135, 0x000000c8, 0x00000094, 0x0004003d, + 0x00000006, 0x00000136, 0x00000135, 0x0004003d, 0x000000de, 0x00000137, 0x000000ea, 0x0004006f, + 0x00000006, 0x00000138, 0x00000137, 0x0008000c, 0x00000006, 0x00000139, 0x00000001, 0x0000002e, + 0x00000134, 0x00000136, 0x00000138, 0x00050041, 0x0000000d, 0x0000013a, 0x000000c8, 0x00000099, + 0x0004003d, 0x00000006, 0x0000013b, 0x0000013a, 0x00050083, 0x00000006, 0x0000013c, 0x0000010a, + 0x0000013b, 0x00050041, 0x0000000d, 0x0000013d, 0x000000c8, 0x00000099, 0x0004003d, 0x00000006, + 0x0000013e, 0x0000013d, 0x0004003d, 0x000000de, 0x0000013f, 0x000000e0, 0x0004006f, 0x00000006, + 0x00000140, 0x0000013f, 0x0008000c, 0x00000006, 0x00000141, 0x00000001, 0x0000002e, 0x0000013c, + 0x0000013e, 0x00000140, 0x00050085, 0x00000006, 0x00000142, 0x00000139, 0x00000141, 0x0003003e, + 0x00000131, 0x00000142, 0x0004003d, 0x00000014, 0x00000143, 0x00000018, 0x0004003d, 0x00000007, + 0x00000144, 0x00000125, 0x0004003d, 0x00000007, 0x00000145, 0x000000b8, 0x0004003d, 0x00000007, + 0x00000146, 0x000000bb, 0x00080058, 0x00000016, 0x00000147, 0x00000143, 0x00000144, 0x00000004, + 0x00000145, 0x00000146, 0x0004003d, 0x00000006, 0x00000148, 0x00000131, 0x0005008e, 0x00000016, + 0x00000149, 0x00000147, 0x00000148, 0x0004003d, 0x00000016, 0x0000014a, 0x000000db, 0x00050081, + 0x00000016, 0x0000014b, 0x0000014a, 0x00000149, 0x0003003e, 0x000000db, 0x0000014b, 0x000200f9, + 0x000000ee, 0x000200f8, 0x000000ee, 0x0004003d, 0x000000de, 0x0000014c, 0x000000ea, 0x00050080, + 0x000000de, 0x0000014d, 0x0000014c, 0x000000e8, 0x0003003e, 0x000000ea, 0x0000014d, 0x000200f9, + 0x000000eb, 0x000200f8, 0x000000ed, 0x000200f9, 0x000000e5, 0x000200f8, 0x000000e5, 0x0004003d, + 0x000000de, 0x0000014e, 0x000000e0, 0x00050080, 0x000000de, 0x0000014f, 0x0000014e, 0x000000e8, + 0x0003003e, 0x000000e0, 0x0000014f, 0x000200f9, 0x000000e2, 0x000200f8, 0x000000e4, 0x0004003d, + 0x00000016, 0x00000150, 0x000000db, 0x000200fe, 0x00000150, 0x00010038, 0x00050036, 0x00000021, + 0x00000026, 0x00000000, 0x00000022, 0x00030037, 0x00000020, 0x00000023, 0x00030037, 0x00000020, + 0x00000024, 0x00030037, 0x00000008, 0x00000025, 0x000200f8, 0x00000027, 0x0004003b, 0x00000020, + 0x00000153, 0x00000007, 0x0004003b, 0x00000020, 0x00000156, 0x00000007, 0x0004003b, 0x00000020, + 0x00000159, 0x00000007, 0x0004003b, 0x00000008, 0x0000015c, 0x00000007, 0x0004003b, 0x00000008, + 0x0000015f, 0x00000007, 0x0004003b, 0x0000000d, 0x00000162, 0x00000007, 0x0004003b, 0x00000020, + 0x00000184, 0x00000007, 0x0004003b, 0x00000020, 0x00000193, 0x00000007, 0x0004003d, 0x0000001f, + 0x00000154, 0x00000023, 0x0006000c, 0x0000001f, 0x00000155, 0x00000001, 0x00000045, 0x00000154, + 0x0003003e, 0x00000153, 0x00000155, 0x0004003d, 0x0000001f, 0x00000157, 0x00000024, 0x000400cf, + 0x0000001f, 0x00000158, 0x00000157, 0x0003003e, 0x00000156, 0x00000158, 0x0004003d, 0x0000001f, + 0x0000015a, 0x00000024, 0x000400d0, 0x0000001f, 0x0000015b, 0x0000015a, 0x0003003e, 0x00000159, + 0x0000015b, 0x0004003d, 0x00000007, 0x0000015d, 0x00000025, 0x000400cf, 0x00000007, 0x0000015e, + 0x0000015d, 0x0003003e, 0x0000015c, 0x0000015e, 0x0004003d, 0x00000007, 0x00000160, 0x00000025, + 0x000400d0, 0x00000007, 0x00000161, 0x00000160, 0x0003003e, 0x0000015f, 0x00000161, 0x00050041, + 0x0000000d, 0x00000163, 0x0000015c, 0x00000094, 0x0004003d, 0x00000006, 0x00000164, 0x00000163, + 0x00050041, 0x0000000d, 0x00000165, 0x0000015f, 0x00000099, 0x0004003d, 0x00000006, 0x00000166, + 0x00000165, 0x00050085, 0x00000006, 0x00000167, 0x00000164, 0x00000166, 0x00050041, 0x0000000d, + 0x00000168, 0x0000015f, 0x00000094, 0x0004003d, 0x00000006, 0x00000169, 0x00000168, 0x00050041, + 0x0000000d, 0x0000016a, 0x0000015c, 0x00000099, 0x0004003d, 0x00000006, 0x0000016b, 0x0000016a, + 0x00050085, 0x00000006, 0x0000016c, 0x00000169, 0x0000016b, 0x00050083, 0x00000006, 0x0000016d, + 0x00000167, 0x0000016c, 0x0003003e, 0x00000162, 0x0000016d, 0x0004003d, 0x00000006, 0x0000016e, + 0x00000162, 0x0006000c, 0x00000006, 0x0000016f, 0x00000001, 0x00000004, 0x0000016e, 0x000500b8, + 0x000000ac, 0x00000171, 0x0000016f, 0x00000170, 0x000300f7, 0x00000173, 0x00000000, 0x000400fa, + 0x00000171, 0x00000172, 0x00000173, 0x000200f8, 0x00000172, 0x0004003d, 0x0000001f, 0x00000175, + 0x00000153, 0x00050051, 0x00000006, 0x00000176, 0x00000174, 0x00000000, 0x00050051, 0x00000006, + 0x00000177, 0x00000174, 0x00000001, 0x00050051, 0x00000006, 0x00000178, 0x00000174, 0x00000002, + 0x00050051, 0x00000006, 0x00000179, 0x00000174, 0x00000000, 0x00050051, 0x00000006, 0x0000017a, + 0x00000174, 0x00000001, 0x00050051, 0x00000006, 0x0000017b, 0x00000174, 0x00000002, 0x00050051, + 0x00000006, 0x0000017c, 0x00000175, 0x00000000, 0x00050051, 0x00000006, 0x0000017d, 0x00000175, + 0x00000001, 0x00050051, 0x00000006, 0x0000017e, 0x00000175, 0x00000002, 0x00060050, 0x0000001f, + 0x0000017f, 0x00000176, 0x00000177, 0x00000178, 0x00060050, 0x0000001f, 0x00000180, 0x00000179, + 0x0000017a, 0x0000017b, 0x00060050, 0x0000001f, 0x00000181, 0x0000017c, 0x0000017d, 0x0000017e, + 0x00060050, 0x00000021, 0x00000182, 0x0000017f, 0x00000180, 0x00000181, 0x000200fe, 0x00000182, + 0x000200f8, 0x00000173, 0x0004003d, 0x0000001f, 0x00000185, 0x00000159, 0x0004003d, 0x0000001f, + 0x00000186, 0x00000153, 0x0007000c, 0x0000001f, 0x00000187, 0x00000001, 0x00000044, 0x00000185, + 0x00000186, 0x00050041, 0x0000000d, 0x00000188, 0x0000015c, 0x00000094, 0x0004003d, 0x00000006, + 0x00000189, 0x00000188, 0x0005008e, 0x0000001f, 0x0000018a, 0x00000187, 0x00000189, 0x0004003d, + 0x0000001f, 0x0000018b, 0x00000153, 0x0004003d, 0x0000001f, 0x0000018c, 0x00000156, 0x0007000c, + 0x0000001f, 0x0000018d, 0x00000001, 0x00000044, 0x0000018b, 0x0000018c, 0x00050041, 0x0000000d, + 0x0000018e, 0x0000015f, 0x00000094, 0x0004003d, 0x00000006, 0x0000018f, 0x0000018e, 0x0005008e, + 0x0000001f, 0x00000190, 0x0000018d, 0x0000018f, 0x00050081, 0x0000001f, 0x00000191, 0x0000018a, + 0x00000190, 0x0006000c, 0x0000001f, 0x00000192, 0x00000001, 0x00000045, 0x00000191, 0x0003003e, + 0x00000184, 0x00000192, 0x0004003d, 0x0000001f, 0x00000194, 0x00000159, 0x0004003d, 0x0000001f, + 0x00000195, 0x00000153, 0x0007000c, 0x0000001f, 0x00000196, 0x00000001, 0x00000044, 0x00000194, + 0x00000195, 0x00050041, 0x0000000d, 0x00000197, 0x0000015c, 0x00000099, 0x0004003d, 0x00000006, + 0x00000198, 0x00000197, 0x0005008e, 0x0000001f, 0x00000199, 0x00000196, 0x00000198, 0x0004003d, + 0x0000001f, 0x0000019a, 0x00000153, 0x0004003d, 0x0000001f, 0x0000019b, 0x00000156, 0x0007000c, + 0x0000001f, 0x0000019c, 0x00000001, 0x00000044, 0x0000019a, 0x0000019b, 0x00050041, 0x0000000d, + 0x0000019d, 0x0000015f, 0x00000099, 0x0004003d, 0x00000006, 0x0000019e, 0x0000019d, 0x0005008e, + 0x0000001f, 0x0000019f, 0x0000019c, 0x0000019e, 0x00050081, 0x0000001f, 0x000001a0, 0x00000199, + 0x0000019f, 0x0006000c, 0x0000001f, 0x000001a1, 0x00000001, 0x00000045, 0x000001a0, 0x0003003e, + 0x00000193, 0x000001a1, 0x0004003d, 0x0000001f, 0x000001a2, 0x00000184, 0x0006000c, 0x00000006, + 0x000001a3, 0x00000001, 0x00000042, 0x000001a2, 0x000500b8, 0x000000ac, 0x000001a4, 0x000001a3, + 0x000000ab, 0x000400a8, 0x000000ac, 0x000001a5, 0x000001a4, 0x000300f7, 0x000001a7, 0x00000000, + 0x000400fa, 0x000001a5, 0x000001a6, 0x000001a7, 0x000200f8, 0x000001a6, 0x0004003d, 0x0000001f, + 0x000001a8, 0x00000193, 0x0006000c, 0x00000006, 0x000001a9, 0x00000001, 0x00000042, 0x000001a8, + 0x000500b8, 0x000000ac, 0x000001aa, 0x000001a9, 0x000000ab, 0x000200f9, 0x000001a7, 0x000200f8, + 0x000001a7, 0x000700f5, 0x000000ac, 0x000001ab, 0x000001a4, 0x00000173, 0x000001aa, 0x000001a6, + 0x000300f7, 0x000001ad, 0x00000000, 0x000400fa, 0x000001ab, 0x000001ac, 0x000001ad, 0x000200f8, + 0x000001ac, 0x0004003d, 0x0000001f, 0x000001ae, 0x00000153, 0x00050051, 0x00000006, 0x000001af, + 0x00000174, 0x00000000, 0x00050051, 0x00000006, 0x000001b0, 0x00000174, 0x00000001, 0x00050051, + 0x00000006, 0x000001b1, 0x00000174, 0x00000002, 0x00050051, 0x00000006, 0x000001b2, 0x00000174, + 0x00000000, 0x00050051, 0x00000006, 0x000001b3, 0x00000174, 0x00000001, 0x00050051, 0x00000006, + 0x000001b4, 0x00000174, 0x00000002, 0x00050051, 0x00000006, 0x000001b5, 0x000001ae, 0x00000000, + 0x00050051, 0x00000006, 0x000001b6, 0x000001ae, 0x00000001, 0x00050051, 0x00000006, 0x000001b7, + 0x000001ae, 0x00000002, 0x00060050, 0x0000001f, 0x000001b8, 0x000001af, 0x000001b0, 0x000001b1, + 0x00060050, 0x0000001f, 0x000001b9, 0x000001b2, 0x000001b3, 0x000001b4, 0x00060050, 0x0000001f, + 0x000001ba, 0x000001b5, 0x000001b6, 0x000001b7, 0x00060050, 0x00000021, 0x000001bb, 0x000001b8, + 0x000001b9, 0x000001ba, 0x000200fe, 0x000001bb, 0x000200f8, 0x000001ad, 0x0004003d, 0x0000001f, + 0x000001bd, 0x00000184, 0x0004003d, 0x0000001f, 0x000001be, 0x00000193, 0x0004003d, 0x0000001f, + 0x000001bf, 0x00000153, 0x00050051, 0x00000006, 0x000001c0, 0x000001bd, 0x00000000, 0x00050051, + 0x00000006, 0x000001c1, 0x000001bd, 0x00000001, 0x00050051, 0x00000006, 0x000001c2, 0x000001bd, + 0x00000002, 0x00050051, 0x00000006, 0x000001c3, 0x000001be, 0x00000000, 0x00050051, 0x00000006, + 0x000001c4, 0x000001be, 0x00000001, 0x00050051, 0x00000006, 0x000001c5, 0x000001be, 0x00000002, + 0x00050051, 0x00000006, 0x000001c6, 0x000001bf, 0x00000000, 0x00050051, 0x00000006, 0x000001c7, + 0x000001bf, 0x00000001, 0x00050051, 0x00000006, 0x000001c8, 0x000001bf, 0x00000002, 0x00060050, + 0x0000001f, 0x000001c9, 0x000001c0, 0x000001c1, 0x000001c2, 0x00060050, 0x0000001f, 0x000001ca, + 0x000001c3, 0x000001c4, 0x000001c5, 0x00060050, 0x0000001f, 0x000001cb, 0x000001c6, 0x000001c7, + 0x000001c8, 0x00060050, 0x00000021, 0x000001cc, 0x000001c9, 0x000001ca, 0x000001cb, 0x000200fe, + 0x000001cc, 0x00010038, 0x00050036, 0x00000007, 0x0000002f, 0x00000000, 0x00000028, 0x00030037, + 0x00000015, 0x00000029, 0x00030037, 0x00000008, 0x0000002a, 0x00030037, 0x00000020, 0x0000002b, + 0x00030037, 0x0000000d, 0x0000002c, 0x00030037, 0x0000000d, 0x0000002d, 0x00030037, 0x0000000d, + 0x0000002e, 0x000200f8, 0x00000030, 0x0004003b, 0x0000000d, 0x000001d6, 0x00000007, 0x0004003b, + 0x0000000d, 0x000001e4, 0x00000007, 0x0004003b, 0x0000000d, 0x000001e7, 0x00000007, 0x0004003b, + 0x00000008, 0x000001ed, 0x00000007, 0x0004003b, 0x00000008, 0x000001f5, 0x00000007, 0x0004003b, + 0x00000008, 0x000001fa, 0x00000007, 0x0004003b, 0x0000000d, 0x000001fc, 0x00000007, 0x0004003b, + 0x0000000d, 0x000001fd, 0x00000007, 0x0004003b, 0x0000000d, 0x00000202, 0x00000007, 0x0004003b, + 0x000000df, 0x00000205, 0x00000007, 0x0004003b, 0x00000008, 0x0000022a, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000022e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000232, 0x00000007, 0x0004003b, + 0x0000000d, 0x0000023c, 0x00000007, 0x0004003b, 0x0000000d, 0x00000240, 0x00000007, 0x0004003b, + 0x0000000d, 0x00000244, 0x00000007, 0x0004003d, 0x00000006, 0x000001cf, 0x0000002c, 0x000500b8, + 0x000000ac, 0x000001d1, 0x000001cf, 0x000001d0, 0x000300f7, 0x000001d3, 0x00000000, 0x000400fa, + 0x000001d1, 0x000001d2, 0x000001d3, 0x000200f8, 0x000001d2, 0x0004003d, 0x00000007, 0x000001d4, + 0x0000002a, 0x000200fe, 0x000001d4, 0x000200f8, 0x000001d3, 0x0004003d, 0x00000006, 0x000001d7, + 0x0000002e, 0x0007000c, 0x00000006, 0x000001d8, 0x00000001, 0x00000028, 0x000001d7, 0x0000010a, + 0x0004003d, 0x00000006, 0x000001d9, 0x0000002d, 0x0007000c, 0x00000006, 0x000001da, 0x00000001, + 0x00000028, 0x000001d9, 0x0000010a, 0x00050041, 0x0000000d, 0x000001dc, 0x0000002b, 0x000001db, + 0x0004003d, 0x00000006, 0x000001dd, 0x000001dc, 0x0006000c, 0x00000006, 0x000001de, 0x00000001, + 0x00000004, 0x000001dd, 0x0008000c, 0x00000006, 0x000001df, 0x00000001, 0x0000002b, 0x000001de, + 0x000000dc, 0x0000010a, 0x0008000c, 0x00000006, 0x000001e0, 0x00000001, 0x0000002e, 0x000001d8, + 0x000001da, 0x000001df, 0x0003003e, 0x000001d6, 0x000001e0, 0x0004003d, 0x00000006, 0x000001e1, + 0x000001d6, 0x0008000c, 0x00000006, 0x000001e3, 0x00000001, 0x0000002b, 0x000001e1, 0x0000010a, + 0x000001e2, 0x0003003e, 0x000001d6, 0x000001e3, 0x0004003d, 0x00000006, 0x000001e5, 0x000001d6, + 0x00050088, 0x00000006, 0x000001e6, 0x0000010a, 0x000001e5, 0x0003003e, 0x000001e4, 0x000001e6, + 0x00050041, 0x0000000d, 0x000001e8, 0x0000002b, 0x000001db, 0x0004003d, 0x00000006, 0x000001e9, + 0x000001e8, 0x0006000c, 0x00000006, 0x000001ea, 0x00000001, 0x00000004, 0x000001e9, 0x0007000c, + 0x00000006, 0x000001ec, 0x00000001, 0x00000028, 0x000001ea, 0x000001eb, 0x0003003e, 0x000001e7, + 0x000001ec, 0x0004003d, 0x0000001f, 0x000001ee, 0x0000002b, 0x0007004f, 0x00000007, 0x000001ef, + 0x000001ee, 0x000001ee, 0x00000000, 0x00000001, 0x0004003d, 0x00000006, 0x000001f0, 0x000001e7, + 0x00050050, 0x00000007, 0x000001f1, 0x000001f0, 0x000001f0, 0x00050088, 0x00000007, 0x000001f2, + 0x000001ef, 0x000001f1, 0x0004003d, 0x00000006, 0x000001f3, 0x0000002c, 0x0005008e, 0x00000007, + 0x000001f4, 0x000001f2, 0x000001f3, 0x0003003e, 0x000001ed, 0x000001f4, 0x0004003d, 0x00000007, + 0x000001f6, 0x000001ed, 0x0004003d, 0x00000006, 0x000001f7, 0x000001d6, 0x00050050, 0x00000007, + 0x000001f8, 0x000001f7, 0x000001f7, 0x00050088, 0x00000007, 0x000001f9, 0x000001f6, 0x000001f8, + 0x0003003e, 0x000001f5, 0x000001f9, 0x0004003d, 0x00000007, 0x000001fb, 0x0000002a, 0x0003003e, + 0x000001fa, 0x000001fb, 0x0003003e, 0x000001fc, 0x000000dc, 0x0004003d, 0x00000014, 0x000001fe, + 0x00000029, 0x0004003d, 0x00000007, 0x000001ff, 0x000001fa, 0x00050057, 0x00000016, 0x00000200, + 0x000001fe, 0x000001ff, 0x00050051, 0x00000006, 0x00000201, 0x00000200, 0x00000000, 0x0003003e, + 0x000001fd, 0x00000201, 0x0004003d, 0x00000006, 0x00000203, 0x000001fd, 0x00050083, 0x00000006, + 0x00000204, 0x0000010a, 0x00000203, 0x0003003e, 0x00000202, 0x00000204, 0x0003003e, 0x00000205, + 0x000000e1, 0x000200f9, 0x00000206, 0x000200f8, 0x00000206, 0x000400f6, 0x00000208, 0x00000209, + 0x00000000, 0x000200f9, 0x0000020a, 0x000200f8, 0x0000020a, 0x0004003d, 0x000000de, 0x0000020b, + 0x00000205, 0x000500b1, 0x000000ac, 0x0000020d, 0x0000020b, 0x0000020c, 0x000400fa, 0x0000020d, + 0x00000207, 0x00000208, 0x000200f8, 0x00000207, 0x0004003d, 0x00000006, 0x0000020e, 0x000001fc, + 0x0004003d, 0x00000006, 0x0000020f, 0x00000202, 0x000500be, 0x000000ac, 0x00000210, 0x0000020e, + 0x0000020f, 0x000400a8, 0x000000ac, 0x00000211, 0x00000210, 0x000300f7, 0x00000213, 0x00000000, + 0x000400fa, 0x00000211, 0x00000212, 0x00000213, 0x000200f8, 0x00000212, 0x0004003d, 0x000000de, + 0x00000214, 0x00000205, 0x0004006f, 0x00000006, 0x00000215, 0x00000214, 0x0004003d, 0x00000006, + 0x00000216, 0x000001d6, 0x000500be, 0x000000ac, 0x00000217, 0x00000215, 0x00000216, 0x000200f9, + 0x00000213, 0x000200f8, 0x00000213, 0x000700f5, 0x000000ac, 0x00000218, 0x00000210, 0x00000207, + 0x00000217, 0x00000212, 0x000300f7, 0x0000021a, 0x00000000, 0x000400fa, 0x00000218, 0x00000219, + 0x0000021a, 0x000200f8, 0x00000219, 0x000200f9, 0x00000208, 0x000200f8, 0x0000021a, 0x0004003d, + 0x00000007, 0x0000021c, 0x000001f5, 0x0004003d, 0x00000007, 0x0000021d, 0x000001fa, 0x00050083, + 0x00000007, 0x0000021e, 0x0000021d, 0x0000021c, 0x0003003e, 0x000001fa, 0x0000021e, 0x0004003d, + 0x00000014, 0x0000021f, 0x00000029, 0x0004003d, 0x00000007, 0x00000220, 0x000001fa, 0x00050057, + 0x00000016, 0x00000221, 0x0000021f, 0x00000220, 0x00050051, 0x00000006, 0x00000222, 0x00000221, + 0x00000000, 0x0003003e, 0x000001fd, 0x00000222, 0x0004003d, 0x00000006, 0x00000223, 0x000001fd, + 0x00050083, 0x00000006, 0x00000224, 0x0000010a, 0x00000223, 0x0003003e, 0x00000202, 0x00000224, + 0x0004003d, 0x00000006, 0x00000225, 0x000001e4, 0x0004003d, 0x00000006, 0x00000226, 0x000001fc, + 0x00050081, 0x00000006, 0x00000227, 0x00000226, 0x00000225, 0x0003003e, 0x000001fc, 0x00000227, + 0x000200f9, 0x00000209, 0x000200f8, 0x00000209, 0x0004003d, 0x000000de, 0x00000228, 0x00000205, + 0x00050080, 0x000000de, 0x00000229, 0x00000228, 0x000000e8, 0x0003003e, 0x00000205, 0x00000229, + 0x000200f9, 0x00000206, 0x000200f8, 0x00000208, 0x0004003d, 0x00000007, 0x0000022b, 0x000001fa, + 0x0004003d, 0x00000007, 0x0000022c, 0x000001f5, 0x00050081, 0x00000007, 0x0000022d, 0x0000022b, + 0x0000022c, 0x0003003e, 0x0000022a, 0x0000022d, 0x0004003d, 0x00000006, 0x0000022f, 0x00000202, + 0x0004003d, 0x00000006, 0x00000230, 0x000001fc, 0x00050083, 0x00000006, 0x00000231, 0x0000022f, + 0x00000230, 0x0003003e, 0x0000022e, 0x00000231, 0x0004003d, 0x00000014, 0x00000233, 0x00000029, + 0x0004003d, 0x00000007, 0x00000234, 0x0000022a, 0x00050057, 0x00000016, 0x00000235, 0x00000233, + 0x00000234, 0x00050051, 0x00000006, 0x00000236, 0x00000235, 0x00000000, 0x00050083, 0x00000006, + 0x00000237, 0x0000010a, 0x00000236, 0x0004003d, 0x00000006, 0x00000238, 0x000001fc, 0x0004003d, + 0x00000006, 0x00000239, 0x000001e4, 0x00050083, 0x00000006, 0x0000023a, 0x00000238, 0x00000239, + 0x00050083, 0x00000006, 0x0000023b, 0x00000237, 0x0000023a, 0x0003003e, 0x00000232, 0x0000023b, + 0x0004003d, 0x00000006, 0x0000023d, 0x0000022e, 0x0004003d, 0x00000006, 0x0000023e, 0x00000232, + 0x00050083, 0x00000006, 0x0000023f, 0x0000023d, 0x0000023e, 0x0003003e, 0x0000023c, 0x0000023f, + 0x0004003d, 0x00000006, 0x00000241, 0x0000023c, 0x0006000c, 0x00000006, 0x00000242, 0x00000001, + 0x00000004, 0x00000241, 0x000500b8, 0x000000ac, 0x00000243, 0x00000242, 0x000001d0, 0x000300f7, + 0x00000246, 0x00000000, 0x000400fa, 0x00000243, 0x00000245, 0x00000247, 0x000200f8, 0x00000245, + 0x0003003e, 0x00000244, 0x0000011f, 0x000200f9, 0x00000246, 0x000200f8, 0x00000247, 0x0004003d, + 0x00000006, 0x00000248, 0x0000022e, 0x0004003d, 0x00000006, 0x00000249, 0x0000023c, 0x00050088, + 0x00000006, 0x0000024a, 0x00000248, 0x00000249, 0x0008000c, 0x00000006, 0x0000024b, 0x00000001, + 0x0000002b, 0x0000024a, 0x000000dc, 0x0000010a, 0x0003003e, 0x00000244, 0x0000024b, 0x000200f9, + 0x00000246, 0x000200f8, 0x00000246, 0x0004003d, 0x00000006, 0x0000024c, 0x00000244, 0x0003003e, + 0x00000240, 0x0000024c, 0x0004003d, 0x00000007, 0x0000024d, 0x000001fa, 0x0004003d, 0x00000007, + 0x0000024e, 0x0000022a, 0x0004003d, 0x00000006, 0x0000024f, 0x00000240, 0x00050050, 0x00000007, + 0x00000250, 0x0000024f, 0x0000024f, 0x0008000c, 0x00000007, 0x00000251, 0x00000001, 0x0000002e, + 0x0000024d, 0x0000024e, 0x00000250, 0x000200fe, 0x00000251, 0x00010038, 0x00050036, 0x00000007, + 0x0000003a, 0x00000000, 0x00000031, 0x00030037, 0x00000015, 0x00000032, 0x00030037, 0x00000008, + 0x00000033, 0x00030037, 0x00000020, 0x00000034, 0x00030037, 0x00000020, 0x00000035, 0x00030037, + 0x00000020, 0x00000036, 0x00030037, 0x0000000d, 0x00000037, 0x00030037, 0x0000000d, 0x00000038, + 0x00030037, 0x0000000d, 0x00000039, 0x000200f8, 0x0000003b, 0x0004003b, 0x0000025a, 0x0000025b, + 0x00000007, 0x0004003b, 0x00000020, 0x0000025c, 0x00000007, 0x0004003b, 0x00000020, 0x0000025e, + 0x00000007, 0x0004003b, 0x00000008, 0x00000260, 0x00000007, 0x0004003b, 0x00000020, 0x0000026b, + 0x00000007, 0x0004003b, 0x00000008, 0x00000271, 0x00000007, 0x0004003b, 0x00000020, 0x00000273, + 0x00000007, 0x0004003b, 0x0000000d, 0x00000275, 0x00000007, 0x0004003b, 0x0000000d, 0x00000277, + 0x00000007, 0x0004003b, 0x0000000d, 0x00000279, 0x00000007, 0x0004003d, 0x00000006, 0x00000254, + 0x00000037, 0x000500b8, 0x000000ac, 0x00000255, 0x00000254, 0x000001d0, 0x000300f7, 0x00000257, + 0x00000000, 0x000400fa, 0x00000255, 0x00000256, 0x00000257, 0x000200f8, 0x00000256, 0x0004003d, + 0x00000007, 0x00000258, 0x00000033, 0x000200fe, 0x00000258, 0x000200f8, 0x00000257, 0x0004003d, + 0x0000001f, 0x0000025d, 0x00000034, 0x0003003e, 0x0000025c, 0x0000025d, 0x0004003d, 0x0000001f, + 0x0000025f, 0x00000035, 0x0003003e, 0x0000025e, 0x0000025f, 0x0004003d, 0x00000007, 0x00000261, + 0x00000033, 0x0003003e, 0x00000260, 0x00000261, 0x00070039, 0x00000021, 0x00000262, 0x00000026, + 0x0000025c, 0x0000025e, 0x00000260, 0x0003003e, 0x0000025b, 0x00000262, 0x00050041, 0x00000020, + 0x00000263, 0x0000025b, 0x000000e1, 0x0004003d, 0x0000001f, 0x00000264, 0x00000263, 0x0006000c, + 0x00000006, 0x00000265, 0x00000001, 0x00000042, 0x00000264, 0x000500b8, 0x000000ac, 0x00000266, + 0x00000265, 0x000000ab, 0x000300f7, 0x00000268, 0x00000000, 0x000400fa, 0x00000266, 0x00000267, + 0x00000268, 0x000200f8, 0x00000267, 0x0004003d, 0x00000007, 0x00000269, 0x00000033, 0x000200fe, + 0x00000269, 0x000200f8, 0x00000268, 0x0004003d, 0x00000021, 0x0000026c, 0x0000025b, 0x00040054, + 0x00000021, 0x0000026d, 0x0000026c, 0x0004003d, 0x0000001f, 0x0000026e, 0x00000036, 0x00050091, + 0x0000001f, 0x0000026f, 0x0000026d, 0x0000026e, 0x0006000c, 0x0000001f, 0x00000270, 0x00000001, + 0x00000045, 0x0000026f, 0x0003003e, 0x0000026b, 0x00000270, 0x0004003d, 0x00000007, 0x00000272, + 0x00000033, 0x0003003e, 0x00000271, 0x00000272, 0x0004003d, 0x0000001f, 0x00000274, 0x0000026b, + 0x0003003e, 0x00000273, 0x00000274, 0x0004003d, 0x00000006, 0x00000276, 0x00000037, 0x0003003e, + 0x00000275, 0x00000276, 0x0004003d, 0x00000006, 0x00000278, 0x00000038, 0x0003003e, 0x00000277, + 0x00000278, 0x0004003d, 0x00000006, 0x0000027a, 0x00000039, 0x0003003e, 0x00000279, 0x0000027a, + 0x000a0039, 0x00000007, 0x0000027b, 0x0000002f, 0x00000032, 0x00000271, 0x00000273, 0x00000275, + 0x00000277, 0x00000279, 0x000200fe, 0x0000027b, 0x00010038, 0x00050036, 0x0000001f, 0x0000003e, + 0x00000000, 0x0000003c, 0x00030037, 0x00000020, 0x0000003d, 0x000200f8, 0x0000003f, 0x0004003b, + 0x00000020, 0x0000027e, 0x00000007, 0x0004003b, 0x0000000d, 0x00000284, 0x00000007, 0x0004003d, + 0x0000001f, 0x0000027f, 0x0000003d, 0x00050083, 0x0000001f, 0x00000282, 0x0000027f, 0x00000281, + 0x0007000c, 0x0000001f, 0x00000283, 0x00000001, 0x00000028, 0x00000282, 0x00000174, 0x0003003e, + 0x0000027e, 0x00000283, 0x0003003e, 0x00000284, 0x00000285, 0x0004003d, 0x0000001f, 0x00000286, + 0x0000003d, 0x0007000c, 0x0000001f, 0x00000287, 0x00000001, 0x00000025, 0x00000286, 0x00000281, + 0x0004003d, 0x00000006, 0x00000288, 0x00000284, 0x00060050, 0x0000001f, 0x00000289, 0x00000288, + 0x00000288, 0x00000288, 0x0004003d, 0x0000001f, 0x0000028a, 0x0000027e, 0x0004003d, 0x0000001f, + 0x0000028b, 0x0000027e, 0x00050081, 0x0000001f, 0x0000028d, 0x0000028b, 0x0000028c, 0x00050088, + 0x0000001f, 0x0000028e, 0x0000028a, 0x0000028d, 0x00050085, 0x0000001f, 0x0000028f, 0x00000289, + 0x0000028e, 0x00050081, 0x0000001f, 0x00000290, 0x00000287, 0x0000028f, 0x000200fe, 0x00000290, + 0x00010038, 0x00050036, 0x00000006, 0x00000044, 0x00000000, 0x00000040, 0x00030037, 0x00000020, + 0x00000041, 0x00030037, 0x00000020, 0x00000042, 0x00030037, 0x0000000d, 0x00000043, 0x000200f8, + 0x00000045, 0x0004003b, 0x0000000d, 0x00000293, 0x00000007, 0x0004003b, 0x0000000d, 0x00000299, + 0x00000007, 0x0004003b, 0x0000000d, 0x0000029d, 0x00000007, 0x0004003b, 0x0000000d, 0x000002a2, + 0x00000007, 0x0004003d, 0x00000006, 0x00000294, 0x00000043, 0x0004003d, 0x00000006, 0x00000295, + 0x00000043, 0x00050085, 0x00000006, 0x00000296, 0x00000294, 0x00000295, 0x0007000c, 0x00000006, + 0x00000298, 0x00000001, 0x00000028, 0x00000296, 0x00000297, 0x0003003e, 0x00000293, 0x00000298, + 0x0004003d, 0x00000006, 0x0000029a, 0x00000293, 0x0004003d, 0x00000006, 0x0000029b, 0x00000293, + 0x00050085, 0x00000006, 0x0000029c, 0x0000029a, 0x0000029b, 0x0003003e, 0x00000299, 0x0000029c, + 0x0004003d, 0x0000001f, 0x0000029e, 0x00000041, 0x0004003d, 0x0000001f, 0x0000029f, 0x00000042, + 0x00050094, 0x00000006, 0x000002a0, 0x0000029e, 0x0000029f, 0x0007000c, 0x00000006, 0x000002a1, + 0x00000001, 0x00000028, 0x000002a0, 0x000000dc, 0x0003003e, 0x0000029d, 0x000002a1, 0x0004003d, + 0x00000006, 0x000002a3, 0x0000029d, 0x0004003d, 0x00000006, 0x000002a4, 0x0000029d, 0x00050085, + 0x00000006, 0x000002a5, 0x000002a3, 0x000002a4, 0x0004003d, 0x00000006, 0x000002a6, 0x00000299, + 0x00050083, 0x00000006, 0x000002a7, 0x000002a6, 0x0000010a, 0x00050085, 0x00000006, 0x000002a8, + 0x000002a5, 0x000002a7, 0x00050081, 0x00000006, 0x000002a9, 0x000002a8, 0x0000010a, 0x0003003e, + 0x000002a2, 0x000002a9, 0x0004003d, 0x00000006, 0x000002aa, 0x00000299, 0x0004003d, 0x00000006, + 0x000002ab, 0x000002a2, 0x00050085, 0x00000006, 0x000002ac, 0x00000116, 0x000002ab, 0x0004003d, + 0x00000006, 0x000002ad, 0x000002a2, 0x00050085, 0x00000006, 0x000002ae, 0x000002ac, 0x000002ad, + 0x0007000c, 0x00000006, 0x000002af, 0x00000001, 0x00000028, 0x000002ae, 0x000000ab, 0x00050088, + 0x00000006, 0x000002b0, 0x000002aa, 0x000002af, 0x000200fe, 0x000002b0, 0x00010038, 0x00050036, + 0x00000006, 0x00000049, 0x00000000, 0x00000046, 0x00030037, 0x0000000d, 0x00000047, 0x00030037, + 0x0000000d, 0x00000048, 0x000200f8, 0x0000004a, 0x0004003b, 0x0000000d, 0x000002b3, 0x00000007, + 0x0004003b, 0x0000000d, 0x000002b6, 0x00000007, 0x0004003d, 0x00000006, 0x000002b4, 0x00000048, + 0x00050081, 0x00000006, 0x000002b5, 0x000002b4, 0x0000010a, 0x0003003e, 0x000002b3, 0x000002b5, + 0x0004003d, 0x00000006, 0x000002b7, 0x000002b3, 0x0004003d, 0x00000006, 0x000002b8, 0x000002b3, + 0x00050085, 0x00000006, 0x000002b9, 0x000002b7, 0x000002b8, 0x00050088, 0x00000006, 0x000002bb, + 0x000002b9, 0x000002ba, 0x0003003e, 0x000002b6, 0x000002bb, 0x0004003d, 0x00000006, 0x000002bc, + 0x00000047, 0x0004003d, 0x00000006, 0x000002bd, 0x00000047, 0x0004003d, 0x00000006, 0x000002be, + 0x000002b6, 0x00050083, 0x00000006, 0x000002bf, 0x0000010a, 0x000002be, 0x00050085, 0x00000006, + 0x000002c0, 0x000002bd, 0x000002bf, 0x0004003d, 0x00000006, 0x000002c1, 0x000002b6, 0x00050081, + 0x00000006, 0x000002c2, 0x000002c0, 0x000002c1, 0x0007000c, 0x00000006, 0x000002c3, 0x00000001, + 0x00000028, 0x000002c2, 0x000000ab, 0x00050088, 0x00000006, 0x000002c4, 0x000002bc, 0x000002c3, + 0x000200fe, 0x000002c4, 0x00010038, 0x00050036, 0x00000006, 0x00000050, 0x00000000, 0x0000004b, + 0x00030037, 0x00000020, 0x0000004c, 0x00030037, 0x00000020, 0x0000004d, 0x00030037, 0x00000020, + 0x0000004e, 0x00030037, 0x0000000d, 0x0000004f, 0x000200f8, 0x00000051, 0x0004003b, 0x0000000d, + 0x000002cb, 0x00000007, 0x0004003b, 0x0000000d, 0x000002cc, 0x00000007, 0x0004003b, 0x0000000d, + 0x000002d3, 0x00000007, 0x0004003b, 0x0000000d, 0x000002d4, 0x00000007, 0x0004003d, 0x0000001f, + 0x000002c7, 0x0000004c, 0x0004003d, 0x0000001f, 0x000002c8, 0x0000004d, 0x00050094, 0x00000006, + 0x000002c9, 0x000002c7, 0x000002c8, 0x0007000c, 0x00000006, 0x000002ca, 0x00000001, 0x00000028, + 0x000002c9, 0x000000dc, 0x0003003e, 0x000002cb, 0x000002ca, 0x0004003d, 0x00000006, 0x000002cd, + 0x0000004f, 0x0003003e, 0x000002cc, 0x000002cd, 0x00060039, 0x00000006, 0x000002ce, 0x00000049, + 0x000002cb, 0x000002cc, 0x0004003d, 0x0000001f, 0x000002cf, 0x0000004c, 0x0004003d, 0x0000001f, + 0x000002d0, 0x0000004e, 0x00050094, 0x00000006, 0x000002d1, 0x000002cf, 0x000002d0, 0x0007000c, + 0x00000006, 0x000002d2, 0x00000001, 0x00000028, 0x000002d1, 0x000000dc, 0x0003003e, 0x000002d3, + 0x000002d2, 0x0004003d, 0x00000006, 0x000002d5, 0x0000004f, 0x0003003e, 0x000002d4, 0x000002d5, + 0x00060039, 0x00000006, 0x000002d6, 0x00000049, 0x000002d3, 0x000002d4, 0x00050085, 0x00000006, + 0x000002d7, 0x000002ce, 0x000002d6, 0x000200fe, 0x000002d7, 0x00010038, 0x00050036, 0x0000001f, + 0x00000055, 0x00000000, 0x00000052, 0x00030037, 0x0000000d, 0x00000053, 0x00030037, 0x00000020, + 0x00000054, 0x000200f8, 0x00000056, 0x0004003d, 0x0000001f, 0x000002da, 0x00000054, 0x0004003d, + 0x0000001f, 0x000002db, 0x00000054, 0x00060050, 0x0000001f, 0x000002dc, 0x0000010a, 0x0000010a, + 0x0000010a, 0x00050083, 0x0000001f, 0x000002dd, 0x000002dc, 0x000002db, 0x0004003d, 0x00000006, + 0x000002de, 0x00000053, 0x00050083, 0x00000006, 0x000002df, 0x0000010a, 0x000002de, 0x0008000c, + 0x00000006, 0x000002e0, 0x00000001, 0x0000002b, 0x000002df, 0x000000dc, 0x0000010a, 0x0007000c, + 0x00000006, 0x000002e2, 0x00000001, 0x0000001a, 0x000002e0, 0x000002e1, 0x0005008e, 0x0000001f, + 0x000002e3, 0x000002dd, 0x000002e2, 0x00050081, 0x0000001f, 0x000002e4, 0x000002da, 0x000002e3, + 0x000200fe, 0x000002e4, 0x00010038, 0x00050036, 0x0000001f, 0x0000005c, 0x00000000, 0x00000057, + 0x00030037, 0x00000020, 0x00000058, 0x00030037, 0x00000020, 0x00000059, 0x00030037, 0x00000020, + 0x0000005a, 0x00030037, 0x00000008, 0x0000005b, 0x000200f8, 0x0000005d, 0x0004003b, 0x00000020, + 0x000002e7, 0x00000007, 0x0004003b, 0x00000020, 0x000002fc, 0x00000007, 0x0004003b, 0x00000020, + 0x000002ff, 0x00000007, 0x0004003b, 0x00000008, 0x00000302, 0x00000007, 0x0004003b, 0x00000008, + 0x00000305, 0x00000007, 0x0004003b, 0x0000000d, 0x00000308, 0x00000007, 0x0004003b, 0x0000000d, + 0x0000031d, 0x00000007, 0x0004003b, 0x00000020, 0x00000320, 0x00000007, 0x0004003b, 0x00000020, + 0x0000032c, 0x00000007, 0x0004003b, 0x0000000d, 0x00000341, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000344, 0x00000007, 0x0004003d, 0x0000001f, 0x000002e8, 0x00000059, 0x0005008e, 0x0000001f, + 0x000002e9, 0x000002e8, 0x00000108, 0x00060050, 0x0000001f, 0x000002ea, 0x0000010a, 0x0000010a, + 0x0000010a, 0x00050083, 0x0000001f, 0x000002eb, 0x000002e9, 0x000002ea, 0x0003003e, 0x000002e7, + 0x000002eb, 0x0004003d, 0x0000001f, 0x000002ec, 0x000002e7, 0x0007004f, 0x00000007, 0x000002ed, + 0x000002ec, 0x000002ec, 0x00000000, 0x00000001, 0x0006000c, 0x00000006, 0x000002ee, 0x00000001, + 0x00000042, 0x000002ed, 0x000500b8, 0x000000ac, 0x000002f0, 0x000002ee, 0x000002ef, 0x000300f7, + 0x000002f2, 0x00000000, 0x000400fa, 0x000002f0, 0x000002f1, 0x000002f2, 0x000200f8, 0x000002f1, + 0x00050041, 0x0000000d, 0x000002f3, 0x000002e7, 0x000001db, 0x0004003d, 0x00000006, 0x000002f4, + 0x000002f3, 0x000500ba, 0x000000ac, 0x000002f5, 0x000002f4, 0x00000280, 0x000200f9, 0x000002f2, + 0x000200f8, 0x000002f2, 0x000700f5, 0x000000ac, 0x000002f6, 0x000002f0, 0x0000005d, 0x000002f5, + 0x000002f1, 0x000300f7, 0x000002f8, 0x00000000, 0x000400fa, 0x000002f6, 0x000002f7, 0x000002f8, + 0x000200f8, 0x000002f7, 0x0004003d, 0x0000001f, 0x000002f9, 0x00000058, 0x0006000c, 0x0000001f, + 0x000002fa, 0x00000001, 0x00000045, 0x000002f9, 0x000200fe, 0x000002fa, 0x000200f8, 0x000002f8, + 0x0004003d, 0x0000001f, 0x000002fd, 0x0000005a, 0x000400cf, 0x0000001f, 0x000002fe, 0x000002fd, + 0x0003003e, 0x000002fc, 0x000002fe, 0x0004003d, 0x0000001f, 0x00000300, 0x0000005a, 0x000400d0, + 0x0000001f, 0x00000301, 0x00000300, 0x0003003e, 0x000002ff, 0x00000301, 0x0004003d, 0x00000007, + 0x00000303, 0x0000005b, 0x000400cf, 0x00000007, 0x00000304, 0x00000303, 0x0003003e, 0x00000302, + 0x00000304, 0x0004003d, 0x00000007, 0x00000306, 0x0000005b, 0x000400d0, 0x00000007, 0x00000307, + 0x00000306, 0x0003003e, 0x00000305, 0x00000307, 0x00050041, 0x0000000d, 0x00000309, 0x00000302, + 0x00000094, 0x0004003d, 0x00000006, 0x0000030a, 0x00000309, 0x00050041, 0x0000000d, 0x0000030b, + 0x00000305, 0x00000099, 0x0004003d, 0x00000006, 0x0000030c, 0x0000030b, 0x00050085, 0x00000006, + 0x0000030d, 0x0000030a, 0x0000030c, 0x00050041, 0x0000000d, 0x0000030e, 0x00000305, 0x00000094, + 0x0004003d, 0x00000006, 0x0000030f, 0x0000030e, 0x00050041, 0x0000000d, 0x00000310, 0x00000302, + 0x00000099, 0x0004003d, 0x00000006, 0x00000311, 0x00000310, 0x00050085, 0x00000006, 0x00000312, + 0x0000030f, 0x00000311, 0x00050083, 0x00000006, 0x00000313, 0x0000030d, 0x00000312, 0x0003003e, + 0x00000308, 0x00000313, 0x0004003d, 0x00000006, 0x00000314, 0x00000308, 0x0006000c, 0x00000006, + 0x00000315, 0x00000001, 0x00000004, 0x00000314, 0x000500b8, 0x000000ac, 0x00000317, 0x00000315, + 0x00000316, 0x000300f7, 0x00000319, 0x00000000, 0x000400fa, 0x00000317, 0x00000318, 0x00000319, + 0x000200f8, 0x00000318, 0x0004003d, 0x0000001f, 0x0000031a, 0x00000058, 0x0006000c, 0x0000001f, + 0x0000031b, 0x00000001, 0x00000045, 0x0000031a, 0x000200fe, 0x0000031b, 0x000200f8, 0x00000319, + 0x0004003d, 0x00000006, 0x0000031e, 0x00000308, 0x00050088, 0x00000006, 0x0000031f, 0x0000010a, + 0x0000031e, 0x0003003e, 0x0000031d, 0x0000031f, 0x0004003d, 0x0000001f, 0x00000321, 0x000002fc, + 0x00050041, 0x0000000d, 0x00000322, 0x00000305, 0x00000099, 0x0004003d, 0x00000006, 0x00000323, + 0x00000322, 0x0005008e, 0x0000001f, 0x00000324, 0x00000321, 0x00000323, 0x0004003d, 0x0000001f, + 0x00000325, 0x000002ff, 0x00050041, 0x0000000d, 0x00000326, 0x00000302, 0x00000099, 0x0004003d, + 0x00000006, 0x00000327, 0x00000326, 0x0005008e, 0x0000001f, 0x00000328, 0x00000325, 0x00000327, + 0x00050083, 0x0000001f, 0x00000329, 0x00000324, 0x00000328, 0x0004003d, 0x00000006, 0x0000032a, + 0x0000031d, 0x0005008e, 0x0000001f, 0x0000032b, 0x00000329, 0x0000032a, 0x0003003e, 0x00000320, + 0x0000032b, 0x0004003d, 0x0000001f, 0x0000032d, 0x000002ff, 0x00050041, 0x0000000d, 0x0000032e, + 0x00000302, 0x00000094, 0x0004003d, 0x00000006, 0x0000032f, 0x0000032e, 0x0005008e, 0x0000001f, + 0x00000330, 0x0000032d, 0x0000032f, 0x0004003d, 0x0000001f, 0x00000331, 0x000002fc, 0x00050041, + 0x0000000d, 0x00000332, 0x00000305, 0x00000094, 0x0004003d, 0x00000006, 0x00000333, 0x00000332, + 0x0005008e, 0x0000001f, 0x00000334, 0x00000331, 0x00000333, 0x00050083, 0x0000001f, 0x00000335, + 0x00000330, 0x00000334, 0x0004003d, 0x00000006, 0x00000336, 0x0000031d, 0x0005008e, 0x0000001f, + 0x00000337, 0x00000335, 0x00000336, 0x0003003e, 0x0000032c, 0x00000337, 0x0004003d, 0x0000001f, + 0x00000338, 0x00000058, 0x0006000c, 0x0000001f, 0x00000339, 0x00000001, 0x00000045, 0x00000338, + 0x0003003e, 0x00000058, 0x00000339, 0x0004003d, 0x0000001f, 0x0000033a, 0x00000320, 0x0004003d, + 0x0000001f, 0x0000033b, 0x00000058, 0x0004003d, 0x0000001f, 0x0000033c, 0x00000058, 0x0004003d, + 0x0000001f, 0x0000033d, 0x00000320, 0x00050094, 0x00000006, 0x0000033e, 0x0000033c, 0x0000033d, + 0x0005008e, 0x0000001f, 0x0000033f, 0x0000033b, 0x0000033e, 0x00050083, 0x0000001f, 0x00000340, + 0x0000033a, 0x0000033f, 0x0003003e, 0x00000320, 0x00000340, 0x0004003d, 0x0000001f, 0x00000342, + 0x00000320, 0x0006000c, 0x00000006, 0x00000343, 0x00000001, 0x00000042, 0x00000342, 0x0003003e, + 0x00000341, 0x00000343, 0x0004003d, 0x0000001f, 0x00000345, 0x0000032c, 0x0006000c, 0x00000006, + 0x00000346, 0x00000001, 0x00000042, 0x00000345, 0x0003003e, 0x00000344, 0x00000346, 0x0004003d, + 0x00000006, 0x00000347, 0x00000341, 0x000500b8, 0x000000ac, 0x00000348, 0x00000347, 0x000000ab, + 0x0004003d, 0x00000006, 0x00000349, 0x00000344, 0x000500b8, 0x000000ac, 0x0000034a, 0x00000349, + 0x000000ab, 0x000500a6, 0x000000ac, 0x0000034b, 0x00000348, 0x0000034a, 0x000300f7, 0x0000034d, + 0x00000000, 0x000400fa, 0x0000034b, 0x0000034c, 0x0000034d, 0x000200f8, 0x0000034c, 0x0004003d, + 0x0000001f, 0x0000034e, 0x00000058, 0x000200fe, 0x0000034e, 0x000200f8, 0x0000034d, 0x0004003d, + 0x00000006, 0x00000350, 0x00000341, 0x0004003d, 0x0000001f, 0x00000351, 0x00000320, 0x00060050, + 0x0000001f, 0x00000352, 0x00000350, 0x00000350, 0x00000350, 0x00050088, 0x0000001f, 0x00000353, + 0x00000351, 0x00000352, 0x0003003e, 0x00000320, 0x00000353, 0x0004003d, 0x0000001f, 0x00000354, + 0x0000032c, 0x0004003d, 0x0000001f, 0x00000355, 0x00000058, 0x0004003d, 0x0000001f, 0x00000356, + 0x00000058, 0x0004003d, 0x0000001f, 0x00000357, 0x0000032c, 0x00050094, 0x00000006, 0x00000358, + 0x00000356, 0x00000357, 0x0005008e, 0x0000001f, 0x00000359, 0x00000355, 0x00000358, 0x00050083, + 0x0000001f, 0x0000035a, 0x00000354, 0x00000359, 0x0004003d, 0x0000001f, 0x0000035b, 0x00000320, + 0x0004003d, 0x0000001f, 0x0000035c, 0x00000320, 0x0004003d, 0x0000001f, 0x0000035d, 0x0000032c, + 0x00050094, 0x00000006, 0x0000035e, 0x0000035c, 0x0000035d, 0x0005008e, 0x0000001f, 0x0000035f, + 0x0000035b, 0x0000035e, 0x00050083, 0x0000001f, 0x00000360, 0x0000035a, 0x0000035f, 0x0006000c, + 0x0000001f, 0x00000361, 0x00000001, 0x00000045, 0x00000360, 0x0003003e, 0x0000032c, 0x00000361, + 0x0004003d, 0x0000001f, 0x00000362, 0x00000320, 0x0004003d, 0x0000001f, 0x00000363, 0x0000032c, + 0x00050094, 0x00000006, 0x00000364, 0x00000362, 0x00000363, 0x0006000c, 0x00000006, 0x00000365, + 0x00000001, 0x00000004, 0x00000364, 0x000500ba, 0x000000ac, 0x00000367, 0x00000365, 0x00000366, + 0x000300f7, 0x00000369, 0x00000000, 0x000400fa, 0x00000367, 0x00000368, 0x00000369, 0x000200f8, + 0x00000368, 0x0004003d, 0x0000001f, 0x0000036a, 0x00000058, 0x000200fe, 0x0000036a, 0x000200f8, + 0x00000369, 0x0004003d, 0x0000001f, 0x0000036c, 0x00000320, 0x0004003d, 0x0000001f, 0x0000036d, + 0x0000032c, 0x0004003d, 0x0000001f, 0x0000036e, 0x00000058, 0x00050051, 0x00000006, 0x0000036f, + 0x0000036c, 0x00000000, 0x00050051, 0x00000006, 0x00000370, 0x0000036c, 0x00000001, 0x00050051, + 0x00000006, 0x00000371, 0x0000036c, 0x00000002, 0x00050051, 0x00000006, 0x00000372, 0x0000036d, + 0x00000000, 0x00050051, 0x00000006, 0x00000373, 0x0000036d, 0x00000001, 0x00050051, 0x00000006, + 0x00000374, 0x0000036d, 0x00000002, 0x00050051, 0x00000006, 0x00000375, 0x0000036e, 0x00000000, + 0x00050051, 0x00000006, 0x00000376, 0x0000036e, 0x00000001, 0x00050051, 0x00000006, 0x00000377, + 0x0000036e, 0x00000002, 0x00060050, 0x0000001f, 0x00000378, 0x0000036f, 0x00000370, 0x00000371, + 0x00060050, 0x0000001f, 0x00000379, 0x00000372, 0x00000373, 0x00000374, 0x00060050, 0x0000001f, + 0x0000037a, 0x00000375, 0x00000376, 0x00000377, 0x00060050, 0x00000021, 0x0000037b, 0x00000378, + 0x00000379, 0x0000037a, 0x0004003d, 0x0000001f, 0x0000037c, 0x000002e7, 0x00050091, 0x0000001f, + 0x0000037d, 0x0000037b, 0x0000037c, 0x0006000c, 0x0000001f, 0x0000037e, 0x00000001, 0x00000045, + 0x0000037d, 0x000200fe, 0x0000037e, 0x00010038, 0x00050036, 0x0000001f, 0x00000066, 0x00000000, + 0x0000005e, 0x00030037, 0x00000020, 0x0000005f, 0x00030037, 0x00000020, 0x00000060, 0x00030037, + 0x00000020, 0x00000061, 0x00030037, 0x0000000d, 0x00000062, 0x00030037, 0x0000000d, 0x00000063, + 0x00030037, 0x00000020, 0x00000064, 0x00030037, 0x00000020, 0x00000065, 0x000200f8, 0x00000067, + 0x0004003b, 0x0000000d, 0x00000381, 0x00000007, 0x0004003b, 0x0000000d, 0x00000386, 0x00000007, + 0x0004003b, 0x00000020, 0x0000038d, 0x00000007, 0x0004003b, 0x00000020, 0x00000392, 0x00000007, + 0x0004003b, 0x0000000d, 0x00000398, 0x00000007, 0x0004003b, 0x00000020, 0x00000399, 0x00000007, + 0x0004003b, 0x00000020, 0x0000039b, 0x00000007, 0x0004003b, 0x0000000d, 0x0000039d, 0x00000007, + 0x0004003b, 0x0000000d, 0x000003a0, 0x00000007, 0x0004003b, 0x00000020, 0x000003a1, 0x00000007, + 0x0004003b, 0x00000020, 0x000003a3, 0x00000007, 0x0004003b, 0x00000020, 0x000003a5, 0x00000007, + 0x0004003b, 0x0000000d, 0x000003a7, 0x00000007, 0x0004003b, 0x00000020, 0x000003aa, 0x00000007, + 0x0004003b, 0x0000000d, 0x000003af, 0x00000007, 0x0004003b, 0x00000020, 0x000003b0, 0x00000007, + 0x0004003b, 0x00000020, 0x000003b3, 0x00000007, 0x0004003b, 0x00000020, 0x000003c5, 0x00000007, + 0x0004003d, 0x0000001f, 0x00000382, 0x0000005f, 0x0004003d, 0x0000001f, 0x00000383, 0x00000064, + 0x00050094, 0x00000006, 0x00000384, 0x00000382, 0x00000383, 0x0007000c, 0x00000006, 0x00000385, + 0x00000001, 0x00000028, 0x00000384, 0x000000dc, 0x0003003e, 0x00000381, 0x00000385, 0x0004003d, + 0x00000006, 0x00000387, 0x00000381, 0x0004003d, 0x00000006, 0x00000388, 0x00000381, 0x00050085, + 0x00000006, 0x00000389, 0x00000388, 0x0000011f, 0x00050081, 0x00000006, 0x0000038a, 0x00000389, + 0x0000011f, 0x0008000c, 0x00000006, 0x0000038c, 0x00000001, 0x0000002e, 0x00000387, 0x0000038a, + 0x0000038b, 0x0003003e, 0x00000386, 0x0000038c, 0x0004003d, 0x0000001f, 0x0000038e, 0x00000060, + 0x0004003d, 0x0000001f, 0x0000038f, 0x00000064, 0x00050081, 0x0000001f, 0x00000390, 0x0000038e, + 0x0000038f, 0x0006000c, 0x0000001f, 0x00000391, 0x00000001, 0x00000045, 0x00000390, 0x0003003e, + 0x0000038d, 0x00000391, 0x0004003d, 0x0000001f, 0x00000394, 0x00000061, 0x0004003d, 0x00000006, + 0x00000395, 0x00000062, 0x00060050, 0x0000001f, 0x00000396, 0x00000395, 0x00000395, 0x00000395, + 0x0008000c, 0x0000001f, 0x00000397, 0x00000001, 0x0000002e, 0x00000393, 0x00000394, 0x00000396, + 0x0003003e, 0x00000392, 0x00000397, 0x0004003d, 0x0000001f, 0x0000039a, 0x0000005f, 0x0003003e, + 0x00000399, 0x0000039a, 0x0004003d, 0x0000001f, 0x0000039c, 0x0000038d, 0x0003003e, 0x0000039b, + 0x0000039c, 0x0004003d, 0x00000006, 0x0000039e, 0x00000063, 0x0003003e, 0x0000039d, 0x0000039e, + 0x00070039, 0x00000006, 0x0000039f, 0x00000044, 0x00000399, 0x0000039b, 0x0000039d, 0x0003003e, + 0x00000398, 0x0000039f, 0x0004003d, 0x0000001f, 0x000003a2, 0x0000005f, 0x0003003e, 0x000003a1, + 0x000003a2, 0x0004003d, 0x0000001f, 0x000003a4, 0x00000060, 0x0003003e, 0x000003a3, 0x000003a4, + 0x0004003d, 0x0000001f, 0x000003a6, 0x00000064, 0x0003003e, 0x000003a5, 0x000003a6, 0x0004003d, + 0x00000006, 0x000003a8, 0x00000063, 0x0003003e, 0x000003a7, 0x000003a8, 0x00080039, 0x00000006, + 0x000003a9, 0x00000050, 0x000003a1, 0x000003a3, 0x000003a5, 0x000003a7, 0x0003003e, 0x000003a0, + 0x000003a9, 0x0004003d, 0x0000001f, 0x000003ab, 0x0000038d, 0x0004003d, 0x0000001f, 0x000003ac, + 0x00000060, 0x00050094, 0x00000006, 0x000003ad, 0x000003ab, 0x000003ac, 0x0007000c, 0x00000006, + 0x000003ae, 0x00000001, 0x00000028, 0x000003ad, 0x000000dc, 0x0003003e, 0x000003af, 0x000003ae, + 0x0004003d, 0x0000001f, 0x000003b1, 0x00000392, 0x0003003e, 0x000003b0, 0x000003b1, 0x00060039, + 0x0000001f, 0x000003b2, 0x00000055, 0x000003af, 0x000003b0, 0x0003003e, 0x000003aa, 0x000003b2, + 0x0004003d, 0x00000006, 0x000003b4, 0x00000398, 0x0004003d, 0x00000006, 0x000003b5, 0x000003a0, + 0x00050085, 0x00000006, 0x000003b6, 0x000003b4, 0x000003b5, 0x0004003d, 0x0000001f, 0x000003b7, + 0x000003aa, 0x0005008e, 0x0000001f, 0x000003b8, 0x000003b7, 0x000003b6, 0x0004003d, 0x0000001f, + 0x000003ba, 0x0000005f, 0x0004003d, 0x0000001f, 0x000003bb, 0x00000060, 0x00050094, 0x00000006, + 0x000003bc, 0x000003ba, 0x000003bb, 0x0007000c, 0x00000006, 0x000003bd, 0x00000001, 0x00000028, + 0x000003bc, 0x000000dc, 0x00050085, 0x00000006, 0x000003be, 0x000003b9, 0x000003bd, 0x0004003d, + 0x00000006, 0x000003bf, 0x00000381, 0x0007000c, 0x00000006, 0x000003c0, 0x00000001, 0x00000028, + 0x000003bf, 0x000000b6, 0x00050085, 0x00000006, 0x000003c1, 0x000003be, 0x000003c0, 0x0007000c, + 0x00000006, 0x000003c2, 0x00000001, 0x00000028, 0x000003c1, 0x000000b6, 0x00060050, 0x0000001f, + 0x000003c3, 0x000003c2, 0x000003c2, 0x000003c2, 0x00050088, 0x0000001f, 0x000003c4, 0x000003b8, + 0x000003c3, 0x0003003e, 0x000003b3, 0x000003c4, 0x0004003d, 0x0000001f, 0x000003c6, 0x000003aa, + 0x00050083, 0x0000001f, 0x000003c7, 0x0000028c, 0x000003c6, 0x0004003d, 0x00000006, 0x000003c8, + 0x00000062, 0x00050083, 0x00000006, 0x000003c9, 0x0000010a, 0x000003c8, 0x0005008e, 0x0000001f, + 0x000003ca, 0x000003c7, 0x000003c9, 0x0003003e, 0x000003c5, 0x000003ca, 0x0004003d, 0x0000001f, + 0x000003cb, 0x000003c5, 0x0004003d, 0x0000001f, 0x000003cc, 0x00000061, 0x00050085, 0x0000001f, + 0x000003cd, 0x000003cb, 0x000003cc, 0x0004003d, 0x00000006, 0x000003ce, 0x00000386, 0x0005008e, + 0x0000001f, 0x000003cf, 0x000003cd, 0x000003ce, 0x0004003d, 0x0000001f, 0x000003d0, 0x000003b3, + 0x0004003d, 0x00000006, 0x000003d1, 0x00000381, 0x0005008e, 0x0000001f, 0x000003d2, 0x000003d0, + 0x000003d1, 0x00050081, 0x0000001f, 0x000003d3, 0x000003cf, 0x000003d2, 0x0004003d, 0x0000001f, + 0x000003d4, 0x00000065, 0x00050085, 0x0000001f, 0x000003d5, 0x000003d3, 0x000003d4, 0x000200fe, + 0x000003d5, 0x00010038, 0x00050036, 0x00000006, 0x0000006c, 0x00000000, 0x00000068, 0x00030037, + 0x00000020, 0x00000069, 0x00030037, 0x0000000d, 0x0000006a, 0x00030037, 0x0000000d, 0x0000006b, + 0x000200f8, 0x0000006d, 0x0004003b, 0x000000df, 0x000003f4, 0x00000007, 0x0004003b, 0x000000da, + 0x00000402, 0x00000007, 0x0004003b, 0x00000020, 0x0000040d, 0x00000007, 0x0004003b, 0x00000008, + 0x00000415, 0x00000007, 0x0004003b, 0x0000000d, 0x0000041b, 0x00000007, 0x0004003b, 0x0000000d, + 0x0000043f, 0x00000007, 0x0004003b, 0x00000008, 0x00000448, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000456, 0x00000007, 0x0004003b, 0x000000df, 0x00000457, 0x00000007, 0x0004003b, 0x000000df, + 0x00000460, 0x00000007, 0x0004003b, 0x0000000d, 0x00000468, 0x00000007, 0x0004003b, 0x0000000d, + 0x00000486, 0x00000007, 0x00060041, 0x000003df, 0x000003e0, 0x000003dd, 0x000003de, 0x00000099, + 0x0004003d, 0x00000006, 0x000003e1, 0x000003e0, 0x000500b8, 0x000000ac, 0x000003e2, 0x000003e1, + 0x0000011f, 0x000400a8, 0x000000ac, 0x000003e3, 0x000003e2, 0x000300f7, 0x000003e5, 0x00000000, + 0x000400fa, 0x000003e3, 0x000003e4, 0x000003e5, 0x000200f8, 0x000003e4, 0x00060041, 0x000003df, + 0x000003e6, 0x000003dd, 0x000003de, 0x000001db, 0x0004003d, 0x00000006, 0x000003e7, 0x000003e6, + 0x000500b8, 0x000000ac, 0x000003e8, 0x000003e7, 0x0000011f, 0x000200f9, 0x000003e5, 0x000200f8, + 0x000003e5, 0x000700f5, 0x000000ac, 0x000003e9, 0x000003e2, 0x0000006d, 0x000003e8, 0x000003e4, + 0x000400a8, 0x000000ac, 0x000003ea, 0x000003e9, 0x000300f7, 0x000003ec, 0x00000000, 0x000400fa, + 0x000003ea, 0x000003eb, 0x000003ec, 0x000200f8, 0x000003eb, 0x00060041, 0x000003df, 0x000003ed, + 0x000003dd, 0x000000e8, 0x000003d9, 0x0004003d, 0x00000006, 0x000003ee, 0x000003ed, 0x000500b8, + 0x000000ac, 0x000003ef, 0x000003ee, 0x000000ab, 0x000200f9, 0x000003ec, 0x000200f8, 0x000003ec, + 0x000700f5, 0x000000ac, 0x000003f0, 0x000003e9, 0x000003e5, 0x000003ef, 0x000003eb, 0x000300f7, + 0x000003f2, 0x00000000, 0x000400fa, 0x000003f0, 0x000003f1, 0x000003f2, 0x000200f8, 0x000003f1, + 0x000200fe, 0x0000010a, 0x000200f8, 0x000003f2, 0x0003003e, 0x000003f4, 0x000003de, 0x0004003d, + 0x00000006, 0x000003f5, 0x0000006a, 0x00060041, 0x000003df, 0x000003f6, 0x000003dd, 0x000000e8, + 0x00000094, 0x0004003d, 0x00000006, 0x000003f7, 0x000003f6, 0x000500b8, 0x000000ac, 0x000003f8, + 0x000003f5, 0x000003f7, 0x000300f7, 0x000003fa, 0x00000000, 0x000400fa, 0x000003f8, 0x000003f9, + 0x000003fb, 0x000200f8, 0x000003f9, 0x0003003e, 0x000003f4, 0x000000e1, 0x000200f9, 0x000003fa, + 0x000200f8, 0x000003fb, 0x0004003d, 0x00000006, 0x000003fc, 0x0000006a, 0x00060041, 0x000003df, + 0x000003fd, 0x000003dd, 0x000000e8, 0x00000099, 0x0004003d, 0x00000006, 0x000003fe, 0x000003fd, + 0x000500b8, 0x000000ac, 0x000003ff, 0x000003fc, 0x000003fe, 0x000300f7, 0x00000401, 0x00000000, + 0x000400fa, 0x000003ff, 0x00000400, 0x00000401, 0x000200f8, 0x00000400, 0x0003003e, 0x000003f4, + 0x000000e8, 0x000200f9, 0x00000401, 0x000200f8, 0x00000401, 0x000200f9, 0x000003fa, 0x000200f8, + 0x000003fa, 0x0004003d, 0x000000de, 0x00000403, 0x000003f4, 0x00060041, 0x00000404, 0x00000405, + 0x000003dd, 0x000000e1, 0x00000403, 0x0004003d, 0x000003d8, 0x00000406, 0x00000405, 0x0004003d, + 0x0000001f, 0x00000407, 0x00000069, 0x00050051, 0x00000006, 0x00000408, 0x00000407, 0x00000000, + 0x00050051, 0x00000006, 0x00000409, 0x00000407, 0x00000001, 0x00050051, 0x00000006, 0x0000040a, + 0x00000407, 0x00000002, 0x00070050, 0x00000016, 0x0000040b, 0x00000408, 0x00000409, 0x0000040a, + 0x0000010a, 0x00050091, 0x00000016, 0x0000040c, 0x00000406, 0x0000040b, 0x0003003e, 0x00000402, + 0x0000040c, 0x0004003d, 0x00000016, 0x0000040e, 0x00000402, 0x0008004f, 0x0000001f, 0x0000040f, + 0x0000040e, 0x0000040e, 0x00000000, 0x00000001, 0x00000002, 0x00050041, 0x0000000d, 0x00000410, + 0x00000402, 0x000003d9, 0x0004003d, 0x00000006, 0x00000411, 0x00000410, 0x0007000c, 0x00000006, + 0x00000412, 0x00000001, 0x00000028, 0x00000411, 0x00000316, 0x00060050, 0x0000001f, 0x00000413, + 0x00000412, 0x00000412, 0x00000412, 0x00050088, 0x0000001f, 0x00000414, 0x0000040f, 0x00000413, + 0x0003003e, 0x0000040d, 0x00000414, 0x0004003d, 0x0000001f, 0x00000416, 0x0000040d, 0x0007004f, + 0x00000007, 0x00000417, 0x00000416, 0x00000416, 0x00000000, 0x00000001, 0x0005008e, 0x00000007, + 0x00000418, 0x00000417, 0x0000011f, 0x00050050, 0x00000007, 0x00000419, 0x0000011f, 0x0000011f, + 0x00050081, 0x00000007, 0x0000041a, 0x00000418, 0x00000419, 0x0003003e, 0x00000415, 0x0000041a, + 0x00050041, 0x0000000d, 0x0000041c, 0x0000040d, 0x000001db, 0x0004003d, 0x00000006, 0x0000041d, + 0x0000041c, 0x0003003e, 0x0000041b, 0x0000041d, 0x00050041, 0x0000000d, 0x0000041e, 0x00000415, + 0x00000094, 0x0004003d, 0x00000006, 0x0000041f, 0x0000041e, 0x000500b8, 0x000000ac, 0x00000420, + 0x0000041f, 0x000000dc, 0x000400a8, 0x000000ac, 0x00000421, 0x00000420, 0x000300f7, 0x00000423, + 0x00000000, 0x000400fa, 0x00000421, 0x00000422, 0x00000423, 0x000200f8, 0x00000422, 0x00050041, + 0x0000000d, 0x00000424, 0x00000415, 0x00000094, 0x0004003d, 0x00000006, 0x00000425, 0x00000424, + 0x000500ba, 0x000000ac, 0x00000426, 0x00000425, 0x0000010a, 0x000200f9, 0x00000423, 0x000200f8, + 0x00000423, 0x000700f5, 0x000000ac, 0x00000427, 0x00000420, 0x000003fa, 0x00000426, 0x00000422, + 0x000400a8, 0x000000ac, 0x00000428, 0x00000427, 0x000300f7, 0x0000042a, 0x00000000, 0x000400fa, + 0x00000428, 0x00000429, 0x0000042a, 0x000200f8, 0x00000429, 0x00050041, 0x0000000d, 0x0000042b, + 0x00000415, 0x00000099, 0x0004003d, 0x00000006, 0x0000042c, 0x0000042b, 0x000500b8, 0x000000ac, + 0x0000042d, 0x0000042c, 0x000000dc, 0x000200f9, 0x0000042a, 0x000200f8, 0x0000042a, 0x000700f5, + 0x000000ac, 0x0000042e, 0x00000427, 0x00000423, 0x0000042d, 0x00000429, 0x000400a8, 0x000000ac, + 0x0000042f, 0x0000042e, 0x000300f7, 0x00000431, 0x00000000, 0x000400fa, 0x0000042f, 0x00000430, + 0x00000431, 0x000200f8, 0x00000430, 0x00050041, 0x0000000d, 0x00000432, 0x00000415, 0x00000099, + 0x0004003d, 0x00000006, 0x00000433, 0x00000432, 0x000500ba, 0x000000ac, 0x00000434, 0x00000433, + 0x0000010a, 0x000200f9, 0x00000431, 0x000200f8, 0x00000431, 0x000700f5, 0x000000ac, 0x00000435, + 0x0000042e, 0x0000042a, 0x00000434, 0x00000430, 0x0004003d, 0x00000006, 0x00000436, 0x0000041b, + 0x000500b8, 0x000000ac, 0x00000437, 0x00000436, 0x000000dc, 0x000500a6, 0x000000ac, 0x00000438, + 0x00000435, 0x00000437, 0x0004003d, 0x00000006, 0x00000439, 0x0000041b, 0x000500ba, 0x000000ac, + 0x0000043a, 0x00000439, 0x0000010a, 0x000500a6, 0x000000ac, 0x0000043b, 0x00000438, 0x0000043a, + 0x000300f7, 0x0000043d, 0x00000000, 0x000400fa, 0x0000043b, 0x0000043c, 0x0000043d, 0x000200f8, + 0x0000043c, 0x000200fe, 0x0000010a, 0x000200f8, 0x0000043d, 0x00060041, 0x000003df, 0x00000440, + 0x000003dd, 0x000003de, 0x00000094, 0x0004003d, 0x00000006, 0x00000441, 0x00000440, 0x0004003d, + 0x00000006, 0x00000442, 0x0000006b, 0x0008000c, 0x00000006, 0x00000443, 0x00000001, 0x0000002b, + 0x00000442, 0x000000dc, 0x0000010a, 0x00050083, 0x00000006, 0x00000444, 0x0000010a, 0x00000443, + 0x00050085, 0x00000006, 0x00000445, 0x00000444, 0x00000108, 0x00050081, 0x00000006, 0x00000446, + 0x0000010a, 0x00000445, 0x00050085, 0x00000006, 0x00000447, 0x00000441, 0x00000446, 0x0003003e, + 0x0000043f, 0x00000447, 0x0004003d, 0x0000044a, 0x0000044d, 0x0000044c, 0x00040064, 0x00000449, + 0x0000044e, 0x0000044d, 0x00050067, 0x0000044f, 0x00000450, 0x0000044e, 0x000000e1, 0x0007004f, + 0x00000451, 0x00000452, 0x00000450, 0x00000450, 0x00000000, 0x00000001, 0x0004006f, 0x00000007, + 0x00000453, 0x00000452, 0x00050050, 0x00000007, 0x00000454, 0x0000010a, 0x0000010a, 0x00050088, + 0x00000007, 0x00000455, 0x00000454, 0x00000453, 0x0003003e, 0x00000448, 0x00000455, 0x0003003e, + 0x00000456, 0x000000dc, 0x0003003e, 0x00000457, 0x00000458, 0x000200f9, 0x00000459, 0x000200f8, + 0x00000459, 0x000400f6, 0x0000045b, 0x0000045c, 0x00000000, 0x000200f9, 0x0000045d, 0x000200f8, + 0x0000045d, 0x0004003d, 0x000000de, 0x0000045e, 0x00000457, 0x000500b3, 0x000000ac, 0x0000045f, + 0x0000045e, 0x000000e8, 0x000400fa, 0x0000045f, 0x0000045a, 0x0000045b, 0x000200f8, 0x0000045a, + 0x0003003e, 0x00000460, 0x00000458, 0x000200f9, 0x00000461, 0x000200f8, 0x00000461, 0x000400f6, + 0x00000463, 0x00000464, 0x00000000, 0x000200f9, 0x00000465, 0x000200f8, 0x00000465, 0x0004003d, + 0x000000de, 0x00000466, 0x00000460, 0x000500b3, 0x000000ac, 0x00000467, 0x00000466, 0x000000e8, + 0x000400fa, 0x00000467, 0x00000462, 0x00000463, 0x000200f8, 0x00000462, 0x0004003d, 0x0000044a, + 0x00000469, 0x0000044c, 0x0004003d, 0x00000007, 0x0000046a, 0x00000415, 0x0004003d, 0x000000de, + 0x0000046b, 0x00000460, 0x0004006f, 0x00000006, 0x0000046c, 0x0000046b, 0x0004003d, 0x000000de, + 0x0000046d, 0x00000457, 0x0004006f, 0x00000006, 0x0000046e, 0x0000046d, 0x00050050, 0x00000007, + 0x0000046f, 0x0000046c, 0x0000046e, 0x0004003d, 0x00000007, 0x00000470, 0x00000448, 0x00050085, + 0x00000007, 0x00000471, 0x0000046f, 0x00000470, 0x00050081, 0x00000007, 0x00000472, 0x0000046a, + 0x00000471, 0x0004003d, 0x000000de, 0x00000473, 0x000003f4, 0x0004006f, 0x00000006, 0x00000474, + 0x00000473, 0x00050051, 0x00000006, 0x00000475, 0x00000472, 0x00000000, 0x00050051, 0x00000006, + 0x00000476, 0x00000472, 0x00000001, 0x00060050, 0x0000001f, 0x00000477, 0x00000475, 0x00000476, + 0x00000474, 0x00050057, 0x00000016, 0x00000478, 0x00000469, 0x00000477, 0x00050051, 0x00000006, + 0x00000479, 0x00000478, 0x00000000, 0x0003003e, 0x00000468, 0x00000479, 0x0004003d, 0x00000006, + 0x0000047a, 0x0000041b, 0x0004003d, 0x00000006, 0x0000047b, 0x0000043f, 0x00050083, 0x00000006, + 0x0000047c, 0x0000047a, 0x0000047b, 0x0004003d, 0x00000006, 0x0000047d, 0x00000468, 0x000500ba, + 0x000000ac, 0x0000047e, 0x0000047c, 0x0000047d, 0x000600a9, 0x00000006, 0x0000047f, 0x0000047e, + 0x000000dc, 0x0000010a, 0x0004003d, 0x00000006, 0x00000480, 0x00000456, 0x00050081, 0x00000006, + 0x00000481, 0x00000480, 0x0000047f, 0x0003003e, 0x00000456, 0x00000481, 0x000200f9, 0x00000464, + 0x000200f8, 0x00000464, 0x0004003d, 0x000000de, 0x00000482, 0x00000460, 0x00050080, 0x000000de, + 0x00000483, 0x00000482, 0x000000e8, 0x0003003e, 0x00000460, 0x00000483, 0x000200f9, 0x00000461, + 0x000200f8, 0x00000463, 0x000200f9, 0x0000045c, 0x000200f8, 0x0000045c, 0x0004003d, 0x000000de, + 0x00000484, 0x00000457, 0x00050080, 0x000000de, 0x00000485, 0x00000484, 0x000000e8, 0x0003003e, + 0x00000457, 0x00000485, 0x000200f9, 0x00000459, 0x000200f8, 0x0000045b, 0x0004003d, 0x00000006, + 0x00000487, 0x00000456, 0x00050088, 0x00000006, 0x00000489, 0x00000487, 0x00000488, 0x0003003e, + 0x00000486, 0x00000489, 0x0004003d, 0x00000006, 0x0000048a, 0x00000486, 0x00060041, 0x000003df, + 0x0000048b, 0x000003dd, 0x000000e8, 0x000003d9, 0x0004003d, 0x00000006, 0x0000048c, 0x0000048b, + 0x0008000c, 0x00000006, 0x0000048d, 0x00000001, 0x0000002b, 0x0000048c, 0x000000dc, 0x0000010a, + 0x0008000c, 0x00000006, 0x0000048e, 0x00000001, 0x0000002e, 0x0000010a, 0x0000048a, 0x0000048d, + 0x0003003e, 0x00000486, 0x0000048e, 0x0004003d, 0x00000006, 0x00000490, 0x00000486, 0x0008000c, + 0x00000006, 0x00000491, 0x00000001, 0x0000002e, 0x0000048f, 0x0000010a, 0x00000490, 0x000200fe, + 0x00000491, 0x00010038, }; static const size_t mesh3d_frag_spv_count = sizeof(mesh3d_frag_spv)/sizeof(mesh3d_frag_spv[0]); diff --git a/src/modules/graphics/shaders/mesh3d_gbuffer.frag b/src/modules/graphics/shaders/mesh3d_gbuffer.frag index c60f54b8..b8988066 100644 --- a/src/modules/graphics/shaders/mesh3d_gbuffer.frag +++ b/src/modules/graphics/shaders/mesh3d_gbuffer.frag @@ -12,6 +12,8 @@ layout(push_constant) uniform Push { vec4 clip; // x=near, y=far } pc; +layout(binding = 0) uniform sampler2D MainTex; + layout(location = 0) out vec4 outNormal; layout(location = 1) out vec4 outDepth; layout(location = 2) out vec4 outAlbedo; @@ -26,5 +28,10 @@ void main() { float zEye = (nearZ * farZ) / max(farZ - z * (farZ - nearZ), 1e-6); float linear01 = clamp((zEye - nearZ) / (farZ - nearZ), 0.0, 1.0); outDepth = vec4(linear01, linear01, linear01, 1.0); - outAlbedo = vec4(1.0, 1.0, 1.0, 1.0 + 0.0 * vUV.x); + vec3 albedo = texture(MainTex, vUV).rgb; + uint packedTint = floatBitsToUint(pc.clip.z); + vec3 tint = vec3(float(packedTint & 255u), float((packedTint >> 8) & 255u), + float((packedTint >> 16) & 255u)) / 255.0; + // A = linear depth so SSGI can sample albedo+depth with one sampler. + outAlbedo = vec4(albedo * tint, linear01); } diff --git a/src/modules/graphics/shaders/mesh3d_gbuffer.frag.spv b/src/modules/graphics/shaders/mesh3d_gbuffer.frag.spv index acff8cdb..3ad48d96 100644 Binary files a/src/modules/graphics/shaders/mesh3d_gbuffer.frag.spv and b/src/modules/graphics/shaders/mesh3d_gbuffer.frag.spv differ diff --git a/src/modules/graphics/shaders/mesh3d_gbuffer_frag_spv.inc b/src/modules/graphics/shaders/mesh3d_gbuffer_frag_spv.inc index e3761322..8582bb8a 100644 --- a/src/modules/graphics/shaders/mesh3d_gbuffer_frag_spv.inc +++ b/src/modules/graphics/shaders/mesh3d_gbuffer_frag_spv.inc @@ -1,8 +1,8 @@ static const uint32_t mesh3d_gbuffer_frag_spv[] = { - 0x07230203, 0x00010000, 0x000d000b, 0x0000005a, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, + 0x07230203, 0x00010000, 0x000d000b, 0x0000007f, 0x00000000, 0x00020011, 0x00000001, 0x0006000b, 0x00000001, 0x4c534c47, 0x6474732e, 0x3035342e, 0x00000000, 0x0003000e, 0x00000000, 0x00000001, 0x000b000f, 0x00000004, 0x00000004, 0x6e69616d, 0x00000000, 0x0000000b, 0x00000010, 0x0000001e, - 0x0000004e, 0x00000051, 0x00000054, 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, + 0x0000004e, 0x00000059, 0x00000076, 0x00030010, 0x00000004, 0x00000007, 0x00030003, 0x00000002, 0x000001c2, 0x000a0004, 0x475f4c47, 0x4c474f4f, 0x70635f45, 0x74735f70, 0x5f656c79, 0x656e696c, 0x7269645f, 0x69746365, 0x00006576, 0x00080004, 0x475f4c47, 0x4c474f4f, 0x6e695f45, 0x64756c63, 0x69645f65, 0x74636572, 0x00657669, 0x00040005, 0x00000004, 0x6e69616d, 0x00000000, 0x00030005, @@ -15,68 +15,93 @@ static const uint32_t mesh3d_gbuffer_frag_spv[] = { 0x00000024, 0x00000004, 0x70696c63, 0x00000000, 0x00030005, 0x00000026, 0x00006370, 0x00040005, 0x00000030, 0x5a726166, 0x00000000, 0x00040005, 0x00000037, 0x6579457a, 0x00000000, 0x00050005, 0x00000045, 0x656e696c, 0x31307261, 0x00000000, 0x00050005, 0x0000004e, 0x4474756f, 0x68747065, - 0x00000000, 0x00050005, 0x00000051, 0x4174756f, 0x6465626c, 0x0000006f, 0x00030005, 0x00000054, - 0x00565576, 0x00040047, 0x0000000b, 0x0000001e, 0x00000000, 0x00040047, 0x00000010, 0x0000001e, - 0x00000000, 0x00040047, 0x0000001e, 0x0000001e, 0x00000001, 0x00030047, 0x00000024, 0x00000002, - 0x00040048, 0x00000024, 0x00000000, 0x00000005, 0x00050048, 0x00000024, 0x00000000, 0x00000007, - 0x00000010, 0x00050048, 0x00000024, 0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x00000024, - 0x00000001, 0x00000023, 0x00000040, 0x00050048, 0x00000024, 0x00000002, 0x00000023, 0x00000050, - 0x00050048, 0x00000024, 0x00000003, 0x00000023, 0x00000060, 0x00050048, 0x00000024, 0x00000004, - 0x00000023, 0x00000070, 0x00040047, 0x0000004e, 0x0000001e, 0x00000001, 0x00040047, 0x00000051, - 0x0000001e, 0x00000002, 0x00040047, 0x00000054, 0x0000001e, 0x00000002, 0x00020013, 0x00000002, - 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, - 0x00000006, 0x00000003, 0x00040020, 0x00000008, 0x00000007, 0x00000007, 0x00040020, 0x0000000a, - 0x00000001, 0x00000007, 0x0004003b, 0x0000000a, 0x0000000b, 0x00000001, 0x00040017, 0x0000000e, - 0x00000006, 0x00000004, 0x00040020, 0x0000000f, 0x00000003, 0x0000000e, 0x0004003b, 0x0000000f, - 0x00000010, 0x00000003, 0x0004002b, 0x00000006, 0x00000012, 0x3f000000, 0x0004002b, 0x00000006, - 0x00000016, 0x3f800000, 0x00040020, 0x0000001b, 0x00000007, 0x00000006, 0x00040020, 0x0000001d, - 0x00000001, 0x00000006, 0x0004003b, 0x0000001d, 0x0000001e, 0x00000001, 0x0004002b, 0x00000006, - 0x00000020, 0x00000000, 0x00040018, 0x00000023, 0x0000000e, 0x00000004, 0x0007001e, 0x00000024, - 0x00000023, 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e, 0x00040020, 0x00000025, 0x00000009, - 0x00000024, 0x0004003b, 0x00000025, 0x00000026, 0x00000009, 0x00040015, 0x00000027, 0x00000020, - 0x00000001, 0x0004002b, 0x00000027, 0x00000028, 0x00000004, 0x00040015, 0x00000029, 0x00000020, - 0x00000000, 0x0004002b, 0x00000029, 0x0000002a, 0x00000000, 0x00040020, 0x0000002b, 0x00000009, - 0x00000006, 0x0004002b, 0x00000006, 0x0000002e, 0x38d1b717, 0x0004002b, 0x00000029, 0x00000031, - 0x00000001, 0x0004002b, 0x00000006, 0x00000042, 0x358637bd, 0x0004003b, 0x0000000f, 0x0000004e, - 0x00000003, 0x0004003b, 0x0000000f, 0x00000051, 0x00000003, 0x00040017, 0x00000052, 0x00000006, - 0x00000002, 0x00040020, 0x00000053, 0x00000001, 0x00000052, 0x0004003b, 0x00000053, 0x00000054, - 0x00000001, 0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, - 0x0004003b, 0x00000008, 0x00000009, 0x00000007, 0x0004003b, 0x0000001b, 0x0000001c, 0x00000007, - 0x0004003b, 0x0000001b, 0x00000022, 0x00000007, 0x0004003b, 0x0000001b, 0x00000030, 0x00000007, - 0x0004003b, 0x0000001b, 0x00000037, 0x00000007, 0x0004003b, 0x0000001b, 0x00000045, 0x00000007, - 0x0004003d, 0x00000007, 0x0000000c, 0x0000000b, 0x0006000c, 0x00000007, 0x0000000d, 0x00000001, - 0x00000045, 0x0000000c, 0x0003003e, 0x00000009, 0x0000000d, 0x0004003d, 0x00000007, 0x00000011, - 0x00000009, 0x0005008e, 0x00000007, 0x00000013, 0x00000011, 0x00000012, 0x00060050, 0x00000007, - 0x00000014, 0x00000012, 0x00000012, 0x00000012, 0x00050081, 0x00000007, 0x00000015, 0x00000013, - 0x00000014, 0x00050051, 0x00000006, 0x00000017, 0x00000015, 0x00000000, 0x00050051, 0x00000006, - 0x00000018, 0x00000015, 0x00000001, 0x00050051, 0x00000006, 0x00000019, 0x00000015, 0x00000002, - 0x00070050, 0x0000000e, 0x0000001a, 0x00000017, 0x00000018, 0x00000019, 0x00000016, 0x0003003e, - 0x00000010, 0x0000001a, 0x0004003d, 0x00000006, 0x0000001f, 0x0000001e, 0x0008000c, 0x00000006, - 0x00000021, 0x00000001, 0x0000002b, 0x0000001f, 0x00000020, 0x00000016, 0x0003003e, 0x0000001c, - 0x00000021, 0x00060041, 0x0000002b, 0x0000002c, 0x00000026, 0x00000028, 0x0000002a, 0x0004003d, - 0x00000006, 0x0000002d, 0x0000002c, 0x0007000c, 0x00000006, 0x0000002f, 0x00000001, 0x00000028, - 0x0000002d, 0x0000002e, 0x0003003e, 0x00000022, 0x0000002f, 0x00060041, 0x0000002b, 0x00000032, - 0x00000026, 0x00000028, 0x00000031, 0x0004003d, 0x00000006, 0x00000033, 0x00000032, 0x0004003d, - 0x00000006, 0x00000034, 0x00000022, 0x00050081, 0x00000006, 0x00000035, 0x00000034, 0x0000002e, - 0x0007000c, 0x00000006, 0x00000036, 0x00000001, 0x00000028, 0x00000033, 0x00000035, 0x0003003e, - 0x00000030, 0x00000036, 0x0004003d, 0x00000006, 0x00000038, 0x00000022, 0x0004003d, 0x00000006, - 0x00000039, 0x00000030, 0x00050085, 0x00000006, 0x0000003a, 0x00000038, 0x00000039, 0x0004003d, - 0x00000006, 0x0000003b, 0x00000030, 0x0004003d, 0x00000006, 0x0000003c, 0x0000001c, 0x0004003d, - 0x00000006, 0x0000003d, 0x00000030, 0x0004003d, 0x00000006, 0x0000003e, 0x00000022, 0x00050083, - 0x00000006, 0x0000003f, 0x0000003d, 0x0000003e, 0x00050085, 0x00000006, 0x00000040, 0x0000003c, - 0x0000003f, 0x00050083, 0x00000006, 0x00000041, 0x0000003b, 0x00000040, 0x0007000c, 0x00000006, - 0x00000043, 0x00000001, 0x00000028, 0x00000041, 0x00000042, 0x00050088, 0x00000006, 0x00000044, - 0x0000003a, 0x00000043, 0x0003003e, 0x00000037, 0x00000044, 0x0004003d, 0x00000006, 0x00000046, - 0x00000037, 0x0004003d, 0x00000006, 0x00000047, 0x00000022, 0x00050083, 0x00000006, 0x00000048, - 0x00000046, 0x00000047, 0x0004003d, 0x00000006, 0x00000049, 0x00000030, 0x0004003d, 0x00000006, - 0x0000004a, 0x00000022, 0x00050083, 0x00000006, 0x0000004b, 0x00000049, 0x0000004a, 0x00050088, - 0x00000006, 0x0000004c, 0x00000048, 0x0000004b, 0x0008000c, 0x00000006, 0x0000004d, 0x00000001, - 0x0000002b, 0x0000004c, 0x00000020, 0x00000016, 0x0003003e, 0x00000045, 0x0000004d, 0x0004003d, - 0x00000006, 0x0000004f, 0x00000045, 0x00070050, 0x0000000e, 0x00000050, 0x0000004f, 0x0000004f, - 0x0000004f, 0x00000016, 0x0003003e, 0x0000004e, 0x00000050, 0x00050041, 0x0000001d, 0x00000055, - 0x00000054, 0x0000002a, 0x0004003d, 0x00000006, 0x00000056, 0x00000055, 0x00050085, 0x00000006, - 0x00000057, 0x00000020, 0x00000056, 0x00050081, 0x00000006, 0x00000058, 0x00000016, 0x00000057, - 0x00070050, 0x0000000e, 0x00000059, 0x00000016, 0x00000016, 0x00000016, 0x00000058, 0x0003003e, - 0x00000051, 0x00000059, 0x000100fd, 0x00010038, + 0x00000000, 0x00040005, 0x00000051, 0x65626c61, 0x00006f64, 0x00040005, 0x00000055, 0x6e69614d, + 0x00786554, 0x00030005, 0x00000059, 0x00565576, 0x00050005, 0x0000005e, 0x6b636170, 0x69546465, + 0x0000746e, 0x00040005, 0x00000063, 0x746e6974, 0x00000000, 0x00050005, 0x00000076, 0x4174756f, + 0x6465626c, 0x0000006f, 0x00040047, 0x0000000b, 0x0000001e, 0x00000000, 0x00040047, 0x00000010, + 0x0000001e, 0x00000000, 0x00040047, 0x0000001e, 0x0000001e, 0x00000001, 0x00030047, 0x00000024, + 0x00000002, 0x00040048, 0x00000024, 0x00000000, 0x00000005, 0x00050048, 0x00000024, 0x00000000, + 0x00000007, 0x00000010, 0x00050048, 0x00000024, 0x00000000, 0x00000023, 0x00000000, 0x00050048, + 0x00000024, 0x00000001, 0x00000023, 0x00000040, 0x00050048, 0x00000024, 0x00000002, 0x00000023, + 0x00000050, 0x00050048, 0x00000024, 0x00000003, 0x00000023, 0x00000060, 0x00050048, 0x00000024, + 0x00000004, 0x00000023, 0x00000070, 0x00040047, 0x0000004e, 0x0000001e, 0x00000001, 0x00040047, + 0x00000055, 0x00000021, 0x00000000, 0x00040047, 0x00000055, 0x00000022, 0x00000000, 0x00040047, + 0x00000059, 0x0000001e, 0x00000002, 0x00040047, 0x00000076, 0x0000001e, 0x00000002, 0x00020013, + 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, + 0x00000007, 0x00000006, 0x00000003, 0x00040020, 0x00000008, 0x00000007, 0x00000007, 0x00040020, + 0x0000000a, 0x00000001, 0x00000007, 0x0004003b, 0x0000000a, 0x0000000b, 0x00000001, 0x00040017, + 0x0000000e, 0x00000006, 0x00000004, 0x00040020, 0x0000000f, 0x00000003, 0x0000000e, 0x0004003b, + 0x0000000f, 0x00000010, 0x00000003, 0x0004002b, 0x00000006, 0x00000012, 0x3f000000, 0x0004002b, + 0x00000006, 0x00000016, 0x3f800000, 0x00040020, 0x0000001b, 0x00000007, 0x00000006, 0x00040020, + 0x0000001d, 0x00000001, 0x00000006, 0x0004003b, 0x0000001d, 0x0000001e, 0x00000001, 0x0004002b, + 0x00000006, 0x00000020, 0x00000000, 0x00040018, 0x00000023, 0x0000000e, 0x00000004, 0x0007001e, + 0x00000024, 0x00000023, 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e, 0x00040020, 0x00000025, + 0x00000009, 0x00000024, 0x0004003b, 0x00000025, 0x00000026, 0x00000009, 0x00040015, 0x00000027, + 0x00000020, 0x00000001, 0x0004002b, 0x00000027, 0x00000028, 0x00000004, 0x00040015, 0x00000029, + 0x00000020, 0x00000000, 0x0004002b, 0x00000029, 0x0000002a, 0x00000000, 0x00040020, 0x0000002b, + 0x00000009, 0x00000006, 0x0004002b, 0x00000006, 0x0000002e, 0x38d1b717, 0x0004002b, 0x00000029, + 0x00000031, 0x00000001, 0x0004002b, 0x00000006, 0x00000042, 0x358637bd, 0x0004003b, 0x0000000f, + 0x0000004e, 0x00000003, 0x00090019, 0x00000052, 0x00000006, 0x00000001, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x00000000, 0x0003001b, 0x00000053, 0x00000052, 0x00040020, 0x00000054, + 0x00000000, 0x00000053, 0x0004003b, 0x00000054, 0x00000055, 0x00000000, 0x00040017, 0x00000057, + 0x00000006, 0x00000002, 0x00040020, 0x00000058, 0x00000001, 0x00000057, 0x0004003b, 0x00000058, + 0x00000059, 0x00000001, 0x00040020, 0x0000005d, 0x00000007, 0x00000029, 0x0004002b, 0x00000029, + 0x0000005f, 0x00000002, 0x0004002b, 0x00000029, 0x00000065, 0x000000ff, 0x0004002b, 0x00000027, + 0x00000069, 0x00000008, 0x0004002b, 0x00000027, 0x0000006e, 0x00000010, 0x0004002b, 0x00000006, + 0x00000073, 0x437f0000, 0x0004003b, 0x0000000f, 0x00000076, 0x00000003, 0x00050036, 0x00000002, + 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x00000008, 0x00000009, + 0x00000007, 0x0004003b, 0x0000001b, 0x0000001c, 0x00000007, 0x0004003b, 0x0000001b, 0x00000022, + 0x00000007, 0x0004003b, 0x0000001b, 0x00000030, 0x00000007, 0x0004003b, 0x0000001b, 0x00000037, + 0x00000007, 0x0004003b, 0x0000001b, 0x00000045, 0x00000007, 0x0004003b, 0x00000008, 0x00000051, + 0x00000007, 0x0004003b, 0x0000005d, 0x0000005e, 0x00000007, 0x0004003b, 0x00000008, 0x00000063, + 0x00000007, 0x0004003d, 0x00000007, 0x0000000c, 0x0000000b, 0x0006000c, 0x00000007, 0x0000000d, + 0x00000001, 0x00000045, 0x0000000c, 0x0003003e, 0x00000009, 0x0000000d, 0x0004003d, 0x00000007, + 0x00000011, 0x00000009, 0x0005008e, 0x00000007, 0x00000013, 0x00000011, 0x00000012, 0x00060050, + 0x00000007, 0x00000014, 0x00000012, 0x00000012, 0x00000012, 0x00050081, 0x00000007, 0x00000015, + 0x00000013, 0x00000014, 0x00050051, 0x00000006, 0x00000017, 0x00000015, 0x00000000, 0x00050051, + 0x00000006, 0x00000018, 0x00000015, 0x00000001, 0x00050051, 0x00000006, 0x00000019, 0x00000015, + 0x00000002, 0x00070050, 0x0000000e, 0x0000001a, 0x00000017, 0x00000018, 0x00000019, 0x00000016, + 0x0003003e, 0x00000010, 0x0000001a, 0x0004003d, 0x00000006, 0x0000001f, 0x0000001e, 0x0008000c, + 0x00000006, 0x00000021, 0x00000001, 0x0000002b, 0x0000001f, 0x00000020, 0x00000016, 0x0003003e, + 0x0000001c, 0x00000021, 0x00060041, 0x0000002b, 0x0000002c, 0x00000026, 0x00000028, 0x0000002a, + 0x0004003d, 0x00000006, 0x0000002d, 0x0000002c, 0x0007000c, 0x00000006, 0x0000002f, 0x00000001, + 0x00000028, 0x0000002d, 0x0000002e, 0x0003003e, 0x00000022, 0x0000002f, 0x00060041, 0x0000002b, + 0x00000032, 0x00000026, 0x00000028, 0x00000031, 0x0004003d, 0x00000006, 0x00000033, 0x00000032, + 0x0004003d, 0x00000006, 0x00000034, 0x00000022, 0x00050081, 0x00000006, 0x00000035, 0x00000034, + 0x0000002e, 0x0007000c, 0x00000006, 0x00000036, 0x00000001, 0x00000028, 0x00000033, 0x00000035, + 0x0003003e, 0x00000030, 0x00000036, 0x0004003d, 0x00000006, 0x00000038, 0x00000022, 0x0004003d, + 0x00000006, 0x00000039, 0x00000030, 0x00050085, 0x00000006, 0x0000003a, 0x00000038, 0x00000039, + 0x0004003d, 0x00000006, 0x0000003b, 0x00000030, 0x0004003d, 0x00000006, 0x0000003c, 0x0000001c, + 0x0004003d, 0x00000006, 0x0000003d, 0x00000030, 0x0004003d, 0x00000006, 0x0000003e, 0x00000022, + 0x00050083, 0x00000006, 0x0000003f, 0x0000003d, 0x0000003e, 0x00050085, 0x00000006, 0x00000040, + 0x0000003c, 0x0000003f, 0x00050083, 0x00000006, 0x00000041, 0x0000003b, 0x00000040, 0x0007000c, + 0x00000006, 0x00000043, 0x00000001, 0x00000028, 0x00000041, 0x00000042, 0x00050088, 0x00000006, + 0x00000044, 0x0000003a, 0x00000043, 0x0003003e, 0x00000037, 0x00000044, 0x0004003d, 0x00000006, + 0x00000046, 0x00000037, 0x0004003d, 0x00000006, 0x00000047, 0x00000022, 0x00050083, 0x00000006, + 0x00000048, 0x00000046, 0x00000047, 0x0004003d, 0x00000006, 0x00000049, 0x00000030, 0x0004003d, + 0x00000006, 0x0000004a, 0x00000022, 0x00050083, 0x00000006, 0x0000004b, 0x00000049, 0x0000004a, + 0x00050088, 0x00000006, 0x0000004c, 0x00000048, 0x0000004b, 0x0008000c, 0x00000006, 0x0000004d, + 0x00000001, 0x0000002b, 0x0000004c, 0x00000020, 0x00000016, 0x0003003e, 0x00000045, 0x0000004d, + 0x0004003d, 0x00000006, 0x0000004f, 0x00000045, 0x00070050, 0x0000000e, 0x00000050, 0x0000004f, + 0x0000004f, 0x0000004f, 0x00000016, 0x0003003e, 0x0000004e, 0x00000050, 0x0004003d, 0x00000053, + 0x00000056, 0x00000055, 0x0004003d, 0x00000057, 0x0000005a, 0x00000059, 0x00050057, 0x0000000e, + 0x0000005b, 0x00000056, 0x0000005a, 0x0008004f, 0x00000007, 0x0000005c, 0x0000005b, 0x0000005b, + 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000051, 0x0000005c, 0x00060041, 0x0000002b, + 0x00000060, 0x00000026, 0x00000028, 0x0000005f, 0x0004003d, 0x00000006, 0x00000061, 0x00000060, + 0x0004007c, 0x00000029, 0x00000062, 0x00000061, 0x0003003e, 0x0000005e, 0x00000062, 0x0004003d, + 0x00000029, 0x00000064, 0x0000005e, 0x000500c7, 0x00000029, 0x00000066, 0x00000064, 0x00000065, + 0x00040070, 0x00000006, 0x00000067, 0x00000066, 0x0004003d, 0x00000029, 0x00000068, 0x0000005e, + 0x000500c2, 0x00000029, 0x0000006a, 0x00000068, 0x00000069, 0x000500c7, 0x00000029, 0x0000006b, + 0x0000006a, 0x00000065, 0x00040070, 0x00000006, 0x0000006c, 0x0000006b, 0x0004003d, 0x00000029, + 0x0000006d, 0x0000005e, 0x000500c2, 0x00000029, 0x0000006f, 0x0000006d, 0x0000006e, 0x000500c7, + 0x00000029, 0x00000070, 0x0000006f, 0x00000065, 0x00040070, 0x00000006, 0x00000071, 0x00000070, + 0x00060050, 0x00000007, 0x00000072, 0x00000067, 0x0000006c, 0x00000071, 0x00060050, 0x00000007, + 0x00000074, 0x00000073, 0x00000073, 0x00000073, 0x00050088, 0x00000007, 0x00000075, 0x00000072, + 0x00000074, 0x0003003e, 0x00000063, 0x00000075, 0x0004003d, 0x00000007, 0x00000077, 0x00000051, + 0x0004003d, 0x00000007, 0x00000078, 0x00000063, 0x00050085, 0x00000007, 0x00000079, 0x00000077, + 0x00000078, 0x0004003d, 0x00000006, 0x0000007a, 0x00000045, 0x00050051, 0x00000006, 0x0000007b, + 0x00000079, 0x00000000, 0x00050051, 0x00000006, 0x0000007c, 0x00000079, 0x00000001, 0x00050051, + 0x00000006, 0x0000007d, 0x00000079, 0x00000002, 0x00070050, 0x0000000e, 0x0000007e, 0x0000007b, + 0x0000007c, 0x0000007d, 0x0000007a, 0x0003003e, 0x00000076, 0x0000007e, 0x000100fd, 0x00010038, }; static const size_t mesh3d_gbuffer_frag_spv_count = sizeof(mesh3d_gbuffer_frag_spv)/sizeof(mesh3d_gbuffer_frag_spv[0]); diff --git a/src/modules/graphics/shaders/mesh3d_vert_spv.inc b/src/modules/graphics/shaders/mesh3d_vert_spv.inc index 07fdc6c8..b0e4bf00 100644 --- a/src/modules/graphics/shaders/mesh3d_vert_spv.inc +++ b/src/modules/graphics/shaders/mesh3d_vert_spv.inc @@ -20,90 +20,92 @@ static const uint32_t mesh3d_vert_spv[] = { 0x00000073, 0x00050006, 0x00000014, 0x00000006, 0x69626d61, 0x00746e65, 0x00050006, 0x00000014, 0x00000007, 0x6867696c, 0x00007374, 0x00050006, 0x00000014, 0x00000008, 0x42786574, 0x00626d6f, 0x00060006, 0x00000014, 0x00000009, 0x61726170, 0x78616c6c, 0x00000000, 0x00050006, 0x00000014, - 0x0000000a, 0x77656976, 0x00000000, 0x00030005, 0x00000016, 0x006f6275, 0x00040005, 0x0000001c, - 0x6f506e69, 0x00000073, 0x00040005, 0x00000027, 0x6c726f77, 0x00000064, 0x00050005, 0x00000032, - 0x726f5776, 0x6f50646c, 0x00000073, 0x00050005, 0x00000035, 0x65695676, 0x736f5077, 0x00000000, - 0x00050005, 0x0000003e, 0x6d726f6e, 0x614d6c61, 0x00000074, 0x00040005, 0x00000048, 0x726f4e76, - 0x006c616d, 0x00050005, 0x0000004a, 0x6f4e6e69, 0x6c616d72, 0x00000000, 0x00030005, 0x00000050, - 0x00565576, 0x00040005, 0x00000052, 0x56556e69, 0x00000000, 0x00040005, 0x00000054, 0x6e695476, - 0x00000074, 0x00050005, 0x00000059, 0x6d614376, 0x50617265, 0x0000736f, 0x00030047, 0x0000000b, - 0x00000002, 0x00050048, 0x0000000b, 0x00000000, 0x0000000b, 0x00000000, 0x00050048, 0x0000000b, - 0x00000001, 0x0000000b, 0x00000001, 0x00050048, 0x0000000b, 0x00000002, 0x0000000b, 0x00000003, - 0x00050048, 0x0000000b, 0x00000003, 0x0000000b, 0x00000004, 0x00050048, 0x00000011, 0x00000000, - 0x00000023, 0x00000000, 0x00050048, 0x00000011, 0x00000001, 0x00000023, 0x00000010, 0x00040047, - 0x00000013, 0x00000006, 0x00000020, 0x00030047, 0x00000014, 0x00000002, 0x00040048, 0x00000014, - 0x00000000, 0x00000005, 0x00050048, 0x00000014, 0x00000000, 0x00000007, 0x00000010, 0x00050048, - 0x00000014, 0x00000000, 0x00000023, 0x00000000, 0x00040048, 0x00000014, 0x00000001, 0x00000005, - 0x00050048, 0x00000014, 0x00000001, 0x00000007, 0x00000010, 0x00050048, 0x00000014, 0x00000001, - 0x00000023, 0x00000040, 0x00050048, 0x00000014, 0x00000002, 0x00000023, 0x00000080, 0x00050048, - 0x00000014, 0x00000003, 0x00000023, 0x00000090, 0x00050048, 0x00000014, 0x00000004, 0x00000023, - 0x000000a0, 0x00050048, 0x00000014, 0x00000005, 0x00000023, 0x000000b0, 0x00050048, 0x00000014, - 0x00000006, 0x00000023, 0x000000c0, 0x00050048, 0x00000014, 0x00000007, 0x00000023, 0x000000d0, - 0x00050048, 0x00000014, 0x00000008, 0x00000023, 0x000001d0, 0x00050048, 0x00000014, 0x00000009, - 0x00000023, 0x000001e0, 0x00040048, 0x00000014, 0x0000000a, 0x00000005, 0x00050048, 0x00000014, - 0x0000000a, 0x00000007, 0x00000010, 0x00050048, 0x00000014, 0x0000000a, 0x00000023, 0x000001f0, - 0x00040047, 0x00000016, 0x00000021, 0x00000000, 0x00040047, 0x00000016, 0x00000022, 0x00000000, - 0x00040047, 0x0000001c, 0x0000001e, 0x00000000, 0x00040047, 0x00000032, 0x0000001e, 0x00000003, - 0x00040047, 0x00000035, 0x0000001e, 0x00000005, 0x00040047, 0x00000048, 0x0000001e, 0x00000000, - 0x00040047, 0x0000004a, 0x0000001e, 0x00000001, 0x00040047, 0x00000050, 0x0000001e, 0x00000001, - 0x00040047, 0x00000052, 0x0000001e, 0x00000002, 0x00040047, 0x00000054, 0x0000001e, 0x00000002, - 0x00040047, 0x00000059, 0x0000001e, 0x00000004, 0x00020013, 0x00000002, 0x00030021, 0x00000003, - 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, 0x00000007, 0x00000006, 0x00000004, - 0x00040015, 0x00000008, 0x00000020, 0x00000000, 0x0004002b, 0x00000008, 0x00000009, 0x00000001, - 0x0004001c, 0x0000000a, 0x00000006, 0x00000009, 0x0006001e, 0x0000000b, 0x00000007, 0x00000006, - 0x0000000a, 0x0000000a, 0x00040020, 0x0000000c, 0x00000003, 0x0000000b, 0x0004003b, 0x0000000c, - 0x0000000d, 0x00000003, 0x00040015, 0x0000000e, 0x00000020, 0x00000001, 0x0004002b, 0x0000000e, - 0x0000000f, 0x00000000, 0x00040018, 0x00000010, 0x00000007, 0x00000004, 0x0004001e, 0x00000011, - 0x00000007, 0x00000007, 0x0004002b, 0x00000008, 0x00000012, 0x00000008, 0x0004001c, 0x00000013, - 0x00000011, 0x00000012, 0x000d001e, 0x00000014, 0x00000010, 0x00000010, 0x00000007, 0x00000007, - 0x00000007, 0x00000007, 0x00000007, 0x00000013, 0x00000007, 0x00000007, 0x00000010, 0x00040020, - 0x00000015, 0x00000002, 0x00000014, 0x0004003b, 0x00000015, 0x00000016, 0x00000002, 0x00040020, - 0x00000017, 0x00000002, 0x00000010, 0x00040017, 0x0000001a, 0x00000006, 0x00000003, 0x00040020, - 0x0000001b, 0x00000001, 0x0000001a, 0x0004003b, 0x0000001b, 0x0000001c, 0x00000001, 0x0004002b, - 0x00000006, 0x0000001e, 0x3f800000, 0x00040020, 0x00000024, 0x00000003, 0x00000007, 0x00040020, - 0x00000026, 0x00000007, 0x00000007, 0x0004002b, 0x0000000e, 0x00000028, 0x00000001, 0x00040020, - 0x00000031, 0x00000003, 0x0000001a, 0x0004003b, 0x00000031, 0x00000032, 0x00000003, 0x0004003b, - 0x00000031, 0x00000035, 0x00000003, 0x0004002b, 0x0000000e, 0x00000036, 0x0000000a, 0x00040018, - 0x0000003c, 0x0000001a, 0x00000003, 0x00040020, 0x0000003d, 0x00000007, 0x0000003c, 0x0004003b, - 0x00000031, 0x00000048, 0x00000003, 0x0004003b, 0x0000001b, 0x0000004a, 0x00000001, 0x00040017, - 0x0000004e, 0x00000006, 0x00000002, 0x00040020, 0x0000004f, 0x00000003, 0x0000004e, 0x0004003b, - 0x0000004f, 0x00000050, 0x00000003, 0x00040020, 0x00000051, 0x00000001, 0x0000004e, 0x0004003b, - 0x00000051, 0x00000052, 0x00000001, 0x0004003b, 0x00000024, 0x00000054, 0x00000003, 0x0004002b, - 0x0000000e, 0x00000055, 0x00000004, 0x00040020, 0x00000056, 0x00000002, 0x00000007, 0x0004003b, - 0x00000031, 0x00000059, 0x00000003, 0x0004002b, 0x0000000e, 0x0000005a, 0x00000005, 0x00050036, - 0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x000200f8, 0x00000005, 0x0004003b, 0x00000026, - 0x00000027, 0x00000007, 0x0004003b, 0x0000003d, 0x0000003e, 0x00000007, 0x00050041, 0x00000017, - 0x00000018, 0x00000016, 0x0000000f, 0x0004003d, 0x00000010, 0x00000019, 0x00000018, 0x0004003d, - 0x0000001a, 0x0000001d, 0x0000001c, 0x00050051, 0x00000006, 0x0000001f, 0x0000001d, 0x00000000, - 0x00050051, 0x00000006, 0x00000020, 0x0000001d, 0x00000001, 0x00050051, 0x00000006, 0x00000021, - 0x0000001d, 0x00000002, 0x00070050, 0x00000007, 0x00000022, 0x0000001f, 0x00000020, 0x00000021, - 0x0000001e, 0x00050091, 0x00000007, 0x00000023, 0x00000019, 0x00000022, 0x00050041, 0x00000024, - 0x00000025, 0x0000000d, 0x0000000f, 0x0003003e, 0x00000025, 0x00000023, 0x00050041, 0x00000017, - 0x00000029, 0x00000016, 0x00000028, 0x0004003d, 0x00000010, 0x0000002a, 0x00000029, 0x0004003d, - 0x0000001a, 0x0000002b, 0x0000001c, 0x00050051, 0x00000006, 0x0000002c, 0x0000002b, 0x00000000, - 0x00050051, 0x00000006, 0x0000002d, 0x0000002b, 0x00000001, 0x00050051, 0x00000006, 0x0000002e, - 0x0000002b, 0x00000002, 0x00070050, 0x00000007, 0x0000002f, 0x0000002c, 0x0000002d, 0x0000002e, - 0x0000001e, 0x00050091, 0x00000007, 0x00000030, 0x0000002a, 0x0000002f, 0x0003003e, 0x00000027, - 0x00000030, 0x0004003d, 0x00000007, 0x00000033, 0x00000027, 0x0008004f, 0x0000001a, 0x00000034, - 0x00000033, 0x00000033, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000032, 0x00000034, - 0x00050041, 0x00000017, 0x00000037, 0x00000016, 0x00000036, 0x0004003d, 0x00000010, 0x00000038, - 0x00000037, 0x0004003d, 0x00000007, 0x00000039, 0x00000027, 0x00050091, 0x00000007, 0x0000003a, - 0x00000038, 0x00000039, 0x0008004f, 0x0000001a, 0x0000003b, 0x0000003a, 0x0000003a, 0x00000000, - 0x00000001, 0x00000002, 0x0003003e, 0x00000035, 0x0000003b, 0x00050041, 0x00000017, 0x0000003f, - 0x00000016, 0x00000028, 0x0004003d, 0x00000010, 0x00000040, 0x0000003f, 0x00050051, 0x00000007, - 0x00000041, 0x00000040, 0x00000000, 0x0008004f, 0x0000001a, 0x00000042, 0x00000041, 0x00000041, - 0x00000000, 0x00000001, 0x00000002, 0x00050051, 0x00000007, 0x00000043, 0x00000040, 0x00000001, - 0x0008004f, 0x0000001a, 0x00000044, 0x00000043, 0x00000043, 0x00000000, 0x00000001, 0x00000002, - 0x00050051, 0x00000007, 0x00000045, 0x00000040, 0x00000002, 0x0008004f, 0x0000001a, 0x00000046, - 0x00000045, 0x00000045, 0x00000000, 0x00000001, 0x00000002, 0x00060050, 0x0000003c, 0x00000047, - 0x00000042, 0x00000044, 0x00000046, 0x0003003e, 0x0000003e, 0x00000047, 0x0004003d, 0x0000003c, - 0x00000049, 0x0000003e, 0x0004003d, 0x0000001a, 0x0000004b, 0x0000004a, 0x00050091, 0x0000001a, - 0x0000004c, 0x00000049, 0x0000004b, 0x0006000c, 0x0000001a, 0x0000004d, 0x00000001, 0x00000045, - 0x0000004c, 0x0003003e, 0x00000048, 0x0000004d, 0x0004003d, 0x0000004e, 0x00000053, 0x00000052, - 0x0003003e, 0x00000050, 0x00000053, 0x00050041, 0x00000056, 0x00000057, 0x00000016, 0x00000055, - 0x0004003d, 0x00000007, 0x00000058, 0x00000057, 0x0003003e, 0x00000054, 0x00000058, 0x00050041, - 0x00000056, 0x0000005b, 0x00000016, 0x0000005a, 0x0004003d, 0x00000007, 0x0000005c, 0x0000005b, - 0x0008004f, 0x0000001a, 0x0000005d, 0x0000005c, 0x0000005c, 0x00000000, 0x00000001, 0x00000002, - 0x0003003e, 0x00000059, 0x0000005d, 0x000100fd, 0x00010038, + 0x0000000a, 0x77656976, 0x00000000, 0x00060006, 0x00000014, 0x0000000b, 0x70696c63, 0x6f666e49, + 0x00000000, 0x00030005, 0x00000016, 0x006f6275, 0x00040005, 0x0000001c, 0x6f506e69, 0x00000073, + 0x00040005, 0x00000027, 0x6c726f77, 0x00000064, 0x00050005, 0x00000032, 0x726f5776, 0x6f50646c, + 0x00000073, 0x00050005, 0x00000035, 0x65695676, 0x736f5077, 0x00000000, 0x00050005, 0x0000003e, + 0x6d726f6e, 0x614d6c61, 0x00000074, 0x00040005, 0x00000048, 0x726f4e76, 0x006c616d, 0x00050005, + 0x0000004a, 0x6f4e6e69, 0x6c616d72, 0x00000000, 0x00030005, 0x00000050, 0x00565576, 0x00040005, + 0x00000052, 0x56556e69, 0x00000000, 0x00040005, 0x00000054, 0x6e695476, 0x00000074, 0x00050005, + 0x00000059, 0x6d614376, 0x50617265, 0x0000736f, 0x00030047, 0x0000000b, 0x00000002, 0x00050048, + 0x0000000b, 0x00000000, 0x0000000b, 0x00000000, 0x00050048, 0x0000000b, 0x00000001, 0x0000000b, + 0x00000001, 0x00050048, 0x0000000b, 0x00000002, 0x0000000b, 0x00000003, 0x00050048, 0x0000000b, + 0x00000003, 0x0000000b, 0x00000004, 0x00050048, 0x00000011, 0x00000000, 0x00000023, 0x00000000, + 0x00050048, 0x00000011, 0x00000001, 0x00000023, 0x00000010, 0x00040047, 0x00000013, 0x00000006, + 0x00000020, 0x00030047, 0x00000014, 0x00000002, 0x00040048, 0x00000014, 0x00000000, 0x00000005, + 0x00050048, 0x00000014, 0x00000000, 0x00000007, 0x00000010, 0x00050048, 0x00000014, 0x00000000, + 0x00000023, 0x00000000, 0x00040048, 0x00000014, 0x00000001, 0x00000005, 0x00050048, 0x00000014, + 0x00000001, 0x00000007, 0x00000010, 0x00050048, 0x00000014, 0x00000001, 0x00000023, 0x00000040, + 0x00050048, 0x00000014, 0x00000002, 0x00000023, 0x00000080, 0x00050048, 0x00000014, 0x00000003, + 0x00000023, 0x00000090, 0x00050048, 0x00000014, 0x00000004, 0x00000023, 0x000000a0, 0x00050048, + 0x00000014, 0x00000005, 0x00000023, 0x000000b0, 0x00050048, 0x00000014, 0x00000006, 0x00000023, + 0x000000c0, 0x00050048, 0x00000014, 0x00000007, 0x00000023, 0x000000d0, 0x00050048, 0x00000014, + 0x00000008, 0x00000023, 0x000001d0, 0x00050048, 0x00000014, 0x00000009, 0x00000023, 0x000001e0, + 0x00040048, 0x00000014, 0x0000000a, 0x00000005, 0x00050048, 0x00000014, 0x0000000a, 0x00000007, + 0x00000010, 0x00050048, 0x00000014, 0x0000000a, 0x00000023, 0x000001f0, 0x00050048, 0x00000014, + 0x0000000b, 0x00000023, 0x00000230, 0x00040047, 0x00000016, 0x00000021, 0x00000000, 0x00040047, + 0x00000016, 0x00000022, 0x00000000, 0x00040047, 0x0000001c, 0x0000001e, 0x00000000, 0x00040047, + 0x00000032, 0x0000001e, 0x00000003, 0x00040047, 0x00000035, 0x0000001e, 0x00000005, 0x00040047, + 0x00000048, 0x0000001e, 0x00000000, 0x00040047, 0x0000004a, 0x0000001e, 0x00000001, 0x00040047, + 0x00000050, 0x0000001e, 0x00000001, 0x00040047, 0x00000052, 0x0000001e, 0x00000002, 0x00040047, + 0x00000054, 0x0000001e, 0x00000002, 0x00040047, 0x00000059, 0x0000001e, 0x00000004, 0x00020013, + 0x00000002, 0x00030021, 0x00000003, 0x00000002, 0x00030016, 0x00000006, 0x00000020, 0x00040017, + 0x00000007, 0x00000006, 0x00000004, 0x00040015, 0x00000008, 0x00000020, 0x00000000, 0x0004002b, + 0x00000008, 0x00000009, 0x00000001, 0x0004001c, 0x0000000a, 0x00000006, 0x00000009, 0x0006001e, + 0x0000000b, 0x00000007, 0x00000006, 0x0000000a, 0x0000000a, 0x00040020, 0x0000000c, 0x00000003, + 0x0000000b, 0x0004003b, 0x0000000c, 0x0000000d, 0x00000003, 0x00040015, 0x0000000e, 0x00000020, + 0x00000001, 0x0004002b, 0x0000000e, 0x0000000f, 0x00000000, 0x00040018, 0x00000010, 0x00000007, + 0x00000004, 0x0004001e, 0x00000011, 0x00000007, 0x00000007, 0x0004002b, 0x00000008, 0x00000012, + 0x00000008, 0x0004001c, 0x00000013, 0x00000011, 0x00000012, 0x000e001e, 0x00000014, 0x00000010, + 0x00000010, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000013, 0x00000007, + 0x00000007, 0x00000010, 0x00000007, 0x00040020, 0x00000015, 0x00000002, 0x00000014, 0x0004003b, + 0x00000015, 0x00000016, 0x00000002, 0x00040020, 0x00000017, 0x00000002, 0x00000010, 0x00040017, + 0x0000001a, 0x00000006, 0x00000003, 0x00040020, 0x0000001b, 0x00000001, 0x0000001a, 0x0004003b, + 0x0000001b, 0x0000001c, 0x00000001, 0x0004002b, 0x00000006, 0x0000001e, 0x3f800000, 0x00040020, + 0x00000024, 0x00000003, 0x00000007, 0x00040020, 0x00000026, 0x00000007, 0x00000007, 0x0004002b, + 0x0000000e, 0x00000028, 0x00000001, 0x00040020, 0x00000031, 0x00000003, 0x0000001a, 0x0004003b, + 0x00000031, 0x00000032, 0x00000003, 0x0004003b, 0x00000031, 0x00000035, 0x00000003, 0x0004002b, + 0x0000000e, 0x00000036, 0x0000000a, 0x00040018, 0x0000003c, 0x0000001a, 0x00000003, 0x00040020, + 0x0000003d, 0x00000007, 0x0000003c, 0x0004003b, 0x00000031, 0x00000048, 0x00000003, 0x0004003b, + 0x0000001b, 0x0000004a, 0x00000001, 0x00040017, 0x0000004e, 0x00000006, 0x00000002, 0x00040020, + 0x0000004f, 0x00000003, 0x0000004e, 0x0004003b, 0x0000004f, 0x00000050, 0x00000003, 0x00040020, + 0x00000051, 0x00000001, 0x0000004e, 0x0004003b, 0x00000051, 0x00000052, 0x00000001, 0x0004003b, + 0x00000024, 0x00000054, 0x00000003, 0x0004002b, 0x0000000e, 0x00000055, 0x00000004, 0x00040020, + 0x00000056, 0x00000002, 0x00000007, 0x0004003b, 0x00000031, 0x00000059, 0x00000003, 0x0004002b, + 0x0000000e, 0x0000005a, 0x00000005, 0x00050036, 0x00000002, 0x00000004, 0x00000000, 0x00000003, + 0x000200f8, 0x00000005, 0x0004003b, 0x00000026, 0x00000027, 0x00000007, 0x0004003b, 0x0000003d, + 0x0000003e, 0x00000007, 0x00050041, 0x00000017, 0x00000018, 0x00000016, 0x0000000f, 0x0004003d, + 0x00000010, 0x00000019, 0x00000018, 0x0004003d, 0x0000001a, 0x0000001d, 0x0000001c, 0x00050051, + 0x00000006, 0x0000001f, 0x0000001d, 0x00000000, 0x00050051, 0x00000006, 0x00000020, 0x0000001d, + 0x00000001, 0x00050051, 0x00000006, 0x00000021, 0x0000001d, 0x00000002, 0x00070050, 0x00000007, + 0x00000022, 0x0000001f, 0x00000020, 0x00000021, 0x0000001e, 0x00050091, 0x00000007, 0x00000023, + 0x00000019, 0x00000022, 0x00050041, 0x00000024, 0x00000025, 0x0000000d, 0x0000000f, 0x0003003e, + 0x00000025, 0x00000023, 0x00050041, 0x00000017, 0x00000029, 0x00000016, 0x00000028, 0x0004003d, + 0x00000010, 0x0000002a, 0x00000029, 0x0004003d, 0x0000001a, 0x0000002b, 0x0000001c, 0x00050051, + 0x00000006, 0x0000002c, 0x0000002b, 0x00000000, 0x00050051, 0x00000006, 0x0000002d, 0x0000002b, + 0x00000001, 0x00050051, 0x00000006, 0x0000002e, 0x0000002b, 0x00000002, 0x00070050, 0x00000007, + 0x0000002f, 0x0000002c, 0x0000002d, 0x0000002e, 0x0000001e, 0x00050091, 0x00000007, 0x00000030, + 0x0000002a, 0x0000002f, 0x0003003e, 0x00000027, 0x00000030, 0x0004003d, 0x00000007, 0x00000033, + 0x00000027, 0x0008004f, 0x0000001a, 0x00000034, 0x00000033, 0x00000033, 0x00000000, 0x00000001, + 0x00000002, 0x0003003e, 0x00000032, 0x00000034, 0x00050041, 0x00000017, 0x00000037, 0x00000016, + 0x00000036, 0x0004003d, 0x00000010, 0x00000038, 0x00000037, 0x0004003d, 0x00000007, 0x00000039, + 0x00000027, 0x00050091, 0x00000007, 0x0000003a, 0x00000038, 0x00000039, 0x0008004f, 0x0000001a, + 0x0000003b, 0x0000003a, 0x0000003a, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000035, + 0x0000003b, 0x00050041, 0x00000017, 0x0000003f, 0x00000016, 0x00000028, 0x0004003d, 0x00000010, + 0x00000040, 0x0000003f, 0x00050051, 0x00000007, 0x00000041, 0x00000040, 0x00000000, 0x0008004f, + 0x0000001a, 0x00000042, 0x00000041, 0x00000041, 0x00000000, 0x00000001, 0x00000002, 0x00050051, + 0x00000007, 0x00000043, 0x00000040, 0x00000001, 0x0008004f, 0x0000001a, 0x00000044, 0x00000043, + 0x00000043, 0x00000000, 0x00000001, 0x00000002, 0x00050051, 0x00000007, 0x00000045, 0x00000040, + 0x00000002, 0x0008004f, 0x0000001a, 0x00000046, 0x00000045, 0x00000045, 0x00000000, 0x00000001, + 0x00000002, 0x00060050, 0x0000003c, 0x00000047, 0x00000042, 0x00000044, 0x00000046, 0x0003003e, + 0x0000003e, 0x00000047, 0x0004003d, 0x0000003c, 0x00000049, 0x0000003e, 0x0004003d, 0x0000001a, + 0x0000004b, 0x0000004a, 0x00050091, 0x0000001a, 0x0000004c, 0x00000049, 0x0000004b, 0x0006000c, + 0x0000001a, 0x0000004d, 0x00000001, 0x00000045, 0x0000004c, 0x0003003e, 0x00000048, 0x0000004d, + 0x0004003d, 0x0000004e, 0x00000053, 0x00000052, 0x0003003e, 0x00000050, 0x00000053, 0x00050041, + 0x00000056, 0x00000057, 0x00000016, 0x00000055, 0x0004003d, 0x00000007, 0x00000058, 0x00000057, + 0x0003003e, 0x00000054, 0x00000058, 0x00050041, 0x00000056, 0x0000005b, 0x00000016, 0x0000005a, + 0x0004003d, 0x00000007, 0x0000005c, 0x0000005b, 0x0008004f, 0x0000001a, 0x0000005d, 0x0000005c, + 0x0000005c, 0x00000000, 0x00000001, 0x00000002, 0x0003003e, 0x00000059, 0x0000005d, 0x000100fd, + 0x00010038, }; static const size_t mesh3d_vert_spv_count = sizeof(mesh3d_vert_spv)/sizeof(mesh3d_vert_spv[0]); diff --git a/src/modules/graphics/vulkan/Canvas.cpp b/src/modules/graphics/vulkan/Canvas.cpp index 39a05b6e..abe3fe4a 100644 --- a/src/modules/graphics/vulkan/Canvas.cpp +++ b/src/modules/graphics/vulkan/Canvas.cpp @@ -48,7 +48,10 @@ OffscreenCanvas::OffscreenCanvas(Graphics *owner, int width, int height) updater.beginDescriptorSet(sampleGpu.descriptorSet) .beginImages(0, 0, vk::DescriptorType::eCombinedImageSampler) .image(sampleGpu.sampler, color.imageView(), vk::ImageLayout::eShaderReadOnlyOptimal) + .beginImages(1, 0, vk::DescriptorType::eCombinedImageSampler) + .image(sampleGpu.sampler, color.imageView(), vk::ImageLayout::eShaderReadOnlyOptimal) .update(device.instance); + sampleGpu.viewOverride = color.imageView(); sampleTexture.width = width; sampleTexture.height = height; diff --git a/src/modules/graphics/vulkan/Graphics.cpp b/src/modules/graphics/vulkan/Graphics.cpp index 09b78b66..a545f0d2 100644 --- a/src/modules/graphics/vulkan/Graphics.cpp +++ b/src/modules/graphics/vulkan/Graphics.cpp @@ -2,6 +2,7 @@ #include "graphics/vulkan/Graphics.h" #include "graphics/vulkan/Canvas.h" #include "graphics/Light.h" +#include "graphics/AntiAliasing.h" #include #include @@ -96,6 +97,7 @@ Graphics::~Graphics() { mesh3dClusteredFrameSlots.clear(); destroyShadowResources(); destroyGBufferResources(); + destroySceneColorResources(); auto destroyBuf = [&](vkb::GenericBuffer &b) { if (b.buffer) { device->destroyBuffer(b.buffer, device.allocation_callbacks); @@ -272,6 +274,7 @@ void Graphics::invalidateTextureBindings() { for (auto &slot : frame.slots) slot.sets.clear(); for (auto &m : lit2dSets) m.clear(); offscreenLit2dSets.clear(); + post2Sets.clear(); voxelRectSets.clear(); } @@ -339,6 +342,17 @@ Graphics::GBufferSlot *Graphics::currentGBufferSlot() { return &gbufferSlots[currentFrameSlot() % gbufferSlots.size()]; } +Graphics::SceneColorSlot *Graphics::currentSceneColorSlot() { + if (sceneColorSlots.empty()) return nullptr; + return &sceneColorSlots[currentFrameSlot() % sceneColorSlots.size()]; +} + +Texture *Graphics::getSceneColorTexture() { + auto *slot = currentSceneColorSlot(); + if (!slot || !slot->colorTex.gpuHandle) return nullptr; + return &slot->colorTex; +} + void Graphics::dropPendingOffscreenPasses() { shadowPendingMask = 0; for (auto &d : shadowCascadeDraws) d.clear(); @@ -418,6 +432,12 @@ void Graphics::recordPendingGBufferPass() { for (const auto &d : gbufferPassDraws) { if (!d.mesh || !d.mesh->gpuHandle) continue; auto *gpuMesh = static_cast(d.mesh->gpuHandle); + Texture *alb = d.albedo ? d.albedo : whiteTexture; + if (alb && alb->gpuHandle && texSetLayout) { + auto *gpuTex = static_cast(alb->gpuHandle); + cb.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, gbufferPipelineLayout, 0, 1, + &gpuTex->descriptorSet, 0, nullptr); + } cb.pushConstants(gbufferPipelineLayout, vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, 0, sizeof(GBufferPush), &d.push); @@ -437,12 +457,16 @@ bool Graphics::beginSwapchainRenderPass() { } recordPendingShadowPasses(); recordPendingGBufferPass(); + beginSwapchainColorPass(); + return true; +} + +void Graphics::beginSwapchainColorPass() { std::array clears{}; clears[0].color = vk::ClearColorValue( std::array{clearColor.r, clearColor.g, clearColor.b, clearColor.a}); clears[1].depthStencil = vk::ClearDepthStencilValue{1.0f, 0}; presentModel.beginRenderPass(renderpass, clears.data(), uint32_t(clears.size())); - return true; } bool Graphics::rebuildSwapchainIfNeeded() { @@ -646,11 +670,13 @@ void Graphics::createTexturedPipeline() { texSetLayoutUnique = layoutBuilder .image(0, vk::DescriptorType::eCombinedImageSampler, vk::ShaderStageFlagBits::eFragment, 1) + .image(1, vk::DescriptorType::eCombinedImageSampler, + vk::ShaderStageFlagBits::eFragment, 1) .createUnique(device.instance); texSetLayout = *texSetLayoutUnique; vk::DescriptorPoolSize poolSizes[] = { - {vk::DescriptorType::eCombinedImageSampler, 4096}, + {vk::DescriptorType::eCombinedImageSampler, 8192}, {vk::DescriptorType::eUniformBuffer, 2048}, {vk::DescriptorType::eStorageBuffer, 256}, }; @@ -947,6 +973,7 @@ void Graphics::destroyGBufferResources() { slot.normalTex.gpuHandle = nullptr; slot.depthColorTex.gpuHandle = nullptr; slot.albedoTex.gpuHandle = nullptr; + slot.depthTex.gpuHandle = nullptr; if (slot.framebuffer) { device->destroyFramebuffer(slot.framebuffer); slot.framebuffer = vk::Framebuffer{}; @@ -967,8 +994,13 @@ void Graphics::destroyGBufferResources() { device->destroySampler(slot.albedoGpu.sampler); slot.albedoGpu.sampler = vk::Sampler{}; } + if (slot.depthGpu.sampler) { + device->destroySampler(slot.depthGpu.sampler); + slot.depthGpu.sampler = vk::Sampler{}; + } } gbufferSlots.clear(); + post2Sets.clear(); if (gbufferPipeline) { device->destroyPipeline(gbufferPipeline); gbufferPipeline = vk::Pipeline{}; @@ -986,6 +1018,46 @@ void Graphics::destroyGBufferResources() { if (renderControl_) renderControl_->getGBuffer()->clear(); } +void Graphics::destroySceneColorResources() { + sceneColorPassOpen = false; + auto destroyImg = [&](vk::Image &img, vk::DeviceMemory &mem, vk::ImageView &view) { + if (view) { + device->destroyImageView(view); + view = vk::ImageView{}; + } + if (img) { + device->destroyImage(img); + img = vk::Image{}; + } + if (mem) { + device->freeMemory(mem); + mem = vk::DeviceMemory{}; + } + }; + for (auto &slot : sceneColorSlots) { + slot.colorTex.gpuHandle = nullptr; + if (slot.framebuffer) { + device->destroyFramebuffer(slot.framebuffer); + slot.framebuffer = vk::Framebuffer{}; + } + destroyImg(slot.colorImage, slot.colorMemory, slot.colorView); + destroyImg(slot.depthImage, slot.depthMemory, slot.depthView); + if (slot.colorGpu.sampler) { + device->destroySampler(slot.colorGpu.sampler); + slot.colorGpu.sampler = vk::Sampler{}; + } + } + sceneColorSlots.clear(); + post2Sets.clear(); + if (sceneColorRenderPass) { + device->destroyRenderPass(sceneColorRenderPass); + sceneColorRenderPass = vk::RenderPass{}; + } + sceneColorWidth = 0; + sceneColorHeight = 0; + sceneColorFormat = vk::Format::eUndefined; +} + namespace { vk::Format pickGBufferColorFormat(vkb::Device &device) { @@ -1021,6 +1093,35 @@ void createColorTarget(vkb::Device &device, uint32_t w, uint32_t h, vk::Format f view = device->createImageView(viewInfo); } +void createDepthTarget(vkb::Device &device, uint32_t w, uint32_t h, vk::Format format, vk::Image &image, + vk::DeviceMemory &memory, vk::ImageView &view, bool sampled = false) { + vk::ImageCreateInfo imgInfo{}; + imgInfo.imageType = vk::ImageType::e2D; + imgInfo.format = format; + imgInfo.extent = vk::Extent3D{w, h, 1}; + imgInfo.mipLevels = 1; + imgInfo.arrayLayers = 1; + imgInfo.samples = vk::SampleCountFlagBits::e1; + imgInfo.tiling = vk::ImageTiling::eOptimal; + imgInfo.usage = vk::ImageUsageFlagBits::eDepthStencilAttachment; + if (sampled) imgInfo.usage |= vk::ImageUsageFlagBits::eSampled; + imgInfo.initialLayout = vk::ImageLayout::eUndefined; + image = device->createImage(imgInfo); + auto memReq = device->getImageMemoryRequirements(image); + vk::MemoryAllocateInfo mai{}; + mai.allocationSize = memReq.size; + mai.memoryTypeIndex = device.physical_device.findMemoryTypeIndex( + memReq.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal); + memory = device->allocateMemory(mai); + device->bindImageMemory(image, memory, 0); + vk::ImageViewCreateInfo viewInfo{}; + viewInfo.image = image; + viewInfo.viewType = vk::ImageViewType::e2D; + viewInfo.format = format; + viewInfo.subresourceRange = {vk::ImageAspectFlagBits::eDepth, 0, 1, 0, 1}; + view = device->createImageView(viewInfo); +} + } // namespace void Graphics::createGBufferResources(int width, int height) { @@ -1043,30 +1144,8 @@ void Graphics::createGBufferResources(int width, int height) { slot.depthColorView); createColorTarget(device, w, h, colorFmt, slot.albedoImage, slot.albedoMemory, slot.albedoView); - vk::ImageCreateInfo imgInfo{}; - imgInfo.imageType = vk::ImageType::e2D; - imgInfo.format = depthFmt; - imgInfo.extent = vk::Extent3D{w, h, 1}; - imgInfo.mipLevels = 1; - imgInfo.arrayLayers = 1; - imgInfo.samples = vk::SampleCountFlagBits::e1; - imgInfo.tiling = vk::ImageTiling::eOptimal; - imgInfo.usage = vk::ImageUsageFlagBits::eDepthStencilAttachment; - imgInfo.initialLayout = vk::ImageLayout::eUndefined; - slot.depthImage = device->createImage(imgInfo); - auto memReq = device->getImageMemoryRequirements(slot.depthImage); - vk::MemoryAllocateInfo mai{}; - mai.allocationSize = memReq.size; - mai.memoryTypeIndex = device.physical_device.findMemoryTypeIndex( - memReq.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal); - slot.depthMemory = device->allocateMemory(mai); - device->bindImageMemory(slot.depthImage, slot.depthMemory, 0); - vk::ImageViewCreateInfo viewInfo{}; - viewInfo.image = slot.depthImage; - viewInfo.viewType = vk::ImageViewType::e2D; - viewInfo.format = depthFmt; - viewInfo.subresourceRange = {vk::ImageAspectFlagBits::eDepth, 0, 1, 0, 1}; - slot.depthView = device->createImageView(viewInfo); + createDepthTarget(device, w, h, depthFmt, slot.depthImage, slot.depthMemory, slot.depthView, + true); }; gbufferSlots.resize(kAsyncResourceCopies); @@ -1086,11 +1165,11 @@ void Graphics::createGBufferResources(int width, int height) { atts[3].format = depthFmt; atts[3].samples = vk::SampleCountFlagBits::e1; atts[3].loadOp = vk::AttachmentLoadOp::eClear; - atts[3].storeOp = vk::AttachmentStoreOp::eDontCare; + atts[3].storeOp = vk::AttachmentStoreOp::eStore; atts[3].stencilLoadOp = vk::AttachmentLoadOp::eDontCare; atts[3].stencilStoreOp = vk::AttachmentStoreOp::eDontCare; atts[3].initialLayout = vk::ImageLayout::eUndefined; - atts[3].finalLayout = vk::ImageLayout::eDepthStencilAttachmentOptimal; + atts[3].finalLayout = vk::ImageLayout::eShaderReadOnlyOptimal; vk::AttachmentReference colorRefs[3]{}; for (uint32_t i = 0; i < 3; ++i) { @@ -1152,6 +1231,8 @@ void Graphics::createGBufferResources(int width, int height) { pcr.offset = 0; pcr.size = sizeof(GBufferPush); vk::PipelineLayoutCreateInfo plInfo{}; + plInfo.setLayoutCount = texSetLayout ? 1u : 0u; + plInfo.pSetLayouts = texSetLayout ? &texSetLayout : nullptr; plInfo.pushConstantRangeCount = 1; plInfo.pPushConstantRanges = &pcr; gbufferPipelineLayout = device->createPipelineLayout(plInfo); @@ -1188,7 +1269,7 @@ void Graphics::createGBufferResources(int width, int height) { vk::PipelineRasterizationStateCreateInfo rs{}; rs.polygonMode = vk::PolygonMode::eFill; - rs.cullMode = vk::CullModeFlagBits::eBack; + rs.cullMode = vk::CullModeFlagBits::eNone; rs.frontFace = vk::FrontFace::eClockwise; rs.lineWidth = 1.0f; @@ -1246,11 +1327,8 @@ void Graphics::createGBufferResources(int width, int height) { gpu.descriptorSet = sets[0]; gpu.width = width; gpu.height = height; - vkb::DescriptorSetUpdater updater; - updater.beginDescriptorSet(gpu.descriptorSet) - .beginImages(0, 0, vk::DescriptorType::eCombinedImageSampler) - .image(gpu.sampler, view, vk::ImageLayout::eShaderReadOnlyOptimal) - .update(device.instance); + gpu.viewOverride = view; + writeCombinedImageDescriptor(&gpu); tex.width = width; tex.height = height; tex.pixelWidth = width; @@ -1261,9 +1339,176 @@ void Graphics::createGBufferResources(int width, int height) { makeSampleTex(slot.normalGpu, slot.normalTex, slot.normalView); makeSampleTex(slot.depthColorGpu, slot.depthColorTex, slot.depthColorView); makeSampleTex(slot.albedoGpu, slot.albedoTex, slot.albedoView); + makeSampleTex(slot.depthGpu, slot.depthTex, slot.depthView); } } +void Graphics::createSceneColorResources(int width, int height) { + if (width <= 0 || height <= 0) return; + if (!texSetLayout || !descriptorPool) return; + const vk::Format colorFmt = swapchain.image_format; + if (colorFmt == vk::Format::eUndefined) return; + if (!sceneColorSlots.empty() && sceneColorWidth == width && sceneColorHeight == height && + sceneColorFormat == colorFmt && sceneColorRenderPass) + return; + destroySceneColorResources(); + + sceneColorWidth = width; + sceneColorHeight = height; + sceneColorFormat = colorFmt; + const uint32_t w = uint32_t(width); + const uint32_t h = uint32_t(height); + const vk::Format depthFmt = depthFormat; + + sceneColorSlots.resize(kAsyncResourceCopies); + for (auto &slot : sceneColorSlots) { + createColorTarget(device, w, h, colorFmt, slot.colorImage, slot.colorMemory, slot.colorView); + createDepthTarget(device, w, h, depthFmt, slot.depthImage, slot.depthMemory, slot.depthView); + } + + vk::AttachmentDescription atts[2]{}; + atts[0].format = colorFmt; + atts[0].samples = vk::SampleCountFlagBits::e1; + atts[0].loadOp = vk::AttachmentLoadOp::eClear; + atts[0].storeOp = vk::AttachmentStoreOp::eStore; + atts[0].stencilLoadOp = vk::AttachmentLoadOp::eDontCare; + atts[0].stencilStoreOp = vk::AttachmentStoreOp::eDontCare; + atts[0].initialLayout = vk::ImageLayout::eUndefined; + atts[0].finalLayout = vk::ImageLayout::eShaderReadOnlyOptimal; + atts[1].format = depthFmt; + atts[1].samples = vk::SampleCountFlagBits::e1; + atts[1].loadOp = vk::AttachmentLoadOp::eClear; + atts[1].storeOp = vk::AttachmentStoreOp::eDontCare; + atts[1].stencilLoadOp = vk::AttachmentLoadOp::eDontCare; + atts[1].stencilStoreOp = vk::AttachmentStoreOp::eDontCare; + atts[1].initialLayout = vk::ImageLayout::eUndefined; + atts[1].finalLayout = vk::ImageLayout::eDepthStencilAttachmentOptimal; + + vk::AttachmentReference colorRef{}; + colorRef.attachment = 0; + colorRef.layout = vk::ImageLayout::eColorAttachmentOptimal; + vk::AttachmentReference depthRef{}; + depthRef.attachment = 1; + depthRef.layout = vk::ImageLayout::eDepthStencilAttachmentOptimal; + + vk::SubpassDescription subpass{}; + subpass.pipelineBindPoint = vk::PipelineBindPoint::eGraphics; + subpass.colorAttachmentCount = 1; + subpass.pColorAttachments = &colorRef; + subpass.pDepthStencilAttachment = &depthRef; + + vk::SubpassDependency deps[2]{}; + deps[0].srcSubpass = VK_SUBPASS_EXTERNAL; + deps[0].dstSubpass = 0; + deps[0].srcStageMask = vk::PipelineStageFlagBits::eFragmentShader; + deps[0].dstStageMask = vk::PipelineStageFlagBits::eColorAttachmentOutput | + vk::PipelineStageFlagBits::eEarlyFragmentTests; + deps[0].srcAccessMask = vk::AccessFlagBits::eShaderRead; + deps[0].dstAccessMask = vk::AccessFlagBits::eColorAttachmentWrite | + vk::AccessFlagBits::eDepthStencilAttachmentWrite; + deps[1].srcSubpass = 0; + deps[1].dstSubpass = VK_SUBPASS_EXTERNAL; + deps[1].srcStageMask = vk::PipelineStageFlagBits::eColorAttachmentOutput | + vk::PipelineStageFlagBits::eLateFragmentTests; + deps[1].dstStageMask = vk::PipelineStageFlagBits::eFragmentShader; + deps[1].srcAccessMask = vk::AccessFlagBits::eColorAttachmentWrite | + vk::AccessFlagBits::eDepthStencilAttachmentWrite; + deps[1].dstAccessMask = vk::AccessFlagBits::eShaderRead; + + vk::RenderPassCreateInfo rpInfo{}; + rpInfo.attachmentCount = 2; + rpInfo.pAttachments = atts; + rpInfo.subpassCount = 1; + rpInfo.pSubpasses = &subpass; + rpInfo.dependencyCount = 2; + rpInfo.pDependencies = deps; + sceneColorRenderPass = device->createRenderPass(rpInfo); + + vk::FramebufferCreateInfo fbInfo{}; + fbInfo.renderPass = sceneColorRenderPass; + fbInfo.attachmentCount = 2; + fbInfo.width = w; + fbInfo.height = h; + fbInfo.layers = 1; + for (auto &slot : sceneColorSlots) { + vk::ImageView views[2] = {slot.colorView, slot.depthView}; + fbInfo.pAttachments = views; + slot.framebuffer = device->createFramebuffer(fbInfo); + } + + auto makeSampleTex = [&](GpuTexture &gpu, Texture &tex, vk::ImageView view) { + vkb::SamplerBuilder sb; + gpu.sampler = sb.magFilter(vk::Filter::eLinear) + .minFilter(vk::Filter::eLinear) + .addressModeU(vk::SamplerAddressMode::eClampToEdge) + .addressModeV(vk::SamplerAddressMode::eClampToEdge) + .build(device.instance); + auto sets = vkb::DescriptorSetBuilder() + .layout(texSetLayout) + .build(device.instance, descriptorPool); + gpu.descriptorSet = sets[0]; + gpu.width = width; + gpu.height = height; + gpu.viewOverride = view; + writeCombinedImageDescriptor(&gpu); + tex.width = width; + tex.height = height; + tex.pixelWidth = width; + tex.pixelHeight = height; + tex.gpuHandle = &gpu; + }; + for (auto &slot : sceneColorSlots) makeSampleTex(slot.colorGpu, slot.colorTex, slot.colorView); +} + +bool Graphics::beginSceneColorRenderPass() { + auto *slot = currentSceneColorSlot(); + if (!slot || !sceneColorRenderPass || !slot->framebuffer) return false; + auto &cb = presentModel.getCurrentCommandBuffer(); + std::array clears{}; + // A=1 marks sky / far plane so SSGI skips uncleared pixels. + clears[0].color = vk::ClearColorValue( + std::array{clearColor.r, clearColor.g, clearColor.b, 1.f}); + clears[1].depthStencil = vk::ClearDepthStencilValue{1.0f, 0}; + vk::RenderPassBeginInfo rpBegin{}; + rpBegin.renderPass = sceneColorRenderPass; + rpBegin.framebuffer = slot->framebuffer; + rpBegin.renderArea = vk::Rect2D{{0, 0}, {uint32_t(sceneColorWidth), uint32_t(sceneColorHeight)}}; + rpBegin.clearValueCount = 2; + rpBegin.pClearValues = clears.data(); + cb.beginRenderPass(rpBegin, vk::SubpassContents::eInline); + sceneColorPassOpen = true; + return true; +} + +void Graphics::endSceneColorRenderPass() { + if (!sceneColorPassOpen) return; + auto &cb = presentModel.getCurrentCommandBuffer(); + cb.endRenderPass(); + sceneColorPassOpen = false; +} + +void Graphics::queueSceneColorResolve() { + Texture *src = getSceneColorTexture(); + if (!src || !src->gpuHandle) return; + AntiAliasing *aa = pipelineAntiAliasing(); + aa->setMode("fxaa"); + const bool doAA = !renderControl_ || renderControl_->isEnabled("aa"); + if (doAA) { + aa->setQuality("medium"); + } else { + aa->setFloat("edgeThreshold", 1.f); + aa->setFloat("edgeThresholdMin", 1.f); + aa->setFloat("subpix", 0.f); + } + aa->prepareSource(src); + Shader *sh = aa->getShader(); + if (!sh) return; + TexturedBatch resolve{src, nullptr, sh, Batcher{}}; + resolve.batch.addTexturedRect(0.f, 0.f, float(width), float(height), Color(1.f, 1.f, 1.f, 1.f), + 0.f, 0.f, 1.f, 1.f); + texturedBatches.insert(texturedBatches.begin(), std::move(resolve)); +} + void Graphics::createShadowResources() { if (!shadowMaps.empty()) return; @@ -2151,11 +2396,15 @@ vk::Sampler Graphics::createVkSampler(const TextureSampler &sampler, uint32_t mi } void Graphics::writeCombinedImageDescriptor(GpuTexture *gpu) { - if (!gpu || !gpu->descriptorSet) return; + if (!gpu || !gpu->descriptorSet || !gpu->sampler) return; + vk::ImageView view = gpu->imageView(); + if (!view) return; vkb::DescriptorSetUpdater updater; updater.beginDescriptorSet(gpu->descriptorSet) .beginImages(0, 0, vk::DescriptorType::eCombinedImageSampler) - .image(gpu->sampler, gpu->imageView(), vk::ImageLayout::eShaderReadOnlyOptimal) + .image(gpu->sampler, view, vk::ImageLayout::eShaderReadOnlyOptimal) + .beginImages(1, 0, vk::DescriptorType::eCombinedImageSampler) + .image(gpu->sampler, view, vk::ImageLayout::eShaderReadOnlyOptimal) .update(device.instance); } @@ -2443,12 +2692,30 @@ void Graphics::drawTexturedRectShaderUV(Texture *texture, Shader *shader, float return; } if (texturedBatches.empty() || texturedBatches.back().texture != texture || + texturedBatches.back().depth != nullptr || texturedBatches.back().shader != shader) { - texturedBatches.push_back(TexturedBatch{texture, shader, Batcher{}}); + texturedBatches.push_back(TexturedBatch{texture, nullptr, shader, Batcher{}}); } texturedBatches.back().batch.addTexturedRect(x, y, w, h, color, u0, v0, u1, v1); } +void Graphics::drawTexturedRectShaderDepth(Texture *color, Texture *depth, Shader *shader, float x, + float y, float w, float h, const Color &tint) { + if (!color) { + drawSolidRect(x, y, w, h, tint); + return; + } + if (!depth) { + drawTexturedRectShader(color, shader, x, y, w, h, tint); + return; + } + if (texturedBatches.empty() || texturedBatches.back().texture != color || + texturedBatches.back().depth != depth || texturedBatches.back().shader != shader) { + texturedBatches.push_back(TexturedBatch{color, depth, shader, Batcher{}}); + } + texturedBatches.back().batch.addTexturedRect(x, y, w, h, tint, 0.f, 0.f, 1.f, 1.f); +} + void Graphics::setLighting2D(const Lighting2DUBO &ubo) { lighting2dFrame = ubo; } void Graphics::ensureFlatNormalTexture() { @@ -2502,6 +2769,28 @@ vk::DescriptorSet Graphics::lit2dSetFor(GpuTexture *albedo, GpuTexture *normal, return set; } +vk::DescriptorSet Graphics::post2SetFor(GpuTexture *color, GpuTexture *depth) { + if (!color || !color->sampler) return {}; + vk::ImageView colorView = color->imageView(); + if (!colorView) return {}; + if (!depth || !depth->sampler || !depth->imageView()) depth = color; + LitSetKey key{color, depth}; + auto it = post2Sets.find(key); + if (it != post2Sets.end()) return it->second; + + auto sets = vkb::DescriptorSetBuilder().layout(texSetLayout).build(device.instance, descriptorPool); + vk::DescriptorSet set = sets[0]; + vkb::DescriptorSetUpdater updater; + updater.beginDescriptorSet(set) + .beginImages(0, 0, vk::DescriptorType::eCombinedImageSampler) + .image(color->sampler, colorView, vk::ImageLayout::eShaderReadOnlyOptimal) + .beginImages(1, 0, vk::DescriptorType::eCombinedImageSampler) + .image(depth->sampler, depth->imageView(), vk::ImageLayout::eShaderReadOnlyOptimal) + .update(device.instance); + post2Sets.emplace(key, set); + return set; +} + void Graphics::drawLitBatches(vk::CommandBuffer cb, int viewW, int viewH, vk::Pipeline pipeline, std::vector &batches, std::vector &texBufs, size_t &texBufIndex, @@ -2810,6 +3099,12 @@ void Graphics::flushToOffscreen(OffscreenCanvas *canvas) { for (auto &tb : textured) { if (tb.batch.empty() || !tb.texture || !tb.texture->gpuHandle) continue; auto *gpu = static_cast(tb.texture->gpuHandle); + vk::DescriptorSet texSet = gpu->descriptorSet; + if (tb.depth && tb.depth->gpuHandle) { + auto *depthGpu = static_cast(tb.depth->gpuHandle); + if (vk::DescriptorSet combo = post2SetFor(gpu, depthGpu)) + texSet = combo; + } Batcher ndc = tb.batch; ndc.toNDC(canvas->getWidth(), canvas->getHeight()); std::vector gpuVerts; @@ -2829,7 +3124,7 @@ void Graphics::flushToOffscreen(OffscreenCanvas *canvas) { gs->offscreenPipeline); cb.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, shaderPipelineLayout, 0, 1, - &gpu->descriptorSet, 0, nullptr); + &texSet, 0, nullptr); cb.pushConstants(shaderPipelineLayout, vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, @@ -2840,7 +3135,7 @@ void Graphics::flushToOffscreen(OffscreenCanvas *canvas) { offscreenTexPipeline); cb.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, texPipelineLayout, 0, 1, - &gpu->descriptorSet, 0, nullptr); + &texSet, 0, nullptr); } vk::DeviceSize offset = 0; cb.bindVertexBuffers(0, 1, vb, &offset); @@ -2859,15 +3154,13 @@ void Graphics::flushToOffscreen(OffscreenCanvas *canvas) { } void Graphics::flushToSwapchain() { - Batcher solid = solidBatch; - auto textured = std::move(texturedBatches); - auto lit = std::move(litBatches); - solidBatch.clear(); - texturedBatches.clear(); - litBatches.clear(); - const bool continue3D = swapchainPassOpen; - if (!continue3D) { + if (sceneColorPassOpen) { + endSceneColorRenderPass(); + queueSceneColorResolve(); + beginSwapchainColorPass(); + swapchainPassOpen = true; + } else if (!continue3D) { if (!beginSwapchainRenderPass()) { hasPendingClear = false; return; @@ -2875,6 +3168,13 @@ void Graphics::flushToSwapchain() { swapchainPassOpen = true; } + Batcher solid = solidBatch; + auto textured = std::move(texturedBatches); + auto lit = std::move(litBatches); + solidBatch.clear(); + texturedBatches.clear(); + litBatches.clear(); + auto &cb = presentModel.getCurrentCommandBuffer(); vk::Viewport vp{0.f, 0.f, float(swapchain.extent.width), float(swapchain.extent.height), 0.f, 1.f}; vk::Rect2D scissor{{0, 0}, swapchain.extent}; @@ -2906,6 +3206,11 @@ void Graphics::flushToSwapchain() { for (auto &tb : textured) { if (tb.batch.empty() || !tb.texture || !tb.texture->gpuHandle) continue; auto *gpu = static_cast(tb.texture->gpuHandle); + vk::DescriptorSet texSet = gpu->descriptorSet; + if (tb.depth && tb.depth->gpuHandle) { + auto *depthGpu = static_cast(tb.depth->gpuHandle); + if (vk::DescriptorSet combo = post2SetFor(gpu, depthGpu)) texSet = combo; + } Batcher ndc = tb.batch; ndc.toNDC(width, height); std::vector gpuVerts; @@ -2921,14 +3226,14 @@ void Graphics::flushToSwapchain() { auto *gs = static_cast(tb.shader->gpuHandle); cb.bindPipeline(vk::PipelineBindPoint::eGraphics, gs->swapchainPipeline); cb.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, shaderPipelineLayout, 0, 1, - &gpu->descriptorSet, 0, nullptr); + &texSet, 0, nullptr); cb.pushConstants(shaderPipelineLayout, vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, 0, Shader::kPushConstantBytes, tb.shader->pushConstantData()); } else { cb.bindPipeline(vk::PipelineBindPoint::eGraphics, texPipeline); cb.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, texPipelineLayout, 0, 1, - &gpu->descriptorSet, 0, nullptr); + &texSet, 0, nullptr); } vk::DeviceSize offset = 0; cb.bindVertexBuffers(0, 1, vb, &offset); @@ -2963,8 +3268,14 @@ void Graphics::begin3DFrame() { if (swapchainPassOpen) throw Exception("begin3DFrame: swapchain pass already open"); // Soft-fail like flushToSwapchain: on Android/iOS the surface may still be // settling after orientation change; throwing would abort the whole script. - if (!beginSwapchainRenderPass()) + if (!beginPresentCommandBuffer()) return; + recordPendingShadowPasses(); + recordPendingGBufferPass(); + + createSceneColorResources(int(swapchain.extent.width), int(swapchain.extent.height)); + if (!beginSceneColorRenderPass()) + beginSwapchainColorPass(); auto &cb = presentModel.getCurrentCommandBuffer(); vk::Viewport vp{0.f, 0.f, float(swapchain.extent.width), float(swapchain.extent.height), 0.f, 1.f}; @@ -3319,17 +3630,22 @@ void Graphics::beginGBufferPass(int width, int height) { } void Graphics::drawMeshGBuffer(Mesh *mesh, const glm::mat4 &mvp, const glm::mat4 &model, float nearZ, - float farZ) { + float farZ, Texture *albedo, float tintR, float tintG, float tintB) { if (!gbufferPassActive) throw Exception("drawMeshGBuffer: call beginGBufferPass first"); if (!mesh || !mesh->gpuHandle) throw Exception("drawMeshGBuffer: null mesh"); GBufferDraw d{}; d.mesh = mesh; + d.albedo = albedo; d.push.mvp = mvp; // Pack model rows (column-major glm → row vectors with translation in .w). d.push.modelR0 = glm::vec4(model[0][0], model[1][0], model[2][0], model[3][0]); d.push.modelR1 = glm::vec4(model[0][1], model[1][1], model[2][1], model[3][1]); d.push.modelR2 = glm::vec4(model[0][2], model[1][2], model[2][2], model[3][2]); - d.push.clip = glm::vec4(nearZ, farZ, 0.f, 0.f); + auto u8 = [](float x) -> uint32_t { + return uint32_t(std::lround(std::clamp(x, 0.f, 1.f) * 255.f)); + }; + const uint32_t packedTint = u8(tintR) | (u8(tintG) << 8) | (u8(tintB) << 16) | (255u << 24); + d.push.clip = glm::vec4(nearZ, farZ, glm::uintBitsToFloat(packedTint), 0.f); gbufferPassDraws.push_back(d); } @@ -3347,10 +3663,9 @@ void Graphics::endGBufferPass() { gbufferPending = true; if (renderControl_) { - Texture *albedo = nullptr; - if (renderControl_->isEnabled("gbufferAlbedo")) albedo = &slot->albedoTex; + Texture *albedo = &slot->albedoTex; renderControl_->getGBuffer()->setTargets(gbufferWidth, gbufferHeight, &slot->depthColorTex, - &slot->normalTex, albedo); + &slot->normalTex, albedo, &slot->depthTex); } } @@ -3492,6 +3807,14 @@ void Graphics::setMesh3DView(const glm::mat4 &view) { mesh3dFrameUbo.view = view; } +void Graphics::setMesh3DClip(float nearZ, float farZ) { + const float n = nearZ > 1e-4f ? nearZ : 0.1f; + const float f = farZ > n ? farZ : n + 1.f; + mesh3dFrameUbo.clipInfo = glm::vec4(n, f, mesh3dFrameUbo.clipInfo.z, mesh3dFrameUbo.clipInfo.w); + mesh3dClustered.clipInfo.x = n; + mesh3dClustered.clipInfo.y = f; +} + Mesh *Graphics::newMeshFromAssimp(const ::aiMesh &mesh) { ASSERT(initialized); if (!initialized) throw Exception("newMeshFromAssimp: graphics not initialized"); diff --git a/src/modules/graphics/vulkan/Graphics.h b/src/modules/graphics/vulkan/Graphics.h index 646df956..9d589a72 100644 --- a/src/modules/graphics/vulkan/Graphics.h +++ b/src/modules/graphics/vulkan/Graphics.h @@ -94,6 +94,7 @@ struct Mesh3DUBO { glm::vec4 texBomb{4.f, 0.f, 1.f, 0.f}; // x=cellScale, y=strength (0=off), z=rotAmount glm::vec4 parallax{0.f, 8.f, 32.f, 0.f}; // x=scale (0=off), y=minLayers, z=maxLayers glm::mat4 view{1.f}; // camera view (CSM / view-space depth) + glm::vec4 clipInfo{0.1f, 100.f, 0.f, 0.f}; // x=near, y=far (linear depth in scene color A) }; struct Mesh3DClusteredUBO { @@ -117,12 +118,14 @@ struct GpuTexture { bool isCube = false; vk::Sampler sampler; vk::DescriptorSet descriptorSet; + vk::ImageView viewOverride{}; int width = 0; int height = 0; uint32_t mipLevels = 1; TextureSampler samplerState{}; vk::ImageView imageView() const { + if (viewOverride) return viewOverride; return isCube ? cubeImage.imageView() : image.imageView(); } }; @@ -184,6 +187,8 @@ public: void drawTexturedRectShaderUV(Texture *texture, Shader *shader, float x, float y, float w, float h, float u0, float v0, float u1, float v1, const Color &color) override; + void drawTexturedRectShaderDepth(Texture *color, Texture *depth, Shader *shader, float x, float y, + float w, float h, const Color &tint) override; void drawTexturedRectLitUV(Texture *albedo, Texture *normal, float x, float y, float w, float h, float u0, float v0, float u1, float v1, const Color &color) override; void setLighting2D(const Lighting2DUBO &ubo) override; @@ -206,6 +211,8 @@ public: void begin3DFrame() override; void setMesh3DViewProj(const glm::mat4 &viewProj) override; void setMesh3DView(const glm::mat4 &view) override; + void setMesh3DClip(float nearZ, float farZ) override; + Texture *getSceneColorTexture() override; void drawMesh(Mesh *mesh, const glm::mat4 &model, Texture *texture, const Color &tint) override; void drawMeshShader(Mesh *mesh, const glm::mat4 &model, Texture *texture, const Color &tint, Shader *shader) override; @@ -230,7 +237,8 @@ public: void beginGBufferPass(int width, int height) override; void drawMeshGBuffer(Mesh *mesh, const glm::mat4 &mvp, const glm::mat4 &model, float nearZ, - float farZ) override; + float farZ, Texture *albedo = nullptr, float tintR = 1.f, float tintG = 1.f, + float tintB = 1.f) override; void endGBufferPass() override; Canvas *newCanvas(int width, int height) override; @@ -281,11 +289,18 @@ private: void destroyShadowResources(); void createGBufferResources(int width, int height); void destroyGBufferResources(); + void createSceneColorResources(int width, int height); + void destroySceneColorResources(); void recordPendingShadowPasses(); void recordPendingGBufferPass(); void dropPendingOffscreenPasses(); /** acquire + record deferred shadow/gbuffer + begin swapchain RP. */ bool beginSwapchainRenderPass(); + /** Begin the swapchain color+depth RP on an already-acquired present CB. */ + void beginSwapchainColorPass(); + bool beginSceneColorRenderPass(); + void endSceneColorRenderPass(); + void queueSceneColorResolve(); void ensureClusteredBuffers(size_t lightsBytes, size_t tableBytes, size_t indicesBytes); void uploadClusteredLighting(const ClusteredLightingUpload &upload); vk::DescriptorSet mesh3dClusteredSetFor(GpuTexture *gpuTex, GpuTexture *normalTex, @@ -310,6 +325,7 @@ private: std::vector &batches, std::vector &texBufs, size_t &texBufIndex, bool offscreen); vk::DescriptorSet lit2dSetFor(GpuTexture *albedo, GpuTexture *normal, bool offscreen); + vk::DescriptorSet post2SetFor(GpuTexture *color, GpuTexture *depth); void ensureFlatNormalTexture(); void captureSwapchainImage(uint32_t imageIndex); void ensurePresentCaptureHook(); @@ -494,6 +510,7 @@ private: static_assert(sizeof(GBufferPush) == 128, "GBuffer push constants must be 128 bytes"); struct GBufferDraw { Mesh *mesh = nullptr; + Texture *albedo = nullptr; GBufferPush push{}; }; struct GBufferSlot { @@ -513,9 +530,11 @@ private: GpuTexture normalGpu{}; GpuTexture depthColorGpu{}; GpuTexture albedoGpu{}; + GpuTexture depthGpu{}; Texture normalTex{}; Texture depthColorTex{}; Texture albedoTex{}; + Texture depthTex{}; }; int gbufferWidth = 0; int gbufferHeight = 0; @@ -528,6 +547,25 @@ private: std::vector gbufferPassDraws; GBufferSlot *currentGBufferSlot(); + struct SceneColorSlot { + vk::Image colorImage{}; + vk::DeviceMemory colorMemory{}; + vk::ImageView colorView{}; + vk::Image depthImage{}; + vk::DeviceMemory depthMemory{}; + vk::ImageView depthView{}; + vk::Framebuffer framebuffer{}; + GpuTexture colorGpu{}; + Texture colorTex{}; + }; + int sceneColorWidth = 0; + int sceneColorHeight = 0; + vk::Format sceneColorFormat = vk::Format::eUndefined; + std::vector sceneColorSlots; + vk::RenderPass sceneColorRenderPass{}; + bool sceneColorPassOpen = false; + SceneColorSlot *currentSceneColorSlot(); + vkb::Present presentModel; vkb::DepthStencilImage depthImage; vk::Format depthFormat = vk::Format::eD32Sfloat; @@ -535,6 +573,7 @@ private: Batcher solidBatch; struct TexturedBatch { Texture *texture = nullptr; + Texture *depth = nullptr; Shader *shader = nullptr; Batcher batch; }; @@ -575,6 +614,7 @@ private: }; std::vector> lit2dSets; std::unordered_map offscreenLit2dSets; + std::unordered_map post2Sets; Texture *flatNormalTexture = nullptr; Color clearColor{0.1f, 0.1f, 0.12f, 1.0f}; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 49b13672..4f7b7d61 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -33,6 +33,7 @@ file(GLOB all_test_cpp TextureSampler.cpp AmbientOcclusion.cpp AntiAliasing.cpp + GlobalIllumination.cpp UISystem.cpp UIBuilder.cpp UIPhaseB.cpp diff --git a/test/ClassicScenes.cpp b/test/ClassicScenes.cpp index 442533d5..a037324d 100644 --- a/test/ClassicScenes.cpp +++ b/test/ClassicScenes.cpp @@ -37,6 +37,8 @@ #include "image/ImageData.h" #include "model3d/Model3D.h" #include "model3d/ModelData.h" +#include "system/System.h" +#include "timer/Timer.h" #include "window/Window.h" #include "RenderImageAudit.h" @@ -464,6 +466,33 @@ void warmPresent(Graphics *gfx) { } } +/** Hold the live view at `hz` so lighting/AO/GI can be inspected. Perf benches skip this. */ +void paceViewFrame(eve::timer::Timer *timer, float frameStart, float hz) { + if (!timer) return; + const float budget = 1.f / std::max(hz, 1.f); + const float remain = budget - (timer->getTime() - frameStart); + if (remain < 0.001f) return; + eve::system::System::create()->sleepMilliseconds(int(remain * 1000.f + 0.5f)); +} + +float viewSecondsPerPhase() { + const char *env = std::getenv("EVENGINE_VIEW_SECONDS"); + if (env && env[0]) { + const float s = float(std::atof(env)); + return s > 0.2f ? s : 0.2f; + } + return 4.f; +} + +float viewHz() { + const char *env = std::getenv("EVENGINE_VIEW_HZ"); + if (env && env[0]) { + const float h = float(std::atof(env)); + return h > 1.f ? h : 1.f; + } + return 30.f; +} + std::string classicOutDir() { return std::string(EVENGINE_TEST_BINARY_DIR) + "/out/classic_scenes"; } @@ -504,7 +533,9 @@ void resetRenderControl(Graphics *gfx) { rc->enable("forward"); rc->enable("hair"); rc->enable("clustered"); - rc->disable("gbuffer"); + rc->enable("ao"); + rc->enable("gi"); + rc->enable("aa"); rc->compile(); } @@ -822,7 +853,7 @@ std::vector makeSponzaPath(const Bounds &b) { */ std::vector flyThroughConfigs(Graphics *gfx, SceneActors &actors, const std::vector &path, const char *sceneTag, - bool polishMetalsForIbl, int framesPerLeg = 36) { + bool polishMetalsForIbl) { REQUIRE(actors.cam != nullptr); REQUIRE(path.size() >= 2); REQUIRE(actors.env != nullptr); @@ -841,24 +872,35 @@ std::vector flyThroughConfigs(Graphics *gfx, SceneActors &actors, gfx->setBackgroundColor(Color(0.14f, 0.15f, 0.17f, 1.f)); addHud(); - // Distribute path progress across phases so each config is seen in flight. + auto *timer = eve::timer::Timer::create(); + const float hz = viewHz(); + const float secPerPhase = viewSecondsPerPhase(); + const float totalSec = float(nPhases) * secPerPhase; const int legs = int(path.size()) - 1; - const int totalFrames = std::max(legs * framesPerLeg, nPhases * 12); + const float tFly0 = timer->getTime(); + std::printf("ClassicScenes[%s] view %.1fs/phase @ %.0f Hz (set EVENGINE_VIEW_SECONDS to change)\n", + sceneTag, secPerPhase, hz); + int frame = 0; for (int pi = 0; pi < nPhases; ++pi) { applyConfig(actors, phases[pi], polishMetalsForIbl && cfgUsesIbl(phases[pi])); std::printf("ClassicScenes[%s] phase=%s\n", sceneTag, cfgName(phases[pi])); - const int phaseStart = (totalFrames * pi) / nPhases; - const int phaseEnd = (totalFrames * (pi + 1)) / nPhases; - for (int f = phaseStart; f < phaseEnd; ++f) { - const float tPath = (totalFrames <= 1) ? 0.f : float(f) / float(totalFrames - 1); + const float phaseEnd = float(pi + 1) * secPerPhase; + const float tPhase0 = timer->getTime(); + int nFrames = 0; + const int frameCap = std::max(8, int(hz * secPerPhase) * 4); + while (nFrames < frameCap) { + const float now = timer->getTime(); + const float elapsed = now - tFly0; + if (elapsed >= phaseEnd && nFrames >= 2) break; + + const float tPath = totalSec > 1e-4f ? std::min(elapsed / totalSec, 1.f) : 0.f; const float legF = tPath * float(legs); const int leg = std::min(legs - 1, int(legF)); const float u = legF - float(leg); applyCam(actors.cam, lerpKey(path[size_t(leg)], path[size_t(leg + 1)], u)); - // Mild yaw on chart spheres so IBL / lighting reads in motion. if (std::string(sceneTag) == "pbr_chart") { for (auto *e : actors.ents) e->transform()->yaw = float(frame) * 0.03f; } @@ -869,8 +911,14 @@ std::vector flyThroughConfigs(Graphics *gfx, SceneActors &actors, while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) break; } + paceViewFrame(timer, now, hz); + ++nFrames; ++frame; } + const float phaseDt = timer->getTime() - tPhase0; + std::printf("ClassicScenes[%s] phase=%s view %d frames in %.2fs (%.1f fps)\n", sceneTag, + cfgName(phases[pi]), nFrames, phaseDt, + phaseDt > 1e-4f ? float(nFrames) / phaseDt : 0.f); // Snapshot a front-on / path-start key so charts and interiors stay // readable. The fly still covers the full path for live viewing. @@ -1228,8 +1276,7 @@ TEST_CASE("ClassicScenes.sponza.flythroughConfigs") { actors.pointB->setRadius(rad * 1.2f); auto path = makeSponzaPath(actors.bounds); - auto L = flyThroughConfigs(gfx, actors, path, "sponza", /*polishMetalsForIbl=*/false, - /*framesPerLeg=*/12); + auto L = flyThroughConfigs(gfx, actors, path, "sponza", /*polishMetalsForIbl=*/false); expectLightingResponse(L); // Shadows should not black out the whole atrium vs plain directional. @@ -1319,7 +1366,7 @@ bool runGltfOrbitScene(const char *relDir, const char *gltfFile, const char *tag actors.pointB->setColor(0.35f, 0.55f, 1.f, 6.5f); auto path = makeOrbitPath(actors.bounds, elev, distScale); - auto L = flyThroughConfigs(gfx, actors, path, tag, polishMetalsForIbl, /*framesPerLeg=*/12); + auto L = flyThroughConfigs(gfx, actors, path, tag, polishMetalsForIbl); expectLightingResponse(L); delete md; diff --git a/test/GlobalIllumination.cpp b/test/GlobalIllumination.cpp new file mode 100644 index 00000000..aea6ce0c --- /dev/null +++ b/test/GlobalIllumination.cpp @@ -0,0 +1,93 @@ +#include "zeroerr/assert.h" +#include "zeroerr/unittest.h" + +#include +#include +#include +#include +#include + +#include "graphics/Canvas.h" +#include "graphics/GlobalIllumination.h" +#include "graphics/Graphics.h" +#include "graphics/RenderControl.h" +#include "graphics/Texture.h" +#include "window/Window.h" + +using namespace eve::graphics; + +namespace { + +void openGfxWindow(eve::window::Window *&win, Graphics *&gfx, int w = 320, int h = 240) { + win = eve::window::Window::create(); + gfx = Graphics::create(); + REQUIRE(win != nullptr); + REQUIRE(gfx != nullptr); + win->setGraphics(gfx); + eve::window::WindowSettings s; + s.width = w; + s.height = h; + s.centered = true; + REQUIRE(win->setWindowSettings(s)); +} + +Texture *makePackedAlbedoDepth(Graphics *gfx, int w, int h) { + std::vector px(size_t(w * h * 4)); + for (int y = 0; y < h; ++y) { + for (int x = 0; x < w; ++x) { + const size_t i = size_t((y * w + x) * 4); + const bool wall = (x > w / 3 && x < w / 2); + px[i + 0] = wall ? 220 : 40; + px[i + 1] = wall ? 40 : 40; + px[i + 2] = wall ? 40 : 40; + px[i + 3] = wall ? 80 : 200; + } + } + return gfx->newTexture(w, h, px.data()); +} + +} // namespace + +TEST_CASE("gi.qualityAndApplyFromDepth") { + eve::window::Window *win = nullptr; + Graphics *gfx = nullptr; + openGfxWindow(win, gfx); + + GlobalIllumination *raw = gfx->newGlobalIllumination(); + REQUIRE(raw != nullptr); + std::unique_ptr gi(raw); + REQUIRE(gi->getShader() != nullptr); + CHECK(gi->getQuality() == "medium"); + CHECK(gi->getSampleCount() >= 8); + + gi->setQuality("low"); + CHECK(gi->getQuality() == "low"); + CHECK(gi->getSampleCount() == 8); + gi->setQuality("high"); + CHECK(gi->getSampleCount() == 24); + gi->setQuality("nope"); + CHECK(gi->getQuality() == "medium"); + + gi->setQuality("low"); + gi->setIntensity(0.8f); + gi->setRadius(1.1f); + gi->setLightDirection(0.4f, 1.f, 0.3f); + gi->setLightColor(1.f, 0.9f, 0.7f); + gi->setCamera(0.f, 1.f, 4.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 60.f, 320.f / 240.f, 0.1f, 40.f); + + Texture *packed = makePackedAlbedoDepth(gfx, 64, 48); + REQUIRE(packed != nullptr); + Canvas *dest = gfx->newCanvas(64, 48); + REQUIRE(dest != nullptr); + gi->applyFromDepthTo(gfx, packed, dest); + REQUIRE(dest->getTexture() != nullptr); + + RenderControl *rc = gfx->getRenderControl(); + REQUIRE(rc != nullptr); + CHECK(rc->supports("ao")); + CHECK(rc->supports("gi")); + CHECK(rc->isEnabled("gi")); + CHECK(rc->isEnabled("ao")); + + win->close(); +} diff --git a/test/MaterialRenderControl.cpp b/test/MaterialRenderControl.cpp index 4f6d3299..8ee33c28 100644 --- a/test/MaterialRenderControl.cpp +++ b/test/MaterialRenderControl.cpp @@ -38,6 +38,9 @@ TEST_CASE("material.shadingModelAndParams") { TEST_CASE("renderControl.compileFeaturesToPasses") { RenderControl rc; CHECK(rc.supports("gbuffer")); + CHECK(rc.supports("ao")); + CHECK(rc.supports("gi")); + CHECK(rc.supports("aa")); CHECK(rc.supports("shadow")); CHECK(!rc.supports("deferred")); @@ -46,7 +49,19 @@ TEST_CASE("renderControl.compileFeaturesToPasses") { CHECK(rc.hasPass("shadow")); CHECK(rc.hasPass("forward")); CHECK(rc.hasPass("hair")); + CHECK(rc.hasPass("gbuffer")); + CHECK(rc.isEnabled("ao")); + CHECK(rc.isEnabled("gi")); + CHECK(rc.isEnabled("aa")); + + rc.disable("ao"); + rc.disable("gi"); + rc.disable("gbuffer"); + CHECK(rc.isDirty()); + rc.compile(); CHECK(!rc.hasPass("gbuffer")); + CHECK(!rc.isEnabled("ao")); + CHECK(!rc.isEnabled("gi")); rc.enable("gbuffer"); CHECK(rc.isDirty()); @@ -116,8 +131,15 @@ TEST_CASE("gbuffer.bufferQueries") { CHECK(gb.hasBuffer("normal")); CHECK(gb.hasBuffer("albedo")); CHECK(gb.getBuffer("depth") == &depth); + CHECK(!gb.hasBuffer("hwDepth")); CHECK(gb.getBuffer("missing") == nullptr); + Texture hw; + gb.setTargets(128, 96, &depth, &normal, &albedo, &hw); + CHECK(gb.hasBuffer("hwDepth")); + CHECK(gb.getHwDepthTexture() == &hw); + CHECK(gb.getBuffer("hwDepth") == &hw); + gb.clear(); CHECK(!gb.isValid()); }