diff --git a/.gitattributes b/.gitattributes index 1cff6e96..08910ca3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -153,10 +153,7 @@ thermion_dart/native/lib/ios/libibl-lite.a filter=lfs diff=lfs merge=lfs -text thermion_dart/native/lib/ios/libimageio.a filter=lfs diff=lfs merge=lfs -text materials/Makefile filter=lfs diff=lfs merge=lfs -text materials/gizmo.filamat filter=lfs diff=lfs merge=lfs -text -materials/gizmo.mat filter=lfs diff=lfs merge=lfs -text materials/image.filamat filter=lfs diff=lfs merge=lfs -text -materials/image.mat filter=lfs diff=lfs merge=lfs -text -materials/unlit_fade.mat filter=lfs diff=lfs merge=lfs -text materials/unlit_opaque.mat filter=lfs diff=lfs merge=lfs -text thermion_dart/native/lib/android/arm64-v8a/libktxreader.a filter=lfs diff=lfs merge=lfs -text thermion_dart/native/lib/android/armeabi-v7a/libcamutils.a filter=lfs diff=lfs merge=lfs -text diff --git a/Makefile b/Makefile index 2534cd72..0fce35c0 100644 --- a/Makefile +++ b/Makefile @@ -22,10 +22,13 @@ bindings: # materials: FORCE @echo "Using Filament build from ${FILAMENT_PATH}" - ${FILAMENT_PATH}/matc -a opengl -a metal -o materials/image.filamat materials/image.mat - $(FILAMENT_PATH)/resgen -c -p image -x ios/include/material/ materials/image.filamat - $(FILAMENT_PATH)/matc -a opengl -a metal -o materials/gizmo.filamat materials/gizmo.mat - $(FILAMENT_PATH)/resgen -c -p gizmo -x ios/include/material/ materials/gizmo.filamat + @for material in unlit image gizmo grid; do \ + ${FILAMENT_PATH}/matc -a opengl -a metal -o materials/$$material.filamat materials/$$material.mat; \ + $(FILAMENT_PATH)/resgen -c -p $$material -x thermion_dart/native/include/material/ materials/$$material.filamat; \ + echo '#include "'$$material'.h"' | cat - thermion_dart/native/include/material/$$material.c > thermion_dart/native/include/material/$$material.c.new; \ + mv thermion_dart/native/include/material/$$material.c.new thermion_dart/native/include/material/$$material.c; \ + done + #rm materials/*.filamat FORCE: ; diff --git a/docs/showcase.mdx b/docs/showcase.mdx index 6a5b18e8..4cc9de77 100644 --- a/docs/showcase.mdx +++ b/docs/showcase.mdx @@ -6,6 +6,13 @@ A custom DartPad that lets you experiment with Thermion from your browser (curre [![Screenshot of Thermion Dartpad](images/dartpad.thermion.dev_.png)](https://dartpad.thermion.dev) +## mixreel (Flutter/Web) + +Create 3D worlds and translate to AI video. + +[![Screenshot of the mixreeel app](images/ixlabs.app_app.png)](https://mixreel.ai) + + ## Nick Fisher My personal website, where I create an interactive clone of myself with Avaturn & Cartesia (no Flutter, made with Thermion and the [Jaspr Dart UI framework](https://github.com/schultek/jaspr)). diff --git a/materials/Makefile b/materials/Makefile deleted file mode 100644 index 1fd88cde..00000000 --- a/materials/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14a484a441dacbc49ce6b8b189a8900a7bb2ab2072731a3a493676aa046b5888 -size 1009 diff --git a/materials/gizmo.mat b/materials/gizmo.mat index 5b7bc75b..df673663 100644 --- a/materials/gizmo.mat +++ b/materials/gizmo.mat @@ -1,3 +1,50 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3158461d081f058dcb9582ce19cc2daedc73abbe758ba5094c94df89028d8c4d -size 981 + material { + name : Gizmo, + parameters : [ + { + type : mat4, + name : transform, + precision : high + }, + { + type : float4, + name : color, + precision : low + } + ], + depthWrite : true, + depthCulling : false, + shadingModel : unlit, + blending: transparent, + variantFilter : [ skinning, shadowReceiver, vsm ], + culling: none, + instanced: false, + vertexDomain: object + } + + vertex { + void materialVertex(inout MaterialVertexInputs material) { + + // we want to ensure the gizmo has the same size (in screen-space), no matter the distance from the camera + // we do this by scaling the model-space vertex positions by the distance from the camera + vec4 modelSpace = getPosition(); + vec4 worldSpace = getWorldFromModelMatrix() * modelSpace; + vec4 viewSpace = getViewFromWorldMatrix() * worldSpace; + float distanceFromCamera = length(viewSpace.xyz); + modelSpace.xyz *= (distanceFromCamera / 4.0f); // divide by 4 so that the size is equivalent to the camera being 4 world-space units away from the (unscaled) gizmo + + worldSpace = getWorldFromModelMatrix() * modelSpace; + material.worldPosition = worldSpace; + //vec4 clipSpace = getClipFromWorldMatrix() * worldSpace; + //clipSpace.z = 0.99f; + //material.worldPosition = getWorldFromClipMatrix() * clipSpace; + } + } + + fragment { + void material(inout MaterialInputs material) { + prepareMaterial(material); + material.baseColor = materialParams.color; + } + } + diff --git a/materials/grid.mat b/materials/grid.mat new file mode 100644 index 00000000..cf3faf25 --- /dev/null +++ b/materials/grid.mat @@ -0,0 +1,53 @@ +material { + name : Grid, + parameters : [ + { + type : float, + name : maxDistance + }, + { + type : float3, + name : color + } + ], + depthWrite : true, + depthCulling : false, + shadingModel : unlit, + blending: transparent, + variantFilter : [ skinning, shadowReceiver, vsm ], + culling: none, + instanced: false, + vertexDomain: object +} + +vertex { + void materialVertex(inout MaterialVertexInputs material) { + material.worldPosition = getWorldFromModelMatrix() * getPosition(); + } +} + +fragment { + void material(inout MaterialInputs material) { + prepareMaterial(material); + + // Convert world position to view space + float4 viewPos = getViewFromWorldMatrix() * float4(getWorldPosition(), 1.0); + + // Calculate distance in view space (camera is at 0,0,0 in view space) + float distance = length(viewPos.xz); + + // Discard fragment if it's too far from the camera + if (distance > materialParams.maxDistance) { + material.baseColor = float4(0.0); + } else { + material.baseColor = float4(materialParams.color, 1.0); + + // Optional: fade out as we approach maxDistance + float fadeStart = materialParams.maxDistance * 0.8; + if (distance > fadeStart) { + float fade = 1.0 - (distance - fadeStart) / (materialParams.maxDistance - fadeStart); + material.baseColor.a = fade; + } + } + } +} \ No newline at end of file diff --git a/materials/image.mat b/materials/image.mat index 0775f048..132a8de2 100644 --- a/materials/image.mat +++ b/materials/image.mat @@ -1,3 +1,52 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:273059c97f96c6848807914d937583864445b51d8e0f1cd98c3e4e0e4bd9f411 -size 1451 +material { + name : Image, + parameters : [ + { + type : sampler2d, + name : image + }, + { + type : mat4, + name : transform, + precision : high + }, + { + type : float4, + name : backgroundColor + }, + { + type : int, + name : showImage + } + ], + variables : [ + imageUV + ], + vertexDomain : device, + depthWrite : false, + shadingModel : unlit, + variantFilter : [ skinning, shadowReceiver, vsm ], + culling: none +} + +vertex { + void materialVertex(inout MaterialVertexInputs material) { + material.imageUV.st = getPosition().st * 0.5 + 0.5; + } +} + +fragment { + void material(inout MaterialInputs material) { + prepareMaterial(material); + highp vec2 uv = (materialParams.transform * vec4(saturate(variable_imageUV.st), 1.0, 1.0)).st; + if (materialParams.showImage == 0 || uv.s > 1.0 || uv.s < 0.0 || uv.t < 0.0 || uv.t > 1.0) { + material.baseColor = materialParams.backgroundColor; + } else { + uv.t = 1.0 - uv.t; + vec4 color = max(texture(materialParams_image, uv.st), 0.0); + color.rgb *= color.a; + // Manual, pre-multiplied srcOver with opaque destination optimization + material.baseColor.rgb = color.rgb + materialParams.backgroundColor.rgb * (1.0 - color.a); + } + } +} diff --git a/materials/unlit.mat b/materials/unlit.mat new file mode 100644 index 00000000..ee11c77c --- /dev/null +++ b/materials/unlit.mat @@ -0,0 +1,38 @@ +material { + name : unlit, + requires : [ uv0 ], + parameters : [ + { + type : sampler2d, + name : baseColorMap + }, + { + type : float4, + name : baseColorFactor + }, + { + type : int, + name : baseColorIndex + } + ], + depthWrite : true, + depthCulling : true, + shadingModel : unlit, + blending: opaque, + culling: none, + instanced: false, + vertexDomain: object +} + + fragment { + void material(inout MaterialInputs material) { + prepareMaterial(material); + material.baseColor = materialParams.baseColorFactor; + + if (materialParams.baseColorIndex > -1) { + highp float2 uv = getUV0(); + uv.y = 1.0 - uv.y; + material.baseColor *= texture(materialParams_baseColorMap, uv); + } + } + } diff --git a/materials/unlit_opaque.mat b/materials/unlit_opaque.mat deleted file mode 100644 index a322a468..00000000 --- a/materials/unlit_opaque.mat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4abb9e737d20956cced366af6a54dd31ab17cc8d0d1773f02c57a5712760fe10 -size 7385 diff --git a/thermion_dart/ffigen/native.yaml b/thermion_dart/ffigen/native.yaml index c4472fde..67ed918f 100644 --- a/thermion_dart/ffigen/native.yaml +++ b/thermion_dart/ffigen/native.yaml @@ -1,13 +1,19 @@ -output: '../lib/thermion_dart/compatibility/native/thermion_dart.g.dart' +output: '../lib/thermion_dart/viewer/ffi/thermion_dart.g.dart' headers: entry-points: - - '../native/include/ThermionDartFFIApi.h' + - '../native/include/ThermionDartRenderThreadApi.h' - '../native/include/ThermionDartApi.h' - '../native/include/ResourceBuffer.h' include-directives: - - '../native/include/ThermionDartFFIApi.h' + - '../native/include/ThermionDartRenderThreadApi.h' - '../native/include/ThermionDartApi.h' - '../native/include/ResourceBuffer.h' + - '../native/include/APIBoundaryTypes.h' ffi-native: assetId: package:thermion_dart/thermion_dart.dart ignore-source-errors: true +functions: + leaf: + include: + - '.*' + diff --git a/thermion_dart/hook/build.dart b/thermion_dart/hook/build.dart index 830ac0d4..9b561f39 100644 --- a/thermion_dart/hook/build.dart +++ b/thermion_dart/hook/build.dart @@ -60,6 +60,8 @@ void main(List args) async { sources.addAll([ "${config.packageRoot.toFilePath()}/native/include/material/gizmo.c", "${config.packageRoot.toFilePath()}/native/include/material/image.c", + "${config.packageRoot.toFilePath()}/native/include/material/grid.c", + "${config.packageRoot.toFilePath()}/native/include/material/unlit.c", ]); var libs = [ @@ -76,7 +78,6 @@ void main(List args) async { "image", "imageio", "tinyexr", - "gltfio_core", "filaflat", "dracodec", "ibl", diff --git a/thermion_dart/lib/thermion_dart.dart b/thermion_dart/lib/thermion_dart.dart index c283d51a..de91b2e7 100644 --- a/thermion_dart/lib/thermion_dart.dart +++ b/thermion_dart/lib/thermion_dart.dart @@ -1,8 +1,5 @@ library filament_dart; export 'thermion_dart/thermion_viewer.dart'; -export 'thermion_dart/thermion_viewer_stub.dart' - if (dart.library.io) 'thermion_dart/thermion_viewer_ffi.dart' - if (dart.library.js_interop)'thermion_dart/compatibility/web/interop/thermion_viewer_wasm.dart'; - export 'thermion_dart/entities/entity_transform_controller.dart'; +export 'thermion_dart/utils/geometry.dart'; diff --git a/thermion_dart/lib/thermion_dart/compatibility/compatibility.dart b/thermion_dart/lib/thermion_dart/compatibility/compatibility.dart deleted file mode 100644 index a8435873..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/compatibility.dart +++ /dev/null @@ -1 +0,0 @@ -export 'native/compatibility.dart'; diff --git a/thermion_dart/lib/thermion_dart/compatibility/native/thermion_dart.g.dart b/thermion_dart/lib/thermion_dart/compatibility/native/thermion_dart.g.dart deleted file mode 100644 index 30b657ee..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/native/thermion_dart.g.dart +++ /dev/null @@ -1,1522 +0,0 @@ -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -@ffi.DefaultAsset('package:thermion_dart/thermion_dart.dart') -library; - -import 'dart:ffi' as ffi; - -@ffi.Native< - ffi.Pointer Function(LoadFilamentResourceFromOwner, - FreeFilamentResourceFromOwner, ffi.Pointer)>() -external ffi.Pointer make_resource_loader( - LoadFilamentResourceFromOwner loadFn, - FreeFilamentResourceFromOwner freeFn, - ffi.Pointer owner, -); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>() -external ffi.Pointer create_filament_viewer( - ffi.Pointer context, - ffi.Pointer loader, - ffi.Pointer platform, - ffi.Pointer uberArchivePath, -); - -@ffi.Native)>() -external void destroy_filament_viewer( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_scene_manager( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32)>() -external void create_render_target( - ffi.Pointer viewer, - int texture, - int width, - int height, -); - -@ffi.Native)>() -external void clear_background_image( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Bool)>() -external void set_background_image( - ffi.Pointer viewer, - ffi.Pointer path, - bool fillHeight, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>() -external void set_background_image_position( - ffi.Pointer viewer, - double x, - double y, - bool clamp, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>() -external void set_background_color( - ffi.Pointer viewer, - double r, - double g, - double b, - double a, -); - -@ffi.Native, ffi.Int)>() -external void set_tone_mapping( - ffi.Pointer viewer, - int toneMapping, -); - -@ffi.Native, ffi.Float)>() -external void set_bloom( - ffi.Pointer viewer, - double strength, -); - -@ffi.Native, ffi.Pointer)>() -external void load_skybox( - ffi.Pointer viewer, - ffi.Pointer skyboxPath, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Float)>() -external void load_ibl( - ffi.Pointer viewer, - ffi.Pointer iblPath, - double intensity, -); - -@ffi.Native, ffi.Pointer)>() -external void rotate_ibl( - ffi.Pointer viewer, - ffi.Pointer rotationMatrix, -); - -@ffi.Native)>() -external void remove_skybox( - ffi.Pointer viewer, -); - -@ffi.Native)>() -external void remove_ibl( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, - ffi.Uint8, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool)>() -external int add_light( - ffi.Pointer viewer, - int type, - double colour, - double intensity, - double posX, - double posY, - double posZ, - double dirX, - double dirY, - double dirZ, - double falloffRadius, - double spotLightConeInner, - double spotLightConeOuter, - double sunAngularRadius, - double sunHaloSize, - double sunHaloFallof, - bool shadows, -); - -@ffi.Native, ffi.Int)>() -external void remove_light( - ffi.Pointer viewer, - int entityId, -); - -@ffi.Native)>() -external void clear_lights( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Pointer, ffi.Int)>() -external int load_glb( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - int numInstances, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Pointer, ffi.Size)>() -external int load_glb_from_buffer( - ffi.Pointer sceneManager, - ffi.Pointer data, - int length, -); - -@ffi.Native< - ffi.Int Function( - ffi.Pointer, ffi.Pointer, ffi.Pointer)>() -external int load_gltf( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - ffi.Pointer relativePath, -); - -@ffi.Native, ffi.Int)>() -external int create_instance( - ffi.Pointer sceneManager, - int id, -); - -@ffi.Native, ffi.Int)>() -external int get_instance_count( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external void get_instances( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer out, -); - -@ffi.Native)>() -external void set_main_camera( - ffi.Pointer viewer, -); - -@ffi.Native)>() -external int get_main_camera( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external bool set_camera( - ffi.Pointer viewer, - int entity, - ffi.Pointer nodeName, -); - -@ffi.Native, ffi.Bool)>() -external void set_view_frustum_culling( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Uint64, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer buf, ffi.Size size, - ffi.Pointer data)>>, - ffi.Pointer)>() -external void render( - ffi.Pointer viewer, - int frameTimeInNanos, - ffi.Pointer pixelBuffer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer buf, ffi.Size size, - ffi.Pointer data)>> - callback, - ffi.Pointer data, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Uint32, ffi.Uint32)>() -external void create_swap_chain( - ffi.Pointer viewer, - ffi.Pointer window, - int width, - int height, -); - -@ffi.Native)>() -external void destroy_swap_chain( - ffi.Pointer viewer, -); - -@ffi.Native, ffi.Float)>() -external void set_frame_interval( - ffi.Pointer viewer, - double interval, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Uint32, ffi.Uint32, ffi.Float)>() -external void update_viewport_and_camera_projection( - ffi.Pointer viewer, - int width, - int height, - double scaleFactor, -); - -@ffi.Native)>() -external void scroll_begin( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>() -external void scroll_update( - ffi.Pointer viewer, - double x, - double y, - double z, -); - -@ffi.Native)>() -external void scroll_end( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>() -external void grab_begin( - ffi.Pointer viewer, - double x, - double y, - bool pan, -); - -@ffi.Native, ffi.Float, ffi.Float)>() -external void grab_update( - ffi.Pointer viewer, - double x, - double y, -); - -@ffi.Native)>() -external void grab_end( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Pointer, - ffi.Pointer, ffi.Int)>() -external void apply_weights( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer entityName, - ffi.Pointer weights, - int count, -); - -@ffi.Native< - ffi.Bool Function( - ffi.Pointer, ffi.Int, ffi.Pointer, ffi.Int)>() -external bool set_morph_target_weights( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer morphData, - int numWeights, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, ffi.Int, ffi.Pointer, - ffi.Pointer, ffi.Int, ffi.Int, ffi.Float)>() -external bool set_morph_animation( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer morphData, - ffi.Pointer morphIndices, - int numMorphTargets, - int numFrames, - double frameLengthInMs, -); - -@ffi.Native, ffi.Int)>() -external void clear_morph_animation( - ffi.Pointer sceneManager, - int entity, -); - -@ffi.Native, ffi.Int)>() -external void reset_to_rest_pose( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float)>() -external void add_bone_animation( - ffi.Pointer sceneManager, - int entity, - int skinIndex, - int boneIndex, - ffi.Pointer frameData, - int numFrames, - double frameLengthInMs, - double fadeOutInSecs, - double fadeInInSecs, - double maxDelta, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external void get_local_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer arg2, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int, - ffi.Pointer, ffi.Int)>() -external void get_rest_local_transforms( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - ffi.Pointer out, - int numBones, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external void get_world_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer arg2, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Int, - ffi.Pointer)>() -external void get_inverse_bind_matrix( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - int boneIndex, - ffi.Pointer arg4, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Int, - ffi.Pointer)>() -external bool set_bone_transform( - ffi.Pointer sceneManager, - int entity, - int skinIndex, - int boneIndex, - ffi.Pointer transform, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Bool, - ffi.Bool, ffi.Bool, ffi.Float, ffi.Float)>() -external void play_animation( - ffi.Pointer sceneManager, - int entity, - int index, - bool loop, - bool reverse, - bool replaceActive, - double crossfade, - double startOffset, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Int)>() -external void set_animation_frame( - ffi.Pointer sceneManager, - int entity, - int animationIndex, - int animationFrame, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external void stop_animation( - ffi.Pointer sceneManager, - int entity, - int index, -); - -@ffi.Native, ffi.Int)>() -external int get_animation_count( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Int, ffi.Pointer, ffi.Int)>() -external void get_animation_name( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer outPtr, - int index, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external double get_animation_duration( - ffi.Pointer sceneManager, - int entity, - int index, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external int get_bone_count( - ffi.Pointer sceneManager, - int assetEntity, - int skinIndex, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, - ffi.Pointer>, ffi.Int)>() -external void get_bone_names( - ffi.Pointer sceneManager, - int assetEntity, - ffi.Pointer> outPtr, - int skinIndex, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Int, ffi.Int, ffi.Int)>() -external int get_bone( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - int boneIndex, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external bool set_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer transform, -); - -@ffi.Native, ffi.Int)>() -external bool update_bone_matrices( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Int, - ffi.Pointer, ffi.Int)>() -external void get_morph_target_name( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, - ffi.Pointer outPtr, - int index, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external int get_morph_target_name_count( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, -); - -@ffi.Native, ffi.Int)>() -external void remove_entity( - ffi.Pointer viewer, - int asset, -); - -@ffi.Native)>() -external void clear_entities( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, ffi.Int, ffi.Pointer, - ffi.Int, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>() -external bool set_material_color( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, - int materialIndex, - double r, - double g, - double b, - double a, -); - -@ffi.Native, ffi.Int)>() -external void transform_to_unit_cube( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Float, ffi.Float, - ffi.Float, ffi.Bool)>() -external void queue_position_update( - ffi.Pointer sceneManager, - int entity, - double x, - double y, - double z, - bool relative, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Float, ffi.Float, - ffi.Float, ffi.Float, ffi.Float, ffi.Bool)>() -external void queue_rotation_update( - ffi.Pointer sceneManager, - int entity, - double rads, - double x, - double y, - double z, - double w, - bool relative, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Int, ffi.Float, ffi.Float, ffi.Float)>() -external void set_position( - ffi.Pointer sceneManager, - int entity, - double x, - double y, - double z, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Int, ffi.Float, ffi.Float, - ffi.Float, ffi.Float, ffi.Float)>() -external void set_rotation( - ffi.Pointer sceneManager, - int entity, - double rads, - double x, - double y, - double z, - double w, -); - -@ffi.Native, ffi.Int, ffi.Float)>() -external void set_scale( - ffi.Pointer sceneManager, - int entity, - double scale, -); - -@ffi.Native, ffi.Int)>() -external void move_camera_to_asset( - ffi.Pointer viewer, - int asset, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>() -external void set_camera_exposure( - ffi.Pointer viewer, - double aperture, - double shutterSpeed, - double sensitivity, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>() -external void set_camera_position( - ffi.Pointer viewer, - double x, - double y, - double z, -); - -@ffi.Native)>() -external void get_camera_position( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>() -external void set_camera_rotation( - ffi.Pointer viewer, - double w, - double x, - double y, - double z, -); - -@ffi.Native, ffi.Pointer)>() -external void set_camera_model_matrix( - ffi.Pointer viewer, - ffi.Pointer matrix, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_camera_model_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_camera_view_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_camera_projection_matrix( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Double)>() -external void set_camera_projection_matrix( - ffi.Pointer viewer, - ffi.Pointer matrix, - double near, - double far, -); - -@ffi.Native, ffi.Double, ffi.Double)>() -external void set_camera_culling( - ffi.Pointer viewer, - double near, - double far, -); - -@ffi.Native)>() -external double get_camera_culling_near( - ffi.Pointer viewer, -); - -@ffi.Native)>() -external double get_camera_culling_far( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_camera_culling_projection_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>() -external ffi.Pointer get_camera_frustum( - ffi.Pointer viewer, -); - -@ffi.Native, ffi.Float, ffi.Float)>() -external void set_camera_fov( - ffi.Pointer viewer, - double fovInDegrees, - double aspect, -); - -@ffi.Native, ffi.Float)>() -external void set_camera_focal_length( - ffi.Pointer viewer, - double focalLength, -); - -@ffi.Native, ffi.Float)>() -external void set_camera_focus_distance( - ffi.Pointer viewer, - double focusDistance, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, _ManipulatorMode, ffi.Double, - ffi.Double, ffi.Double)>() -external void set_camera_manipulator_options( - ffi.Pointer viewer, - int mode, - double orbitSpeedX, - double orbitSpeedY, - double zoomSpeed, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external int hide_mesh( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external int reveal_mesh( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, -); - -@ffi.Native, ffi.Bool)>() -external void set_post_processing( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native, ffi.Bool)>() -external void set_shadows_enabled( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native, ffi.Int)>() -external void set_shadow_type( - ffi.Pointer viewer, - int shadowType, -); - -@ffi.Native, ffi.Float, ffi.Float)>() -external void set_soft_shadow_options( - ffi.Pointer viewer, - double penumbraScale, - double penumbraRatioScale, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Bool, ffi.Bool, ffi.Bool)>() -external void set_antialiasing( - ffi.Pointer viewer, - bool msaa, - bool fxaa, - bool taa, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Int entityId, ffi.Int x, ffi.Int y)>>)>() -external void filament_pick( - ffi.Pointer viewer, - int x, - int y, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Int entityId, ffi.Int x, ffi.Int y)>> - callback, -); - -@ffi.Native Function(ffi.Pointer, ffi.Int)>() -external ffi.Pointer get_name_for_entity( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Int, ffi.Pointer)>() -external int find_child_entity_by_name( - ffi.Pointer sceneManager, - int parent, - ffi.Pointer name, -); - -@ffi.Native, ffi.Int, ffi.Bool)>() -external int get_entity_count( - ffi.Pointer sceneManager, - int target, - bool renderableOnly, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Int, ffi.Bool, ffi.Pointer)>() -external void get_entities( - ffi.Pointer sceneManager, - int target, - bool renderableOnly, - ffi.Pointer out, -); - -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer, ffi.Int, ffi.Int, ffi.Bool)>() -external ffi.Pointer get_entity_name_at( - ffi.Pointer sceneManager, - int target, - int index, - bool renderableOnly, -); - -@ffi.Native, ffi.Bool)>() -external void set_recording( - ffi.Pointer viewer, - bool recording, -); - -@ffi.Native, ffi.Pointer)>() -external void set_recording_output_directory( - ffi.Pointer viewer, - ffi.Pointer outputDirectory, -); - -@ffi.Native() -external void ios_dummy(); - -@ffi.Native)>() -external void thermion_flutter_free( - ffi.Pointer ptr, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Int entityId1, ffi.Int entityId2)>>, - ffi.Bool)>() -external void add_collision_component( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Int entityId1, ffi.Int entityId2)>> - callback, - bool affectsCollidingTransform, -); - -@ffi.Native, ffi.Int)>() -external void remove_collision_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native, ffi.Int)>() -external bool add_animation_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native, ffi.Int)>() -external void remove_animation_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, ffi.Pointer, ffi.Int, - ffi.Pointer, ffi.Int, ffi.Int, ffi.Pointer)>() -external int create_geometry( - ffi.Pointer viewer, - ffi.Pointer vertices, - int numVertices, - ffi.Pointer indices, - int numIndices, - int primitiveType, - ffi.Pointer materialPath, -); - -@ffi.Native, ffi.Int)>() -external int get_parent( - ffi.Pointer sceneManager, - int child, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external void set_parent( - ffi.Pointer sceneManager, - int child, - int parent, -); - -@ffi.Native, ffi.Int)>() -external void test_collisions( - ffi.Pointer sceneManager, - int entity, -); - -@ffi.Native, ffi.Int, ffi.Int)>() -external void set_priority( - ffi.Pointer sceneManager, - int entityId, - int priority, -); - -@ffi.Native, ffi.Pointer)>() -external void get_gizmo( - ffi.Pointer sceneManager, - ffi.Pointer out, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer renderCallbackOwner)>>, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer viewer)>>)>() -external void create_filament_viewer_ffi( - ffi.Pointer context, - ffi.Pointer platform, - ffi.Pointer uberArchivePath, - ffi.Pointer loader, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer renderCallbackOwner)>> - renderCallback, - ffi.Pointer renderCallbackOwner, - ffi.Pointer< - ffi.NativeFunction viewer)>> - callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Uint32, - ffi.Uint32, ffi.Pointer>)>() -external void create_swap_chain_ffi( - ffi.Pointer viewer, - ffi.Pointer surface, - int width, - int height, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, - ffi.Pointer>)>() -external void destroy_swap_chain_ffi( - ffi.Pointer viewer, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32, - ffi.Pointer>)>() -external void create_render_target_ffi( - ffi.Pointer viewer, - int nativeTextureId, - int width, - int height, - ffi.Pointer> onComplete, -); - -@ffi.Native)>() -external void destroy_filament_viewer_ffi( - ffi.Pointer viewer, -); - -@ffi.Native)>() -external void render_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>() -external void capture_ffi( - ffi.Pointer viewer, - ffi.Pointer out, - ffi.Pointer> onComplete, -); - -@ffi.Native() -external FilamentRenderCallback make_render_callback_fn_pointer( - FilamentRenderCallback arg0, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Bool, - ffi.Pointer>)>() -external void set_rendering_ffi( - ffi.Pointer viewer, - bool rendering, - ffi.Pointer> onComplete, -); - -@ffi.Native, ffi.Float)>() -external void set_frame_interval_ffi( - ffi.Pointer viewer, - double frameInterval, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Uint32, ffi.Uint32, ffi.Float, - ffi.Pointer>)>() -external void update_viewport_and_camera_projection_ffi( - ffi.Pointer viewer, - int width, - int height, - double scaleFactor, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>() -external void set_background_color_ffi( - ffi.Pointer viewer, - double r, - double g, - double b, - double a, -); - -@ffi.Native)>() -external void clear_background_image_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Bool, - ffi.Pointer>)>() -external void set_background_image_ffi( - ffi.Pointer viewer, - ffi.Pointer path, - bool fillHeight, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>() -external void set_background_image_position_ffi( - ffi.Pointer viewer, - double x, - double y, - bool clamp, -); - -@ffi.Native, ffi.Int)>() -external void set_tone_mapping_ffi( - ffi.Pointer viewer, - int toneMapping, -); - -@ffi.Native, ffi.Float)>() -external void set_bloom_ffi( - ffi.Pointer viewer, - double strength, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>() -external void load_skybox_ffi( - ffi.Pointer viewer, - ffi.Pointer skyboxPath, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Float)>() -external void load_ibl_ffi( - ffi.Pointer viewer, - ffi.Pointer iblPath, - double intensity, -); - -@ffi.Native)>() -external void remove_skybox_ffi( - ffi.Pointer viewer, -); - -@ffi.Native)>() -external void remove_ibl_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Uint8, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool, - ffi.Pointer>)>() -external void add_light_ffi( - ffi.Pointer viewer, - int type, - double colour, - double intensity, - double posX, - double posY, - double posZ, - double dirX, - double dirY, - double dirZ, - double falloffRadius, - double spotLightConeInner, - double spotLightConeOuter, - double sunAngularRadius, - double sunHaloSize, - double sunHaloFallof, - bool shadows, - ffi.Pointer> callback, -); - -@ffi.Native, EntityId)>() -external void remove_light_ffi( - ffi.Pointer viewer, - int entityId, -); - -@ffi.Native)>() -external void clear_lights_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Int, - ffi.Pointer>)>() -external void load_glb_ffi( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - int numInstances, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Size, - ffi.Int, - ffi.Pointer>)>() -external void load_glb_from_buffer_ffi( - ffi.Pointer sceneManager, - ffi.Pointer data, - int length, - int numInstances, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>() -external void load_gltf_ffi( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - ffi.Pointer relativePath, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>() -external void create_instance_ffi( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>() -external void remove_entity_ffi( - ffi.Pointer viewer, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, - ffi.Pointer>)>() -external void clear_entities_ffi( - ffi.Pointer viewer, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, - ffi.Pointer>)>() -external void set_camera_ffi( - ffi.Pointer viewer, - int asset, - ffi.Pointer nodeName, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, - ffi.Pointer, ffi.Int)>() -external void apply_weights_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer entityName, - ffi.Pointer weights, - int count, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>() -external void set_animation_frame_ffi( - ffi.Pointer sceneManager, - int asset, - int animationIndex, - int animationFrame, -); - -@ffi.Native, EntityId, ffi.Int)>() -external void stop_animation_ffi( - ffi.Pointer sceneManager, - int asset, - int index, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>() -external void get_animation_count_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, - ffi.Int, ffi.Pointer>)>() -external void get_animation_name_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer outPtr, - int index, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer>)>() -external void get_morph_target_name_ffi( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, - ffi.Pointer outPtr, - int index, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, EntityId, - ffi.Pointer>)>() -external void get_morph_target_name_count_ffi( - ffi.Pointer sceneManager, - int asset, - int childEntity, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer>)>() -external void set_morph_target_weights_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer morphData, - int numWeights, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>() -external void update_bone_matrices_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer>)>() -external void set_bone_transform_ffi( - ffi.Pointer sceneManager, - int asset, - int skinIndex, - int boneIndex, - ffi.Pointer transform, - ffi.Pointer> callback, -); - -@ffi.Native, ffi.Bool)>() -external void set_post_processing_ffi( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>() -external void reset_to_rest_pose_ffi( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer>)>() -external void create_geometry_ffi( - ffi.Pointer viewer, - ffi.Pointer vertices, - int numVertices, - ffi.Pointer indices, - int numIndices, - int primitiveType, - ffi.Pointer materialPath, - ffi.Pointer> callback, -); - -final class ResourceBuffer extends ffi.Struct { - external ffi.Pointer data; - - @ffi.Int32() - external int size; - - @ffi.Int32() - external int id; -} - -final class ResourceLoaderWrapper extends ffi.Struct { - external LoadFilamentResource loadResource; - - external FreeFilamentResource freeResource; - - external LoadFilamentResourceFromOwner loadFromOwner; - - external FreeFilamentResourceFromOwner freeFromOwner; - - external ffi.Pointer owner; - - external LoadFilamentResourceIntoOutPointer loadToOut; -} - -typedef LoadFilamentResource - = ffi.Pointer>; -typedef LoadFilamentResourceFunction = ResourceBuffer Function( - ffi.Pointer uri); -typedef FreeFilamentResource - = ffi.Pointer>; -typedef FreeFilamentResourceFunction = ffi.Void Function(ResourceBuffer); -typedef DartFreeFilamentResourceFunction = void Function(ResourceBuffer); -typedef LoadFilamentResourceFromOwner - = ffi.Pointer>; -typedef LoadFilamentResourceFromOwnerFunction = ResourceBuffer Function( - ffi.Pointer, ffi.Pointer); -typedef FreeFilamentResourceFromOwner - = ffi.Pointer>; -typedef FreeFilamentResourceFromOwnerFunction = ffi.Void Function( - ResourceBuffer, ffi.Pointer); -typedef DartFreeFilamentResourceFromOwnerFunction = void Function( - ResourceBuffer, ffi.Pointer); -typedef LoadFilamentResourceIntoOutPointer = ffi - .Pointer>; -typedef LoadFilamentResourceIntoOutPointerFunction = ffi.Void Function( - ffi.Pointer uri, ffi.Pointer out); -typedef DartLoadFilamentResourceIntoOutPointerFunction = void Function( - ffi.Pointer uri, ffi.Pointer out); -typedef _ManipulatorMode = ffi.Int32; -typedef Dart_ManipulatorMode = int; -typedef FilamentRenderCallback - = ffi.Pointer>; -typedef FilamentRenderCallbackFunction = ffi.Void Function( - ffi.Pointer owner); -typedef DartFilamentRenderCallbackFunction = void Function( - ffi.Pointer owner); - -/// This header replicates most of the methods in ThermionDartApi.h. -/// It represents the interface for: -/// - invoking those methods that must be called on the main Filament engine thread -/// - setting up a render loop -typedef EntityId = ffi.Int32; -typedef DartEntityId = int; - -const int __bool_true_false_are_defined = 1; - -const int true1 = 1; - -const int false1 = 0; diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/allocator.dart b/thermion_dart/lib/thermion_dart/compatibility/web/ffi/allocator.dart deleted file mode 100644 index 41d8f6d8..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/allocator.dart +++ /dev/null @@ -1,238 +0,0 @@ -import 'dart:ffi'; -export "allocator.dart"; -export "thermion_dart.g.dart"; - -import 'dart:convert'; -import 'dart:ffi' as ffi hide Uint8Pointer, FloatPointer; -import 'dart:typed_data'; - -import 'package:thermion_dart/thermion_dart/compatibility/web/ffi/thermion_dart.g.dart'; - -import 'package:ffi/ffi.dart'; -export 'package:ffi/ffi.dart' hide StringUtf8Pointer, Utf8Pointer; -export 'dart:ffi' - hide - Uint8Pointer, - FloatPointer, - DoublePointer, - Int32Pointer, - Int64Pointer, - PointerPointer, - Allocator; - -class Allocator implements ffi.Allocator { - const Allocator(); - @override - ffi.Pointer allocate(int byteCount, - {int? alignment}) { - return thermion_flutter_web_allocate(byteCount).cast(); - } - - @override - void free(ffi.Pointer pointer) { - thermion_flutter_web_free(pointer.cast()); - } -} - -extension CharPointer on ffi.Pointer { - int get value { - return thermion_flutter_web_get(this, 0); - } - - set value(int value) { - thermion_flutter_web_set(this, 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension IntPointer on ffi.Pointer { - int get value { - return thermion_flutter_web_get_int32(this.cast(), 0); - } - - set value(int value) { - thermion_flutter_web_set_int32(this.cast(), 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension Int32Pointer on ffi.Pointer { - int get value { - return thermion_flutter_web_get_int32(this, 0); - } - - set value(int value) { - thermion_flutter_web_set_int32(this, 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension UInt8Pointer on ffi.Pointer { - int get value { - return thermion_flutter_web_get(this.cast(), 0); - } - - set value(int value) { - thermion_flutter_web_set(this.cast(), 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension PointerPointer - on ffi.Pointer> { - ffi.Pointer get value { - return thermion_flutter_web_get_pointer(cast>(), 0) - .cast(); - } - - set value(ffi.Pointer value) { - thermion_flutter_web_set_pointer( - cast>(), 0, value.cast()); - } - - - ffi.Pointer operator [](int index) { - return this.elementAt(index).value; - } - - void operator []=(int index, ffi.Pointer value) { - this.elementAt(index).value = value; - } - - ffi.Pointer> elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension FloatPointer on ffi.Pointer { - double get value { - return thermion_flutter_web_get_float(this, 0); - } - - set value(double value) { - thermion_flutter_web_set_float(this, 0, value); - } - - double operator [](int index) { - return this.elementAt(index).value; - } - - void operator []=(int index, double value) { - this.elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); - - Float32List asTypedList(int length) { - var list = Float32List(length); - - for (int i = 0; i < length; i++) { - list[i] = this[i]; - } - return list; - } -} - -extension StringConversion on String { - ffi.Pointer toNativeUtf8({ffi.Allocator? allocator}) { - final units = utf8.encode(this); - final ffi.Pointer result = - allocator!(units.length + 1); - for (int i = 0; i < units.length; i++) { - result.elementAt(i).value = units[i]; - } - result.elementAt(units.length).value = 0; - return result.cast(); - } -} - -extension StringUtf8Pointer on ffi.Pointer { - static int _length(ffi.Pointer codeUnits) { - var length = 0; - while (codeUnits[length] != 0) { - length++; - } - return length; - } - - String toDartString({int? length}) { - final codeUnits = this.cast(); - final list = []; - - if (length != null) { - RangeError.checkNotNegative(length, 'length'); - } else { - length = _length(codeUnits); - } - for (int i = 0; i < length; i++) { - list.add(codeUnits.elementAt(i).value); - } - return utf8.decode(list); - } -} - -extension DoublePointer on ffi.Pointer { - double get value { - return thermion_flutter_web_get_double(this, 0); - } - - set value(double value) { - return thermion_flutter_web_set_double(this, 0, value); - } - - Float64List asTypedList(int length) { - var list = Float64List(length); - - for (int i = 0; i < length; i++) { - list[i] = elementAt(i).value; - } - return list; - } - - double operator [](int index) { - return elementAt(index).value; - } - - void operator []=(int index, double value) { - elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/compatibility_ffi.dart b/thermion_dart/lib/thermion_dart/compatibility/web/ffi/compatibility_ffi.dart deleted file mode 100644 index e9242cc2..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/compatibility_ffi.dart +++ /dev/null @@ -1,118 +0,0 @@ -import 'dart:async'; -import 'dart:js_interop'; -import 'package:thermion_dart/thermion_dart/compatibility/web/ffi/interop.dart'; - -import "allocator.dart"; - -export "allocator.dart"; -export "thermion_dart.g.dart"; - -export 'package:ffi/ffi.dart' hide StringUtf8Pointer, Utf8Pointer; -export 'dart:ffi' - hide - Uint8Pointer, - FloatPointer, - DoublePointer, - Int32Pointer, - Int64Pointer, - PointerPointer, - Allocator; - -const allocator = Allocator(); - -@AbiSpecificIntegerMapping({ - Abi.androidArm: Uint8(), - Abi.androidArm64: Uint8(), - Abi.androidIA32: Int8(), - Abi.androidX64: Int8(), - Abi.androidRiscv64: Uint8(), - Abi.fuchsiaArm64: Uint8(), - Abi.fuchsiaX64: Int8(), - Abi.fuchsiaRiscv64: Uint8(), - Abi.iosArm: Int8(), - Abi.iosArm64: Int8(), - Abi.iosX64: Int8(), - Abi.linuxArm: Uint8(), - Abi.linuxArm64: Uint8(), - Abi.linuxIA32: Int8(), - Abi.linuxX64: Int8(), - Abi.linuxRiscv32: Uint8(), - Abi.linuxRiscv64: Uint8(), - Abi.macosArm64: Int8(), - Abi.macosX64: Int8(), - Abi.windowsArm64: Int8(), - Abi.windowsIA32: Int8(), - Abi.windowsX64: Int8(), -}) -final class FooChar extends AbiSpecificInteger { - const FooChar(); -} - -class Compatibility { - final _foo = FooChar(); -} - -Future withVoidCallback( - Function(Pointer>) func) async { - JSArray retVal = createVoidCallback(); - var promise = retVal.toDart[0] as JSPromise; - var fnPtrAddress = retVal.toDart[1] as JSNumber; - var fnPtr = Pointer>.fromAddress( - fnPtrAddress.toDartInt); - func(fnPtr); - await promise.toDart; -} - -Future withVoidPointerCallback( - void Function(Pointer)>>) - func) async { - JSArray retVal = createVoidPointerCallback(); - var promise = retVal.toDart[0] as JSPromise; - - var fnPtrAddress = retVal.toDart[1] as JSNumber; - var fnPtr = Pointer)>>.fromAddress( - fnPtrAddress.toDartInt); - func(fnPtr); - final addr = await promise.toDart; - return addr.toDartInt; -} - -Future withBoolCallback( - Function(Pointer>) func) async { - JSArray retVal = createBoolCallback(); - var promise = retVal.toDart[0] as JSPromise; - - var fnPtrAddress = retVal.toDart[1] as JSNumber; - var fnPtr = Pointer>.fromAddress( - fnPtrAddress.toDartInt); - func(fnPtr); - final addr = await promise.toDart; - return addr.toDart; -} - -Future withIntCallback( - Function(Pointer>) func) async { - JSArray retVal = createBoolCallback(); - var promise = retVal.toDart[0] as JSPromise; - - var fnPtrAddress = retVal.toDart[1] as JSNumber; - var fnPtr = Pointer>.fromAddress( - fnPtrAddress.toDartInt); - func(fnPtr); - final addr = await promise.toDart; - return addr.toDartInt; -} - -Future withCharPtrCallback( - Function(Pointer)>>) - func) async { - JSArray retVal = createVoidPointerCallback(); - var promise = retVal.toDart[0] as JSPromise; - - var fnPtrAddress = retVal.toDart[1] as JSNumber; - var fnPtr = Pointer)>>.fromAddress( - fnPtrAddress.toDartInt); - func(fnPtr); - final addr = await promise.toDart; - return Pointer.fromAddress(addr.toDartInt).toDartString(); -} diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/interop.dart b/thermion_dart/lib/thermion_dart/compatibility/web/ffi/interop.dart deleted file mode 100644 index 4773d252..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/interop.dart +++ /dev/null @@ -1,16 +0,0 @@ -import 'dart:js_interop'; - -@JS() -external JSArray createIntCallback(); - -@JS() -external JSArray createBoolCallback(); - -@JS() -external JSArray createVoidPointerCallback(); - -@JS() -external JSArray createVoidCallback(); - - - diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/thermion_dart.g.dart b/thermion_dart/lib/thermion_dart/compatibility/web/ffi/thermion_dart.g.dart deleted file mode 100644 index c1bf6de3..00000000 --- a/thermion_dart/lib/thermion_dart/compatibility/web/ffi/thermion_dart.g.dart +++ /dev/null @@ -1,1792 +0,0 @@ -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -import 'dart:ffi' as ffi; - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Int32, ffi.Pointer)>( - symbol: '_thermion_flutter_web_load_resource_callback', - assetId: 'thermion_dart') -external void thermion_flutter_web_load_resource_callback( - ffi.Pointer data, - int length, - ffi.Pointer context, -); - -@ffi.Native, ffi.Int32)>( - symbol: '_thermion_flutter_web_get', assetId: 'thermion_dart') -external int thermion_flutter_web_get( - ffi.Pointer ptr, - int offset, -); - -@ffi.Native, ffi.Int32)>( - symbol: '_thermion_flutter_web_get_float', assetId: 'thermion_dart') -external double thermion_flutter_web_get_float( - ffi.Pointer ptr, - int offset, -); - -@ffi.Native, ffi.Int32)>( - symbol: '_thermion_flutter_web_get_double', assetId: 'thermion_dart') -external double thermion_flutter_web_get_double( - ffi.Pointer ptr, - int offset, -); - -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer>, ffi.Int32)>( - symbol: '_thermion_flutter_web_get_pointer', assetId: 'thermion_dart') -external ffi.Pointer thermion_flutter_web_get_pointer( - ffi.Pointer> ptr, - int offset, -); - -@ffi.Native, ffi.Int32, ffi.Int32)>( - symbol: '_thermion_flutter_web_set', assetId: 'thermion_dart') -external void thermion_flutter_web_set( - ffi.Pointer ptr, - int offset, - int val, -); - -@ffi.Native, ffi.Int32, ffi.Float)>( - symbol: '_thermion_flutter_web_set_float', assetId: 'thermion_dart') -external void thermion_flutter_web_set_float( - ffi.Pointer ptr, - int offset, - double val, -); - -@ffi.Native, ffi.Int32, ffi.Double)>( - symbol: '_thermion_flutter_web_set_double', assetId: 'thermion_dart') -external void thermion_flutter_web_set_double( - ffi.Pointer ptr, - int offset, - double val, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer>, ffi.Int32, - ffi.Pointer)>( - symbol: '_thermion_flutter_web_set_pointer', assetId: 'thermion_dart') -external void thermion_flutter_web_set_pointer( - ffi.Pointer> ptr, - int offset, - ffi.Pointer val, -); - -@ffi.Native, ffi.Int32)>( - symbol: '_thermion_flutter_web_get_int32', assetId: 'thermion_dart') -external int thermion_flutter_web_get_int32( - ffi.Pointer ptr, - int offset, -); - -@ffi.Native, ffi.Int32, ffi.Int32)>( - symbol: '_thermion_flutter_web_set_int32', assetId: 'thermion_dart') -external void thermion_flutter_web_set_int32( - ffi.Pointer ptr, - int offset, - int value, -); - -@ffi.Native>)>( - symbol: '_thermion_flutter_web_get_address', assetId: 'thermion_dart') -external int thermion_flutter_web_get_address( - ffi.Pointer> out, -); - -@ffi.Native Function(ffi.Int32)>( - symbol: '_thermion_flutter_web_allocate', assetId: 'thermion_dart') -external ffi.Pointer thermion_flutter_web_allocate( - int size, -); - -@ffi.Native)>( - symbol: '_thermion_flutter_web_free', assetId: 'thermion_dart') -external void thermion_flutter_web_free( - ffi.Pointer ptr, -); - -@ffi.Native( - symbol: '_thermion_dart_web_create_gl_context', assetId: 'thermion_dart') -external int thermion_dart_web_create_gl_context(); - -@ffi.Native Function()>( - symbol: '_thermion_dart_web_get_resource_loader_wrapper', - assetId: 'thermion_dart') -external ffi.Pointer thermion_dart_web_get_resource_loader_wrapper(); - -@ffi.Native< - ffi.Pointer Function(LoadFilamentResourceFromOwner, - FreeFilamentResourceFromOwner, ffi.Pointer)>( - symbol: '_make_resource_loader', assetId: 'thermion_dart') -external ffi.Pointer make_resource_loader( - LoadFilamentResourceFromOwner loadFn, - FreeFilamentResourceFromOwner freeFn, - ffi.Pointer owner, -); - -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - symbol: '_create_filament_viewer', assetId: 'thermion_dart') -external ffi.Pointer create_filament_viewer( - ffi.Pointer context, - ffi.Pointer loader, - ffi.Pointer platform, - ffi.Pointer uberArchivePath, -); - -@ffi.Native)>( - symbol: '_destroy_filament_viewer', assetId: 'thermion_dart') -external void destroy_filament_viewer( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_scene_manager', assetId: 'thermion_dart') -external ffi.Pointer get_scene_manager( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, - ffi.Uint32)>(symbol: '_create_render_target', assetId: 'thermion_dart') -external void create_render_target( - ffi.Pointer viewer, - int texture, - int width, - int height, -); - -@ffi.Native)>( - symbol: '_clear_background_image', assetId: 'thermion_dart') -external void clear_background_image( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>(symbol: '_set_background_image', assetId: 'thermion_dart') -external void set_background_image( - ffi.Pointer viewer, - ffi.Pointer path, - bool fillHeight, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: '_set_background_image_position', assetId: 'thermion_dart') -external void set_background_image_position( - ffi.Pointer viewer, - double x, - double y, - bool clamp, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_set_background_color', assetId: 'thermion_dart') -external void set_background_color( - ffi.Pointer viewer, - double r, - double g, - double b, - double a, -); - -@ffi.Native, ffi.Int)>( - symbol: '_set_tone_mapping', assetId: 'thermion_dart') -external void set_tone_mapping( - ffi.Pointer viewer, - int toneMapping, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_bloom', assetId: 'thermion_dart') -external void set_bloom( - ffi.Pointer viewer, - double strength, -); - -@ffi.Native, ffi.Pointer)>( - symbol: '_load_skybox', assetId: 'thermion_dart') -external void load_skybox( - ffi.Pointer viewer, - ffi.Pointer skyboxPath, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float)>(symbol: '_load_ibl', assetId: 'thermion_dart') -external void load_ibl( - ffi.Pointer viewer, - ffi.Pointer iblPath, - double intensity, -); - -@ffi.Native, ffi.Pointer)>( - symbol: '_rotate_ibl', assetId: 'thermion_dart') -external void rotate_ibl( - ffi.Pointer viewer, - ffi.Pointer rotationMatrix, -); - -@ffi.Native)>( - symbol: '_remove_skybox', assetId: 'thermion_dart') -external void remove_skybox( - ffi.Pointer viewer, -); - -@ffi.Native)>( - symbol: '_remove_ibl', assetId: 'thermion_dart') -external void remove_ibl( - ffi.Pointer viewer, -); - -@ffi.Native< - EntityId Function( - ffi.Pointer, - ffi.Uint8, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool)>(symbol: '_add_light', assetId: 'thermion_dart') -external int add_light( - ffi.Pointer viewer, - int type, - double colour, - double intensity, - double posX, - double posY, - double posZ, - double dirX, - double dirY, - double dirZ, - double falloffRadius, - double spotLightConeInner, - double spotLightConeOuter, - double sunAngularRadius, - double sunHaloSize, - double sunHaloFallof, - bool shadows, -); - -@ffi.Native, EntityId)>( - symbol: '_remove_light', assetId: 'thermion_dart') -external void remove_light( - ffi.Pointer viewer, - int entityId, -); - -@ffi.Native)>( - symbol: '_clear_lights', assetId: 'thermion_dart') -external void clear_lights( - ffi.Pointer viewer, -); - -@ffi.Native< - EntityId Function(ffi.Pointer, ffi.Pointer, - ffi.Int)>(symbol: '_load_glb', assetId: 'thermion_dart') -external int load_glb( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - int numInstances, -); - -@ffi.Native< - EntityId Function(ffi.Pointer, ffi.Pointer, - ffi.Size)>(symbol: '_load_glb_from_buffer', assetId: 'thermion_dart') -external int load_glb_from_buffer( - ffi.Pointer sceneManager, - ffi.Pointer data, - int length, -); - -@ffi.Native< - EntityId Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(symbol: '_load_gltf', assetId: 'thermion_dart') -external int load_gltf( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - ffi.Pointer relativePath, -); - -@ffi.Native, EntityId)>( - symbol: '_create_instance', assetId: 'thermion_dart') -external int create_instance( - ffi.Pointer sceneManager, - int id, -); - -@ffi.Native, EntityId)>( - symbol: '_get_instance_count', assetId: 'thermion_dart') -external int get_instance_count( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: '_get_instances', assetId: 'thermion_dart') -external void get_instances( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer out, -); - -@ffi.Native)>( - symbol: '_set_main_camera', assetId: 'thermion_dart') -external void set_main_camera( - ffi.Pointer viewer, -); - -@ffi.Native)>( - symbol: '_get_main_camera', assetId: 'thermion_dart') -external int get_main_camera( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, EntityId, - ffi.Pointer)>(symbol: '_set_camera', assetId: 'thermion_dart') -external bool set_camera( - ffi.Pointer viewer, - int entity, - ffi.Pointer nodeName, -); - -@ffi.Native, ffi.Bool)>( - symbol: '_set_view_frustum_culling', assetId: 'thermion_dart') -external void set_view_frustum_culling( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Uint64, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer buf, ffi.Size size, - ffi.Pointer data)>>, - ffi.Pointer)>(symbol: '_render', assetId: 'thermion_dart') -external void render( - ffi.Pointer viewer, - int frameTimeInNanos, - ffi.Pointer pixelBuffer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer buf, ffi.Size size, - ffi.Pointer data)>> - callback, - ffi.Pointer data, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Uint32, - ffi.Uint32)>(symbol: '_create_swap_chain', assetId: 'thermion_dart') -external void create_swap_chain( - ffi.Pointer viewer, - ffi.Pointer window, - int width, - int height, -); - -@ffi.Native)>( - symbol: '_destroy_swap_chain', assetId: 'thermion_dart') -external void destroy_swap_chain( - ffi.Pointer viewer, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_frame_interval', assetId: 'thermion_dart') -external void set_frame_interval( - ffi.Pointer viewer, - double interval, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Uint32, ffi.Uint32, ffi.Float)>( - symbol: '_update_viewport_and_camera_projection', assetId: 'thermion_dart') -external void update_viewport_and_camera_projection( - ffi.Pointer viewer, - int width, - int height, - double scaleFactor, -); - -@ffi.Native)>( - symbol: '_scroll_begin', assetId: 'thermion_dart') -external void scroll_begin( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_scroll_update', assetId: 'thermion_dart') -external void scroll_update( - ffi.Pointer viewer, - double x, - double y, - double z, -); - -@ffi.Native)>( - symbol: '_scroll_end', assetId: 'thermion_dart') -external void scroll_end( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, - ffi.Bool)>(symbol: '_grab_begin', assetId: 'thermion_dart') -external void grab_begin( - ffi.Pointer viewer, - double x, - double y, - bool pan, -); - -@ffi.Native, ffi.Float, ffi.Float)>( - symbol: '_grab_update', assetId: 'thermion_dart') -external void grab_update( - ffi.Pointer viewer, - double x, - double y, -); - -@ffi.Native)>( - symbol: '_grab_end', assetId: 'thermion_dart') -external void grab_end( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Pointer, - ffi.Int)>(symbol: '_apply_weights', assetId: 'thermion_dart') -external void apply_weights( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer entityName, - ffi.Pointer weights, - int count, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer, - ffi.Int)>(symbol: '_set_morph_target_weights', assetId: 'thermion_dart') -external bool set_morph_target_weights( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer morphData, - int numWeights, -); - -@ffi.Native< - ffi.Bool Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Float)>(symbol: '_set_morph_animation', assetId: 'thermion_dart') -external bool set_morph_animation( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer morphData, - ffi.Pointer morphIndices, - int numMorphTargets, - int numFrames, - double frameLengthInMs, -); - -@ffi.Native, EntityId)>( - symbol: '_reset_to_rest_pose', assetId: 'thermion_dart') -external void reset_to_rest_pose( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float)>(symbol: '_add_bone_animation', assetId: 'thermion_dart') -external void add_bone_animation( - ffi.Pointer sceneManager, - int entity, - int skinIndex, - int boneIndex, - ffi.Pointer frameData, - int numFrames, - double frameLengthInMs, - double fadeOutInSecs, - double fadeInInSecs, - double maxDelta, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: '_get_local_transform', assetId: 'thermion_dart') -external void get_local_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer arg2, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Int, - ffi.Pointer, - ffi.Int)>(symbol: '_get_rest_local_transforms', assetId: 'thermion_dart') -external void get_rest_local_transforms( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - ffi.Pointer out, - int numBones, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: '_get_world_transform', assetId: 'thermion_dart') -external void get_world_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer arg2, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int, - ffi.Pointer)>( - symbol: '_get_inverse_bind_matrix', assetId: 'thermion_dart') -external void get_inverse_bind_matrix( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - int boneIndex, - ffi.Pointer arg4, -); - -@ffi.Native< - ffi.Bool Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int, - ffi.Pointer)>( - symbol: '_set_bone_transform', assetId: 'thermion_dart') -external bool set_bone_transform( - ffi.Pointer sceneManager, - int entity, - int skinIndex, - int boneIndex, - ffi.Pointer transform, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Int, - ffi.Bool, - ffi.Bool, - ffi.Bool, - ffi.Float)>(symbol: '_play_animation', assetId: 'thermion_dart') -external void play_animation( - ffi.Pointer sceneManager, - int entity, - int index, - bool loop, - bool reverse, - bool replaceActive, - double crossfade, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>( - symbol: '_set_animation_frame', assetId: 'thermion_dart') -external void set_animation_frame( - ffi.Pointer sceneManager, - int entity, - int animationIndex, - int animationFrame, -); - -@ffi.Native, EntityId, ffi.Int)>( - symbol: '_stop_animation', assetId: 'thermion_dart') -external void stop_animation( - ffi.Pointer sceneManager, - int entity, - int index, -); - -@ffi.Native, EntityId)>( - symbol: '_get_animation_count', assetId: 'thermion_dart') -external int get_animation_count( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, - ffi.Int)>(symbol: '_get_animation_name', assetId: 'thermion_dart') -external void get_animation_name( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer outPtr, - int index, -); - -@ffi.Native, EntityId, ffi.Int)>( - symbol: '_get_animation_duration', assetId: 'thermion_dart') -external double get_animation_duration( - ffi.Pointer sceneManager, - int entity, - int index, -); - -@ffi.Native, EntityId, ffi.Int)>( - symbol: '_get_bone_count', assetId: 'thermion_dart') -external int get_bone_count( - ffi.Pointer sceneManager, - int assetEntity, - int skinIndex, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer>, - ffi.Int)>(symbol: '_get_bone_names', assetId: 'thermion_dart') -external void get_bone_names( - ffi.Pointer sceneManager, - int assetEntity, - ffi.Pointer> outPtr, - int skinIndex, -); - -@ffi.Native< - EntityId Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>( - symbol: '_get_bone', assetId: 'thermion_dart') -external int get_bone( - ffi.Pointer sceneManager, - int entityId, - int skinIndex, - int boneIndex, -); - -@ffi.Native< - ffi.Bool Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: '_set_transform', assetId: 'thermion_dart') -external bool set_transform( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer transform, -); - -@ffi.Native, EntityId)>( - symbol: '_update_bone_matrices', assetId: 'thermion_dart') -external bool update_bone_matrices( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - EntityId, - ffi.Pointer, - ffi.Int)>(symbol: '_get_morph_target_name', assetId: 'thermion_dart') -external void get_morph_target_name( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, - ffi.Pointer outPtr, - int index, -); - -@ffi.Native, EntityId, EntityId)>( - symbol: '_get_morph_target_name_count', assetId: 'thermion_dart') -external int get_morph_target_name_count( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, -); - -@ffi.Native, EntityId)>( - symbol: '_remove_entity', assetId: 'thermion_dart') -external void remove_entity( - ffi.Pointer viewer, - int asset, -); - -@ffi.Native)>( - symbol: '_clear_entities', assetId: 'thermion_dart') -external void clear_entities( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Bool Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float)>(symbol: '_set_material_color', assetId: 'thermion_dart') -external bool set_material_color( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, - int materialIndex, - double r, - double g, - double b, - double a, -); - -@ffi.Native, EntityId)>( - symbol: '_transform_to_unit_cube', assetId: 'thermion_dart') -external void transform_to_unit_cube( - ffi.Pointer sceneManager, - int asset, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool)>(symbol: '_queue_position_update', assetId: 'thermion_dart') -external void queue_position_update( - ffi.Pointer sceneManager, - int entity, - double x, - double y, - double z, - bool relative, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool)>(symbol: '_queue_rotation_update', assetId: 'thermion_dart') -external void queue_rotation_update( - ffi.Pointer sceneManager, - int entity, - double rads, - double x, - double y, - double z, - double w, - bool relative, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_set_position', assetId: 'thermion_dart') -external void set_position( - ffi.Pointer sceneManager, - int entity, - double x, - double y, - double z, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float)>(symbol: '_set_rotation', assetId: 'thermion_dart') -external void set_rotation( - ffi.Pointer sceneManager, - int entity, - double rads, - double x, - double y, - double z, - double w, -); - -@ffi.Native, EntityId, ffi.Float)>( - symbol: '_set_scale', assetId: 'thermion_dart') -external void set_scale( - ffi.Pointer sceneManager, - int entity, - double scale, -); - -@ffi.Native, EntityId)>( - symbol: '_move_camera_to_asset', assetId: 'thermion_dart') -external void move_camera_to_asset( - ffi.Pointer viewer, - int asset, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_set_camera_exposure', assetId: 'thermion_dart') -external void set_camera_exposure( - ffi.Pointer viewer, - double aperture, - double shutterSpeed, - double sensitivity, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_set_camera_position', assetId: 'thermion_dart') -external void set_camera_position( - ffi.Pointer viewer, - double x, - double y, - double z, -); - -@ffi.Native)>( - symbol: '_get_camera_position', assetId: 'thermion_dart') -external void get_camera_position( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, - ffi.Float)>(symbol: '_set_camera_rotation', assetId: 'thermion_dart') -external void set_camera_rotation( - ffi.Pointer viewer, - double w, - double x, - double y, - double z, -); - -@ffi.Native, ffi.Pointer)>( - symbol: '_set_camera_model_matrix', assetId: 'thermion_dart') -external void set_camera_model_matrix( - ffi.Pointer viewer, - ffi.Pointer matrix, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_camera_model_matrix', assetId: 'thermion_dart') -external ffi.Pointer get_camera_model_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_camera_view_matrix', assetId: 'thermion_dart') -external ffi.Pointer get_camera_view_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_camera_projection_matrix', assetId: 'thermion_dart') -external ffi.Pointer get_camera_projection_matrix( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Double)>( - symbol: '_set_camera_projection_matrix', assetId: 'thermion_dart') -external void set_camera_projection_matrix( - ffi.Pointer viewer, - ffi.Pointer matrix, - double near, - double far, -); - -@ffi.Native, ffi.Double, ffi.Double)>( - symbol: '_set_camera_culling', assetId: 'thermion_dart') -external void set_camera_culling( - ffi.Pointer viewer, - double near, - double far, -); - -@ffi.Native)>( - symbol: '_get_camera_culling_near', assetId: 'thermion_dart') -external double get_camera_culling_near( - ffi.Pointer viewer, -); - -@ffi.Native)>( - symbol: '_get_camera_culling_far', assetId: 'thermion_dart') -external double get_camera_culling_far( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_camera_culling_projection_matrix', assetId: 'thermion_dart') -external ffi.Pointer get_camera_culling_projection_matrix( - ffi.Pointer viewer, -); - -@ffi.Native Function(ffi.Pointer)>( - symbol: '_get_camera_frustum', assetId: 'thermion_dart') -external ffi.Pointer get_camera_frustum( - ffi.Pointer viewer, -); - -@ffi.Native, ffi.Float, ffi.Float)>( - symbol: '_set_camera_fov', assetId: 'thermion_dart') -external void set_camera_fov( - ffi.Pointer viewer, - double fovInDegrees, - double aspect, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_camera_focal_length', assetId: 'thermion_dart') -external void set_camera_focal_length( - ffi.Pointer viewer, - double focalLength, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_camera_focus_distance', assetId: 'thermion_dart') -external void set_camera_focus_distance( - ffi.Pointer viewer, - double focusDistance, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, _ManipulatorMode, ffi.Double, - ffi.Double, ffi.Double)>( - symbol: '_set_camera_manipulator_options', assetId: 'thermion_dart') -external void set_camera_manipulator_options( - ffi.Pointer viewer, - int mode, - double orbitSpeedX, - double orbitSpeedY, - double zoomSpeed, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, EntityId, - ffi.Pointer)>(symbol: '_hide_mesh', assetId: 'thermion_dart') -external int hide_mesh( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, -); - -@ffi.Native< - ffi.Int Function(ffi.Pointer, EntityId, - ffi.Pointer)>(symbol: '_reveal_mesh', assetId: 'thermion_dart') -external int reveal_mesh( - ffi.Pointer sceneManager, - int entity, - ffi.Pointer meshName, -); - -@ffi.Native, ffi.Bool)>( - symbol: '_set_post_processing', assetId: 'thermion_dart') -external void set_post_processing( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Bool, ffi.Bool, ffi.Bool)>( - symbol: '_set_antialiasing', assetId: 'thermion_dart') -external void set_antialiasing( - ffi.Pointer viewer, - bool msaa, - bool fxaa, - bool taa, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - EntityId entityId, ffi.Int x, ffi.Int y)>>)>( - symbol: '_filament_pick', assetId: 'thermion_dart') -external void filament_pick( - ffi.Pointer viewer, - int x, - int y, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(EntityId entityId, ffi.Int x, ffi.Int y)>> - callback, -); - -@ffi.Native Function(ffi.Pointer, EntityId)>( - symbol: '_get_name_for_entity', assetId: 'thermion_dart') -external ffi.Pointer get_name_for_entity( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - EntityId Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: '_find_child_entity_by_name', assetId: 'thermion_dart') -external int find_child_entity_by_name( - ffi.Pointer sceneManager, - int parent, - ffi.Pointer name, -); - -@ffi.Native, EntityId, ffi.Bool)>( - symbol: '_get_entity_count', assetId: 'thermion_dart') -external int get_entity_count( - ffi.Pointer sceneManager, - int target, - bool renderableOnly, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Bool, ffi.Pointer)>( - symbol: '_get_entities', assetId: 'thermion_dart') -external void get_entities( - ffi.Pointer sceneManager, - int target, - bool renderableOnly, - ffi.Pointer out, -); - -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, EntityId, ffi.Int, - ffi.Bool)>(symbol: '_get_entity_name_at', assetId: 'thermion_dart') -external ffi.Pointer get_entity_name_at( - ffi.Pointer sceneManager, - int target, - int index, - bool renderableOnly, -); - -@ffi.Native, ffi.Bool)>( - symbol: '_set_recording', assetId: 'thermion_dart') -external void set_recording( - ffi.Pointer viewer, - bool recording, -); - -@ffi.Native, ffi.Pointer)>( - symbol: '_set_recording_output_directory', assetId: 'thermion_dart') -external void set_recording_output_directory( - ffi.Pointer viewer, - ffi.Pointer outputDirectory, -); - -@ffi.Native(symbol: '_ios_dummy', assetId: 'thermion_dart') -external void ios_dummy(); - -@ffi.Native)>( - symbol: '_thermion_flutter_free', assetId: 'thermion_dart') -external void thermion_flutter_free( - ffi.Pointer ptr, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(EntityId entityId1, EntityId entityId2)>>, - ffi.Bool)>(symbol: '_add_collision_component', assetId: 'thermion_dart') -external void add_collision_component( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(EntityId entityId1, EntityId entityId2)>> - callback, - bool affectsCollidingTransform, -); - -@ffi.Native, EntityId)>( - symbol: '_remove_collision_component', assetId: 'thermion_dart') -external void remove_collision_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native, EntityId)>( - symbol: '_add_animation_component', assetId: 'thermion_dart') -external bool add_animation_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native, EntityId)>( - symbol: '_remove_animation_component', assetId: 'thermion_dart') -external void remove_animation_component( - ffi.Pointer sceneManager, - int entityId, -); - -@ffi.Native< - EntityId Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Pointer)>( - symbol: '_create_geometry', assetId: 'thermion_dart') -external int create_geometry( - ffi.Pointer viewer, - ffi.Pointer vertices, - int numVertices, - ffi.Pointer indices, - int numIndices, - int primitiveType, - ffi.Pointer materialPath, -); - -@ffi.Native, EntityId)>( - symbol: '_get_parent', assetId: 'thermion_dart') -external int get_parent( - ffi.Pointer sceneManager, - int child, -); - -@ffi.Native, EntityId, EntityId)>( - symbol: '_set_parent', assetId: 'thermion_dart') -external void set_parent( - ffi.Pointer sceneManager, - int child, - int parent, -); - -@ffi.Native, EntityId)>( - symbol: '_test_collisions', assetId: 'thermion_dart') -external void test_collisions( - ffi.Pointer sceneManager, - int entity, -); - -@ffi.Native, EntityId, ffi.Int)>( - symbol: '_set_priority', assetId: 'thermion_dart') -external void set_priority( - ffi.Pointer sceneManager, - int entityId, - int priority, -); - -@ffi.Native, ffi.Pointer)>( - symbol: '_get_gizmo', assetId: 'thermion_dart') -external void get_gizmo( - ffi.Pointer sceneManager, - ffi.Pointer out, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi - .Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer renderCallbackOwner)>>, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer viewer)>>)>( - symbol: '_create_filament_viewer_ffi', assetId: 'thermion_dart') -external void create_filament_viewer_ffi( - ffi.Pointer context, - ffi.Pointer platform, - ffi.Pointer uberArchivePath, - ffi.Pointer loader, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer renderCallbackOwner)>> - renderCallback, - ffi.Pointer renderCallbackOwner, - ffi.Pointer< - ffi.NativeFunction viewer)>> - callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Uint32, - ffi.Uint32, - ffi.Pointer>)>( - symbol: '_create_swap_chain_ffi', assetId: 'thermion_dart') -external void create_swap_chain_ffi( - ffi.Pointer viewer, - ffi.Pointer surface, - int width, - int height, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, - ffi.Pointer>)>( - symbol: '_destroy_swap_chain_ffi', assetId: 'thermion_dart') -external void destroy_swap_chain_ffi( - ffi.Pointer viewer, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, - ffi.Uint32, ffi.Pointer>)>( - symbol: '_create_render_target_ffi', assetId: 'thermion_dart') -external void create_render_target_ffi( - ffi.Pointer viewer, - int nativeTextureId, - int width, - int height, - ffi.Pointer> onComplete, -); - -@ffi.Native)>( - symbol: '_destroy_filament_viewer_ffi', assetId: 'thermion_dart') -external void destroy_filament_viewer_ffi( - ffi.Pointer viewer, -); - -@ffi.Native)>( - symbol: '_render_ffi', assetId: 'thermion_dart') -external void render_ffi( - ffi.Pointer viewer, -); - -@ffi.Native( - symbol: '_make_render_callback_fn_pointer', assetId: 'thermion_dart') -external FilamentRenderCallback make_render_callback_fn_pointer( - FilamentRenderCallback arg0, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Bool, - ffi.Pointer>)>( - symbol: '_set_rendering_ffi', assetId: 'thermion_dart') -external void set_rendering_ffi( - ffi.Pointer viewer, - bool rendering, - ffi.Pointer> onComplete, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_frame_interval_ffi', assetId: 'thermion_dart') -external void set_frame_interval_ffi( - ffi.Pointer viewer, - double frameInterval, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Uint32, ffi.Uint32, - ffi.Float, ffi.Pointer>)>( - symbol: '_update_viewport_and_camera_projection_ffi', - assetId: 'thermion_dart') -external void update_viewport_and_camera_projection_ffi( - ffi.Pointer viewer, - int width, - int height, - double scaleFactor, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>( - symbol: '_set_background_color_ffi', assetId: 'thermion_dart') -external void set_background_color_ffi( - ffi.Pointer viewer, - double r, - double g, - double b, - double a, -); - -@ffi.Native)>( - symbol: '_clear_background_image_ffi', assetId: 'thermion_dart') -external void clear_background_image_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool, ffi.Pointer>)>( - symbol: '_set_background_image_ffi', assetId: 'thermion_dart') -external void set_background_image_ffi( - ffi.Pointer viewer, - ffi.Pointer path, - bool fillHeight, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: '_set_background_image_position_ffi', assetId: 'thermion_dart') -external void set_background_image_position_ffi( - ffi.Pointer viewer, - double x, - double y, - bool clamp, -); - -@ffi.Native, ffi.Int)>( - symbol: '_set_tone_mapping_ffi', assetId: 'thermion_dart') -external void set_tone_mapping_ffi( - ffi.Pointer viewer, - int toneMapping, -); - -@ffi.Native, ffi.Float)>( - symbol: '_set_bloom_ffi', assetId: 'thermion_dart') -external void set_bloom_ffi( - ffi.Pointer viewer, - double strength, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>( - symbol: '_load_skybox_ffi', assetId: 'thermion_dart') -external void load_skybox_ffi( - ffi.Pointer viewer, - ffi.Pointer skyboxPath, - ffi.Pointer> onComplete, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float)>(symbol: '_load_ibl_ffi', assetId: 'thermion_dart') -external void load_ibl_ffi( - ffi.Pointer viewer, - ffi.Pointer iblPath, - double intensity, -); - -@ffi.Native)>( - symbol: '_remove_skybox_ffi', assetId: 'thermion_dart') -external void remove_skybox_ffi( - ffi.Pointer viewer, -); - -@ffi.Native)>( - symbol: '_remove_ibl_ffi', assetId: 'thermion_dart') -external void remove_ibl_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Uint8, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool, - ffi.Pointer>)>( - symbol: '_add_light_ffi', assetId: 'thermion_dart') -external void add_light_ffi( - ffi.Pointer viewer, - int type, - double colour, - double intensity, - double posX, - double posY, - double posZ, - double dirX, - double dirY, - double dirZ, - double falloffRadius, - double spotLightConeInner, - double spotLightConeOuter, - double sunAngularRadius, - double sunHaloSize, - double sunHaloFallof, - bool shadows, - ffi.Pointer> callback, -); - -@ffi.Native, EntityId)>( - symbol: '_remove_light_ffi', assetId: 'thermion_dart') -external void remove_light_ffi( - ffi.Pointer viewer, - int entityId, -); - -@ffi.Native)>( - symbol: '_clear_lights_ffi', assetId: 'thermion_dart') -external void clear_lights_ffi( - ffi.Pointer viewer, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Int, - ffi.Pointer>)>( - symbol: '_load_glb_ffi', assetId: 'thermion_dart') -external void load_glb_ffi( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - int numInstances, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Size, - ffi.Int, - ffi.Pointer>)>( - symbol: '_load_glb_from_buffer_ffi', assetId: 'thermion_dart') -external void load_glb_from_buffer_ffi( - ffi.Pointer sceneManager, - ffi.Pointer data, - int length, - int numInstances, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>( - symbol: '_load_gltf_ffi', assetId: 'thermion_dart') -external void load_gltf_ffi( - ffi.Pointer sceneManager, - ffi.Pointer assetPath, - ffi.Pointer relativePath, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>( - symbol: '_create_instance_ffi', assetId: 'thermion_dart') -external void create_instance_ffi( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>( - symbol: '_remove_entity_ffi', assetId: 'thermion_dart') -external void remove_entity_ffi( - ffi.Pointer viewer, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, - ffi.Pointer>)>( - symbol: '_clear_entities_ffi', assetId: 'thermion_dart') -external void clear_entities_ffi( - ffi.Pointer viewer, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Pointer>)>( - symbol: '_set_camera_ffi', assetId: 'thermion_dart') -external void set_camera_ffi( - ffi.Pointer viewer, - int asset, - ffi.Pointer nodeName, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Pointer, - ffi.Int)>(symbol: '_apply_weights_ffi', assetId: 'thermion_dart') -external void apply_weights_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer entityName, - ffi.Pointer weights, - int count, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>( - symbol: '_set_animation_frame_ffi', assetId: 'thermion_dart') -external void set_animation_frame_ffi( - ffi.Pointer sceneManager, - int asset, - int animationIndex, - int animationFrame, -); - -@ffi.Native, EntityId, ffi.Int)>( - symbol: '_stop_animation_ffi', assetId: 'thermion_dart') -external void stop_animation_ffi( - ffi.Pointer sceneManager, - int asset, - int index, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>( - symbol: '_get_animation_count_ffi', assetId: 'thermion_dart') -external void get_animation_count_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer>)>( - symbol: '_get_animation_name_ffi', assetId: 'thermion_dart') -external void get_animation_name_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer outPtr, - int index, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer>)>( - symbol: '_get_morph_target_name_ffi', assetId: 'thermion_dart') -external void get_morph_target_name_ffi( - ffi.Pointer sceneManager, - int assetEntity, - int childEntity, - ffi.Pointer outPtr, - int index, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, EntityId, - ffi.Pointer>)>( - symbol: '_get_morph_target_name_count_ffi', assetId: 'thermion_dart') -external void get_morph_target_name_count_ffi( - ffi.Pointer sceneManager, - int asset, - int childEntity, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer>)>( - symbol: '_set_morph_target_weights_ffi', assetId: 'thermion_dart') -external void set_morph_target_weights_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer morphData, - int numWeights, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>( - symbol: '_update_bone_matrices_ffi', assetId: 'thermion_dart') -external void update_bone_matrices_ffi( - ffi.Pointer sceneManager, - int asset, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer>)>( - symbol: '_set_bone_transform_ffi', assetId: 'thermion_dart') -external void set_bone_transform_ffi( - ffi.Pointer sceneManager, - int asset, - int skinIndex, - int boneIndex, - ffi.Pointer transform, - ffi.Pointer> callback, -); - -@ffi.Native, ffi.Bool)>( - symbol: '_set_post_processing_ffi', assetId: 'thermion_dart') -external void set_post_processing_ffi( - ffi.Pointer viewer, - bool enabled, -); - -@ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer>)>( - symbol: '_reset_to_rest_pose_ffi', assetId: 'thermion_dart') -external void reset_to_rest_pose_ffi( - ffi.Pointer sceneManager, - int entityId, - ffi.Pointer> callback, -); - -@ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Pointer, - ffi.Pointer>)>( - symbol: '_create_geometry_ffi', assetId: 'thermion_dart') -external void create_geometry_ffi( - ffi.Pointer viewer, - ffi.Pointer vertices, - int numVertices, - ffi.Pointer indices, - int numIndices, - int primitiveType, - ffi.Pointer materialPath, - ffi.Pointer> callback, -); - -typedef LoadFilamentResourceFromOwner - = ffi.Pointer>; -typedef LoadFilamentResourceFromOwnerFunction = ResourceBuffer Function( - ffi.Pointer, ffi.Pointer); - -final class ResourceBuffer extends ffi.Struct { - external ffi.Pointer data; - - @ffi.Int32() - external int size; - - @ffi.Int32() - external int id; -} - -typedef FreeFilamentResourceFromOwner - = ffi.Pointer>; -typedef FreeFilamentResourceFromOwnerFunction = ffi.Void Function( - ResourceBuffer, ffi.Pointer); -typedef DartFreeFilamentResourceFromOwnerFunction = void Function( - ResourceBuffer, ffi.Pointer); - -/// This header replicates most of the methods in ThermionDartApi.h. -/// It represents the interface for: -/// - invoking those methods that must be called on the main Filament engine thread -/// - setting up a render loop -typedef EntityId = ffi.Int32; -typedef DartEntityId = int; -typedef _ManipulatorMode = ffi.Int32; -typedef Dart_ManipulatorMode = int; -typedef FilamentRenderCallback - = ffi.Pointer>; -typedef FilamentRenderCallbackFunction = ffi.Void Function( - ffi.Pointer owner); -typedef ThermionDartRenderCallbackFunction = void Function( - ffi.Pointer owner); - -const int __bool_true_false_are_defined = 1; - -const int true1 = 1; - -const int false1 = 0; diff --git a/thermion_dart/lib/thermion_dart/entities/abstract_gizmo.dart b/thermion_dart/lib/thermion_dart/entities/abstract_gizmo.dart index b28b04f6..b5a722e7 100644 --- a/thermion_dart/lib/thermion_dart/entities/abstract_gizmo.dart +++ b/thermion_dart/lib/thermion_dart/entities/abstract_gizmo.dart @@ -1,3 +1,20 @@ +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:vector_math/vector_math_64.dart'; +abstract class AbstractGizmo { + + bool get isVisible; + bool get isHovered; + Future translate(double transX, double transY); + void reset(); + + Future attach(ThermionEntity entity); + + Future detach(); + + Stream get boundingBox; + + void checkHover(double x, double y); +} diff --git a/thermion_dart/lib/thermion_dart/entities/gizmo.dart b/thermion_dart/lib/thermion_dart/entities/gizmo.dart index ccfb0019..2cde276e 100644 --- a/thermion_dart/lib/thermion_dart/entities/gizmo.dart +++ b/thermion_dart/lib/thermion_dart/entities/gizmo.dart @@ -1,46 +1,68 @@ - +import 'dart:async'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; import 'package:vector_math/vector_math_64.dart'; import '../thermion_viewer.dart'; class Gizmo extends AbstractGizmo { final ThermionEntity x; - Vector3 _x = Vector3(0.1, 0, 0); final ThermionEntity y; - Vector3 _y = Vector3(0.0, 0.1, 0); final ThermionEntity z; - Vector3 _z = Vector3(0.0, 0.0, 0.1); + final ThermionEntity center; - final ThermionViewer controller; + final ThermionViewer _viewer; ThermionEntity? _activeAxis; ThermionEntity? _activeEntity; - bool get isActive => _activeAxis != null; + + bool _visible = false; + bool get isVisible => _visible; + + bool _isHovered = false; + bool get isHovered => _isHovered; final Set ignore; - Gizmo(this.x, this.y, this.z, this.controller, + Stream get boundingBox => _boundingBoxController.stream; + final _boundingBoxController = StreamController.broadcast(); + + Gizmo(this.x, this.y, this.z, this.center, this._viewer, {this.ignore = const {}}) { - controller.pickResult.listen(_onPickResult); + _viewer.gizmoPickResult.listen(_onGizmoPickResult); + _viewer.pickResult.listen(_onPickResult); } - Future _reveal() async { - await controller.reveal(x, null); - await controller.reveal(y, null); - await controller.reveal(z, null); - } + final _stopwatch = Stopwatch(); - void translate(double transX, double transY) async { - late Vector3 vec; - if (_activeAxis == x) { - vec = _x; - } else if (_activeAxis == y) { - vec = _y; - } else if (_activeAxis == z) { - vec = _z; + double _transX = 0.0; + double _transY = 0.0; + + Future translate(double transX, double transY) async { + if (!_stopwatch.isRunning) { + _stopwatch.start(); } - await controller.queuePositionUpdate( - _activeEntity!, transX * vec.x, -transY * vec.y, -transX * vec.z, - relative: true); + + _transX += transX; + _transY += transY; + + if (_stopwatch.elapsedMilliseconds < 16) { + return; + } + + final axis = Vector3(_activeAxis == x ? 1.0 : 0.0, + _activeAxis == y ? 1.0 : 0.0, _activeAxis == z ? 1.0 : 0.0); + + await _viewer.queueRelativePositionUpdateWorldAxis( + _activeEntity!, + _transX * _viewer.pixelRatio, + -_transY * + _viewer + .pixelRatio, // flip the sign because "up" in NDC Y axis is positive, but negative in Flutter + axis.x, + axis.y, + axis.z); + _transX = 0; + _transY = 0; + _stopwatch.reset(); } void reset() { @@ -48,32 +70,48 @@ class Gizmo extends AbstractGizmo { } void _onPickResult(FilamentPickResult result) async { - if (ignore.contains(result)) { - detach(); - return; - } + await attach(result.entity); + } + + void _onGizmoPickResult(FilamentPickResult result) async { if (result.entity == x || result.entity == y || result.entity == z) { _activeAxis = result.entity; + _isHovered = true; + } else if (result.entity == 0) { + _activeAxis = null; + _isHovered = false; } else { - attach(result.entity); + throw Exception("Unexpected gizmo pick result"); } } - void attach(ThermionEntity entity) async { + Future attach(ThermionEntity entity) async { _activeAxis = null; + if (entity == _activeEntity) { + return; + } + if (entity == center) { + _activeEntity = null; + return; + } + _visible = true; + + if (_activeEntity != null) { + await _viewer.removeStencilHighlight(_activeEntity!); + } _activeEntity = entity; - await _reveal(); - await controller.setParent(x, entity); - await controller.setParent(y, entity); - await controller.setParent(z, entity); + await _viewer.setGizmoVisibility(true); + await _viewer.setParent(center, entity, preserveScaling: false); + _boundingBoxController.sink.add(await _viewer.getViewportBoundingBox(x)); + } - void detach() async { - await controller.setParent(x, 0); - await controller.setParent(y, 0); - await controller.setParent(z, 0); - await controller.hide(x, null); - await controller.hide(y, null); - await controller.hide(z, null); + Future detach() async { + await _viewer.setGizmoVisibility(false); + } + + @override + void checkHover(double x, double y) { + _viewer.pickGizmo(x.toInt(), y.toInt()); } } diff --git a/thermion_dart/lib/thermion_dart/scene.dart b/thermion_dart/lib/thermion_dart/scene.dart index 76d86d43..12f1b330 100644 --- a/thermion_dart/lib/thermion_dart/scene.dart +++ b/thermion_dart/lib/thermion_dart/scene.dart @@ -1,48 +1,233 @@ +import 'dart:convert'; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; -import 'dart:async'; +import 'package:vector_math/vector_math_64.dart'; -/// -/// For now, this class just holds the entities that have been loaded (though not necessarily visible in the Filament Scene). -/// -abstract class Scene { - /// - /// The last entity clicked/tapped in the viewport (internally, the result of calling pick); - ThermionEntity? selected; +class SceneV2 { + final Map assets; + final List lights; + List cameras; + final List entities; + EnvironmentInfo? environment; - /// - /// A Stream updated whenever an entity is added/removed from the scene. - /// - Stream get onUpdated; + SceneV2({ + Map? assets, + List? lights, + List? cameras, + List? entities, + this.environment, + }) : assets = assets ?? {}, + lights = lights ?? [], + cameras = cameras ?? [], + entities = entities ?? []; - /// - /// A Stream containing every ThermionEntity added to the scene (i.e. via [loadGlb], [loadGltf] or [addLight]). - /// This is provided for convenience so you can set listeners in front-end widgets that can respond to entity loads without manually passing around the ThermionEntity returned from those methods. - /// - Stream get onLoad; + void addAsset(String uri, AssetType type) { + assets[uri] = AssetInfo(uri: uri, type: type); + } - /// - /// A Stream containing every ThermionEntity removed from the scene (i.e. via [removeEntity], [clearEntities], [removeLight] or [clearLights]). + void addLight(LightInfo light) { + lights.add(light); + } - Stream get onUnload; + void clearAssets() { + assets.clear(); + } - /// - /// Lists all light entities currently loaded (not necessarily active in the scene). Does not account for instances. - /// - Iterable listLights(); + void clearLights() { + lights.clear(); + } - /// - /// Lists all entities currently loaded (not necessarily active in the scene). Does not account for instances. - /// - Iterable listEntities(); + void setCamera(Matrix4 modelMatrix, Matrix4 projectionMatrix) { + var camera = cameras.firstWhere((cam) => cam.isActive); + camera.modelMatrix = modelMatrix; + camera.projectionMatrix = projectionMatrix; + } - /// - /// Attach the gizmo to the specified entity. - /// - void select(ThermionEntity entity); + void addEntity(String assetUri, Matrix4 transform) { + if (assets.containsKey(assetUri)) { + entities.add(EntityInfo(assetUri: assetUri, transform: transform)); + } else { + throw Exception('Asset not found: $assetUri'); + } + } - /// - /// - /// - void registerEntity(ThermionEntity entity); + void setEnvironment(String? skyboxUri, String? iblUri) { + environment = EnvironmentInfo(skyboxUri: skyboxUri, iblUri: iblUri); + } -} \ No newline at end of file + Map toJson() => { + 'assets': assets.map((key, value) => MapEntry(key, value.toJson())), + 'lights': lights.map((light) => light.toJson()).toList(), + 'cameras': cameras.map((camera) => camera.toJson()), + 'entities': entities.map((entity) => entity.toJson()).toList(), + 'environment': environment?.toJson(), + }; + + String toJsonString() => jsonEncode(toJson()); + + static SceneV2 fromJson(Map json) { + return SceneV2( + assets: (json['assets'] as Map).map( + (key, value) => MapEntry(key, AssetInfo.fromJson(value)), + ), + lights: (json['lights'] as List) + .map((light) => LightInfo.fromJson(light)) + .toList(), + cameras: json['cameras'].map((camera) => CameraInfo.fromJson), + entities: (json['entities'] as List) + .map((entity) => EntityInfo.fromJson(entity)) + .toList(), + environment: json['environment'] != null + ? EnvironmentInfo.fromJson(json['environment']) + : null, + ); + } + + static SceneV2 fromJsonString(String jsonString) => + fromJson(jsonDecode(jsonString)); +} + +class AssetInfo { + final String uri; + final AssetType type; + + AssetInfo({required this.uri, required this.type}); + + Map toJson() => { + 'uri': uri, + 'type': type.toString().split('.').last, + }; + + static AssetInfo fromJson(Map json) { + return AssetInfo( + uri: json['uri'], + type: AssetType.values.firstWhere( + (e) => e.toString().split('.').last == json['type'], + orElse: () => AssetType.glb), + ); + } +} + +enum AssetType { glb, gltf, geometryPrimitive } + +class LightInfo { + final LightType type; + final Vector3 position; + final Vector3 direction; + final Color color; + final double intensity; + + LightInfo({ + required this.type, + required this.position, + required this.direction, + required this.color, + required this.intensity, + }); + + Map toJson() => { + 'type': type.toString().split('.').last, + 'position': [position.x, position.y, position.z], + 'direction': [direction.x, direction.y, direction.z], + 'color': color.toJson(), + 'intensity': intensity, + }; + + static LightInfo fromJson(Map json) { + return LightInfo( + type: LightType.values.firstWhere((e) => e.name == json['type']), + position: Vector3.array(json['position'].cast()), + direction: Vector3.array(json['direction'].cast()), + color: Color.fromJson(json['color']), + intensity: json['intensity'], + ); + } +} + +class CameraInfo { + final bool isActive; + Matrix4 modelMatrix; + Matrix4 projectionMatrix; + + CameraInfo( + {required this.isActive, + required this.modelMatrix, + required this.projectionMatrix}); + + Map toJson() => { + 'modelMatrix': modelMatrix.storage, + 'projectionMatrix': projectionMatrix.storage, + 'isActive': isActive, + }; + + static CameraInfo fromJson(Map json) { + return CameraInfo( + modelMatrix: + Matrix4.fromFloat64List(json['modelMatrix'].cast()), + projectionMatrix: + Matrix4.fromFloat64List(json['modelMatrix'].cast()), + isActive: json["isActive"]); + } +} + +class EntityInfo { + final String assetUri; + final Matrix4 transform; + + EntityInfo({required this.assetUri, required this.transform}); + + Map toJson() => { + 'assetUri': assetUri, + 'transform': transform.storage, + }; + + static EntityInfo fromJson(Map json) { + return EntityInfo( + assetUri: json['assetUri'], + transform: Matrix4.fromList(List.from(json['transform'])), + ); + } +} + +class EnvironmentInfo { + final String? skyboxUri; + final String? iblUri; + + EnvironmentInfo({this.skyboxUri, this.iblUri}); + + Map toJson() => { + 'skyboxUri': skyboxUri, + 'iblUri': iblUri, + }; + + static EnvironmentInfo fromJson(Map json) { + return EnvironmentInfo( + skyboxUri: json['skyboxUri'], + iblUri: json['iblUri'], + ); + } +} + +class Color { + final double r; + final double g; + final double b; + final double a; + + Color({required this.r, required this.g, required this.b, this.a = 1.0}); + + Map toJson() => { + 'r': r, + 'g': g, + 'b': b, + 'a': a, + }; + + static Color fromJson(Map json) { + return Color( + r: json['r'], + g: json['g'], + b: json['b'], + a: json['a'], + ); + } +} diff --git a/thermion_dart/lib/thermion_dart/scene_impl.dart b/thermion_dart/lib/thermion_dart/scene_impl.dart deleted file mode 100644 index a31c8848..00000000 --- a/thermion_dart/lib/thermion_dart/scene_impl.dart +++ /dev/null @@ -1,125 +0,0 @@ -import 'dart:async'; -import 'package:thermion_dart/thermion_dart/scene.dart'; -import 'thermion_viewer.dart'; - -/// -/// For now, this class just holds the entities that have been loaded (though not necessarily visible in the Filament Scene). -/// -class SceneImpl extends Scene { - ThermionViewer controller; - - SceneImpl(this.controller); - - @override - ThermionEntity? selected; - - final _onUpdatedController = StreamController.broadcast(); - @override - Stream get onUpdated => _onUpdatedController.stream; - - final _onLoadController = StreamController.broadcast(); - @override - Stream get onLoad => _onLoadController.stream; - - final _onUnloadController = StreamController.broadcast(); - @override - Stream get onUnload => _onUnloadController.stream; - - final _lights = {}; - final _entities = {}; - - void registerLight(ThermionEntity entity) { - _lights.add(entity); - _onLoadController.sink.add(entity); - _onUpdatedController.add(true); - } - - void unregisterLight(ThermionEntity entity) async { - var children = await controller.getChildEntities(entity, true); - if (selected == entity || children.contains(selected)) { - selected = null; - controller.gizmo?.detach(); - } - _lights.remove(entity); - _onUnloadController.add(entity); - _onUpdatedController.add(true); - } - - void unregisterEntity(ThermionEntity entity) async { - var children = await controller.getChildEntities(entity, true); - if (selected == entity || children.contains(selected)) { - selected = null; - - controller.gizmo?.detach(); - } - _entities.remove(entity); - _onUnloadController.add(entity); - _onUpdatedController.add(true); - } - - void registerEntity(ThermionEntity entity) { - _entities.add(entity); - _onLoadController.sink.add(entity); - _onUpdatedController.add(true); - } - - void clearLights() { - for (final light in _lights) { - if (selected == light) { - selected = null; - controller.gizmo?.detach(); - } - _onUnloadController.add(light); - } - - _lights.clear(); - _onUpdatedController.add(true); - } - - void clearEntities() { - for (final entity in _entities) { - if (selected == entity) { - selected = null; - controller.gizmo?.detach(); - } - _onUnloadController.add(entity); - } - _entities.clear(); - _onUpdatedController.add(true); - } - - /// - /// Lists all entities currently loaded (not necessarily active in the scene). - /// - Iterable listLights() { - return _lights; - } - - @override - Iterable listEntities() { - return _entities; - } - - void registerSelected(ThermionEntity entity) { - selected = entity; - _onUpdatedController.add(true); - } - - void unregisterSelected() { - selected = null; - _onUpdatedController.add(true); - } - - @override - void select(ThermionEntity entity) { - selected = entity; - controller.gizmo?.attach(entity); - _onUpdatedController.add(true); - } - - Future dispose() async { - await _onLoadController.close(); - await _onUnloadController.close(); - await _onUpdatedController.close(); - } -} diff --git a/thermion_dart/lib/thermion_dart/thermion_viewer.dart b/thermion_dart/lib/thermion_dart/thermion_viewer.dart index 49370879..48a17df7 100644 --- a/thermion_dart/lib/thermion_dart/thermion_viewer.dart +++ b/thermion_dart/lib/thermion_dart/thermion_viewer.dart @@ -1,762 +1,6 @@ -import 'dart:math'; -import 'dart:typed_data'; +library thermion_viewer; -import 'package:thermion_dart/thermion_dart/scene.dart'; -import 'package:vector_math/vector_math_64.dart'; -import 'dart:async'; -import 'package:animation_tools_dart/animation_tools_dart.dart'; - -// a handle that can be safely passed back to the rendering layer to manipulate an Entity -typedef ThermionEntity = int; - -// "picking" means clicking/tapping on the viewport, and unprojecting the X/Y coordinate to determine whether any renderable entities were present at those coordinates. -typedef FilamentPickResult = ({ThermionEntity entity, double x, double y}); - -enum LightType { - SUN, //!< Directional light that also draws a sun's disk in the sky. - DIRECTIONAL, //!< Directional light, emits light in a given direction. - POINT, //!< Point light, emits light from a position, in all directions. - FOCUSED_SPOT, //!< Physically correct spot light. - SPOT, -} - -enum ShadowType { - PCF, //!< percentage-closer filtered shadows (default) - VSM, //!< variance shadows - DPCF, //!< PCF with contact hardening simulation - PCSS, //!< PCF with soft shadows and contact hardening -} - -// copied from filament/backened/DriverEnums.h -enum PrimitiveType { - // don't change the enums values (made to match GL) - POINTS, //!< points - LINES, //!< lines - UNUSED1, - LINE_STRIP, //!< line strip - TRIANGLES, //!< triangles - TRIANGLE_STRIP, //!< triangle strip -} - -enum ToneMapper { ACES, FILMIC, LINEAR } - -// see filament Manipulator.h for more details -enum ManipulatorMode { ORBIT, MAP, FREE_FLIGHT } - -class TextureDetails { - final int textureId; - - // both width and height are in physical, not logical pixels - final int width; - final int height; - - TextureDetails( - {required this.textureId, required this.width, required this.height}); -} - -abstract class ThermionViewer { - - Future get initialized; - - /// - /// The current dimensions of the viewport (in physical pixels). - /// - late (double, double) viewportDimensions; - - /// - /// The result(s) of calling [pick] (see below). - /// This may be a broadcast stream, so you should ensure you have subscribed to this stream before calling [pick]. - /// If [pick] is called without an active subscription to this stream, the results will be silently discarded. - /// - Stream get pickResult; - - /// - /// Whether the controller is currently rendering at [framerate]. - /// - bool get rendering; - - /// - /// Set to true to continuously render the scene at the framerate specified by [setFrameRate] (60 fps by default). - /// - Future setRendering(bool render); - - /// - /// Render a single frame. - /// - Future render(); - - - /// - /// Render a single frame to the viewport and copy the pixel buffer to [out]. - /// - Future capture(); - - /// - /// Sets the framerate for continuous rendering when [setRendering] is enabled. - /// - Future setFrameRate(int framerate); - - /// - /// Destroys/disposes the viewer (including the entire scene). You cannot use the viewer after calling this method. - /// - Future dispose(); - - /// - /// Set the background image to [path] (which should have a file extension .png, .jpg, or .ktx). - /// This will be rendered at the maximum depth (i.e. behind all other objects including the skybox). - /// If [fillHeight] is false, the image will be rendered at its original size. Note this may cause issues with pixel density so be sure to specify the correct resolution - /// If [fillHeight] is true, the image will be stretched/compressed to fit the height of the viewport. - /// - Future setBackgroundImage(String path, {bool fillHeight = false}); - - /// - /// Moves the background image to the relative offset from the origin (bottom-left) specified by [x] and [y]. - /// If [clamp] is true, the image cannot be positioned outside the bounds of the viewport. - /// - Future setBackgroundImagePosition(double x, double y, {bool clamp = false}); - - /// - /// Removes the background image. - /// - Future clearBackgroundImage(); - - /// - /// Sets the color for the background plane (positioned at the maximum depth, i.e. behind all other objects including the skybox). - /// - Future setBackgroundColor(double r, double g, double b, double alpha); - - /// - /// Load a skybox from [skyboxPath] (which must be a .ktx file) - /// - Future loadSkybox(String skyboxPath); - - /// - /// Removes the skybox from the scene. - /// - Future removeSkybox(); - - /// - /// Loads an image-based light from the specified path at the given intensity. - /// Only one IBL can be active at any given time; if an IBL has already been loaded, it will be replaced. - /// - Future loadIbl(String lightingPath, {double intensity = 30000}); - - /// - /// Rotates the IBL & skybox. - /// - Future rotateIbl(Matrix3 rotation); - - /// - /// Removes the image-based light from the scene. - /// - Future removeIbl(); - - /// - /// Add a light to the scene. - /// See LightManager.h for details - /// Note that [sunAngularRadius] is in degrees, - /// whereas [spotLightConeInner] and [spotLightConeOuter] are in radians - /// - Future addLight( - LightType type, - double colour, - double intensity, - double posX, - double posY, - double posZ, - double dirX, - double dirY, - double dirZ, - {double falloffRadius = 1.0, - double spotLightConeInner = pi / 8, - double spotLightConeOuter = pi / 4, - double sunAngularRadius = 0.545, - double sunHaloSize = 10.0, - double sunHaloFallof = 80.0, - bool castShadows = true}); - - Future removeLight(ThermionEntity light); - - /// - /// Remove all lights (excluding IBL) from the scene. - /// - Future clearLights(); - - /// - /// Load the .glb asset at the given path and insert into the scene. - /// - Future loadGlb(String path, {int numInstances = 1}); - - /// - /// Create a new instance of [entity]. - /// - Future createInstance(ThermionEntity entity); - - /// - /// Returns the number of instances of the asset associated with [entity]. - /// - Future getInstanceCount(ThermionEntity entity); - - /// - /// Returns all instances of [entity]. - /// - Future> getInstances(ThermionEntity entity); - - /// - /// Load the .gltf asset at the given path and insert into the scene. - /// [relativeResourcePath] is the folder path where the glTF resources are stored; - /// this is usually the parent directory of the .gltf file itself. - /// - Future loadGltf(String path, String relativeResourcePath, - {bool force = false}); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future panStart(double x, double y); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future panUpdate(double x, double y); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future panEnd(); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future rotateStart(double x, double y); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future rotateUpdate(double x, double y); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future rotateEnd(); - - /// - /// Set the weights for all morph targets in [entity] to [weights]. - /// Note that [weights] must contain values for ALL morph targets, but no exception will be thrown if you don't do so (you'll just get incorrect results). - /// If you only want to set one value, set all others to zero (check [getMorphTargetNames] if you need the get a list of all morph targets). - /// IMPORTANT - this accepts the actual ThermionEntity with the relevant morph targets (unlike [getMorphTargetNames], which uses the parent entity and the child mesh name). - /// Use [getChildEntityByName] if you are setting the weights for a child mesh. - /// - Future setMorphTargetWeights(ThermionEntity entity, List weights); - - /// - /// Gets the names of all morph targets for the child renderable [childEntity] under [entity]. - /// - Future> getMorphTargetNames( - ThermionEntity entity, ThermionEntity childEntity); - - /// - /// Gets the names of all bones for the armature at [skinIndex] under the specified [entity]. - /// - Future> getBoneNames(ThermionEntity entity, {int skinIndex = 0}); - - /// - /// Gets the names of all glTF animations embedded in the specified entity. - /// - Future> getAnimationNames(ThermionEntity entity); - - /// - /// Returns the length (in seconds) of the animation at the given index. - /// - Future getAnimationDuration( - ThermionEntity entity, int animationIndex); - - /// - /// Animate the morph targets in [entity]. See [MorphTargetAnimation] for an explanation as to how to construct the animation frame data. - /// This method will check the morph target names specified in [animation] against the morph target names that actually exist exist under [meshName] in [entity], - /// throwing an exception if any cannot be found. - /// It is permissible for [animation] to omit any targets that do exist under [meshName]; these simply won't be animated. - /// - Future setMorphAnimationData( - ThermionEntity entity, MorphAnimationData animation, - {List? targetMeshNames}); - - /// - /// Clear all current morph animations for [entity]. - /// - Future clearMorphAnimationData(ThermionEntity entity); - - /// - /// Resets all bones in the given entity to their rest pose. - /// This should be done before every call to addBoneAnimation. - /// - Future resetBones(ThermionEntity entity); - - /// - /// Enqueues and plays the [animation] for the specified bone(s). - /// By default, frame data is interpreted as being in *parent* bone space; - /// a 45 degree around Y means the bone will rotate 45 degrees around the - /// Y axis of the parent bone *in its current orientation*. - /// (i.e NOT the parent bone's rest position!). - /// Currently, only [Space.ParentBone] and [Space.Model] are supported; if you want - /// to transform to another space, you will need to do so manually. - /// - /// [fadeInInSecs]/[fadeOutInSecs]/[maxDelta] are used to cross-fade between - /// the current active glTF animation ("animation1") and the animation you - /// set via this method ("animation2"). The bone orientations will be - /// linearly interpolated between animation1 and animation2; at time 0, - /// the orientation will be 100% animation1, at time [fadeInInSecs], the - /// animation will be ((1 - maxDelta) * animation1) + (maxDelta * animation2). - /// This will be applied in reverse after [fadeOutInSecs]. - /// - /// - Future addBoneAnimation(ThermionEntity entity, BoneAnimationData animation, - {int skinIndex = 0, - double fadeInInSecs = 0.0, - double fadeOutInSecs = 0.0, - double maxDelta = 1.0}); - - /// - /// Gets the entity representing the bone at [boneIndex]/[skinIndex]. - /// The returned entity is only intended for use with [getWorldTransform]. - /// - Future getBone(ThermionEntity parent, int boneIndex, - {int skinIndex = 0}); - - /// - /// Gets the local (relative to parent) transform for [entity]. - /// - Future getLocalTransform(ThermionEntity entity); - - /// - /// Gets the world transform for [entity]. - /// - Future getWorldTransform(ThermionEntity entity); - - /// - /// Gets the inverse bind (pose) matrix for the bone. - /// Note that [parent] must be the ThermionEntity returned by [loadGlb/loadGltf], not any other method ([getChildEntity] etc). - /// This is because all joint information is internally stored with the parent entity. - /// - Future getInverseBindMatrix(ThermionEntity parent, int boneIndex, - {int skinIndex = 0}); - - /// - /// Sets the transform (relative to its parent) for [entity]. - /// - Future setTransform(ThermionEntity entity, Matrix4 transform); - - /// - /// Updates the bone matrices for [entity] (which must be the ThermionEntity - /// returned by [loadGlb/loadGltf]). - /// Under the hood, this just calls [updateBoneMatrices] on the Animator - /// instance of the relevant FilamentInstance (which uses the local - /// bone transform and the inverse bind matrix to set the bone matrix). - /// - Future updateBoneMatrices(ThermionEntity entity); - - /// - /// Directly set the bone matrix for the bone at the given index. - /// Don't call this manually unless you know what you're doing. - /// - Future setBoneTransform( - ThermionEntity entity, int boneIndex, Matrix4 transform, - {int skinIndex = 0}); - - /// - /// Removes/destroys the specified entity from the scene. - /// [entity] will no longer be a valid handle after this method is called; ensure you immediately discard all references once this method is complete. - /// - Future removeEntity(ThermionEntity entity); - - /// - /// Removes/destroys all renderable entities from the scene (including cameras). - /// All [ThermionEntity] handles will no longer be valid after this method is called; ensure you immediately discard all references to all entities once this method is complete. - /// - Future clearEntities(); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future zoomBegin(); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future zoomUpdate(double x, double y, double z); - - /// - /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. - /// - Future zoomEnd(); - - /// - /// Schedules the glTF animation at [index] in [entity] to start playing on the next frame. - /// - Future playAnimation(ThermionEntity entity, int index, - {bool loop = false, - bool reverse = false, - bool replaceActive = true, - double crossfade = 0.0, - double startOffset = 0.0}); - - /// - /// Schedules the glTF animation at [index] in [entity] to start playing on the next frame. - /// - Future playAnimationByName(ThermionEntity entity, String name, - {bool loop = false, - bool reverse = false, - bool replaceActive = true, - double crossfade = 0.0}); - - Future setAnimationFrame( - ThermionEntity entity, int index, int animationFrame); - - Future stopAnimation(ThermionEntity entity, int animationIndex); - Future stopAnimationByName(ThermionEntity entity, String name); - - /// - /// Sets the current scene camera to the glTF camera under [name] in [entity]. - /// - Future setCamera(ThermionEntity entity, String? name); - - /// - /// Sets the current scene camera to the main camera (which is always available and added to every scene by default). - /// - Future setMainCamera(); - - /// - /// Returns the entity associated with the main camera. - /// - Future getMainCamera(); - - /// - /// Sets the current scene camera to the glTF camera under [name] in [entity]. - /// - Future setCameraFov(double degrees, double width, double height); - - /// - /// Sets the tone mapping (requires postprocessing). - /// - Future setToneMapping(ToneMapper mapper); - - /// - /// Sets the strength of the bloom. - /// - Future setBloom(double bloom); - - /// - /// Sets the focal length of the camera. Default value is 28.0. - /// - Future setCameraFocalLength(double focalLength); - - /// - /// Sets the distance (in world units) to the near/far planes for the active camera. Default values are 0.05/1000.0. See Camera.h for details. - /// - Future setCameraCulling(double near, double far); - - /// - /// Get the distance (in world units) to the near culling plane for the active camera. - /// - Future getCameraCullingNear(); - - /// - /// Get the distance (in world units) to the far culling plane for the active camera. - /// - Future getCameraCullingFar(); - - /// - /// Sets the focus distance for the camera. - /// - Future setCameraFocusDistance(double focusDistance); - - /// - /// Get the camera position in world space. - /// - Future getCameraPosition(); - - /// - /// Get the camera's model matrix. - /// - Future getCameraModelMatrix(); - - /// - /// Get the camera's view matrix. See Camera.h for more details. - /// - Future getCameraViewMatrix(); - - /// - /// Get the camera's projection matrix. See Camera.h for more details. - /// - Future getCameraProjectionMatrix(); - - /// - /// Get the camera's culling projection matrix. See Camera.h for more details. - /// - Future getCameraCullingProjectionMatrix(); - - /// - /// Get the camera's culling frustum in world space. Returns a (vector_math) [Frustum] instance where plane0-plane6 define the left, right, bottom, top, far and near planes respectively. - /// See Camera.h and (filament) Frustum.h for more details. - /// - Future getCameraFrustum(); - - /// - /// Set the camera position in world space. Note this is not persistent - any viewport navigation will reset the camera transform. - /// - Future setCameraPosition(double x, double y, double z); - - /// - /// Get the camera rotation matrix. - /// - Future getCameraRotation(); - - /// - /// Repositions the camera to the last vertex of the bounding box of [entity], looking at the penultimate vertex. - /// - Future moveCameraToAsset(ThermionEntity entity); - - /// - /// Enables/disables frustum culling. Currently we don't expose a method for manipulating the camera projection/culling matrices so this is your only option to deal with unwanted near/far clipping. - /// - Future setViewFrustumCulling(bool enabled); - - /// - /// Sets the camera exposure. - /// - Future setCameraExposure( - double aperture, double shutterSpeed, double sensitivity); - - /// - /// Rotate the camera by [rads] around the given axis. Note this is not persistent - any viewport navigation will reset the camera transform. - /// - Future setCameraRotation(Quaternion quaternion); - - /// - /// Sets the camera model matrix. - /// - Future setCameraModelMatrix(List matrix); - - /// - /// Sets the `baseColorFactor` property for the material at index [materialIndex] in [entity] under node [meshName] to [color]. - /// - Future setMaterialColor(ThermionEntity entity, String meshName, - int materialIndex, double r, double g, double b, double a); - - /// - /// Scale [entity] to fit within the unit cube. - /// - Future transformToUnitCube(ThermionEntity entity); - - /// - /// Directly sets the world space position for [entity] to the given coordinates, skipping all collision detection. - /// - Future setPosition(ThermionEntity entity, double x, double y, double z); - - /// - /// Directly sets the scale for [entity], skipping all collision detection. - /// - Future setScale(ThermionEntity entity, double scale); - - /// - /// Directly sets the rotation for [entity] to [rads] around the axis {x,y,z}, skipping all collision detection. - /// - Future setRotation( - ThermionEntity entity, double rads, double x, double y, double z); - - /// - /// Queues an update to the worldspace position for [entity] to {x,y,z}. - /// The actual update will occur on the next frame, and will be subject to collision detection. - /// - Future queuePositionUpdate( - ThermionEntity entity, double x, double y, double z, - {bool relative = false}); - - /// - /// Queues an update to the worldspace rotation for [entity]. - /// The actual update will occur on the next frame, and will be subject to collision detection. - /// - Future queueRotationUpdate( - ThermionEntity entity, double rads, double x, double y, double z, - {bool relative = false}); - - /// - /// Same as [queueRotationUpdate]. - /// - Future queueRotationUpdateQuat(ThermionEntity entity, Quaternion quat, - {bool relative = false}); - - /// - /// Enable/disable postprocessing (disabled by default). - /// - Future setPostProcessing(bool enabled); - - /// - /// Enable/disable shadows (disabled by default). - /// - Future setShadowsEnabled(bool enabled); - - /// - /// Set shadow type. - /// - Future setShadowType(ShadowType shadowType); - - /// - /// Set soft shadow options (ShadowType DPCF and PCSS) - /// - Future setSoftShadowOptions(double penumbraScale, double penumbraRatioScale); - - /// - /// Set antialiasing options. - /// - Future setAntiAliasing(bool msaa, bool fxaa, bool taa); - - /// - /// Sets the rotation for [entity] to the specified quaternion. - /// - Future setRotationQuat(ThermionEntity entity, Quaternion rotation); - - /// - /// Reveal the node [meshName] under [entity]. Only applicable if [hide] had previously been called; this is a no-op otherwise. - /// - Future reveal(ThermionEntity entity, String? meshName); - - /// - /// If [meshName] is provided, hide the node [meshName] under [entity], otherwise hide the root node for [entity]. - /// The entity still exists in memory, but is no longer being rendered into the scene. Call [reveal] to re-commence rendering. - /// - Future hide(ThermionEntity entity, String? meshName); - - /// - /// Used to select the entity in the scene at the given viewport coordinates. - /// Called by `FilamentGestureDetector` on a mouse/finger down event. You probably don't want to call this yourself. - /// This is asynchronous and will require 2-3 frames to complete - subscribe to the [pickResult] stream to receive the results of this method. - /// [x] and [y] must be in local logical coordinates (i.e. where 0,0 is at top-left of the ThermionWidget). - /// - void pick(int x, int y); - - /// - /// Retrieves the name assigned to the given ThermionEntity (usually corresponds to the glTF mesh name). - /// - String? getNameForEntity(ThermionEntity entity); - - /// - /// Sets the options for manipulating the camera via the viewport. - /// ManipulatorMode.FREE_FLIGHT and ManipulatorMode.MAP are currently unsupported and will throw an exception. - /// - Future setCameraManipulatorOptions( - {ManipulatorMode mode = ManipulatorMode.ORBIT, - double orbitSpeedX = 0.01, - double orbitSpeedY = 0.01, - double zoomSpeed = 0.01}); - - /// - /// Returns all child entities under [parent]. - /// - Future> getChildEntities( - ThermionEntity parent, bool renderableOnly); - - /// - /// Finds the child entity named [childName] associated with the given parent. - /// Usually, [parent] will be the return value from [loadGlb]/[loadGltf] and [childName] will be the name of a node/mesh. - /// - Future getChildEntity( - ThermionEntity parent, String childName); - - /// - /// List the name of all child entities under the given entity. - /// - Future> getChildEntityNames(ThermionEntity entity, - {bool renderableOnly = true}); - - /// - /// If [recording] is set to true, each frame the framebuffer/texture will be written to /tmp/output_*.png. - /// This will impact performance; handle with care. - /// - Future setRecording(bool recording); - - /// - /// Sets the output directory where recorded PNGs will be placed. - /// - Future setRecordingOutputDirectory(String outputDirectory); - - /// - /// An [entity] will only be animatable after an animation component is attached. - /// Any calls to [playAnimation]/[setBoneAnimation]/[setMorphAnimation] will have no visual effect until [addAnimationComponent] has been called on the instance. - /// - Future addAnimationComponent(ThermionEntity entity); - - /// - /// Removes an animation component from [entity]. - /// - Future removeAnimationComponent(ThermionEntity entity); - - /// - /// Makes [entity] collidable. - /// This allows you to call [testCollisions] with any other entity ("entity B") to see if [entity] has collided with entity B. The callback will be invoked if so. - /// Alternatively, if [affectsTransform] is true and this entity collides with another entity, any queued position updates to the latter entity will be ignored. - /// - Future addCollisionComponent(ThermionEntity entity, - {void Function(int entityId1, int entityId2)? callback, - bool affectsTransform = false}); - - /// - /// Removes the collision component from [entity], meaning this will no longer be tested when [testCollisions] or [queuePositionUpdate] is called with another entity. - /// - Future removeCollisionComponent(ThermionEntity entity); - - /// - /// Creates a (renderable) entity with the specified geometry and adds to the scene. - /// - Future createGeometry(List vertices, List indices, - {String? materialPath, - PrimitiveType primitiveType = PrimitiveType.TRIANGLES}); - - /// - /// Gets the parent transform of [child]. - /// - Future getParent(ThermionEntity child); - - /// - /// Sets the parent transform of [child] to [parent]. - /// - Future setParent(ThermionEntity child, ThermionEntity parent); - - /// - /// Test all collidable entities against this entity to see if any have collided. - /// This method returns void; the relevant callback passed to [addCollisionComponent] will be fired if a collision is detected. - /// - Future testCollisions(ThermionEntity entity); - - /// - /// Sets the draw priority for the given entity. See RenderableManager.h for more details. - /// - Future setPriority(ThermionEntity entityId, int priority); - - /// - /// The Scene holds all loaded entities/lights. - /// - Scene get scene; - - /// - /// - /// - AbstractGizmo? get gizmo; - - /// - /// Register a callback to be invoked when this viewer is disposed. - /// - void onDispose(Future Function() callback); -} - -abstract class AbstractGizmo { - bool get isActive; - - void translate(double transX, double transY); - - void reset(); - - void attach(ThermionEntity entity); - - void detach(); -} +export 'viewer/thermion_viewer_base.dart'; +export 'viewer/thermion_viewer_stub.dart' + if (dart.library.io) 'viewer/ffi/thermion_viewer_ffi.dart' + if (dart.library.js_interop) 'viewer/web/thermion_viewer_wasm.dart'; diff --git a/thermion_dart/lib/thermion_dart/utils/dart_resources.dart b/thermion_dart/lib/thermion_dart/utils/dart_resources.dart index e9b0f71d..fafe69de 100644 --- a/thermion_dart/lib/thermion_dart/utils/dart_resources.dart +++ b/thermion_dart/lib/thermion_dart/utils/dart_resources.dart @@ -1,6 +1,8 @@ import 'dart:ffi'; import 'dart:io'; -import '../compatibility/compatibility.dart'; + +import 'package:ffi/ffi.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; class DartResourceLoader { static final _assets = {}; diff --git a/thermion_dart/lib/thermion_dart/utils/geometry.dart b/thermion_dart/lib/thermion_dart/utils/geometry.dart new file mode 100644 index 00000000..84985d84 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/utils/geometry.dart @@ -0,0 +1,334 @@ +import 'dart:math'; +import 'dart:typed_data'; +import 'package:thermion_dart/thermion_dart/viewer/shared_types/geometry.dart'; +import 'package:thermion_dart/thermion_dart/viewer/thermion_viewer_base.dart'; + +class GeometryHelper { + static Geometry sphere({bool normals = true, bool uvs = true}) { + int latitudeBands = 20; + int longitudeBands = 20; + + List verticesList = []; + List normalsList = []; + List uvsList = []; + List indices = []; + + for (int latNumber = 0; latNumber <= latitudeBands; latNumber++) { + double theta = latNumber * pi / latitudeBands; + double sinTheta = sin(theta); + double cosTheta = cos(theta); + + for (int longNumber = 0; longNumber <= longitudeBands; longNumber++) { + double phi = longNumber * 2 * pi / longitudeBands; + double sinPhi = sin(phi); + double cosPhi = cos(phi); + + double x = cosPhi * sinTheta; + double y = cosTheta; + double z = sinPhi * sinTheta; + + verticesList.addAll([x, y, z]); + normalsList.addAll([x, y, z]); + + uvsList.addAll([longNumber / longitudeBands, latNumber / latitudeBands]); + } + } + + for (int latNumber = 0; latNumber < latitudeBands; latNumber++) { + for (int longNumber = 0; longNumber < longitudeBands; longNumber++) { + int first = (latNumber * (longitudeBands + 1)) + longNumber; + int second = first + longitudeBands + 1; + + indices.addAll([first, second, first + 1, second, second + 1, first + 1]); + } + } + + Float32List vertices = Float32List.fromList(verticesList); + Float32List? _normals = normals ? Float32List.fromList(normalsList) : null; + Float32List? _uvs = uvs ? Float32List.fromList(uvsList) : null; + + return Geometry(vertices, indices, normals: _normals, uvs: _uvs); + } + +static Geometry cube({bool normals = true, bool uvs = true}) { + final vertices = Float32List.fromList([ + // Front face + -1, -1, 1, + 1, -1, 1, + 1, 1, 1, + -1, 1, 1, + + // Back face + -1, -1, -1, + -1, 1, -1, + 1, 1, -1, + 1, -1, -1, + + // Top face + -1, 1, -1, + -1, 1, 1, + 1, 1, 1, + 1, 1, -1, + + // Bottom face + -1, -1, -1, + 1, -1, -1, + 1, -1, 1, + -1, -1, 1, + + // Right face + 1, -1, -1, + 1, 1, -1, + 1, 1, 1, + 1, -1, 1, + + // Left face + -1, -1, -1, + -1, -1, 1, + -1, 1, 1, + -1, 1, -1, + ]); + + final _normals = normals ? Float32List.fromList([ + // Front face + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + 0, 0, 1, + + // Back face + 0, 0, -1, + 0, 0, -1, + 0, 0, -1, + 0, 0, -1, + + // Top face + 0, 1, 0, + 0, 1, 0, + 0, 1, 0, + 0, 1, 0, + + // Bottom face + 0, -1, 0, + 0, -1, 0, + 0, -1, 0, + 0, -1, 0, + + // Right face + 1, 0, 0, + 1, 0, 0, + 1, 0, 0, + 1, 0, 0, + + // Left face + -1, 0, 0, + -1, 0, 0, + -1, 0, 0, + -1, 0, 0, + ]) : null; + + final _uvs = uvs ? Float32List.fromList([ + // Front face + 1/3, 1/3, + 2/3, 1/3, + 2/3, 2/3, + 1/3, 2/3, + + // Back face + 2/3, 2/3, + 2/3, 1, + 1, 1, + 1, 2/3, + + // Top face + 1/3, 0, + 1/3, 1/3, + 2/3, 1/3, + 2/3, 0, + + // Bottom face + 1/3, 2/3, + 2/3, 2/3, + 2/3, 1, + 1/3, 1, + + // Right face + 2/3, 1/3, + 2/3, 2/3, + 1, 2/3, + 1, 1/3, + + // Left face + 0, 1/3, + 1/3, 1/3, + 1/3, 2/3, + 0, 2/3, + ]) : null; + + final indices = [ + // Front face + 0, 1, 2, 0, 2, 3, + // Back face + 4, 5, 6, 4, 6, 7, + // Top face + 8, 9, 10, 8, 10, 11, + // Bottom face + 12, 13, 14, 12, 14, 15, + // Right face + 16, 17, 18, 16, 18, 19, + // Left face + 20, 21, 22, 20, 22, 23 + ]; + return Geometry(vertices, indices, normals: _normals, uvs: _uvs); +} + + static Geometry cylinder({double radius = 1.0, double length = 1.0, bool normals = true, bool uvs = true }) { + int segments = 32; + List verticesList = []; + List normalsList = []; + List uvsList = []; + List indices = []; + + // Create vertices, normals, and UVs + for (int i = 0; i <= segments; i++) { + double theta = i * 2 * pi / segments; + double x = radius * cos(theta); + double z = radius * sin(theta); + + // Top circle + verticesList.addAll([x, length / 2, z]); + normalsList.addAll([x / radius, 0, z / radius]); + uvsList.addAll([i / segments, 1]); + + // Bottom circle + verticesList.addAll([x, -length / 2, z]); + normalsList.addAll([x / radius, 0, z / radius]); + uvsList.addAll([i / segments, 0]); + } + + // Create indices + for (int i = 0; i < segments; i++) { + int topFirst = i * 2; + int topSecond = (i + 1) * 2; + int bottomFirst = topFirst + 1; + int bottomSecond = topSecond + 1; + + // Top face (counter-clockwise) + indices.addAll([segments * 2, topSecond, topFirst]); + // Bottom face (counter-clockwise when viewed from below) + indices.addAll([segments * 2 + 1, bottomFirst, bottomSecond]); + // Side faces (counter-clockwise) + indices.addAll([topFirst, bottomFirst, topSecond]); + indices.addAll([bottomFirst, bottomSecond, topSecond]); + } + + // Add center vertices, normals, and UVs for top and bottom faces + verticesList.addAll([0, length / 2, 0]); // Top center + normalsList.addAll([0, 1, 0]); + uvsList.addAll([0.5, 0.5]); // Center of top face + + verticesList.addAll([0, -length / 2, 0]); // Bottom center + normalsList.addAll([0, -1, 0]); + uvsList.addAll([0.5, 0.5]); // Center of bottom face + + // Add top and bottom face normals and UVs + for (int i = 0; i <= segments; i++) { + normalsList.addAll([0, 1, 0]); // Top face normal + normalsList.addAll([0, -1, 0]); // Bottom face normal + + double u = 0.5 + 0.5 * cos(i * 2 * pi / segments); + double v = 0.5 + 0.5 * sin(i * 2 * pi / segments); + uvsList.addAll([u, v]); // Top face UV + uvsList.addAll([u, v]); // Bottom face UV + } + + Float32List vertices = Float32List.fromList(verticesList); + Float32List? _normals = normals ? Float32List.fromList(normalsList) : null; + Float32List? _uvs = uvs ? Float32List.fromList(uvsList) : null; + + return Geometry(vertices, indices, normals: _normals, uvs: _uvs); + } + + static Geometry conic({double radius = 1.0, double length = 1.0, bool normals = true, bool uvs = true}) { + int segments = 32; + List verticesList = []; + List normalsList = []; + List uvsList = []; + List indices = []; + + // Create vertices, normals, and UVs + for (int i = 0; i <= segments; i++) { + double theta = i * 2 * pi / segments; + double x = radius * cos(theta); + double z = radius * sin(theta); + + // Base circle + verticesList.addAll([x, 0, z]); + + // Calculate normal for the side + double nx = x / sqrt(x * x + length * length); + double nz = z / sqrt(z * z + length * length); + double ny = radius / sqrt(radius * radius + length * length); + normalsList.addAll([nx, ny, nz]); + + // UV coordinates + uvsList.addAll([i / segments, 0]); + } + // Apex + verticesList.addAll([0, length, 0]); + normalsList.addAll([0, 1, 0]); // Normal at apex points straight up + uvsList.addAll([0.5, 1]); // UV for apex + + // Create indices + for (int i = 0; i < segments; i++) { + // Base face (fixed to counterclockwise) + indices.addAll([segments + 1, i + 1, i]); + // Side faces (already correct) + indices.addAll([i, segments, i + 1]); + } + + // Add base face normals and UVs + for (int i = 0; i <= segments; i++) { + normalsList.addAll([0, -1, 0]); // Base face normal + double u = 0.5 + 0.5 * cos(i * 2 * pi / segments); + double v = 0.5 + 0.5 * sin(i * 2 * pi / segments); + uvsList.addAll([u, v]); // Base face UV + } + + Float32List vertices = Float32List.fromList(verticesList); + Float32List? _normals = normals ? Float32List.fromList(normalsList) : null; + Float32List? _uvs = uvs ? Float32List.fromList(uvsList) : null; + + return Geometry(vertices, indices, normals: _normals, uvs: _uvs); + } + + static Geometry plane({double width = 1.0, double height = 1.0, bool normals = true, bool uvs = true}) { + Float32List vertices = Float32List.fromList([ + -width / 2, 0, -height / 2, + width / 2, 0, -height / 2, + width / 2, 0, height / 2, + -width / 2, 0, height / 2, + ]); + + Float32List? _normals = normals ? Float32List.fromList([ + 0, 1, 0, + 0, 1, 0, + 0, 1, 0, + 0, 1, 0, + ]) : null; + + Float32List? _uvs = uvs ? Float32List.fromList([ + 0, 0, + 1, 0, + 1, 1, + 0, 1, + ]) : null; + + List indices = [ + 0, 2, 1, + 0, 3, 2, + ]; + + return Geometry(vertices, indices, normals: _normals, uvs: _uvs); + } +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/utils/light_options.dart b/thermion_dart/lib/thermion_dart/utils/light_options.dart deleted file mode 100644 index 76f7b187..00000000 --- a/thermion_dart/lib/thermion_dart/utils/light_options.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:vector_math/vector_math_64.dart' as v; - -class LightOptions { - String? iblPath; - double iblIntensity; - int directionalType; - double directionalColor; - double directionalIntensity; - bool directionalCastShadows; - late v.Vector3 directionalPosition; - late v.Vector3 directionalDirection; - - LightOptions( - {required this.iblPath, - required this.iblIntensity, - required this.directionalType, - required this.directionalColor, - required this.directionalIntensity, - required this.directionalCastShadows, - v.Vector3? directionalDirection, - v.Vector3? directionalPosition}) { - this.directionalDirection = directionalDirection == null - ? v.Vector3(0, -1, 0) - : directionalDirection; - this.directionalPosition = directionalPosition == null - ? v.Vector3(0, 100, 0) - : directionalPosition; - } -} diff --git a/thermion_dart/lib/thermion_dart/utils/matrix.dart b/thermion_dart/lib/thermion_dart/utils/matrix.dart new file mode 100644 index 00000000..6b8ae389 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/utils/matrix.dart @@ -0,0 +1,38 @@ +// Helper function to convert double4x4 to Matrix4 +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; +import 'package:vector_math/vector_math_64.dart'; +import 'dart:ffi'; + +Matrix4 double4x4ToMatrix4(double4x4 mat) { + return Matrix4.fromList([ + mat.col1[0], + mat.col1[1], + mat.col1[2], + mat.col1[3], + mat.col2[0], + mat.col2[1], + mat.col2[2], + mat.col2[3], + mat.col3[0], + mat.col3[1], + mat.col3[2], + mat.col3[3], + mat.col4[0], + mat.col4[1], + mat.col4[2], + mat.col4[3], + ]); +} + +double4x4 matrix4ToDouble4x4(Matrix4 mat) { + final out = Struct.create(); + + for (int i = 0; i < 4; i++) { + out.col1[i] = mat.storage[i]; + out.col2[i] = mat.storage[i + 4]; + out.col3[i] = mat.storage[i + 8]; + out.col4[i] = mat.storage[i + 12]; + } + + return out; +} diff --git a/thermion_dart/lib/thermion_dart/utils/using_pointer.dart b/thermion_dart/lib/thermion_dart/utils/using_pointer.dart deleted file mode 100644 index d192ec03..00000000 --- a/thermion_dart/lib/thermion_dart/utils/using_pointer.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'dart:ffi'; - -import 'package:ffi/ffi.dart'; - -final allocator = calloc; - -void using(Pointer ptr, Future Function(Pointer ptr) function) async { - await function.call(ptr); - allocator.free(ptr); -} diff --git a/thermion_dart/lib/thermion_dart/viewer/events.dart b/thermion_dart/lib/thermion_dart/viewer/events.dart new file mode 100644 index 00000000..eddf168e --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/events.dart @@ -0,0 +1,86 @@ +import 'package:thermion_dart/thermion_dart/viewer/shared_types/entities.dart'; +import 'shared_types/shared_types.dart'; + +/// +/// To ensure we can easily store/recreate a particular, [ThermionViewer] will raise an event whenever an +/// entity is added/removed. +/// +enum EventType { EntityAdded, EntityRemoved, EntityHidden, EntityRevealed, ClearLights } + +/// +/// An "entity added" event must provide sufficient detail to enable that asset to be reloaded in future. +/// This requires a bit more legwork because entities may be lights (direct/indirect), geometry or gltf. +/// +enum EntityType { Geometry, Gltf, DirectLight, IBL } + +class SceneUpdateEvent { + late final ThermionEntity? entity; + late final EventType eventType; + + EntityType get addedEntityType { + if (_directLight != null) { + return EntityType.DirectLight; + } else if (_ibl != null) { + return EntityType.IBL; + } else if (_gltf != null) { + return EntityType.Gltf; + } else if (_geometry != null) { + return EntityType.Geometry; + } else { + throw Exception("Unknown entity type"); + } + } + + DirectLight? _directLight; + IBL? _ibl; + GLTF? _gltf; + Geometry? _geometry; + + SceneUpdateEvent.remove(this.entity) { + this.eventType = EventType.EntityRemoved; + } + + SceneUpdateEvent.reveal(this.entity) { + this.eventType = EventType.EntityRevealed; + } + + SceneUpdateEvent.hide(this.entity) { + this.eventType = EventType.EntityHidden; + } + + SceneUpdateEvent.addDirectLight(this.entity, this._directLight) { + this.eventType = EventType.EntityAdded; + } + + SceneUpdateEvent.addIbl(this.entity, this._ibl) { + this.eventType = EventType.EntityAdded; + } + + SceneUpdateEvent.addGltf(this.entity, this._gltf) { + this.eventType = EventType.EntityAdded; + } + + SceneUpdateEvent.addGeometry(this.entity, this._geometry) { + this.eventType = EventType.EntityAdded; + } + + SceneUpdateEvent.clearLights() { + this.eventType = EventType.ClearLights; + } + + DirectLight getDirectLight() { + return _directLight!; + } + + IBL getAsIBL() { + return _ibl!; + } + + GLTF getAsGLTF() { + return _gltf!; + } + + Geometry getAsGeometry() { + return _geometry!; + } +} diff --git a/thermion_dart/lib/thermion_dart/compatibility/native/compatibility.dart b/thermion_dart/lib/thermion_dart/viewer/ffi/callbacks.dart similarity index 83% rename from thermion_dart/lib/thermion_dart/compatibility/native/compatibility.dart rename to thermion_dart/lib/thermion_dart/viewer/ffi/callbacks.dart index 453f3bb4..e36a430b 100644 --- a/thermion_dart/lib/thermion_dart/compatibility/native/compatibility.dart +++ b/thermion_dart/lib/thermion_dart/viewer/ffi/callbacks.dart @@ -8,6 +8,11 @@ export 'thermion_dart.g.dart'; final allocator = calloc; +void using(Pointer ptr, Future Function(Pointer ptr) function) async { + await function.call(ptr); + allocator.free(ptr); +} + Future withVoidCallback( Function(Pointer>) func) async { final completer = Completer(); @@ -21,16 +26,16 @@ Future withVoidCallback( nativeCallable.close(); } -Future withVoidPointerCallback( - Function(Pointer)>>) +Future withPointerCallback( + Function(Pointer)>>) func) async { - final completer = Completer>(); + final completer = Completer>(); // ignore: prefer_function_declarations_over_variables - void Function(Pointer) callback = (Pointer ptr) { - completer.complete(ptr); + void Function(Pointer) callback = (Pointer ptr) { + completer.complete(ptr.cast()); }; final nativeCallable = - NativeCallable)>.listener(callback); + NativeCallable)>.listener(callback); func.call(nativeCallable.nativeFunction); var ptr = await completer.future; nativeCallable.close(); @@ -82,4 +87,3 @@ Future withCharPtrCallback( return completer.future; } -class Compatibility {} diff --git a/thermion_dart/lib/thermion_dart/viewer/ffi/camera_ffi.dart b/thermion_dart/lib/thermion_dart/viewer/ffi/camera_ffi.dart new file mode 100644 index 00000000..d018b8ca --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/ffi/camera_ffi.dart @@ -0,0 +1,22 @@ +import 'dart:ffi'; + +import 'package:thermion_dart/thermion_dart/utils/matrix.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; +import 'package:thermion_dart/thermion_dart/viewer/shared_types/camera.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class ThermionFFICamera extends Camera { + final Pointer pointer; + + ThermionFFICamera(this.pointer); + + @override + Future setProjectionMatrixWithCulling(Matrix4 projectionMatrix, + double near, double far) async { + Camera_setCustomProjectionWithCulling( + pointer, + matrix4ToDouble4x4(projectionMatrix), + near, + far); + } +} diff --git a/thermion_dart/lib/thermion_dart/viewer/ffi/thermion_dart.g.dart b/thermion_dart/lib/thermion_dart/viewer/ffi/thermion_dart.g.dart new file mode 100644 index 00000000..e63e4e2b --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/ffi/thermion_dart.g.dart @@ -0,0 +1,2127 @@ +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +@ffi.DefaultAsset('package:thermion_dart/thermion_dart.dart') +library; + +import 'dart:ffi' as ffi; + +@ffi.Native< + ffi.Pointer Function(LoadFilamentResourceFromOwner, + FreeFilamentResourceFromOwner, ffi.Pointer)>(isLeaf: true) +external ffi.Pointer make_resource_loader( + LoadFilamentResourceFromOwner loadFn, + FreeFilamentResourceFromOwner freeFn, + ffi.Pointer owner, +); + +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(isLeaf: true) +external ffi.Pointer create_filament_viewer( + ffi.Pointer context, + ffi.Pointer loader, + ffi.Pointer platform, + ffi.Pointer uberArchivePath, +); + +@ffi.Native)>(isLeaf: true) +external void destroy_filament_viewer( + ffi.Pointer viewer, +); + +@ffi.Native Function(ffi.Pointer)>(isLeaf: true) +external ffi.Pointer get_scene_manager( + ffi.Pointer viewer, +); + +@ffi.Native Function(ffi.Pointer)>(isLeaf: true) +external ffi.Pointer Viewer_getEngine( + ffi.Pointer viewer, +); + +@ffi.Native Function(ffi.Pointer, EntityId)>( + isLeaf: true) +external ffi.Pointer Engine_getCameraComponent( + ffi.Pointer tEngine, + int entityId, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32)>(isLeaf: true) +external void create_render_target( + ffi.Pointer viewer, + int texture, + int width, + int height, +); + +@ffi.Native)>(isLeaf: true) +external void clear_background_image( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Pointer, ffi.Bool)>(isLeaf: true) +external void set_background_image( + ffi.Pointer viewer, + ffi.Pointer path, + bool fillHeight, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>(isLeaf: true) +external void set_background_image_position( + ffi.Pointer viewer, + double x, + double y, + bool clamp, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_background_color( + ffi.Pointer viewer, + double r, + double g, + double b, + double a, +); + +@ffi.Native, ffi.Int)>(isLeaf: true) +external void set_tone_mapping( + ffi.Pointer viewer, + int toneMapping, +); + +@ffi.Native, ffi.Float)>(isLeaf: true) +external void set_bloom( + ffi.Pointer viewer, + double strength, +); + +@ffi.Native, ffi.Pointer)>( + isLeaf: true) +external void load_skybox( + ffi.Pointer viewer, + ffi.Pointer skyboxPath, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Pointer, ffi.Float)>(isLeaf: true) +external void load_ibl( + ffi.Pointer viewer, + ffi.Pointer iblPath, + double intensity, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void create_ibl( + ffi.Pointer viewer, + double r, + double g, + double b, + double intensity, +); + +@ffi.Native, ffi.Pointer)>( + isLeaf: true) +external void rotate_ibl( + ffi.Pointer viewer, + ffi.Pointer rotationMatrix, +); + +@ffi.Native)>(isLeaf: true) +external void remove_skybox( + ffi.Pointer viewer, +); + +@ffi.Native)>(isLeaf: true) +external void remove_ibl( + ffi.Pointer viewer, +); + +@ffi.Native< + EntityId Function( + ffi.Pointer, + ffi.Uint8, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Bool)>(isLeaf: true) +external int add_light( + ffi.Pointer viewer, + int type, + double colour, + double intensity, + double posX, + double posY, + double posZ, + double dirX, + double dirY, + double dirZ, + double falloffRadius, + double spotLightConeInner, + double spotLightConeOuter, + double sunAngularRadius, + double sunHaloSize, + double sunHaloFallof, + bool shadows, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_light( + ffi.Pointer viewer, + int entityId, +); + +@ffi.Native)>(isLeaf: true) +external void clear_lights( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_light_position( + ffi.Pointer viewer, + int light, + double x, + double y, + double z, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_light_direction( + ffi.Pointer viewer, + int light, + double x, + double y, + double z, +); + +@ffi.Native< + EntityId Function(ffi.Pointer, ffi.Pointer, ffi.Int, + ffi.Bool)>(isLeaf: true) +external int load_glb( + ffi.Pointer sceneManager, + ffi.Pointer assetPath, + int numInstances, + bool keepData, +); + +@ffi.Native< + EntityId Function(ffi.Pointer, ffi.Pointer, ffi.Size, + ffi.Bool, ffi.Int, ffi.Int)>(isLeaf: true) +external int load_glb_from_buffer( + ffi.Pointer sceneManager, + ffi.Pointer data, + int length, + bool keepData, + int priority, + int layer, +); + +@ffi.Native< + EntityId Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>(isLeaf: true) +external int load_gltf( + ffi.Pointer sceneManager, + ffi.Pointer assetPath, + ffi.Pointer relativePath, + bool keepData, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external int create_instance( + ffi.Pointer sceneManager, + int id, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external int get_instance_count( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external void get_instances( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer out, +); + +@ffi.Native)>(isLeaf: true) +external void set_main_camera( + ffi.Pointer viewer, +); + +@ffi.Native)>(isLeaf: true) +external int get_main_camera( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Bool Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external bool set_camera( + ffi.Pointer viewer, + int entity, + ffi.Pointer nodeName, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_view_frustum_culling( + ffi.Pointer viewer, + bool enabled, +); + +@ffi.Native< + ffi.Bool Function( + ffi.Pointer, + ffi.Uint64, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer buf, ffi.Size size, + ffi.Pointer data)>>, + ffi.Pointer)>(isLeaf: true) +external bool render( + ffi.Pointer viewer, + int frameTimeInNanos, + ffi.Pointer pixelBuffer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer buf, ffi.Size size, + ffi.Pointer data)>> + callback, + ffi.Pointer data, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(isLeaf: true) +external void capture( + ffi.Pointer viewer, + ffi.Pointer pixelBuffer, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Uint32, + ffi.Uint32)>(isLeaf: true) +external void create_swap_chain( + ffi.Pointer viewer, + ffi.Pointer window, + int width, + int height, +); + +@ffi.Native)>(isLeaf: true) +external void destroy_swap_chain( + ffi.Pointer viewer, +); + +@ffi.Native, ffi.Float)>(isLeaf: true) +external void set_frame_interval( + ffi.Pointer viewer, + double interval, +); + +@ffi.Native, ffi.Uint32, ffi.Uint32)>( + isLeaf: true) +external void update_viewport( + ffi.Pointer viewer, + int width, + int height, +); + +@ffi.Native)>(isLeaf: true) +external void scroll_begin( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true) +external void scroll_update( + ffi.Pointer viewer, + double x, + double y, + double z, +); + +@ffi.Native)>(isLeaf: true) +external void scroll_end( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>(isLeaf: true) +external void grab_begin( + ffi.Pointer viewer, + double x, + double y, + bool pan, +); + +@ffi.Native, ffi.Float, ffi.Float)>( + isLeaf: true) +external void grab_update( + ffi.Pointer viewer, + double x, + double y, +); + +@ffi.Native)>(isLeaf: true) +external void grab_end( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void apply_weights( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer entityName, + ffi.Pointer weights, + int count, +); + +@ffi.Native< + ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Int)>(isLeaf: true) +external bool set_morph_target_weights( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer morphData, + int numWeights, +); + +@ffi.Native< + ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Pointer, ffi.Int, ffi.Int, ffi.Float)>(isLeaf: true) +external bool set_morph_animation( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer morphData, + ffi.Pointer morphIndices, + int numMorphTargets, + int numFrames, + double frameLengthInMs, +); + +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, TMaterialKey)>(isLeaf: true) +external ffi.Pointer create_material_instance( + ffi.Pointer sceneManager, + TMaterialKey materialConfig, +); + +@ffi.Native Function(ffi.Pointer)>( + isLeaf: true) +external ffi.Pointer create_unlit_material_instance( + ffi.Pointer sceneManager, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>(isLeaf: true) +external void destroy_material_instance( + ffi.Pointer sceneManager, + ffi.Pointer instance, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void clear_morph_animation( + ffi.Pointer sceneManager, + int entity, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void reset_to_rest_pose( + ffi.Pointer sceneManager, + int asset, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float)>(isLeaf: true) +external void add_bone_animation( + ffi.Pointer sceneManager, + int entity, + int skinIndex, + int boneIndex, + ffi.Pointer frameData, + int numFrames, + double frameLengthInMs, + double fadeOutInSecs, + double fadeInInSecs, + double maxDelta, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external void get_local_transform( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer arg2, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void get_rest_local_transforms( + ffi.Pointer sceneManager, + int entityId, + int skinIndex, + ffi.Pointer out, + int numBones, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external void get_world_transform( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer arg2, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int, + ffi.Pointer)>(isLeaf: true) +external void get_inverse_bind_matrix( + ffi.Pointer sceneManager, + int entityId, + int skinIndex, + int boneIndex, + ffi.Pointer arg4, +); + +@ffi.Native< + ffi.Bool Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int, + ffi.Pointer)>(isLeaf: true) +external bool set_bone_transform( + ffi.Pointer sceneManager, + int entity, + int skinIndex, + int boneIndex, + ffi.Pointer transform, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Bool, + ffi.Bool, ffi.Bool, ffi.Float, ffi.Float)>(isLeaf: true) +external void play_animation( + ffi.Pointer sceneManager, + int entity, + int index, + bool loop, + bool reverse, + bool replaceActive, + double crossfade, + double startOffset, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Int, ffi.Int)>(isLeaf: true) +external void set_animation_frame( + ffi.Pointer sceneManager, + int entity, + int animationIndex, + int animationFrame, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external void stop_animation( + ffi.Pointer sceneManager, + int entity, + int index, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external int get_animation_count( + ffi.Pointer sceneManager, + int asset, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Int)>(isLeaf: true) +external void get_animation_name( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer outPtr, + int index, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external double get_animation_duration( + ffi.Pointer sceneManager, + int entity, + int index, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external int get_bone_count( + ffi.Pointer sceneManager, + int assetEntity, + int skinIndex, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>, ffi.Int)>(isLeaf: true) +external void get_bone_names( + ffi.Pointer sceneManager, + int assetEntity, + ffi.Pointer> outPtr, + int skinIndex, +); + +@ffi.Native< + EntityId Function( + ffi.Pointer, EntityId, ffi.Int, ffi.Int)>(isLeaf: true) +external int get_bone( + ffi.Pointer sceneManager, + int entityId, + int skinIndex, + int boneIndex, +); + +@ffi.Native< + ffi.Bool Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external bool set_transform( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer transform, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external bool update_bone_matrices( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, EntityId, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void get_morph_target_name( + ffi.Pointer sceneManager, + int assetEntity, + int childEntity, + ffi.Pointer outPtr, + int index, +); + +@ffi.Native, EntityId, EntityId)>( + isLeaf: true) +external int get_morph_target_name_count( + ffi.Pointer sceneManager, + int assetEntity, + int childEntity, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_entity( + ffi.Pointer viewer, + int asset, +); + +@ffi.Native)>(isLeaf: true) +external void clear_entities( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Int, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true) +external bool set_material_color( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer meshName, + int materialIndex, + double r, + double g, + double b, + double a, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void transform_to_unit_cube( + ffi.Pointer sceneManager, + int asset, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float, ffi.Bool)>(isLeaf: true) +external void queue_position_update( + ffi.Pointer sceneManager, + int entity, + double x, + double y, + double z, + bool relative, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true) +external void queue_relative_position_update_world_axis( + ffi.Pointer sceneManager, + int entity, + double viewportX, + double viewportY, + double x, + double y, + double z, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Float, ffi.Float)>(isLeaf: true) +external void queue_position_update_from_viewport_coords( + ffi.Pointer sceneManager, + int entity, + double viewportX, + double viewportY, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float, ffi.Float, ffi.Float, ffi.Bool)>(isLeaf: true) +external void queue_rotation_update( + ffi.Pointer sceneManager, + int entity, + double rads, + double x, + double y, + double z, + double w, + bool relative, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_position( + ffi.Pointer sceneManager, + int entity, + double x, + double y, + double z, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true) +external void set_rotation( + ffi.Pointer sceneManager, + int entity, + double rads, + double x, + double y, + double z, + double w, +); + +@ffi.Native, EntityId, ffi.Float)>( + isLeaf: true) +external void set_scale( + ffi.Pointer sceneManager, + int entity, + double scale, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true) +external void set_camera_exposure( + ffi.Pointer camera, + double aperture, + double shutterSpeed, + double sensitivity, +); + +@ffi.Native, double4x4)>(isLeaf: true) +external void set_camera_model_matrix( + ffi.Pointer camera, + double4x4 matrix, +); + +@ffi.Native Function(ffi.Pointer, EntityId)>( + isLeaf: true) +external ffi.Pointer get_camera( + ffi.Pointer viewer, + int entity, +); + +@ffi.Native)>(isLeaf: true) +external double get_camera_focal_length( + ffi.Pointer camera, +); + +@ffi.Native)>(isLeaf: true) +external double4x4 get_camera_model_matrix( + ffi.Pointer camera, +); + +@ffi.Native)>(isLeaf: true) +external double4x4 get_camera_view_matrix( + ffi.Pointer camera, +); + +@ffi.Native)>(isLeaf: true) +external double4x4 get_camera_projection_matrix( + ffi.Pointer camera, +); + +@ffi.Native)>(isLeaf: true) +external double4x4 get_camera_culling_projection_matrix( + ffi.Pointer camera, +); + +@ffi.Native Function(ffi.Pointer)>( + isLeaf: true) +external ffi.Pointer get_camera_frustum( + ffi.Pointer camera, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, double4x4, ffi.Double, ffi.Double)>(isLeaf: true) +external void set_camera_projection_matrix( + ffi.Pointer camera, + double4x4 matrix, + double near, + double far, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Double, ffi.Double, ffi.Double, + ffi.Double, ffi.Bool)>(isLeaf: true) +external void set_camera_projection_from_fov( + ffi.Pointer camera, + double fovInDegrees, + double aspect, + double near, + double far, + bool horizontal, +); + +@ffi.Native)>(isLeaf: true) +external double get_camera_near( + ffi.Pointer camera, +); + +@ffi.Native)>(isLeaf: true) +external double get_camera_culling_far( + ffi.Pointer camera, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external double get_camera_fov( + ffi.Pointer camera, + bool horizontal, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Double, ffi.Double, ffi.Double, + ffi.Double)>(isLeaf: true) +external void set_camera_lens_projection( + ffi.Pointer camera, + double near, + double far, + double aspect, + double focalLength, +); + +@ffi.Native, ffi.Float)>(isLeaf: true) +external void set_camera_focus_distance( + ffi.Pointer camera, + double focusDistance, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, _ManipulatorMode, ffi.Double, + ffi.Double, ffi.Double)>(isLeaf: true) +external void set_camera_manipulator_options( + ffi.Pointer viewer, + int mode, + double orbitSpeedX, + double orbitSpeedY, + double zoomSpeed, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, double4x4, ffi.Double, ffi.Double)>(isLeaf: true) +external void Camera_setCustomProjectionWithCulling( + ffi.Pointer camera, + double4x4 projectionMatrix, + double near, + double far, +); + +@ffi.Native Function(ffi.Pointer, EntityId)>( + isLeaf: true) +external ffi.Pointer get_camera_component( + ffi.Pointer engine, + int entity, +); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external int hide_mesh( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer meshName, +); + +@ffi.Native< + ffi.Int Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external int reveal_mesh( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer meshName, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_post_processing( + ffi.Pointer viewer, + bool enabled, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_shadows_enabled( + ffi.Pointer viewer, + bool enabled, +); + +@ffi.Native, ffi.Int)>(isLeaf: true) +external void set_shadow_type( + ffi.Pointer viewer, + int shadowType, +); + +@ffi.Native, ffi.Float, ffi.Float)>( + isLeaf: true) +external void set_soft_shadow_options( + ffi.Pointer viewer, + double penumbraScale, + double penumbraRatioScale, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Bool, ffi.Bool, ffi.Bool)>(isLeaf: true) +external void set_antialiasing( + ffi.Pointer viewer, + bool msaa, + bool fxaa, + bool taa, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + EntityId entityId, ffi.Int x, ffi.Int y)>>)>(isLeaf: true) +external void filament_pick( + ffi.Pointer viewer, + int x, + int y, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(EntityId entityId, ffi.Int x, ffi.Int y)>> + callback, +); + +@ffi.Native Function(ffi.Pointer, EntityId)>( + isLeaf: true) +external ffi.Pointer get_name_for_entity( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native< + EntityId Function( + ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) +external int find_child_entity_by_name( + ffi.Pointer sceneManager, + int parent, + ffi.Pointer name, +); + +@ffi.Native, EntityId, ffi.Bool)>( + isLeaf: true) +external int get_entity_count( + ffi.Pointer sceneManager, + int target, + bool renderableOnly, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Bool, + ffi.Pointer)>(isLeaf: true) +external void get_entities( + ffi.Pointer sceneManager, + int target, + bool renderableOnly, + ffi.Pointer out, +); + +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, EntityId, ffi.Int, ffi.Bool)>(isLeaf: true) +external ffi.Pointer get_entity_name_at( + ffi.Pointer sceneManager, + int target, + int index, + bool renderableOnly, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_recording( + ffi.Pointer viewer, + bool recording, +); + +@ffi.Native, ffi.Pointer)>( + isLeaf: true) +external void set_recording_output_directory( + ffi.Pointer viewer, + ffi.Pointer outputDirectory, +); + +@ffi.Native(isLeaf: true) +external void ios_dummy(); + +@ffi.Native)>(isLeaf: true) +external void thermion_flutter_free( + ffi.Pointer ptr, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(EntityId entityId1, EntityId entityId2)>>, + ffi.Bool)>(isLeaf: true) +external void add_collision_component( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(EntityId entityId1, EntityId entityId2)>> + callback, + bool affectsCollidingTransform, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_collision_component( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external bool add_animation_component( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_animation_component( + ffi.Pointer sceneManager, + int entityId, +); + +@ffi.Native< + EntityId Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Bool)>(isLeaf: true) +external int create_geometry( + ffi.Pointer sceneManager, + ffi.Pointer vertices, + int numVertices, + ffi.Pointer normals, + int numNormals, + ffi.Pointer uvs, + int numUvs, + ffi.Pointer indices, + int numIndices, + int primitiveType, + ffi.Pointer materialInstance, + bool keepData, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external int get_parent( + ffi.Pointer sceneManager, + int child, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external int get_ancestor( + ffi.Pointer sceneManager, + int child, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, EntityId, ffi.Bool)>(isLeaf: true) +external void set_parent( + ffi.Pointer sceneManager, + int child, + int parent, + bool preserveScaling, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void test_collisions( + ffi.Pointer sceneManager, + int entity, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external void set_priority( + ffi.Pointer sceneManager, + int entityId, + int priority, +); + +@ffi.Native, ffi.Pointer)>( + isLeaf: true) +external void get_gizmo( + ffi.Pointer sceneManager, + ffi.Pointer out, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external Aabb2 get_bounding_box( + ffi.Pointer sceneManager, + int entity, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(isLeaf: true) +external void get_bounding_box_to_out( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer minX, + ffi.Pointer minY, + ffi.Pointer maxX, + ffi.Pointer maxY, +); + +@ffi.Native, ffi.Int, ffi.Bool)>( + isLeaf: true) +external void set_layer_visibility( + ffi.Pointer sceneManager, + int layer, + bool visible, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external void set_visibility_layer( + ffi.Pointer sceneManager, + int entity, + int layer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + EntityId entityId, ffi.Int x, ffi.Int y)>>)>(isLeaf: true) +external void pick_gizmo( + ffi.Pointer sceneManager, + int x, + int y, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(EntityId entityId, ffi.Int x, ffi.Int y)>> + callback, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_gizmo_visibility( + ffi.Pointer sceneManager, + bool visible, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_stencil_highlight( + ffi.Pointer sceneManager, + int entity, + double r, + double g, + double b, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_stencil_highlight( + ffi.Pointer sceneManager, + int entity, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, + ffi.Pointer, ffi.Float)>(isLeaf: true) +external void set_material_property_float( + ffi.Pointer sceneManager, + int entity, + int materialIndex, + ffi.Pointer property, + double value, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void set_material_property_int( + ffi.Pointer sceneManager, + int entity, + int materialIndex, + ffi.Pointer property, + int value, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, + ffi.Pointer, double4)>(isLeaf: true) +external void set_material_property_float4( + ffi.Pointer sceneManager, + int entity, + int materialIndex, + ffi.Pointer property, + double4 value, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Int, ffi.Bool)>(isLeaf: true) +external void set_material_depth_write( + ffi.Pointer sceneManager, + int entity, + int materialIndex, + bool enabled, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Uint32, + ffi.Uint32, + ffi.Pointer, + ffi.Uint32, + ffi.Uint32)>(isLeaf: true) +external void unproject_texture( + ffi.Pointer viewer, + int entity, + ffi.Pointer input, + int inputWidth, + int inputHeight, + ffi.Pointer out, + int outWidth, + int outHeight, +); + +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, ffi.Size)>(isLeaf: true) +external ffi.Pointer create_texture( + ffi.Pointer sceneManager, + ffi.Pointer data, + int length, +); + +@ffi.Native, ffi.Pointer)>( + isLeaf: true) +external void destroy_texture( + ffi.Pointer sceneManager, + ffi.Pointer texture, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void apply_texture_to_material( + ffi.Pointer sceneManager, + int entity, + ffi.Pointer texture, + ffi.Pointer parameterName, + int materialIndex, +); + +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer, EntityId, ffi.Int)>(isLeaf: true) +external ffi.Pointer get_material_instance_at( + ffi.Pointer sceneManager, + int entity, + int materialIndex, +); + +@ffi.Native, ffi.Bool)>( + isLeaf: true) +external void MaterialInstance_setDepthWrite( + ffi.Pointer materialInstance, + bool enabled, +); + +@ffi.Native, ffi.Bool)>( + isLeaf: true) +external void MaterialInstance_setDepthCulling( + ffi.Pointer materialInstance, + bool enabled, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer renderCallbackOwner)>>, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer viewer)>>)>(isLeaf: true) +external void create_filament_viewer_render_thread( + ffi.Pointer context, + ffi.Pointer platform, + ffi.Pointer uberArchivePath, + ffi.Pointer loader, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer renderCallbackOwner)>> + renderCallback, + ffi.Pointer renderCallbackOwner, + ffi.Pointer< + ffi.NativeFunction viewer)>> + callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Uint32, + ffi.Uint32, + ffi.Pointer>)>(isLeaf: true) +external void create_swap_chain_render_thread( + ffi.Pointer viewer, + ffi.Pointer surface, + int width, + int height, + ffi.Pointer> onComplete, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, + ffi.Pointer>)>(isLeaf: true) +external void destroy_swap_chain_render_thread( + ffi.Pointer viewer, + ffi.Pointer> onComplete, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32, + ffi.Pointer>)>(isLeaf: true) +external void create_render_target_render_thread( + ffi.Pointer viewer, + int nativeTextureId, + int width, + int height, + ffi.Pointer> onComplete, +); + +@ffi.Native)>(isLeaf: true) +external void destroy_filament_viewer_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native)>(isLeaf: true) +external void render_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(isLeaf: true) +external void capture_render_thread( + ffi.Pointer viewer, + ffi.Pointer out, + ffi.Pointer> onComplete, +); + +@ffi.Native( + isLeaf: true) +external FilamentRenderCallback make_render_callback_fn_pointer( + FilamentRenderCallback arg0, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Bool, + ffi.Pointer>)>(isLeaf: true) +external void set_rendering_render_thread( + ffi.Pointer viewer, + bool rendering, + ffi.Pointer> onComplete, +); + +@ffi.Native)>(isLeaf: true) +external void request_frame_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native, ffi.Float)>(isLeaf: true) +external void set_frame_interval_render_thread( + ffi.Pointer viewer, + double frameInterval, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, + ffi.Float)>(isLeaf: true) +external void set_background_color_render_thread( + ffi.Pointer viewer, + double r, + double g, + double b, + double a, +); + +@ffi.Native)>(isLeaf: true) +external void clear_background_image_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Bool, + ffi.Pointer>)>(isLeaf: true) +external void set_background_image_render_thread( + ffi.Pointer viewer, + ffi.Pointer path, + bool fillHeight, + ffi.Pointer> onComplete, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>(isLeaf: true) +external void set_background_image_position_render_thread( + ffi.Pointer viewer, + double x, + double y, + bool clamp, +); + +@ffi.Native, ffi.Int)>(isLeaf: true) +external void set_tone_mapping_render_thread( + ffi.Pointer viewer, + int toneMapping, +); + +@ffi.Native, ffi.Float)>(isLeaf: true) +external void set_bloom_render_thread( + ffi.Pointer viewer, + double strength, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(isLeaf: true) +external void load_skybox_render_thread( + ffi.Pointer viewer, + ffi.Pointer skyboxPath, + ffi.Pointer> onComplete, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, ffi.Pointer, ffi.Float)>(isLeaf: true) +external void load_ibl_render_thread( + ffi.Pointer viewer, + ffi.Pointer iblPath, + double intensity, +); + +@ffi.Native)>(isLeaf: true) +external void remove_skybox_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native)>(isLeaf: true) +external void remove_ibl_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Uint8, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Bool, + ffi.Pointer>)>( + isLeaf: true) +external void add_light_render_thread( + ffi.Pointer viewer, + int type, + double colour, + double intensity, + double posX, + double posY, + double posZ, + double dirX, + double dirY, + double dirZ, + double falloffRadius, + double spotLightConeInner, + double spotLightConeOuter, + double sunAngularRadius, + double sunHaloSize, + double sunHaloFallof, + bool shadows, + ffi.Pointer> callback, +); + +@ffi.Native, EntityId)>(isLeaf: true) +external void remove_light_render_thread( + ffi.Pointer viewer, + int entityId, +); + +@ffi.Native)>(isLeaf: true) +external void clear_lights_render_thread( + ffi.Pointer viewer, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Bool, + ffi.Pointer>)>( + isLeaf: true) +external void load_glb_render_thread( + ffi.Pointer sceneManager, + ffi.Pointer assetPath, + int numInstances, + bool keepData, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Size, + ffi.Int, + ffi.Bool, + ffi.Int, + ffi.Int, + ffi.Pointer>)>( + isLeaf: true) +external void load_glb_from_buffer_render_thread( + ffi.Pointer sceneManager, + ffi.Pointer data, + int length, + int numInstances, + bool keepData, + int priority, + int layer, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>( + isLeaf: true) +external void load_gltf_render_thread( + ffi.Pointer sceneManager, + ffi.Pointer assetPath, + ffi.Pointer relativePath, + bool keepData, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>)>( + isLeaf: true) +external void create_instance_render_thread( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>)>(isLeaf: true) +external void remove_entity_render_thread( + ffi.Pointer viewer, + int asset, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, + ffi.Pointer>)>(isLeaf: true) +external void clear_entities_render_thread( + ffi.Pointer viewer, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Pointer>)>( + isLeaf: true) +external void set_camera_render_thread( + ffi.Pointer viewer, + int asset, + ffi.Pointer nodeName, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Pointer, ffi.Int)>(isLeaf: true) +external void apply_weights_render_thread( + ffi.Pointer sceneManager, + int asset, + ffi.Pointer entityName, + ffi.Pointer weights, + int count, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, EntityId, ffi.Int, ffi.Int)>(isLeaf: true) +external void set_animation_frame_render_thread( + ffi.Pointer sceneManager, + int asset, + int animationIndex, + int animationFrame, +); + +@ffi.Native, EntityId, ffi.Int)>( + isLeaf: true) +external void stop_animation_render_thread( + ffi.Pointer sceneManager, + int asset, + int index, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>)>( + isLeaf: true) +external void get_animation_count_render_thread( + ffi.Pointer sceneManager, + int asset, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Pointer>)>(isLeaf: true) +external void get_animation_name_render_thread( + ffi.Pointer sceneManager, + int asset, + ffi.Pointer outPtr, + int index, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Pointer>)>(isLeaf: true) +external void get_morph_target_name_render_thread( + ffi.Pointer sceneManager, + int assetEntity, + int childEntity, + ffi.Pointer outPtr, + int index, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, EntityId, + ffi.Pointer>)>( + isLeaf: true) +external void get_morph_target_name_count_render_thread( + ffi.Pointer sceneManager, + int asset, + int childEntity, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Pointer>)>( + isLeaf: true) +external void set_morph_target_weights_render_thread( + ffi.Pointer sceneManager, + int asset, + ffi.Pointer morphData, + int numWeights, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>)>( + isLeaf: true) +external void update_bone_matrices_render_thread( + ffi.Pointer sceneManager, + int asset, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Pointer>)>( + isLeaf: true) +external void set_bone_transform_render_thread( + ffi.Pointer sceneManager, + int asset, + int skinIndex, + int boneIndex, + ffi.Pointer transform, + ffi.Pointer> callback, +); + +@ffi.Native, ffi.Bool)>(isLeaf: true) +external void set_post_processing_render_thread( + ffi.Pointer viewer, + bool enabled, +); + +@ffi.Native< + ffi.Void Function(ffi.Pointer, EntityId, + ffi.Pointer>)>(isLeaf: true) +external void reset_to_rest_pose_render_thread( + ffi.Pointer sceneManager, + int entityId, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>( + isLeaf: true) +external void create_geometry_render_thread( + ffi.Pointer sceneManager, + ffi.Pointer vertices, + int numVertices, + ffi.Pointer normals, + int numNormals, + ffi.Pointer uvs, + int numUvs, + ffi.Pointer indices, + int numIndices, + int primitiveType, + ffi.Pointer materialInstance, + bool keepData, + ffi.Pointer> callback, +); + +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Uint32, + ffi.Uint32, + ffi.Pointer, + ffi.Uint32, + ffi.Uint32, + ffi.Pointer>)>(isLeaf: true) +external void unproject_texture_render_thread( + ffi.Pointer viewer, + int entity, + ffi.Pointer input, + int inputWidth, + int inputHeight, + ffi.Pointer out, + int outWidth, + int outHeight, + ffi.Pointer> callback, +); + +final class TCamera extends ffi.Opaque {} + +final class TMaterialInstance extends ffi.Opaque {} + +final class TEngine extends ffi.Opaque {} + +final class TViewer extends ffi.Opaque {} + +final class TMaterialKey extends ffi.Struct { + @ffi.Bool() + external bool doubleSided; + + @ffi.Bool() + external bool unlit; + + @ffi.Bool() + external bool hasVertexColors; + + @ffi.Bool() + external bool hasBaseColorTexture; + + @ffi.Bool() + external bool hasNormalTexture; + + @ffi.Bool() + external bool hasOcclusionTexture; + + @ffi.Bool() + external bool hasEmissiveTexture; + + @ffi.Bool() + external bool useSpecularGlossiness; + + @ffi.Int() + external int alphaMode; + + @ffi.Bool() + external bool enableDiagnostics; + + external UnnamedUnion1 unnamed; + + @ffi.Uint8() + external int baseColorUV; + + @ffi.Bool() + external bool hasClearCoatTexture; + + @ffi.Uint8() + external int clearCoatUV; + + @ffi.Bool() + external bool hasClearCoatRoughnessTexture; + + @ffi.Uint8() + external int clearCoatRoughnessUV; + + @ffi.Bool() + external bool hasClearCoatNormalTexture; + + @ffi.Uint8() + external int clearCoatNormalUV; + + @ffi.Bool() + external bool hasClearCoat; + + @ffi.Bool() + external bool hasTransmission; + + @ffi.Bool() + external bool hasTextureTransforms; + + @ffi.Uint8() + external int emissiveUV; + + @ffi.Uint8() + external int aoUV; + + @ffi.Uint8() + external int normalUV; + + @ffi.Bool() + external bool hasTransmissionTexture; + + @ffi.Uint8() + external int transmissionUV; + + @ffi.Bool() + external bool hasSheenColorTexture; + + @ffi.Uint8() + external int sheenColorUV; + + @ffi.Bool() + external bool hasSheenRoughnessTexture; + + @ffi.Uint8() + external int sheenRoughnessUV; + + @ffi.Bool() + external bool hasVolumeThicknessTexture; + + @ffi.Uint8() + external int volumeThicknessUV; + + @ffi.Bool() + external bool hasSheen; + + @ffi.Bool() + external bool hasIOR; + + @ffi.Bool() + external bool hasVolume; +} + +final class UnnamedUnion1 extends ffi.Union { + external UnnamedStruct1 unnamed; + + external UnnamedStruct2 unnamed1; +} + +final class UnnamedStruct1 extends ffi.Struct { + @ffi.Bool() + external bool hasMetallicRoughnessTexture; + + @ffi.Uint8() + external int metallicRoughnessUV; +} + +final class UnnamedStruct2 extends ffi.Struct { + @ffi.Bool() + external bool hasSpecularGlossinessTexture; + + @ffi.Uint8() + external int specularGlossinessUV; +} + +final class double4 extends ffi.Struct { + @ffi.Double() + external double x; + + @ffi.Double() + external double y; + + @ffi.Double() + external double z; + + @ffi.Double() + external double w; +} + +final class double4x4 extends ffi.Struct { + @ffi.Array.multi([4]) + external ffi.Array col1; + + @ffi.Array.multi([4]) + external ffi.Array col2; + + @ffi.Array.multi([4]) + external ffi.Array col3; + + @ffi.Array.multi([4]) + external ffi.Array col4; +} + +final class Aabb2 extends ffi.Struct { + @ffi.Float() + external double minX; + + @ffi.Float() + external double minY; + + @ffi.Float() + external double maxX; + + @ffi.Float() + external double maxY; +} + +final class ResourceBuffer extends ffi.Struct { + external ffi.Pointer data; + + @ffi.Int32() + external int size; + + @ffi.Int32() + external int id; +} + +final class ResourceLoaderWrapper extends ffi.Struct { + external LoadFilamentResource loadResource; + + external FreeFilamentResource freeResource; + + external LoadFilamentResourceFromOwner loadFromOwner; + + external FreeFilamentResourceFromOwner freeFromOwner; + + external ffi.Pointer owner; + + external LoadFilamentResourceIntoOutPointer loadToOut; +} + +typedef LoadFilamentResource + = ffi.Pointer>; +typedef LoadFilamentResourceFunction = ResourceBuffer Function( + ffi.Pointer uri); +typedef FreeFilamentResource + = ffi.Pointer>; +typedef FreeFilamentResourceFunction = ffi.Void Function(ResourceBuffer); +typedef DartFreeFilamentResourceFunction = void Function(ResourceBuffer); +typedef LoadFilamentResourceFromOwner + = ffi.Pointer>; +typedef LoadFilamentResourceFromOwnerFunction = ResourceBuffer Function( + ffi.Pointer, ffi.Pointer); +typedef FreeFilamentResourceFromOwner + = ffi.Pointer>; +typedef FreeFilamentResourceFromOwnerFunction = ffi.Void Function( + ResourceBuffer, ffi.Pointer); +typedef DartFreeFilamentResourceFromOwnerFunction = void Function( + ResourceBuffer, ffi.Pointer); +typedef LoadFilamentResourceIntoOutPointer = ffi + .Pointer>; +typedef LoadFilamentResourceIntoOutPointerFunction = ffi.Void Function( + ffi.Pointer uri, ffi.Pointer out); +typedef DartLoadFilamentResourceIntoOutPointerFunction = void Function( + ffi.Pointer uri, ffi.Pointer out); + +/// This header replicates most of the methods in ThermionDartApi.h. +/// It represents the interface for: +/// - invoking those methods that must be called on the main Filament engine thread +/// - setting up a render loop +typedef EntityId = ffi.Int32; +typedef DartEntityId = int; +typedef _ManipulatorMode = ffi.Int32; +typedef Dart_ManipulatorMode = int; +typedef FilamentRenderCallback + = ffi.Pointer>; +typedef FilamentRenderCallbackFunction = ffi.Void Function( + ffi.Pointer owner); +typedef DartFilamentRenderCallbackFunction = void Function( + ffi.Pointer owner); + +const int __bool_true_false_are_defined = 1; + +const int true1 = 1; + +const int false1 = 0; diff --git a/thermion_dart/lib/thermion_dart/thermion_viewer_ffi.dart b/thermion_dart/lib/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart similarity index 61% rename from thermion_dart/lib/thermion_dart/thermion_viewer_ffi.dart rename to thermion_dart/lib/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart index e22157a5..25f173c5 100644 --- a/thermion_dart/lib/thermion_dart/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart @@ -2,15 +2,17 @@ import 'dart:async'; import 'dart:math'; import 'dart:typed_data'; import 'package:animation_tools_dart/animation_tools_dart.dart'; -import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart'; import 'package:thermion_dart/thermion_dart/entities/gizmo.dart'; -import 'package:thermion_dart/thermion_dart/scene.dart'; -import 'package:vector_math/vector_math_64.dart'; -import 'thermion_viewer.dart'; -import 'scene_impl.dart'; -import 'package:logging/logging.dart'; -typedef ThermionViewerImpl = ThermionViewerFFI; +import 'package:thermion_dart/thermion_dart/utils/matrix.dart'; +import 'package:thermion_dart/thermion_dart/viewer/events.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/callbacks.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/camera_ffi.dart'; +import 'package:thermion_dart/thermion_dart/viewer/shared_types/camera.dart'; +import 'package:vector_math/vector_math_64.dart'; +import 'package:vector_math/vector_math_64.dart' as v64; +import '../thermion_viewer_base.dart'; +import 'package:logging/logging.dart'; // ignore: constant_identifier_names const ThermionEntity _FILAMENT_ASSET_ERROR = 0; @@ -20,14 +22,11 @@ typedef RenderCallback = Pointer)>>; class ThermionViewerFFI extends ThermionViewer { final _logger = Logger("ThermionViewerFFI"); - SceneImpl? _scene; - Scene get scene => _scene!; - - double _pixelRatio = 1.0; + double pixelRatio = 1.0; Pointer? _sceneManager; - Pointer? _viewer; + Pointer? _viewer; final String? uberArchivePath; @@ -42,6 +41,23 @@ class ThermionViewerFFI extends ThermionViewer { final _pickResultController = StreamController.broadcast(); + /// + /// + /// + @override + Stream get gizmoPickResult => + _gizmoPickResultController.stream; + final _gizmoPickResultController = + StreamController.broadcast(); + + /// + /// + /// + Stream get sceneUpdated => + _sceneUpdateEventController.stream; + final _sceneUpdateEventController = + StreamController.broadcast(); + final Pointer resourceLoader; var _driver = nullptr.cast(); @@ -66,41 +82,57 @@ class ThermionViewerFFI extends ThermionViewer { this._renderCallback = renderCallback ?? nullptr; this._driver = driver ?? nullptr; this._sharedContext = sharedContext ?? nullptr; - try { - _onPickResultCallable = - NativeCallable.listener( - _onPickResult); - } catch (err) { - _logger.severe( - "Failed to set pick result callback. This is expected if running on web/wasm"); - } + + _onPickResultCallable = + NativeCallable.listener( + _onPickResult); + + _onGizmoPickResultCallable = + NativeCallable.listener( + _onGizmoPickResult); + _initialize(); } Future createRenderTarget( double width, double height, int textureHandle) async { - await withVoidCallback((callback) => create_render_target_ffi( + await withVoidCallback((callback) => create_render_target_render_thread( _viewer!, textureHandle, width.toInt(), height.toInt(), callback)); } Future updateViewportAndCameraProjection(double width, double height) async { - await withVoidCallback((callback) { - update_viewport_and_camera_projection_ffi( - _viewer!, width.toInt(), height.toInt(), 1.0, callback); - }); + viewportDimensions = (width * pixelRatio, height * pixelRatio); + update_viewport(_viewer!, width.toInt(), height.toInt()); + var mainCamera = await getMainCamera() as ThermionFFICamera; + var near = await getCameraCullingNear(); + if (near.abs() < 0.000001) { + near = kNear; + } + var far = await getCameraCullingFar(); + if (far.abs() < 0.000001) { + far = kFar; + } + + var aspect = viewportDimensions.$1 / viewportDimensions.$2; + var focalLength = get_camera_focal_length(mainCamera.pointer); + if (focalLength.abs() < 0.1) { + focalLength = kFocalLength; + } + set_camera_lens_projection( + mainCamera.pointer, near, far, aspect, focalLength); } Future createSwapChain(double width, double height, {Pointer? surface}) async { await withVoidCallback((callback) { - create_swap_chain_ffi(_viewer!, surface ?? nullptr, width.toInt(), - height.toInt(), callback); + create_swap_chain_render_thread(_viewer!, surface ?? nullptr, + width.toInt(), height.toInt(), callback); }); } Future destroySwapChain() async { await withVoidCallback((callback) { - destroy_swap_chain_ffi(_viewer!, callback); + destroy_swap_chain_render_thread(_viewer!, callback); }); } @@ -111,10 +143,16 @@ class ThermionViewerFFI extends ThermionViewer { final uberarchivePtr = uberArchivePath?.toNativeUtf8(allocator: allocator).cast() ?? nullptr; - var viewer = await withVoidPointerCallback( - (Pointer)>> callback) { - create_filament_viewer_ffi(_sharedContext, _driver, uberarchivePtr, - resourceLoader, _renderCallback, _renderCallbackOwner, callback); + var viewer = await withPointerCallback( + (Pointer)>> callback) { + create_filament_viewer_render_thread( + _sharedContext, + _driver, + uberarchivePtr, + resourceLoader, + _renderCallback, + _renderCallbackOwner, + callback); }); _viewer = Pointer.fromAddress(viewer); allocator.free(uberarchivePtr); @@ -123,15 +161,14 @@ class ThermionViewerFFI extends ThermionViewer { } _sceneManager = get_scene_manager(_viewer!); - _scene = SceneImpl(this); await setCameraManipulatorOptions(zoomSpeed: 1.0); - final out = allocator(3); - get_gizmo(_sceneManager!, out); - _gizmo = Gizmo(out[0], out[1], out[2], this); - allocator.free(out); - + final gizmoEntities = allocator(4); + get_gizmo(_sceneManager!, gizmoEntities); + _gizmo = Gizmo(gizmoEntities[0], gizmoEntities[1], gizmoEntities[2], + gizmoEntities[3], this); + allocator.free(gizmoEntities); this._initialized.complete(true); } @@ -149,9 +186,9 @@ class ThermionViewerFFI extends ThermionViewer { @override Future setRendering(bool render) async { _rendering = render; - await withVoidCallback((cb) { - set_rendering_ffi(_viewer!, render, cb); - }); + // await withVoidCallback((cb) { + // set_rendering_render_thread(_viewer!, render, cb); + // }); } /// @@ -159,7 +196,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future render() async { - render_ffi(_viewer!); + render_render_thread(_viewer!); } /// @@ -172,7 +209,7 @@ class ThermionViewerFFI extends ThermionViewer { 4; final out = allocator(length); await withVoidCallback((cb) { - capture_ffi(_viewer!, out, cb); + capture_render_thread(_viewer!, out, cb); }); final data = Uint8List.fromList(out.asTypedList(length)); allocator.free(out); @@ -185,7 +222,7 @@ class ThermionViewerFFI extends ThermionViewer { @override Future setFrameRate(int framerate) async { final interval = 1000.0 / framerate; - set_frame_interval_ffi(_viewer!, interval); + set_frame_interval_render_thread(_viewer!, interval); } final _onDispose = []; @@ -202,18 +239,20 @@ class ThermionViewerFFI extends ThermionViewer { await setRendering(false); await clearEntities(); await clearLights(); - await _scene!.dispose(); - _scene = null; - destroy_filament_viewer_ffi(_viewer!); - + print("DESTROYING"); + destroy_filament_viewer_render_thread(_viewer!); + print("DESTROYED"); _sceneManager = null; _viewer = null; await _pickResultController.close(); + await _gizmoPickResultController.close(); + await _sceneUpdateEventController.close(); for (final callback in _onDispose) { await callback.call(); } _onDispose.clear(); + print("DONE"); } /// @@ -228,7 +267,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future clearBackgroundImage() async { - clear_background_image_ffi(_viewer!); + clear_background_image_render_thread(_viewer!); } /// @@ -238,7 +277,7 @@ class ThermionViewerFFI extends ThermionViewer { Future setBackgroundImage(String path, {bool fillHeight = false}) async { final pathPtr = path.toNativeUtf8(allocator: allocator).cast(); await withVoidCallback((cb) { - set_background_image_ffi(_viewer!, pathPtr, fillHeight, cb); + set_background_image_render_thread(_viewer!, pathPtr, fillHeight, cb); }); allocator.free(pathPtr); @@ -249,7 +288,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setBackgroundColor(double r, double g, double b, double a) async { - set_background_color_ffi(_viewer!, r, g, b, a); + set_background_color_render_thread(_viewer!, r, g, b, a); } /// @@ -258,7 +297,7 @@ class ThermionViewerFFI extends ThermionViewer { @override Future setBackgroundImagePosition(double x, double y, {bool clamp = false}) async { - set_background_image_position_ffi(_viewer!, x, y, clamp); + set_background_image_position_render_thread(_viewer!, x, y, clamp); } /// @@ -269,12 +308,20 @@ class ThermionViewerFFI extends ThermionViewer { final pathPtr = skyboxPath.toNativeUtf8(allocator: allocator).cast(); await withVoidCallback((cb) { - load_skybox_ffi(_viewer!, pathPtr, cb); + load_skybox_render_thread(_viewer!, pathPtr, cb); }); allocator.free(pathPtr); } + /// + /// + /// + @override + Future createIbl(double r, double g, double b, double intensity) async { + create_ibl(_viewer!, r, g, b, intensity); + } + /// /// /// @@ -282,7 +329,7 @@ class ThermionViewerFFI extends ThermionViewer { Future loadIbl(String lightingPath, {double intensity = 30000}) async { final pathPtr = lightingPath.toNativeUtf8(allocator: allocator).cast(); - load_ibl_ffi(_viewer!, pathPtr, intensity); + load_ibl_render_thread(_viewer!, pathPtr, intensity); } /// @@ -303,7 +350,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future removeSkybox() async { - remove_skybox_ffi(_viewer!); + remove_skybox_render_thread(_viewer!); } /// @@ -311,12 +358,9 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future removeIbl() async { - remove_ibl_ffi(_viewer!); + remove_ibl_render_thread(_viewer!); } - /// - /// - /// @override Future addLight( LightType type, @@ -335,30 +379,52 @@ class ThermionViewerFFI extends ThermionViewer { double sunHaloSize = 10.0, double sunHaloFallof = 80.0, bool castShadows = true}) async { - var entity = await withIntCallback((callback) => add_light_ffi( + DirectLight directLight = DirectLight( + type: type, + color: colour, + intensity: intensity, + position: Vector3(posX, posY, posZ), + direction: Vector3(dirX, dirY, dirZ)..normalize(), + falloffRadius: falloffRadius, + spotLightConeInner: spotLightConeInner, + spotLightConeOuter: spotLightConeOuter, + sunAngularRadius: sunAngularRadius, + sunHaloSize: sunHaloSize, + sunHaloFallof: sunHaloFallof, + castShadows: castShadows); + + return addDirectLight(directLight); + } + + /// + /// + /// + @override + Future addDirectLight(DirectLight directLight) async { + var entity = await withIntCallback((callback) => add_light_render_thread( _viewer!, - type.index, - colour, - intensity, - posX, - posY, - posZ, - dirX, - dirY, - dirZ, - falloffRadius, - spotLightConeInner, - spotLightConeOuter, - sunAngularRadius = 0.545, - sunHaloSize = 10.0, - sunHaloFallof = 80.0, - castShadows, + directLight.type.index, + directLight.color, + directLight.intensity, + directLight.position.x, + directLight.position.y, + directLight.position.z, + directLight.direction.x, + directLight.direction.y, + directLight.direction.z, + directLight.falloffRadius, + directLight.spotLightConeInner, + directLight.spotLightConeOuter, + directLight.sunAngularRadius, + directLight.sunHaloSize, + directLight.sunHaloFallof, + directLight.castShadows, callback)); if (entity == _FILAMENT_ASSET_ERROR) { throw Exception("Failed to add light to scene"); } - - _scene!.registerLight(entity); + _sceneUpdateEventController + .add(SceneUpdateEvent.addDirectLight(entity, directLight)); return entity; } @@ -367,8 +433,8 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future removeLight(ThermionEntity entity) async { - _scene!.unregisterLight(entity); - remove_light_ffi(_viewer!, entity); + remove_light_render_thread(_viewer!, entity); + _sceneUpdateEventController.add(SceneUpdateEvent.remove(entity)); } /// @@ -376,9 +442,9 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future clearLights() async { - clear_lights_ffi(_viewer!); + clear_lights_render_thread(_viewer!); - _scene!.clearLights(); + _sceneUpdateEventController.add(SceneUpdateEvent.clearLights()); } /// @@ -386,8 +452,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future createInstance(ThermionEntity entity) async { - var created = await withIntCallback( - (callback) => create_instance(_sceneManager!, entity)); + var created = create_instance(_sceneManager!, entity); if (created == _FILAMENT_ASSET_ERROR) { throw Exception("Failed to create instance"); } @@ -408,7 +473,7 @@ class ThermionViewerFFI extends ThermionViewer { @override Future> getInstances(ThermionEntity entity) async { var count = await getInstanceCount(entity); - var out = allocator(count); + var out = allocator(count); get_instances(_sceneManager!, entity, out); var instances = []; for (int i = 0; i < count; i++) { @@ -423,39 +488,68 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future loadGlb(String path, - {bool unlit = false, int numInstances = 1}) async { + {bool unlit = false, int numInstances = 1, bool keepData = false}) async { if (unlit) { throw Exception("Not yet implemented"); } final pathPtr = path.toNativeUtf8(allocator: allocator).cast(); - var entity = await withIntCallback((callback) => - load_glb_ffi(_sceneManager!, pathPtr, numInstances, callback)); + var entity = await withIntCallback((callback) => load_glb_render_thread( + _sceneManager!, pathPtr, numInstances, keepData, callback)); allocator.free(pathPtr); if (entity == _FILAMENT_ASSET_ERROR) { throw Exception("An error occurred loading the asset at $path"); } - _scene!.registerEntity(entity); + + _sceneUpdateEventController + .add(SceneUpdateEvent.addGltf(entity, GLTF(path, numInstances))); return entity; } + /// + /// + /// + @override + Future loadGlbFromBuffer(Uint8List data, + {bool unlit = false, + int numInstances = 1, + bool keepData = false, + int priority = 4, + int layer = 0}) async { + if (unlit) { + throw Exception("Not yet implemented"); + } + + if (layer < 0 || layer > 6) { + throw Exception("Layer must be between 0 and 6"); + } + + var entity = await withIntCallback((callback) => + load_glb_from_buffer_render_thread(_sceneManager!, data.address, + data.length, numInstances, keepData, priority, layer, callback)); + + if (entity == _FILAMENT_ASSET_ERROR) { + throw Exception("An error occurred loading GLB from buffer"); + } + return entity; + } + /// /// /// @override Future loadGltf(String path, String relativeResourcePath, - {bool force = false}) async { + {bool keepData = false}) async { final pathPtr = path.toNativeUtf8(allocator: allocator).cast(); final relativeResourcePathPtr = relativeResourcePath.toNativeUtf8(allocator: allocator).cast(); - var entity = await withIntCallback((callback) => load_gltf_ffi( - _sceneManager!, pathPtr, relativeResourcePathPtr, callback)); + var entity = await withIntCallback((callback) => load_gltf_render_thread( + _sceneManager!, pathPtr, relativeResourcePathPtr, keepData, callback)); allocator.free(pathPtr); allocator.free(relativeResourcePathPtr); if (entity == _FILAMENT_ASSET_ERROR) { throw Exception("An error occurred loading the asset at $path"); } - _scene!.registerEntity(entity); return entity; } @@ -465,7 +559,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future panStart(double x, double y) async { - grab_begin(_viewer!, x * _pixelRatio, y * _pixelRatio, true); + grab_begin(_viewer!, x * pixelRatio, y * pixelRatio, true); } /// @@ -473,7 +567,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future panUpdate(double x, double y) async { - grab_update(_viewer!, x * _pixelRatio, y * _pixelRatio); + grab_update(_viewer!, x * pixelRatio, y * pixelRatio); } /// @@ -489,7 +583,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future rotateStart(double x, double y) async { - grab_begin(_viewer!, x * _pixelRatio, y * _pixelRatio, false); + grab_begin(_viewer!, x * pixelRatio, y * pixelRatio, false); } /// @@ -497,7 +591,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future rotateUpdate(double x, double y) async { - grab_update(_viewer!, x * _pixelRatio, y * _pixelRatio); + grab_update(_viewer!, x * pixelRatio, y * pixelRatio); } /// @@ -523,7 +617,7 @@ class ThermionViewerFFI extends ThermionViewer { weightsPtr[i] = weights[i]; } var success = await withBoolCallback((cb) { - set_morph_target_weights_ffi( + set_morph_target_weights_render_thread( _sceneManager!, entity, weightsPtr, weights.length, cb); }); allocator.free(weightsPtr); @@ -543,7 +637,7 @@ class ThermionViewerFFI extends ThermionViewer { var names = []; var count = await withIntCallback((callback) => - get_morph_target_name_count_ffi( + get_morph_target_name_count_render_thread( _sceneManager!, entity, childEntity, callback)); var outPtr = allocator(255); for (int i = 0; i < count; i++) { @@ -853,7 +947,7 @@ class ThermionViewerFFI extends ThermionViewer { /// Future updateBoneMatrices(ThermionEntity entity) async { var result = await withBoolCallback((cb) { - update_bone_matrices_ffi(_sceneManager!, entity, cb); + update_bone_matrices_render_thread(_sceneManager!, entity, cb); }); if (!result) { throw Exception("Failed to update bone matrices"); @@ -902,7 +996,7 @@ class ThermionViewerFFI extends ThermionViewer { ptr[i] = transform.storage[i]; } var result = await withBoolCallback((cb) { - set_bone_transform_ffi( + set_bone_transform_render_thread( _sceneManager!, entity, skinIndex, boneIndex, ptr, cb); }); @@ -924,7 +1018,7 @@ class ThermionViewerFFI extends ThermionViewer { throw Exception("No viewer available, ignoring"); } await withVoidCallback((cb) { - reset_to_rest_pose_ffi(_sceneManager!, entity, cb); + reset_to_rest_pose_render_thread(_sceneManager!, entity, cb); }); } @@ -936,10 +1030,9 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future removeEntity(ThermionEntity entity) async { - _scene!.unregisterEntity(entity); - await withVoidCallback( - (callback) => remove_entity_ffi(_viewer!, entity, callback)); + (callback) => remove_entity_render_thread(_viewer!, entity, callback)); + _sceneUpdateEventController.add(SceneUpdateEvent.remove(entity)); } /// @@ -951,9 +1044,8 @@ class ThermionViewerFFI extends ThermionViewer { @override Future clearEntities() async { await withVoidCallback((callback) { - clear_entities_ffi(_viewer!, callback); + clear_entities_render_thread(_viewer!, callback); }); - _scene!.clearEntities(); } /// @@ -1054,10 +1146,27 @@ class ThermionViewerFFI extends ThermionViewer { set_main_camera(_viewer!); } - Future getMainCamera() async { + /// + /// + /// + Future getMainCameraEntity() async { return get_main_camera(_viewer!); } + /// + /// + /// + Future getMainCamera() async { + var camera = await getCameraComponent(await getMainCameraEntity()); + return camera!; + } + + Future getCameraComponent(ThermionEntity cameraEntity) async { + var engine = Viewer_getEngine(_viewer!); + var camera = Engine_getCameraComponent(engine, cameraEntity); + return ThermionFFICamera(camera); + } + /// /// /// @@ -1077,7 +1186,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setToneMapping(ToneMapper mapper) async { - set_tone_mapping_ffi(_viewer!, mapper.index); + set_tone_mapping_render_thread(_viewer!, mapper.index); } /// @@ -1085,7 +1194,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setPostProcessing(bool enabled) async { - set_post_processing_ffi(_viewer!, enabled); + set_post_processing_render_thread(_viewer!, enabled); } /// @@ -1124,7 +1233,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setBloom(double bloom) async { - set_bloom_ffi(_viewer!, bloom); + set_bloom_render_thread(_viewer!, bloom); } /// @@ -1132,15 +1241,23 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setCameraFocalLength(double focalLength) async { - set_camera_focal_length(_viewer!, focalLength); + throw Exception("DONT USE"); + } + + /// + /// + /// + Future getCameraFov(bool horizontal) async { + var mainCamera = await getMainCamera() as ThermionFFICamera; + return get_camera_fov(mainCamera.pointer, horizontal); } /// /// /// @override - Future setCameraFov(double degrees, double width, double height) async { - set_camera_fov(_viewer!, degrees, width / height); + Future setCameraFov(double degrees, {bool horizontal = true}) async { + throw Exception("DONT USE"); } /// @@ -1148,7 +1265,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setCameraCulling(double near, double far) async { - set_camera_culling(_viewer!, near, far); + throw Exception("DONT USE"); } /// @@ -1156,7 +1273,12 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future getCameraCullingNear() async { - return get_camera_culling_near(_viewer!); + return getCameraNear(); + } + + Future getCameraNear() async { + var mainCamera = await getMainCamera() as ThermionFFICamera; + return get_camera_near(mainCamera.pointer); } /// @@ -1164,7 +1286,8 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future getCameraCullingFar() async { - return get_camera_culling_far(_viewer!); + var mainCamera = await getMainCamera() as ThermionFFICamera; + return get_camera_culling_far(mainCamera.pointer); } /// @@ -1172,7 +1295,8 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setCameraFocusDistance(double focusDistance) async { - set_camera_focus_distance(_viewer!, focusDistance); + var mainCamera = await getMainCamera() as ThermionFFICamera; + set_camera_focus_distance(mainCamera.pointer, focusDistance); } /// @@ -1180,7 +1304,9 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setCameraPosition(double x, double y, double z) async { - set_camera_position(_viewer!, x, y, z); + var modelMatrix = await getCameraModelMatrix(); + modelMatrix.setTranslation(Vector3(x, y, z)); + return setCameraModelMatrix4(modelMatrix); } /// @@ -1188,7 +1314,7 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future moveCameraToAsset(ThermionEntity entity) async { - move_camera_to_asset(_viewer!, entity); + throw Exception("DON'T USE"); } /// @@ -1205,7 +1331,8 @@ class ThermionViewerFFI extends ThermionViewer { @override Future setCameraExposure( double aperture, double shutterSpeed, double sensitivity) async { - set_camera_exposure(_viewer!, aperture, shutterSpeed, sensitivity); + var mainCamera = await getMainCamera() as ThermionFFICamera; + set_camera_exposure(mainCamera.pointer, aperture, shutterSpeed, sensitivity); } /// @@ -1213,8 +1340,10 @@ class ThermionViewerFFI extends ThermionViewer { /// @override Future setCameraRotation(Quaternion quaternion) async { - set_camera_rotation( - _viewer!, quaternion.w, quaternion.x, quaternion.y, quaternion.z); + var modelMatrix = await getCameraModelMatrix(); + var translation = modelMatrix.getTranslation(); + modelMatrix = Matrix4.compose(translation, quaternion, Vector3.all(1.0)); + await setCameraModelMatrix4(modelMatrix); } /// @@ -1223,12 +1352,31 @@ class ThermionViewerFFI extends ThermionViewer { @override Future setCameraModelMatrix(List matrix) async { assert(matrix.length == 16); - var ptr = allocator(16); - for (int i = 0; i < 16; i++) { - ptr.elementAt(i).value = matrix[i]; - } - set_camera_model_matrix(_viewer!, ptr); - allocator.free(ptr); + await setCameraModelMatrix4(Matrix4.fromList(matrix)); + } + + /// + /// + /// + @override + Future setCameraModelMatrix4(Matrix4 modelMatrix) async { + var mainCamera = await getMainCamera() as ThermionFFICamera; + final out = matrix4ToDouble4x4(modelMatrix); + set_camera_model_matrix(mainCamera.pointer, out); + } + + /// + /// + /// + @override + Future setCameraLensProjection( + {double near = kNear, + double far = kFar, + double? aspect, + double focalLength = kFocalLength}) async { + aspect ??= viewportDimensions.$1 / viewportDimensions.$2; + var mainCamera = get_camera(_viewer!, get_main_camera(_viewer!)); + set_camera_lens_projection(mainCamera, near, far, aspect, focalLength); } /// @@ -1263,6 +1411,26 @@ class ThermionViewerFFI extends ThermionViewer { set_position(_sceneManager!, entity, x, y, z); } + /// + /// + /// + @override + Future setLightPosition( + ThermionEntity lightEntity, double x, double y, double z) async { + set_light_position(_viewer!, lightEntity, x, y, z); + } + + /// + /// + /// + @override + Future setLightDirection( + ThermionEntity lightEntity, Vector3 direction) async { + direction.normalize(); + set_light_direction( + _viewer!, lightEntity, direction.x, direction.y, direction.z); + } + /// /// /// @@ -1291,6 +1459,9 @@ class ThermionViewerFFI extends ThermionViewer { set_scale(_sceneManager!, entity, scale); } + /// + /// + /// Future queueRotationUpdateQuat(ThermionEntity entity, Quaternion rotation, {bool relative = false}) async { queue_rotation_update(_sceneManager!, entity, rotation.radians, rotation.x, @@ -1318,6 +1489,24 @@ class ThermionViewerFFI extends ThermionViewer { queue_position_update(_sceneManager!, entity, x, y, z, relative); } + /// + /// Queues an update to the worldspace position for [entity] to the viewport coordinates {x,y}. + /// The actual update will occur on the next frame, and will be subject to collision detection. + /// + Future queuePositionUpdateFromViewportCoords( + ThermionEntity entity, double x, double y) async { + queue_position_update_from_viewport_coords(_sceneManager!, entity, x, y); + } + + /// + /// + /// + Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity, + double viewportX, double viewportY, double x, double y, double z) async { + queue_relative_position_update_world_axis( + _sceneManager!, entity, viewportX, viewportY, x, y, z); + } + /// /// /// @@ -1358,27 +1547,43 @@ class ThermionViewerFFI extends ThermionViewer { void _onPickResult(ThermionEntity entityId, int x, int y) { _pickResultController.add(( entity: entityId, - x: (x / _pixelRatio).toDouble(), - y: (viewportDimensions.$2 - y) / _pixelRatio + x: (x / pixelRatio).toDouble(), + y: (viewportDimensions.$2 - y) / pixelRatio )); - _scene!.registerSelected(entityId); } - late NativeCallable + void _onGizmoPickResult(ThermionEntity entityId, int x, int y) { + _gizmoPickResultController.add(( + entity: entityId, + x: (x / pixelRatio).toDouble(), + y: (viewportDimensions.$2 - y) / pixelRatio + )); + } + + late NativeCallable _onPickResultCallable; + late NativeCallable + _onGizmoPickResultCallable; /// /// /// @override void pick(int x, int y) async { - _scene!.unregisterSelected(); + x = (x * pixelRatio).ceil(); + y = (viewportDimensions.$2 - (y * pixelRatio)).ceil(); - filament_pick( - _viewer!, - (x * _pixelRatio).toInt(), - (viewportDimensions.$2 - (y * _pixelRatio)).toInt(), - _onPickResultCallable.nativeFunction); + filament_pick(_viewer!, x, y, _onPickResultCallable.nativeFunction); + } + + /// + /// + /// + @override + void pickGizmo(int x, int y) async { + x = (x * pixelRatio).ceil(); + y = (viewportDimensions.$2 - (y * pixelRatio)).ceil(); + pick_gizmo(_sceneManager!, x, y, _onGizmoPickResultCallable.nativeFunction); } /// @@ -1389,10 +1594,9 @@ class ThermionViewerFFI extends ThermionViewer { if (_viewer == null) { throw Exception("No viewer available"); } - var arrayPtr = get_camera_view_matrix(_viewer!); - var viewMatrix = Matrix4.fromList(arrayPtr.asTypedList(16)); - allocator.free(arrayPtr); - return viewMatrix; + var mainCamera = await getMainCamera() as ThermionFFICamera; + var matrixStruct = get_camera_view_matrix(mainCamera.pointer); + return double4x4ToMatrix4(matrixStruct); } /// @@ -1403,10 +1607,35 @@ class ThermionViewerFFI extends ThermionViewer { if (_viewer == null) { throw Exception("No viewer available"); } - var arrayPtr = get_camera_model_matrix(_viewer!); - var modelMatrix = Matrix4.fromList(arrayPtr.asTypedList(16)); - allocator.free(arrayPtr); - return modelMatrix; + var mainCamera = await getMainCamera() as ThermionFFICamera; + var matrixStruct = get_camera_model_matrix(mainCamera.pointer); + return double4x4ToMatrix4(matrixStruct); + } + + /// + /// + /// + @override + Future getCameraProjectionMatrix() async { + if (_viewer == null) { + throw Exception("No viewer available"); + } + var mainCamera = await getMainCamera() as ThermionFFICamera; + var matrixStruct = get_camera_projection_matrix(mainCamera.pointer); + return double4x4ToMatrix4(matrixStruct); + } + + /// + /// + /// + @override + Future getCameraCullingProjectionMatrix() async { + if (_viewer == null) { + throw Exception("No viewer available"); + } + var mainCamera = await getMainCamera() as ThermionFFICamera; + var matrixStruct = get_camera_culling_projection_matrix(mainCamera.pointer); + return double4x4ToMatrix4(matrixStruct); } /// @@ -1417,14 +1646,8 @@ class ThermionViewerFFI extends ThermionViewer { if (_viewer == null) { throw Exception("No viewer available"); } - var arrayPtr = get_camera_model_matrix(_viewer!); - var doubleList = arrayPtr.asTypedList(16); - var modelMatrix = Matrix4.fromFloat64List(doubleList); - - var position = modelMatrix.getColumn(3).xyz; - - thermion_flutter_free(arrayPtr.cast()); - return position; + var modelMatrix = await getCameraModelMatrix(); + return modelMatrix.getColumn(3).xyz; } /// @@ -1435,12 +1658,9 @@ class ThermionViewerFFI extends ThermionViewer { if (_viewer == null) { throw Exception("No viewer available"); } - var arrayPtr = get_camera_model_matrix(_viewer!); - var doubleList = arrayPtr.asTypedList(16); - var modelMatrix = Matrix4.fromFloat64List(doubleList); + var modelMatrix = await getCameraModelMatrix(); var rotationMatrix = Matrix3.identity(); modelMatrix.copyRotation(rotationMatrix); - thermion_flutter_free(arrayPtr.cast()); return rotationMatrix; } @@ -1465,44 +1685,6 @@ class ThermionViewerFFI extends ThermionViewer { _viewer!, _cameraMode.index, orbitSpeedX, orbitSpeedX, zoomSpeed); } - /// - /// I don't think these two methods are accurate - don't rely on them, use the Frustum values instead. - /// I think because we use [setLensProjection] and [setScaling] together, this projection matrix doesn't accurately reflect the field of view (because it's using an additional scaling matrix). - /// Also, the near/far planes never seem to get updated (which is what I would expect to see when calling [getCameraCullingProjectionMatrix]) - /// - /// - /// - /// - @override - Future getCameraProjectionMatrix() async { - if (_viewer == null) { - throw Exception("No viewer available"); - } - - var arrayPtr = get_camera_projection_matrix(_viewer!); - var doubleList = arrayPtr.asTypedList(16); - var projectionMatrix = Matrix4.fromList(doubleList); - thermion_flutter_free(arrayPtr.cast()); - return projectionMatrix; - } - - /// - /// - /// - @override - Future getCameraCullingProjectionMatrix() async { - if (_viewer == null) { - throw Exception("No viewer available"); - } - throw Exception( - "WARNING: getCameraProjectionMatrix and getCameraCullingProjectionMatrix are not reliable. Consider these broken"); - var arrayPtr = get_camera_culling_projection_matrix(_viewer!); - var doubleList = arrayPtr.asTypedList(16); - var projectionMatrix = Matrix4.fromList(doubleList); - thermion_flutter_free(arrayPtr.cast()); - return projectionMatrix; - } - /// /// /// @@ -1511,7 +1693,8 @@ class ThermionViewerFFI extends ThermionViewer { if (_viewer == null) { throw Exception("No viewer available"); } - var arrayPtr = get_camera_frustum(_viewer!); + var mainCamera = await getMainCamera() as ThermionFFICamera; + var arrayPtr = get_camera_frustum(mainCamera.pointer); var doubleList = arrayPtr.asTypedList(24); var frustum = Frustum(); @@ -1553,7 +1736,7 @@ class ThermionViewerFFI extends ThermionViewer { Future> getChildEntities( ThermionEntity parent, bool renderableOnly) async { var count = get_entity_count(_sceneManager!, parent, renderableOnly); - var out = allocator(count); + var out = allocator(count); get_entities(_sceneManager!, parent, renderableOnly, out); var outList = List.generate(count, (index) => out[index]).cast(); @@ -1612,9 +1795,9 @@ class ThermionViewerFFI extends ThermionViewer { // ignore: sdk_version_since if (callback != null) { - var ptr = - NativeCallable.listener( - callback); + var ptr = NativeCallable< + Void Function( + EntityId entityId1, EntityId entityId2)>.listener(callback); add_collision_component( _sceneManager!, entity, ptr.nativeFunction, affectsTransform); _collisions[entity] = ptr; @@ -1653,44 +1836,35 @@ class ThermionViewerFFI extends ThermionViewer { /// /// @override - Future createGeometry( - List vertices, List indices, - {String? materialPath, - PrimitiveType primitiveType = PrimitiveType.TRIANGLES}) async { + Future createGeometry(Geometry geometry, + {MaterialInstance? materialInstance, bool keepData = false}) async { if (_viewer == null) { throw Exception("Viewer must not be null"); } - final materialPathPtr = - materialPath?.toNativeUtf8(allocator: allocator) ?? nullptr; - final vertexPtr = allocator(vertices.length); - final indicesPtr = allocator(indices.length); - for (int i = 0; i < vertices.length; i++) { - vertexPtr.elementAt(i).value = vertices[i]; - } - - for (int i = 0; i < indices.length; i++) { - (indicesPtr + i).value = indices[i]; - } - - var entity = await withIntCallback((callback) => create_geometry_ffi( - _viewer!, - vertexPtr, - vertices.length, - indicesPtr, - indices.length, - primitiveType.index, - materialPathPtr.cast(), - callback)); + var entity = await withIntCallback((callback) => + create_geometry_render_thread( + _sceneManager!, + geometry.vertices.address, + geometry.vertices.length, + geometry.normals.address, + geometry.normals.length, + geometry.uvs.address, + geometry.uvs.length, + geometry.indices.address, + geometry.indices.length, + geometry.primitiveType.index, + materialInstance == null + ? nullptr + : (materialInstance as ThermionFFIMaterialInstance)._pointer, + keepData, + callback)); if (entity == _FILAMENT_ASSET_ERROR) { throw Exception("Failed to create geometry"); } - _scene!.registerEntity(entity); - - allocator.free(materialPathPtr); - allocator.free(vertexPtr); - allocator.free(indicesPtr); + _sceneUpdateEventController + .add(SceneUpdateEvent.addGeometry(entity, geometry)); return entity; } @@ -1699,11 +1873,12 @@ class ThermionViewerFFI extends ThermionViewer { /// /// @override - Future setParent(ThermionEntity child, ThermionEntity parent) async { + Future setParent(ThermionEntity child, ThermionEntity parent, + {bool preserveScaling = false}) async { if (_sceneManager == null) { throw Exception("Asset manager must be non-null"); } - set_parent(_sceneManager!, child, parent); + set_parent(_sceneManager!, child, parent, preserveScaling); } /// @@ -1721,6 +1896,21 @@ class ThermionViewerFFI extends ThermionViewer { return parent; } + /// + /// + /// + @override + Future getAncestor(ThermionEntity child) async { + if (_sceneManager == null) { + throw Exception("Asset manager must be non-null"); + } + var parent = get_ancestor(_sceneManager!, child); + if (parent == _FILAMENT_ASSET_ERROR) { + return null; + } + return parent; + } + /// /// /// @@ -1736,4 +1926,268 @@ class ThermionViewerFFI extends ThermionViewer { Future setPriority(ThermionEntity entityId, int priority) async { set_priority(_sceneManager!, entityId, priority); } + + /// + /// + /// + @override + Future getViewportBoundingBox(ThermionEntity entityId) async { + final result = get_bounding_box(_sceneManager!, entityId); + return v64.Aabb2.minMax(v64.Vector2(result.minX, result.minY), + v64.Vector2(result.maxX, result.maxY)); + } + + /// + /// + /// + Future setLayerVisibility(int layer, bool visible) { + set_layer_visibility(_sceneManager!, layer, visible); + return Future.value(); + } + + /// + /// + /// + Future setVisibilityLayer(ThermionEntity entity, int layer) { + set_visibility_layer(_sceneManager!, entity, layer); + return Future.value(); + } + + /// + /// + /// + Future setGizmoVisibility(bool visible) async { + set_gizmo_visibility(_sceneManager!, visible); + } + + /// + /// + /// + Future setStencilHighlight(ThermionEntity entity, + {double r = 1.0, double g = 0.0, double b = 0.0}) async { + set_stencil_highlight(_sceneManager!, entity, r, g, b); + } + + /// + /// + /// + Future removeStencilHighlight(ThermionEntity entity) async { + remove_stencil_highlight(_sceneManager!, entity); + } + + /// + /// + /// + Future setMaterialPropertyFloat(ThermionEntity entity, String propertyName, + int materialIndex, double value) async { + final ptr = propertyName.toNativeUtf8(allocator: allocator); + set_material_property_float( + _sceneManager!, entity, materialIndex, ptr.cast(), value); + allocator.free(ptr); + } + + /// + /// + /// + Future setMaterialPropertyFloat4(ThermionEntity entity, String propertyName, + int materialIndex, double f1, double f2, double f3, double f4) async { + final ptr = propertyName.toNativeUtf8(allocator: allocator); + var struct = Struct.create(); + struct.x = f1; + struct.y = f2; + struct.z = f3; + struct.w = f4; + set_material_property_float4( + _sceneManager!, entity, materialIndex, ptr.cast(), struct); + allocator.free(ptr); + } + + Future unproject(ThermionEntity entity, Uint8List input, + int inputWidth, int inputHeight, int outWidth, int outHeight) async { + final outPtr = Uint8List(outWidth * outHeight * 4); + await withVoidCallback((callback) { + unproject_texture_render_thread( + _viewer!, + entity, + input.address, + inputWidth, + inputHeight, + outPtr.address, + outWidth, + outHeight, + callback); + }); + + return outPtr.buffer.asUint8List(); + } + + Future createTexture(Uint8List data) async { + var ptr = create_texture(_sceneManager!, data.address, data.length); + return ThermionFFITexture(ptr); + } + + Future applyTexture(ThermionFFITexture texture, ThermionEntity entity, + {int materialIndex = 0, String parameterName = "baseColorMap"}) async { + using(parameterName.toNativeUtf8(), (namePtr) async { + apply_texture_to_material(_sceneManager!, entity, texture._pointer, + namePtr.cast(), materialIndex); + }); + } + + /// + /// + /// + Future destroyTexture(ThermionFFITexture texture) async { + destroy_texture(_sceneManager!, texture._pointer); + } + + Future createUbershaderMaterialInstance( + {bool doubleSided = false, + bool unlit = false, + bool hasVertexColors = false, + bool hasBaseColorTexture = false, + bool hasNormalTexture = false, + bool hasOcclusionTexture = false, + bool hasEmissiveTexture = false, + bool useSpecularGlossiness = false, + AlphaMode alphaMode = AlphaMode.OPAQUE, + bool enableDiagnostics = false, + bool hasMetallicRoughnessTexture = false, + int metallicRoughnessUV = 0, + int baseColorUV = 0, + bool hasClearCoatTexture = false, + int clearCoatUV = 0, + bool hasClearCoatRoughnessTexture = false, + int clearCoatRoughnessUV = 0, + bool hasClearCoatNormalTexture = false, + int clearCoatNormalUV = 0, + bool hasClearCoat = false, + bool hasTransmission = false, + bool hasTextureTransforms = false, + int emissiveUV = 0, + int aoUV = 0, + int normalUV = 0, + bool hasTransmissionTexture = false, + int transmissionUV = 0, + bool hasSheenColorTexture = false, + int sheenColorUV = 0, + bool hasSheenRoughnessTexture = false, + int sheenRoughnessUV = 0, + bool hasVolumeThicknessTexture = false, + int volumeThicknessUV = 0, + bool hasSheen = false, + bool hasIOR = false, + bool hasVolume = false}) async { + final key = Struct.create(); + + key.doubleSided = doubleSided; + key.unlit = unlit; + key.hasVertexColors = hasVertexColors; + key.hasBaseColorTexture = hasBaseColorTexture; + key.hasNormalTexture = hasNormalTexture; + key.hasOcclusionTexture = hasOcclusionTexture; + key.hasEmissiveTexture = hasEmissiveTexture; + key.useSpecularGlossiness = useSpecularGlossiness; + key.alphaMode = alphaMode.index; + key.enableDiagnostics = enableDiagnostics; + key.unnamed.unnamed.hasMetallicRoughnessTexture = + hasMetallicRoughnessTexture; + key.unnamed.unnamed.metallicRoughnessUV = 0; + key.baseColorUV = baseColorUV; + key.hasClearCoatTexture = hasClearCoatTexture; + key.clearCoatUV = clearCoatUV; + key.hasClearCoatRoughnessTexture = hasClearCoatRoughnessTexture; + key.clearCoatRoughnessUV = clearCoatRoughnessUV; + key.hasClearCoatNormalTexture = hasClearCoatNormalTexture; + key.clearCoatNormalUV = clearCoatNormalUV; + key.hasClearCoat = hasClearCoat; + key.hasTransmission = hasTransmission; + key.hasTextureTransforms = hasTextureTransforms; + key.emissiveUV = emissiveUV; + key.aoUV = aoUV; + key.normalUV = normalUV; + key.hasTransmissionTexture = hasTransmissionTexture; + key.transmissionUV = transmissionUV; + key.hasSheenColorTexture = hasSheenColorTexture; + key.sheenColorUV = sheenColorUV; + key.hasSheenRoughnessTexture = hasSheenRoughnessTexture; + key.sheenRoughnessUV = sheenRoughnessUV; + key.hasVolumeThicknessTexture = hasVolumeThicknessTexture; + key.volumeThicknessUV = volumeThicknessUV; + key.hasSheen = hasSheen; + key.hasIOR = hasIOR; + key.hasVolume = hasVolume; + + final materialInstance = create_material_instance(_sceneManager!, key); + if (materialInstance == nullptr) { + throw Exception("Failed to create material instance"); + } + + return ThermionFFIMaterialInstance(materialInstance); + } + + /// + /// + /// + Future destroyMaterialInstance( + ThermionFFIMaterialInstance materialInstance) async { + destroy_material_instance(_sceneManager!, materialInstance._pointer); + } + + Future createUnlitMaterialInstance() async { + var instance = create_unlit_material_instance(_sceneManager!); + if (instance == nullptr) { + throw Exception("Failed to create material instance"); + } + return ThermionFFIMaterialInstance(instance); + } + + @override + Future setMaterialPropertyInt(ThermionEntity entity, String propertyName, + int materialIndex, int value) { + final ptr = propertyName.toNativeUtf8(allocator: allocator); + set_material_property_int( + _sceneManager!, entity, materialIndex, ptr.cast(), value); + allocator.free(ptr); + return Future.value(); + } + + /// + /// + /// + Future getMaterialInstanceAt( + ThermionEntity entity, int index) async { + final instance = get_material_instance_at(_sceneManager!, entity, index); + if (instance == nullptr) { + return null; + } + return ThermionFFIMaterialInstance(instance); + } + + @override + void requestFrame() { + request_frame_render_thread(_viewer!); + } +} + +class ThermionFFITexture extends ThermionTexture { + final Pointer _pointer; + + ThermionFFITexture(this._pointer); +} + +class ThermionFFIMaterialInstance extends MaterialInstance { + final Pointer _pointer; + + ThermionFFIMaterialInstance(this._pointer); + + @override + Future setDepthCullingEnabled(bool enabled) async { + MaterialInstance_setDepthCulling(this._pointer, enabled); + } + + @override + Future setDepthWriteEnabled(bool enabled) async { + MaterialInstance_setDepthWrite(this._pointer, enabled); + } } diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/camera.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/camera.dart new file mode 100644 index 00000000..d08c4eff --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/camera.dart @@ -0,0 +1,8 @@ +import 'package:vector_math/vector_math_64.dart'; + +abstract class Camera { + + Future setProjectionMatrixWithCulling(Matrix4 projectionMatrix, double near, double far); + +} + diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/entities.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/entities.dart new file mode 100644 index 00000000..0de51188 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/entities.dart @@ -0,0 +1,11 @@ +library; + +export 'geometry.dart'; +export 'gltf.dart'; + +export 'light_options.dart'; + +// a handle that can be safely passed back to the rendering layer to manipulate an Entity +typedef ThermionEntity = int; + + diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/entity.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/entity.dart new file mode 100644 index 00000000..e69de29b diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/geometry.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/geometry.dart new file mode 100644 index 00000000..3417253e --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/geometry.dart @@ -0,0 +1,32 @@ +import 'dart:typed_data'; + +import 'package:thermion_dart/thermion_dart/viewer/thermion_viewer_base.dart'; + +class Geometry { + final Float32List vertices; + final Uint16List indices; + final Float32List normals; + final Float32List uvs; + final PrimitiveType primitiveType; + + Geometry( + this.vertices, + List indices, { + Float32List? normals, + Float32List? uvs, + this.primitiveType = PrimitiveType.TRIANGLES, + }) : indices = Uint16List.fromList(indices), + normals = normals ?? Float32List(0), + uvs = uvs ?? Float32List(0) { + assert(this.uvs.length == 0 || this.uvs.length == (vertices.length ~/ 3) * 2); + } + + void scale(double factor) { + for (int i = 0; i < vertices.length; i++) { + vertices[i] = vertices[i] * factor; + } + } + + bool get hasNormals => normals.isNotEmpty; + bool get hasUVs => uvs.isNotEmpty; +} diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/gltf.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/gltf.dart new file mode 100644 index 00000000..1189c38e --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/gltf.dart @@ -0,0 +1,6 @@ +class GLTF { + final String uri; + final int numInstances; + + GLTF(this.uri, this.numInstances); +} diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/light.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/light.dart new file mode 100644 index 00000000..9075911b --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/light.dart @@ -0,0 +1,7 @@ +enum LightType { + SUN, //!< Directional light that also draws a sun's disk in the sky. + DIRECTIONAL, //!< Directional light, emits light in a given direction. + POINT, //!< Point light, emits light from a position, in all directions. + FOCUSED_SPOT, //!< Physically correct spot light. + SPOT, +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/light_options.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/light_options.dart new file mode 100644 index 00000000..b128772c --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/light_options.dart @@ -0,0 +1,98 @@ +import 'dart:math'; +import 'package:vector_math/vector_math_64.dart' as v; +import 'package:vector_math/vector_math_64.dart'; +import 'light.dart'; + +class IBL { + String? iblPath; + final double iblIntensity; + + IBL(this.iblIntensity); +} + +class DirectLight { + final LightType type; + final double color; + final double intensity; + final bool castShadows; + late final v.Vector3 position; + late final v.Vector3 direction; + final double falloffRadius; + final double spotLightConeInner; + final double spotLightConeOuter; + final double sunAngularRadius; + final double sunHaloSize; + final double sunHaloFallof; + + DirectLight({ + required this.type, + required this.color, + required this.intensity, + this.castShadows = false, + required this.direction, + required this.position, + this.falloffRadius = 1.0, + this.spotLightConeInner = pi / 8, + this.spotLightConeOuter = pi / 4, + this.sunAngularRadius = 0.545, + this.sunHaloSize = 10.0, + this.sunHaloFallof = 80.0, + }); + + DirectLight.point({ + double color = 6500, + double intensity = 100000, + bool castShadows = false, + Vector3? position, + double falloffRadius = 1.0, + }) : this( + type: LightType.POINT, + color: color, + intensity: intensity, + castShadows: castShadows, + position: position ?? Vector3(0, 1, 0), + direction: Vector3.zero(), + falloffRadius: falloffRadius, + ); + + DirectLight.sun({ + double color = 6500, + double intensity = 100000, + bool castShadows = true, + Vector3? direction, + double sunAngularRadius = 0.545, + double sunHaloSize = 10.0, + double sunHaloFalloff = 80.0, + }) : this( + type: LightType.DIRECTIONAL, + color: color, + intensity: intensity, + castShadows: castShadows, + position: Vector3(0, 0, 0), + direction: direction ?? Vector3(0, -1, 0), + sunAngularRadius: sunAngularRadius, + sunHaloSize: sunHaloSize, + sunHaloFallof: sunHaloFalloff, + ); + + DirectLight.spot({ + double color = 6500, + double intensity = 100000, + bool castShadows = true, + Vector3? position, + Vector3? direction, + double falloffRadius = 1.0, + double spotLightConeInner = pi / 8, + double spotLightConeOuter = pi / 4, + }) : this( + type: LightType.SPOT, + color: color, + intensity: intensity, + castShadows: castShadows, + position: position ?? Vector3(0, 1, 0), + direction: direction ?? Vector3(0, -1, 0), + falloffRadius: falloffRadius, + spotLightConeInner: spotLightConeInner, + spotLightConeOuter: spotLightConeOuter, + ); +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/manipulator.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/manipulator.dart new file mode 100644 index 00000000..21350980 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/manipulator.dart @@ -0,0 +1,4 @@ +// see filament Manipulator.h for more details +@Deprecated( + "This is used the native pointer manipulator Prefer ThermionGestureHandler instead") +enum ManipulatorMode { ORBIT, MAP, FREE_FLIGHT } diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/material.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/material.dart new file mode 100644 index 00000000..8fad022a --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/material.dart @@ -0,0 +1,6 @@ +abstract class MaterialInstance { + Future setDepthWriteEnabled(bool enabled); + Future setDepthCullingEnabled(bool enabled); +} + +enum AlphaMode { OPAQUE, MASK, BLEND } diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/pick_result.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/pick_result.dart new file mode 100644 index 00000000..3daa74de --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/pick_result.dart @@ -0,0 +1,5 @@ +// "picking" means clicking/tapping on the viewport, and unprojecting the X/Y coordinate to determine whether any renderable entities were present at those coordinates. +import 'package:thermion_dart/thermion_dart/viewer/shared_types/shared_types.dart'; + +typedef FilamentPickResult = ({ThermionEntity entity, double x, double y}); +typedef ThermionPickResult = FilamentPickResult; diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/primitive.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/primitive.dart new file mode 100644 index 00000000..6763d0a0 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/primitive.dart @@ -0,0 +1,10 @@ +// copied from filament/backened/DriverEnums.h +enum PrimitiveType { + // don't change the enums values (made to match GL) + POINTS, //!< points + LINES, //!< lines + UNUSED1, + LINE_STRIP, //!< line strip + TRIANGLES, //!< triangles + TRIANGLE_STRIP, //!< triangle strip +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/shadow.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/shadow.dart new file mode 100644 index 00000000..a8ac9ba5 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/shadow.dart @@ -0,0 +1,6 @@ +enum ShadowType { + PCF, //!< percentage-closer filtered shadows (default) + VSM, //!< variance shadows + DPCF, //!< PCF with contact hardening simulation + PCSS, //!< PCF with soft shadows and contact hardening +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/shared_types.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/shared_types.dart new file mode 100644 index 00000000..ed30b00b --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/shared_types.dart @@ -0,0 +1,12 @@ +library shared_types; + +export 'material.dart'; +export 'texture.dart'; +export 'entities.dart'; +export 'light.dart'; +export 'shadow.dart'; +export 'manipulator.dart'; +export 'pick_result.dart'; +export 'primitive.dart'; +export 'texture_details.dart'; +export 'tone_mapper.dart'; diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/texture.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/texture.dart new file mode 100644 index 00000000..1279e39d --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/texture.dart @@ -0,0 +1,3 @@ +abstract class ThermionTexture { + +} \ No newline at end of file diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/texture_details.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/texture_details.dart new file mode 100644 index 00000000..ffbcdfa9 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/texture_details.dart @@ -0,0 +1,14 @@ +/// +/// This represents the backing "surface" that we render into. +/// "Texture" here is a misnomer as it is only a render target texture on certain platforms. +/// +class TextureDetails { + final int textureId; + + // both width and height are in physical, not logical pixels + final int width; + final int height; + + TextureDetails( + {required this.textureId, required this.width, required this.height}); +} diff --git a/thermion_dart/lib/thermion_dart/viewer/shared_types/tone_mapper.dart b/thermion_dart/lib/thermion_dart/viewer/shared_types/tone_mapper.dart new file mode 100644 index 00000000..a6e1ca69 --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/shared_types/tone_mapper.dart @@ -0,0 +1 @@ +enum ToneMapper { ACES, FILMIC, LINEAR } diff --git a/thermion_dart/lib/thermion_dart/viewer/thermion_viewer_base.dart b/thermion_dart/lib/thermion_dart/viewer/thermion_viewer_base.dart new file mode 100644 index 00000000..01e6be1e --- /dev/null +++ b/thermion_dart/lib/thermion_dart/viewer/thermion_viewer_base.dart @@ -0,0 +1,963 @@ +import 'package:thermion_dart/thermion_dart/viewer/events.dart'; +import 'package:thermion_dart/thermion_dart/viewer/shared_types/camera.dart'; + +import 'shared_types/shared_types.dart'; +export 'shared_types/shared_types.dart'; + +import 'dart:math'; +import 'dart:typed_data'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; +import 'package:vector_math/vector_math_64.dart'; +import 'dart:async'; +import 'package:animation_tools_dart/animation_tools_dart.dart'; + +const double kNear = 0.05; +const double kFar = 1000.0; +const double kFocalLength = 28.0; + +abstract class ThermionViewer { + /// + /// A Future that resolves when the underlying rendering context has been successfully created. + /// + Future get initialized; + + /// + /// The current dimensions of the viewport (in physical pixels). + /// + var viewportDimensions = (0.0, 0.0); + + /// + /// The current ratio of logical to physical pixels. + /// + late double pixelRatio; + + /// + /// The result(s) of calling [pick] (see below). + /// This may be a broadcast stream, so you should ensure you have subscribed to this stream before calling [pick]. + /// If [pick] is called without an active subscription to this stream, the results will be silently discarded. + /// + Stream get pickResult; + + /// + /// The result(s) of calling [pickGizmo] (see below). + /// + Stream get gizmoPickResult; + + /// + /// A Stream containing entities added/removed to/from to the scene. + /// + Stream get sceneUpdated; + + /// + /// Whether the controller is currently rendering at [framerate]. + /// + bool get rendering; + + /// + /// Set to true to continuously render the scene at the framerate specified by [setFrameRate] (60 fps by default). + /// + Future setRendering(bool render); + + /// + /// Render a single frame immediately. + /// + Future render(); + + /// + /// Requests a single frame to be rendered. This is only intended to be used internally. + /// + void requestFrame(); + + /// + /// Render a single frame and copy the pixel buffer to [out]. + /// + Future capture(); + + /// + /// Sets the framerate for continuous rendering when [setRendering] is enabled. + /// + Future setFrameRate(int framerate); + + /// + /// Destroys/disposes the viewer (including the entire scene). You cannot use the viewer after calling this method. + /// + Future dispose(); + + /// + /// Set the background image to [path] (which should have a file extension .png, .jpg, or .ktx). + /// This will be rendered at the maximum depth (i.e. behind all other objects including the skybox). + /// If [fillHeight] is false, the image will be rendered at its original size. Note this may cause issues with pixel density so be sure to specify the correct resolution + /// If [fillHeight] is true, the image will be stretched/compressed to fit the height of the viewport. + /// + Future setBackgroundImage(String path, {bool fillHeight = false}); + + /// + /// Moves the background image to the relative offset from the origin (bottom-left) specified by [x] and [y]. + /// If [clamp] is true, the image cannot be positioned outside the bounds of the viewport. + /// + Future setBackgroundImagePosition(double x, double y, {bool clamp = false}); + + /// + /// Removes the background image. + /// + Future clearBackgroundImage(); + + /// + /// Sets the color for the background plane (positioned at the maximum depth, i.e. behind all other objects including the skybox). + /// + Future setBackgroundColor(double r, double g, double b, double alpha); + + /// + /// Load a skybox from [skyboxPath] (which must be a .ktx file) + /// + Future loadSkybox(String skyboxPath); + + /// + /// Removes the skybox from the scene. + /// + Future removeSkybox(); + + /// + /// Creates an indirect light by loading the reflections/irradiance from the KTX file. + /// Only one indirect light can be active at any given time; if an indirect light has already been loaded, it will be replaced. + /// + Future loadIbl(String lightingPath, {double intensity = 30000}); + + /// + /// Creates a indirect light with the given color. + /// Only one indirect light can be active at any given time; if an indirect light has already been loaded, it will be replaced. + /// + Future createIbl(double r, double g, double b, double intensity); + + /// + /// Rotates the IBL & skybox. + /// + Future rotateIbl(Matrix3 rotation); + + /// + /// Removes the image-based light from the scene. + /// + Future removeIbl(); + + /// + /// Add a light to the scene. + /// See LightManager.h for details + /// Note that [sunAngularRadius] is in degrees, + /// whereas [spotLightConeInner] and [spotLightConeOuter] are in radians + /// + @Deprecated( + "This will be removed in future versions. Use addDirectLight instead.") + Future addLight( + LightType type, + double colour, + double intensity, + double posX, + double posY, + double posZ, + double dirX, + double dirY, + double dirZ, + {double falloffRadius = 1.0, + double spotLightConeInner = pi / 8, + double spotLightConeOuter = pi / 4, + double sunAngularRadius = 0.545, + double sunHaloSize = 10.0, + double sunHaloFallof = 80.0, + bool castShadows = true}); + + /// + /// Adds a direct light to the scene. + /// See LightManager.h for details + /// Note that [sunAngularRadius] is in degrees, + /// whereas [spotLightConeInner] and [spotLightConeOuter] are in radians + /// + Future addDirectLight(DirectLight light); + + /// + /// Remove a light from the scene. + /// + Future removeLight(ThermionEntity light); + + /// + /// Remove all lights (excluding IBL) from the scene. + /// + Future clearLights(); + + /// + /// Load the .glb asset at the given path and insert into the scene. + /// Specify [numInstances] to create multiple instances (this is more efficient than dynamically instantating at a later time). You can then retrieve the created instances with [getInstances]. + /// If you want to be able to call [createInstance] at a later time, you must pass true for [keepData]. + /// If [keepData] is false, the source glTF data will be released and [createInstance] will throw an exception. + /// + Future loadGlb(String path, + {int numInstances = 1, bool keepData = false}); + + /// + /// Load the .glb asset from the specified buffer and insert into the scene. + /// Specify [numInstances] to create multiple instances (this is more efficient than dynamically instantating at a later time). You can then retrieve the created instances with [getInstances]. + /// If you want to be able to call [createInstance] at a later time, you must pass true for [keepData]. + /// If [keepData] is false, the source glTF data will be released and [createInstance] will throw an exception. + /// + Future loadGlbFromBuffer(Uint8List data, + {int numInstances = 1, + bool keepData = false, + int priority = 4, + int layer = 0}); + + /// + /// Create a new instance of [entity]. + /// + Future createInstance(ThermionEntity entity); + + /// + /// Returns the number of instances of the asset associated with [entity]. + /// + Future getInstanceCount(ThermionEntity entity); + + /// + /// Returns all instances of [entity]. + /// + Future> getInstances(ThermionEntity entity); + + /// + /// Load the .gltf asset at the given path and insert into the scene. + /// [relativeResourcePath] is the folder path where the glTF resources are stored; + /// this is usually the parent directory of the .gltf file itself. + /// + /// See [loadGlb] for an explanation of [keepData]. + /// + Future loadGltf(String path, String relativeResourcePath, + {bool keepData = false}); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future panStart(double x, double y); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future panUpdate(double x, double y); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future panEnd(); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future rotateStart(double x, double y); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future rotateUpdate(double x, double y); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future rotateEnd(); + + /// + /// Set the weights for all morph targets in [entity] to [weights]. + /// Note that [weights] must contain values for ALL morph targets, but no exception will be thrown if you don't do so (you'll just get incorrect results). + /// If you only want to set one value, set all others to zero (check [getMorphTargetNames] if you need the get a list of all morph targets). + /// IMPORTANT - this accepts the actual ThermionEntity with the relevant morph targets (unlike [getMorphTargetNames], which uses the parent entity and the child mesh name). + /// Use [getChildEntityByName] if you are setting the weights for a child mesh. + /// + Future setMorphTargetWeights(ThermionEntity entity, List weights); + + /// + /// Gets the names of all morph targets for the child renderable [childEntity] under [entity]. + /// + Future> getMorphTargetNames( + ThermionEntity entity, ThermionEntity childEntity); + + /// + /// Gets the names of all bones for the armature at [skinIndex] under the specified [entity]. + /// + Future> getBoneNames(ThermionEntity entity, {int skinIndex = 0}); + + /// + /// Gets the names of all glTF animations embedded in the specified entity. + /// + Future> getAnimationNames(ThermionEntity entity); + + /// + /// Returns the length (in seconds) of the animation at the given index. + /// + Future getAnimationDuration( + ThermionEntity entity, int animationIndex); + + /// + /// Animate the morph targets in [entity]. See [MorphTargetAnimation] for an explanation as to how to construct the animation frame data. + /// This method will check the morph target names specified in [animation] against the morph target names that actually exist exist under [meshName] in [entity], + /// throwing an exception if any cannot be found. + /// It is permissible for [animation] to omit any targets that do exist under [meshName]; these simply won't be animated. + /// + Future setMorphAnimationData( + ThermionEntity entity, MorphAnimationData animation, + {List? targetMeshNames}); + + /// + /// Clear all current morph animations for [entity]. + /// + Future clearMorphAnimationData(ThermionEntity entity); + + /// + /// Resets all bones in the given entity to their rest pose. + /// This should be done before every call to addBoneAnimation. + /// + Future resetBones(ThermionEntity entity); + + /// + /// Enqueues and plays the [animation] for the specified bone(s). + /// By default, frame data is interpreted as being in *parent* bone space; + /// a 45 degree around Y means the bone will rotate 45 degrees around the + /// Y axis of the parent bone *in its current orientation*. + /// (i.e NOT the parent bone's rest position!). + /// Currently, only [Space.ParentBone] and [Space.Model] are supported; if you want + /// to transform to another space, you will need to do so manually. + /// + /// [fadeInInSecs]/[fadeOutInSecs]/[maxDelta] are used to cross-fade between + /// the current active glTF animation ("animation1") and the animation you + /// set via this method ("animation2"). The bone orientations will be + /// linearly interpolated between animation1 and animation2; at time 0, + /// the orientation will be 100% animation1, at time [fadeInInSecs], the + /// animation will be ((1 - maxDelta) * animation1) + (maxDelta * animation2). + /// This will be applied in reverse after [fadeOutInSecs]. + /// + /// + Future addBoneAnimation(ThermionEntity entity, BoneAnimationData animation, + {int skinIndex = 0, + double fadeInInSecs = 0.0, + double fadeOutInSecs = 0.0, + double maxDelta = 1.0}); + + /// + /// Gets the entity representing the bone at [boneIndex]/[skinIndex]. + /// The returned entity is only intended for use with [getWorldTransform]. + /// + Future getBone(ThermionEntity parent, int boneIndex, + {int skinIndex = 0}); + + /// + /// Gets the local (relative to parent) transform for [entity]. + /// + Future getLocalTransform(ThermionEntity entity); + + /// + /// Gets the world transform for [entity]. + /// + Future getWorldTransform(ThermionEntity entity); + + /// + /// Gets the inverse bind (pose) matrix for the bone. + /// Note that [parent] must be the ThermionEntity returned by [loadGlb/loadGltf], not any other method ([getChildEntity] etc). + /// This is because all joint information is internally stored with the parent entity. + /// + Future getInverseBindMatrix(ThermionEntity parent, int boneIndex, + {int skinIndex = 0}); + + /// + /// Sets the transform (relative to its parent) for [entity]. + /// + Future setTransform(ThermionEntity entity, Matrix4 transform); + + /// + /// Updates the bone matrices for [entity] (which must be the ThermionEntity + /// returned by [loadGlb/loadGltf]). + /// Under the hood, this just calls [updateBoneMatrices] on the Animator + /// instance of the relevant FilamentInstance (which uses the local + /// bone transform and the inverse bind matrix to set the bone matrix). + /// + Future updateBoneMatrices(ThermionEntity entity); + + /// + /// Directly set the bone matrix for the bone at the given index. + /// Don't call this manually unless you know what you're doing. + /// + Future setBoneTransform( + ThermionEntity entity, int boneIndex, Matrix4 transform, + {int skinIndex = 0}); + + /// + /// Removes/destroys the specified entity from the scene. + /// [entity] will no longer be a valid handle after this method is called; ensure you immediately discard all references once this method is complete. + /// + Future removeEntity(ThermionEntity entity); + + /// + /// Removes/destroys all renderable entities from the scene (including cameras). + /// All [ThermionEntity] handles will no longer be valid after this method is called; ensure you immediately discard all references to all entities once this method is complete. + /// + Future clearEntities(); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future zoomBegin(); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future zoomUpdate(double x, double y, double z); + + /// + /// Called by `FilamentGestureDetector`. You probably don't want to call this yourself. + /// + Future zoomEnd(); + + /// + /// Schedules the glTF animation at [index] in [entity] to start playing on the next frame. + /// + Future playAnimation(ThermionEntity entity, int index, + {bool loop = false, + bool reverse = false, + bool replaceActive = true, + double crossfade = 0.0, + double startOffset = 0.0}); + + /// + /// Schedules the glTF animation at [index] in [entity] to start playing on the next frame. + /// + Future playAnimationByName(ThermionEntity entity, String name, + {bool loop = false, + bool reverse = false, + bool replaceActive = true, + double crossfade = 0.0}); + + Future setAnimationFrame( + ThermionEntity entity, int index, int animationFrame); + + Future stopAnimation(ThermionEntity entity, int animationIndex); + Future stopAnimationByName(ThermionEntity entity, String name); + + /// + /// Sets the current scene camera to the glTF camera under [name] in [entity]. + /// + Future setCamera(ThermionEntity entity, String? name); + + /// + /// Sets the current scene camera to the main camera (which is always available and added to every scene by default). + /// + Future setMainCamera(); + + /// + /// Returns the entity associated with the main camera. You probably never need this; use getMainCamera instead. + /// + Future getMainCameraEntity(); + + /// + /// Returns the entity associated with the main camera. You probably never need this; use getMainCamera instead. + /// + Future getMainCamera(); + + /// + /// Sets the horizontal field of view (if [horizontal] is true) or vertical field of view for the currently active camera to [degrees]. + /// The aspect ratio of the current viewport is used. + /// + Future setCameraFov(double degrees, {bool horizontal = true}); + + /// + /// Gets the field of view (in degrees). + /// + Future getCameraFov(bool horizontal); + + /// + /// Sets the tone mapping (requires postprocessing). + /// + Future setToneMapping(ToneMapper mapper); + + /// + /// Sets the strength of the bloom. + /// + Future setBloom(double bloom); + + /// + /// Sets the focal length of the camera. Default value is 28.0. + /// + Future setCameraFocalLength(double focalLength); + + /// + /// Sets the distance (in world units) to the near/far planes for the active camera. Default values are 0.05/1000.0. See Camera.h for details. + /// + Future setCameraCulling(double near, double far); + + /// + /// Get the distance (in world units) to the near plane for the active camera. + /// + @Deprecated("Use getCameraNear") + Future getCameraCullingNear(); + + /// + /// Get the distance (in world units) to the near plane for the active camera. + /// + Future getCameraNear(); + + /// + /// Get the distance (in world units) to the far culling plane for the active camera. + /// + Future getCameraCullingFar(); + + /// + /// + /// + Future setCameraLensProjection( + {double near = kNear, + double far = kFar, + double? aspect, + double focalLength = kFocalLength}); + + /// + /// Sets the focus distance for the camera. + /// + Future setCameraFocusDistance(double focusDistance); + + /// + /// Get the camera position in world space. + /// + Future getCameraPosition(); + + /// + /// Get the camera's model matrix. + /// + Future getCameraModelMatrix(); + + /// + /// Get the camera's view matrix. See Camera.h for more details. + /// + Future getCameraViewMatrix(); + + /// + /// Get the camera's projection matrix. See Camera.h for more details. + /// + Future getCameraProjectionMatrix(); + + /// + /// Get the camera's culling projection matrix. See Camera.h for more details. + /// + Future getCameraCullingProjectionMatrix(); + + /// + /// Get the camera's culling frustum in world space. Returns a (vector_math) [Frustum] instance where plane0-plane6 define the left, right, bottom, top, far and near planes respectively. + /// See Camera.h and (filament) Frustum.h for more details. + /// + Future getCameraFrustum(); + + /// + /// Set the camera position in world space. Note this is not persistent - any viewport navigation will reset the camera transform. + /// + Future setCameraPosition(double x, double y, double z); + + /// + /// Get the camera rotation matrix. + /// + Future getCameraRotation(); + + /// + /// Repositions the camera to the last vertex of the bounding box of [entity], looking at the penultimate vertex. + /// + Future moveCameraToAsset(ThermionEntity entity); + + /// + /// Enables/disables frustum culling. + /// + Future setViewFrustumCulling(bool enabled); + + /// + /// Sets the camera exposure. + /// + Future setCameraExposure( + double aperture, double shutterSpeed, double sensitivity); + + /// + /// Rotate the camera by [rads] around the given axis. + /// + Future setCameraRotation(Quaternion quaternion); + + /// + /// Sets the camera model matrix. + /// + @Deprecated("Will be superseded by setCameraModelMatrix4") + Future setCameraModelMatrix(List matrix); + + /// + /// Sets the camera model matrix. + /// + Future setCameraModelMatrix4(Matrix4 matrix); + + /// + /// Sets the `baseColorFactor` property for the material at index [materialIndex] in [entity] under node [meshName] to [color]. + /// + @Deprecated("Use setMaterialPropertyFloat4 instead") + Future setMaterialColor(ThermionEntity entity, String meshName, + int materialIndex, double r, double g, double b, double a); + + /// + /// Sets the material property [propertyName] under material [materialIndex] for [entity] to [value]. + /// [entity] must have a Renderable attached. + /// + Future setMaterialPropertyFloat4(ThermionEntity entity, String propertyName, + int materialIndex, double f1, double f2, double f3, double f4); + + /// + /// Sets the material property [propertyName] under material [materialIndex] for [entity] to [value]. + /// [entity] must have a Renderable attached. + /// + Future setMaterialPropertyFloat(ThermionEntity entity, String propertyName, + int materialIndex, double value); + + /// + /// Sets the material property [propertyName] under material [materialIndex] for [entity] to [value]. + /// [entity] must have a Renderable attached. + /// + Future setMaterialPropertyInt( + ThermionEntity entity, String propertyName, int materialIndex, int value); + + /// + /// Scale [entity] to fit within the unit cube. + /// + Future transformToUnitCube(ThermionEntity entity); + + /// + /// Directly sets the world space position for [entity] to the given coordinates. + /// + Future setPosition(ThermionEntity entity, double x, double y, double z); + + /// + /// Set the world space position for [lightEntity] to the given coordinates. + /// + Future setLightPosition( + ThermionEntity lightEntity, double x, double y, double z); + + /// + /// Sets the world space direction for [lightEntity] to the given vector. + /// + Future setLightDirection(ThermionEntity lightEntity, Vector3 direction); + + /// + /// Directly sets the scale for [entity], skipping all collision detection. + /// + Future setScale(ThermionEntity entity, double scale); + + /// + /// Directly sets the rotation for [entity] to [rads] around the axis {x,y,z}, skipping all collision detection. + /// + Future setRotation( + ThermionEntity entity, double rads, double x, double y, double z); + + /// + /// Queues an update to the worldspace position for [entity] to {x,y,z}. + /// The actual update will occur on the next frame, and will be subject to collision detection. + /// + Future queuePositionUpdate( + ThermionEntity entity, double x, double y, double z, + {bool relative = false}); + + /// + /// TODO + /// + Future queuePositionUpdateFromViewportCoords( + ThermionEntity entity, double x, double y); + + /// + /// TODO + /// + Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity, + double viewportX, double viewportY, double x, double y, double z); + + /// + /// Queues an update to the worldspace rotation for [entity]. + /// The actual update will occur on the next frame, and will be subject to collision detection. + /// + Future queueRotationUpdate( + ThermionEntity entity, double rads, double x, double y, double z, + {bool relative = false}); + + /// + /// Same as [queueRotationUpdate]. + /// + Future queueRotationUpdateQuat(ThermionEntity entity, Quaternion quat, + {bool relative = false}); + + /// + /// Enable/disable postprocessing (disabled by default). + /// + Future setPostProcessing(bool enabled); + + /// + /// Enable/disable shadows (disabled by default). + /// + Future setShadowsEnabled(bool enabled); + + /// + /// Set shadow type. + /// + Future setShadowType(ShadowType shadowType); + + /// + /// Set soft shadow options (ShadowType DPCF and PCSS) + /// + Future setSoftShadowOptions(double penumbraScale, double penumbraRatioScale); + + /// + /// Set antialiasing options. + /// + Future setAntiAliasing(bool msaa, bool fxaa, bool taa); + + /// + /// Sets the rotation for [entity] to the specified quaternion. + /// + Future setRotationQuat(ThermionEntity entity, Quaternion rotation); + + /// + /// Reveal the node [meshName] under [entity]. Only applicable if [hide] had previously been called; this is a no-op otherwise. + /// + Future reveal(ThermionEntity entity, String? meshName); + + /// + /// If [meshName] is provided, hide the node [meshName] under [entity], otherwise hide the root node for [entity]. + /// The entity still exists in memory, but is no longer being rendered into the scene. Call [reveal] to re-commence rendering. + /// + Future hide(ThermionEntity entity, String? meshName); + + /// + /// Used to select the entity in the scene at the given viewport coordinates. + /// Called by `FilamentGestureDetector` on a mouse/finger down event. You probably don't want to call this yourself. + /// This is asynchronous and will require 2-3 frames to complete - subscribe to the [pickResult] stream to receive the results of this method. + /// [x] and [y] must be in local logical coordinates (i.e. where 0,0 is at top-left of the ThermionWidget). + /// + void pick(int x, int y); + + /// + /// Used to test whether a Gizmo is at the given viewport coordinates. + /// Called by `FilamentGestureDetector` on a mouse/finger down event. You probably don't want to call this yourself. + /// This is asynchronous and will require 2-3 frames to complete - subscribe to the [gizmoPickResult] stream to receive the results of this method. + /// [x] and [y] must be in local logical coordinates (i.e. where 0,0 is at top-left of the ThermionWidget). + /// + void pickGizmo(int x, int y); + + /// + /// Retrieves the name assigned to the given ThermionEntity (usually corresponds to the glTF mesh name). + /// + String? getNameForEntity(ThermionEntity entity); + + /// + /// Sets the options for manipulating the camera via the viewport. + /// ManipulatorMode.FREE_FLIGHT and ManipulatorMode.MAP are currently unsupported and will throw an exception. + /// + @Deprecated("Use ThermionGestureHandler instead") + Future setCameraManipulatorOptions( + {ManipulatorMode mode = ManipulatorMode.ORBIT, + double orbitSpeedX = 0.01, + double orbitSpeedY = 0.01, + double zoomSpeed = 0.01}); + + /// + /// Returns all child entities under [parent]. + /// + Future> getChildEntities( + ThermionEntity parent, bool renderableOnly); + + /// + /// Finds the child entity named [childName] associated with the given parent. + /// Usually, [parent] will be the return value from [loadGlb]/[loadGltf] and [childName] will be the name of a node/mesh. + /// + Future getChildEntity( + ThermionEntity parent, String childName); + + /// + /// List the name of all child entities under the given entity. + /// + Future> getChildEntityNames(ThermionEntity entity, + {bool renderableOnly = true}); + + /// + /// If [recording] is set to true, each frame the framebuffer/texture will be written to /tmp/output_*.png. + /// This will impact performance; handle with care. + /// + Future setRecording(bool recording); + + /// + /// Sets the output directory where recorded PNGs will be placed. + /// + Future setRecordingOutputDirectory(String outputDirectory); + + /// + /// An [entity] will only be animatable after an animation component is attached. + /// Any calls to [playAnimation]/[setBoneAnimation]/[setMorphAnimation] will have no visual effect until [addAnimationComponent] has been called on the instance. + /// + Future addAnimationComponent(ThermionEntity entity); + + /// + /// Removes an animation component from [entity]. + /// + Future removeAnimationComponent(ThermionEntity entity); + + /// + /// Makes [entity] collidable. + /// This allows you to call [testCollisions] with any other entity ("entity B") to see if [entity] has collided with entity B. The callback will be invoked if so. + /// Alternatively, if [affectsTransform] is true and this entity collides with another entity, any queued position updates to the latter entity will be ignored. + /// + Future addCollisionComponent(ThermionEntity entity, + {void Function(int entityId1, int entityId2)? callback, + bool affectsTransform = false}); + + /// + /// Removes the collision component from [entity], meaning this will no longer be tested when [testCollisions] or [queuePositionUpdate] is called with another entity. + /// + Future removeCollisionComponent(ThermionEntity entity); + + /// + /// Creates a (renderable) entity with the specified geometry and adds to the scene. + /// If [keepData] is true, the source data will not be released. + /// + Future createGeometry(Geometry geometry, + {MaterialInstance? materialInstance, bool keepData = false}); + + /// + /// Gets the parent entity of [entity]. Returns null if the entity has no parent. + /// + Future getParent(ThermionEntity entity); + + /// + /// Gets the ancestor (ultimate parent) entity of [entity]. Returns null if the entity has no parent. + /// + Future getAncestor(ThermionEntity entity); + + /// + /// Sets the parent transform of [child] to [parent]. + /// + Future setParent(ThermionEntity child, ThermionEntity parent, + {bool preserveScaling}); + + /// + /// Test all collidable entities against this entity to see if any have collided. + /// This method returns void; the relevant callback passed to [addCollisionComponent] will be fired if a collision is detected. + /// + Future testCollisions(ThermionEntity entity); + + /// + /// Sets the draw priority for the given entity. See RenderableManager.h for more details. + /// + Future setPriority(ThermionEntity entityId, int priority); + + /// + /// The gizmo for translating/rotating objects. Only one gizmo is present in the scene. + /// + AbstractGizmo? get gizmo; + + /// + /// Register a callback to be invoked when this viewer is disposed. + /// + void onDispose(Future Function() callback); + + /// + /// Gets the 2D bounding box (in viewport coordinates) for the given entity. + /// + Future getViewportBoundingBox(ThermionEntity entity); + + /// + /// Filament assigns renderables to a numeric layer. + /// We place all scene assets in layer 0 (enabled by default), gizmos in layer 1 (enabled by default), world grid in layer 2 (disabled by default). + /// Use this method to toggle visibility of the respective layer. + /// + Future setLayerVisibility(int layer, bool visible); + + /// + /// Assigns [entity] to visibility layer [layer]. + /// + Future setVisibilityLayer(ThermionEntity entity, int layer); + + /// + /// Show/hide the translation gizmo. + /// + Future setGizmoVisibility(bool visible); + + /// + /// Renders an outline around [entity] with the given color. + /// + Future setStencilHighlight(ThermionEntity entity, + {double r = 1.0, double g = 0.0, double b = 0.0}); + + /// + /// Removes the outline around [entity]. Noop if there was no highlight. + /// + Future removeStencilHighlight(ThermionEntity entity); + + /// + /// Decodes the specified image data and creates a texture. + /// + Future createTexture(Uint8List data); + + /// + /// + /// + Future applyTexture(covariant ThermionTexture texture, ThermionEntity entity, + {int materialIndex = 0, String parameterName = "baseColorMap"}); + + /// + /// + /// + Future destroyTexture(covariant ThermionTexture texture); + + /// + /// + /// + Future createUbershaderMaterialInstance({ + bool doubleSided = false, + bool unlit = false, + bool hasVertexColors = false, + bool hasBaseColorTexture = false, + bool hasNormalTexture = false, + bool hasOcclusionTexture = false, + bool hasEmissiveTexture = false, + bool useSpecularGlossiness = false, + AlphaMode alphaMode = AlphaMode.OPAQUE, + bool enableDiagnostics = false, + bool hasMetallicRoughnessTexture = false, + int metallicRoughnessUV = 0, + int baseColorUV = 0, + bool hasClearCoatTexture = false, + int clearCoatUV = 0, + bool hasClearCoatRoughnessTexture = false, + int clearCoatRoughnessUV = 0, + bool hasClearCoatNormalTexture = false, + int clearCoatNormalUV = 0, + bool hasClearCoat = false, + bool hasTransmission = false, + bool hasTextureTransforms = false, + int emissiveUV = 0, + int aoUV = 0, + int normalUV = 0, + bool hasTransmissionTexture = false, + int transmissionUV = 0, + bool hasSheenColorTexture = false, + int sheenColorUV = 0, + bool hasSheenRoughnessTexture = false, + int sheenRoughnessUV = 0, + bool hasVolumeThicknessTexture = false, + int volumeThicknessUV = 0, + bool hasSheen = false, + bool hasIOR = false, + bool hasVolume = false, + }); + + /// + /// + /// + Future destroyMaterialInstance(covariant MaterialInstance materialInstance); + + /// + /// + /// + Future createUnlitMaterialInstance(); + + /// + /// + /// + Future getMaterialInstanceAt( + ThermionEntity entity, int index); +} diff --git a/thermion_dart/lib/thermion_dart/thermion_viewer_stub.dart b/thermion_dart/lib/thermion_dart/viewer/thermion_viewer_stub.dart similarity index 69% rename from thermion_dart/lib/thermion_dart/thermion_viewer_stub.dart rename to thermion_dart/lib/thermion_dart/viewer/thermion_viewer_stub.dart index 9f09e2c0..5f9f2615 100644 --- a/thermion_dart/lib/thermion_dart/thermion_viewer_stub.dart +++ b/thermion_dart/lib/thermion_dart/viewer/thermion_viewer_stub.dart @@ -1,14 +1,15 @@ import 'dart:math'; import 'dart:typed_data'; -import 'package:thermion_dart/thermion_dart/scene.dart'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_dart/thermion_dart/viewer/events.dart'; +import 'package:thermion_dart/thermion_dart/viewer/shared_types/camera.dart'; +import 'package:thermion_dart/thermion_dart/viewer/thermion_viewer_base.dart'; import 'package:vector_math/vector_math_64.dart'; import 'dart:async'; import 'package:animation_tools_dart/animation_tools_dart.dart'; -typedef ThermionViewerImpl = ThermionViewerStub; - class ThermionViewerStub extends ThermionViewer { @override Future addAnimationComponent(ThermionEntity entity) { @@ -74,13 +75,6 @@ class ThermionViewerStub extends ThermionViewer { throw UnimplementedError(); } - @override - Future createGeometry(List vertices, List indices, - {String? materialPath, - PrimitiveType primitiveType = PrimitiveType.TRIANGLES}) { - // TODO: implement createGeometry - throw UnimplementedError(); - } @override Future createInstance(ThermionEntity entity) { @@ -221,12 +215,6 @@ class ThermionViewerStub extends ThermionViewer { throw UnimplementedError(); } - @override - Future getMainCamera() { - // TODO: implement getMainCamera - throw UnimplementedError(); - } - @override Future> getMorphTargetNames( ThermionEntity entity, ThermionEntity childEntity) { @@ -266,19 +254,6 @@ class ThermionViewerStub extends ThermionViewer { // TODO: implement initialized Future get initialized => throw UnimplementedError(); - @override - Future loadGlb(String path, {int numInstances = 1}) { - // TODO: implement loadGlb - throw UnimplementedError(); - } - - @override - Future loadGltf(String path, String relativeResourcePath, - {bool force = false}) { - // TODO: implement loadGltf - throw UnimplementedError(); - } - @override Future loadIbl(String lightingPath, {double intensity = 30000}) { // TODO: implement loadIbl @@ -455,10 +430,6 @@ class ThermionViewerStub extends ThermionViewer { throw UnimplementedError(); } - @override - // TODO: implement scene - Scene get scene => throw UnimplementedError(); - @override Future setAnimationFrame( ThermionEntity entity, int index, int animationFrame) { @@ -536,7 +507,7 @@ class ThermionViewerStub extends ThermionViewer { } @override - Future setCameraFov(double degrees, double width, double height) { + Future setCameraFov(double degrees, {bool horizontal=true}) { // TODO: implement setCameraFov throw UnimplementedError(); } @@ -608,7 +579,7 @@ class ThermionViewerStub extends ThermionViewer { } @override - Future setParent(ThermionEntity child, ThermionEntity parent) { + Future setParent(ThermionEntity child, ThermionEntity parent, { bool preserveScaling = false}) { // TODO: implement setParent throw UnimplementedError(); } @@ -757,4 +728,243 @@ class ThermionViewerStub extends ThermionViewer { // TODO: implement capture throw UnimplementedError(); } + + @override + Future getBoundingBox(ThermionEntity entity) { + // TODO: implement getBoundingBox + throw UnimplementedError(); + } + + @override + Future getCameraFov(bool horizontal) { + // TODO: implement getCameraFov + throw UnimplementedError(); + } + + @override + Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity, double viewportX, double viewportY, double x, double y, double z) { + // TODO: implement queueRelativePositionUpdateWorldAxis + throw UnimplementedError(); + } + + @override + Future setLayerEnabled(int layer, bool enabled) { + // TODO: implement setLayerEnabled + throw UnimplementedError(); + } + + @override + Future createIbl(double r, double g, double b, double intensity) { + // TODO: implement createIbl + throw UnimplementedError(); + } + + @override + // TODO: implement gizmoPickResult + Stream get gizmoPickResult => throw UnimplementedError(); + + @override + void pickGizmo(int x, int y) { + // TODO: implement pickGizmo + } + + @override + Future setGizmoVisibility(bool visible) { + // TODO: implement setGizmoVisibility + throw UnimplementedError(); + } + + @override + Future getAncestor(ThermionEntity entity) { + // TODO: implement getAncestor + throw UnimplementedError(); + } + + + @override + Future queuePositionUpdateFromViewportCoords(ThermionEntity entity, double x, double y) { + // TODO: implement queuePositionUpdateFromViewportCoords + throw UnimplementedError(); + } + + @override + Future removeStencilHighlight(ThermionEntity entity) { + // TODO: implement removeStencilHighlight + throw UnimplementedError(); + } + + @override + Future setLightDirection(ThermionEntity lightEntity, Vector3 direction) { + // TODO: implement setLightDirection + throw UnimplementedError(); + } + + @override + Future setLightPosition(ThermionEntity lightEntity, double x, double y, double z) { + // TODO: implement setLightPosition + throw UnimplementedError(); + } + + @override + Future setStencilHighlight(ThermionEntity entity, {double r = 1.0, double g = 0.0, double b = 0.0}) { + // TODO: implement setStencilHighlight + throw UnimplementedError(); + } + + @override + Future getCameraNear() { + // TODO: implement getCameraNear + throw UnimplementedError(); + } + + @override + Future getViewportBoundingBox(ThermionEntity entity) { + // TODO: implement getViewportBoundingBox + throw UnimplementedError(); + } + + + @override + Future setCameraModelMatrix4(Matrix4 matrix) { + // TODO: implement setCameraModelMatrix4 + throw UnimplementedError(); + } + + + @override + Future loadGlb(String path, {int numInstances = 1, bool keepData = false}) { + // TODO: implement loadGlb + throw UnimplementedError(); + } + + @override + Future loadGltf(String path, String relativeResourcePath, {bool keepData = false}) { + // TODO: implement loadGltf + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat(ThermionEntity entity, String propertyName, int materialIndex, double value) { + // TODO: implement setMaterialPropertyFloat + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat4(ThermionEntity entity, String propertyName, int materialIndex, double f1, double f2, double f3, double f4) { + // TODO: implement setMaterialPropertyFloat4 + throw UnimplementedError(); + } + + @override + // TODO: implement sceneUpdated + Stream get sceneUpdated => throw UnimplementedError(); + + @override + Future addDirectLight(DirectLight light) { + // TODO: implement addDirectLight + throw UnimplementedError(); + } + + @override + Future applyTexture(covariant ThermionTexture texture, ThermionEntity entity, {int materialIndex = 0, String parameterName = "baseColorMap"}) { + // TODO: implement applyTexture + throw UnimplementedError(); + } + + @override + Future createTexture(Uint8List data) { + // TODO: implement createTexture + throw UnimplementedError(); + } + + @override + Future createUbershaderMaterialInstance({bool doubleSided = false, bool unlit = false, bool hasVertexColors = false, bool hasBaseColorTexture = false, bool hasNormalTexture = false, bool hasOcclusionTexture = false, bool hasEmissiveTexture = false, bool useSpecularGlossiness = false, AlphaMode alphaMode = AlphaMode.OPAQUE, bool enableDiagnostics = false, bool hasMetallicRoughnessTexture = false, int metallicRoughnessUV = 0, int baseColorUV = 0, bool hasClearCoatTexture = false, int clearCoatUV = 0, bool hasClearCoatRoughnessTexture = false, int clearCoatRoughnessUV = 0, bool hasClearCoatNormalTexture = false, int clearCoatNormalUV = 0, bool hasClearCoat = false, bool hasTransmission = false, bool hasTextureTransforms = false, int emissiveUV = 0, int aoUV = 0, int normalUV = 0, bool hasTransmissionTexture = false, int transmissionUV = 0, bool hasSheenColorTexture = false, int sheenColorUV = 0, bool hasSheenRoughnessTexture = false, int sheenRoughnessUV = 0, bool hasVolumeThicknessTexture = false, int volumeThicknessUV = 0, bool hasSheen = false, bool hasIOR = false, bool hasVolume = false}) { + // TODO: implement createUbershaderMaterialInstance + throw UnimplementedError(); + } + + @override + Future createUnlitMaterialInstance() { + // TODO: implement createUnlitMaterialInstance + throw UnimplementedError(); + } + + @override + Future destroyMaterialInstance(covariant MaterialInstance materialInstance) { + // TODO: implement destroyMaterialInstance + throw UnimplementedError(); + } + + @override + Future destroyTexture(covariant ThermionTexture texture) { + // TODO: implement destroyTexture + throw UnimplementedError(); + } + + @override + Future createGeometry(Geometry geometry, {MaterialInstance? materialInstance, bool keepData = false}) { + // TODO: implement createGeometry + throw UnimplementedError(); + } + + @override + Future loadGlbFromBuffer(Uint8List data, {int numInstances = 1, bool keepData = false, int priority = 4, int layer = 0}) { + // TODO: implement loadGlbFromBuffer + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyInt(ThermionEntity entity, String propertyName, int materialIndex, int value) { + // TODO: implement setMaterialPropertyInt + throw UnimplementedError(); + } + + @override + Future getMaterialInstanceAt(ThermionEntity entity, int index) { + // TODO: implement getMaterialInstanceAt + throw UnimplementedError(); + } + + @override + Future setLayerVisibility(int layer, bool visible) { + // TODO: implement setLayerVisibility + throw UnimplementedError(); + } + + @override + Future setMaterialDepthWrite(ThermionEntity entity, int materialIndex, bool enabled) { + // TODO: implement setMaterialDepthWrite + throw UnimplementedError(); + } + + @override + Future setVisibilityLayer(ThermionEntity entity, int layer) { + // TODO: implement setVisibilityLayer + throw UnimplementedError(); + } + + @override + void requestFrame() { + // TODO: implement requestFrame + } + + @override + Future setCameraLensProjection({double near = kNear, double far = kFar, double? aspect, double focalLength = kFocalLength}) { + // TODO: implement setCameraLensProjection + throw UnimplementedError(); + } + + @override + Future getMainCameraEntity() { + // TODO: implement getMainCameraEntity + throw UnimplementedError(); + } + + @override + Future getMainCamera() { + // TODO: implement getMainCamera + throw UnimplementedError(); + } + + } diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_dart_bridge.dart b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_dart_bridge.dart similarity index 97% rename from thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_dart_bridge.dart rename to thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_dart_bridge.dart index 120cdade..e88e1859 100644 --- a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_dart_bridge.dart +++ b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_dart_bridge.dart @@ -3,7 +3,7 @@ library thermion_flutter_js; import 'dart:js_interop'; import 'package:logging/logging.dart'; -import 'package:thermion_dart/thermion_dart/compatibility/web/interop/thermion_viewer_js_shim.dart'; +import 'package:thermion_dart/thermion_dart/viewer/web/thermion_viewer_js_shim.dart'; import 'package:vector_math/vector_math_64.dart' as v64; import 'package:animation_tools_dart/animation_tools_dart.dart'; @@ -166,9 +166,9 @@ class ThermionViewerJSDartBridge { @JSExport() JSPromise loadGltf(String path, String relativeResourcePath, - {bool force = false}) { + {bool keepData = false}) { return viewer - .loadGltf(path, relativeResourcePath, force: force) + .loadGltf(path, relativeResourcePath, keepData: keepData) .then((entity) => entity.toJS) .toJS; } @@ -404,8 +404,16 @@ class ThermionViewerJSDartBridge { } @JSExport() - JSPromise setCameraFov(double degrees, double width, double height) => - viewer.setCameraFov(degrees, width, height).toJS; + JSPromise setParent( + ThermionEntity child, ThermionEntity parent, bool preserveScaling) { + return viewer + .setParent(child, parent, preserveScaling: preserveScaling) + .toJS; + } + + @JSExport() + JSPromise setCameraFov(double degrees, bool horizontal) => + viewer.setCameraFov(degrees, horizontal: horizontal).toJS; @JSExport() JSPromise setToneMapping(int mapper) => @@ -527,9 +535,11 @@ class ThermionViewerJSDartBridge { // b, // a, // ).toJS; + @JSExport() JSPromise transformToUnitCube(ThermionEntity entity) => viewer.transformToUnitCube(entity).toJS; + @JSExport() JSPromise setPosition(ThermionEntity entity, double x, double y, double z) => viewer.setPosition(entity, x, y, z).toJS; diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js.dart b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js.dart similarity index 84% rename from thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js.dart rename to thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js.dart index 2872e312..f40e0765 100644 --- a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js.dart +++ b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js.dart @@ -5,10 +5,10 @@ import 'dart:typed_data'; import 'package:animation_tools_dart/animation_tools_dart.dart'; import 'package:logging/logging.dart'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; import 'package:thermion_dart/thermion_dart/scene.dart'; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; -import 'package:thermion_dart/thermion_dart/scene_impl.dart'; import 'package:vector_math/vector_math_64.dart'; import 'thermion_viewer_js_shim.dart'; @@ -423,8 +423,8 @@ class ThermionViewerJS implements ThermionViewer { } @override - Future setCameraFov(double degrees, double width, double height) async { - await _shim.setCameraFov(degrees, width, height).toDart; + Future setCameraFov(double degrees, {bool horizontal = true}) async { + await _shim.setCameraFov(degrees, horizontal).toDart; } @override @@ -737,8 +737,9 @@ class ThermionViewerJS implements ThermionViewer { } @override - Future setParent(ThermionEntity child, ThermionEntity parent) async { - await _shim.setParent(child, parent).toDart; + Future setParent(ThermionEntity child, ThermionEntity parent, + {bool preserveScaling = false}) async { + await _shim.setParent(child, parent, preserveScaling).toDart; } @override @@ -857,4 +858,150 @@ class ThermionViewerJS implements ThermionViewer { final captured = await _shim.capture().toDart; return captured.toDart; } + + @override + late (double, double) viewportDimensions; + + @override + Future getBoundingBox(ThermionEntity entity) { + // return _shim.getBoundingBox(entity); + throw UnimplementedError(); + } + + @override + Future getCameraFov(bool horizontal) { + // TODO: implement getCameraFov + throw UnimplementedError(); + } + + @override + Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity, + double viewportX, double viewportY, double x, double y, double z) { + // TODO: implement queueRelativePositionUpdateWorldAxis + throw UnimplementedError(); + } + + @override + double pixelRatio; + + @override + Future createIbl(double r, double g, double b, double intensity) { + // TODO: implement createIbl + throw UnimplementedError(); + } + + @override + // TODO: implement gizmoPickResult + Stream get gizmoPickResult => throw UnimplementedError(); + + @override + void pickGizmo(int x, int y) { + // TODO: implement pickGizmo + } + + @override + Future setGizmoVisibility(bool visible) { + // TODO: implement setGizmoVisibility + throw UnimplementedError(); + } + + @override + Future setLayerEnabled(int layer, bool enabled) { + // TODO: implement setLayerEnabled + throw UnimplementedError(); + } + + @override + // TODO: implement entitiesAdded + Stream get entitiesAdded => throw UnimplementedError(); + + @override + // TODO: implement entitiesRemoved + Stream get entitiesRemoved => throw UnimplementedError(); + + @override + Future getAncestor(ThermionEntity entity) { + // TODO: implement getAncestor + throw UnimplementedError(); + } + + @override + Future getCameraNear() { + // TODO: implement getCameraNear + throw UnimplementedError(); + } + + @override + Future getViewportBoundingBox(ThermionEntity entity) { + // TODO: implement getViewportBoundingBox + throw UnimplementedError(); + } + + @override + // TODO: implement lightsAdded + Stream get lightsAdded => throw UnimplementedError(); + + @override + // TODO: implement lightsRemoved + Stream get lightsRemoved => throw UnimplementedError(); + + @override + Future loadGlbFromBuffer(Uint8List data, {int numInstances = 1, bool keepData = false}) { + // TODO: implement loadGlbFromBuffer + throw UnimplementedError(); + } + + @override + Future queuePositionUpdateFromViewportCoords(ThermionEntity entity, double x, double y) { + // TODO: implement queuePositionUpdateFromViewportCoords + throw UnimplementedError(); + } + + @override + Future removeStencilHighlight(ThermionEntity entity) { + // TODO: implement removeStencilHighlight + throw UnimplementedError(); + } + + @override + Future setCameraLensProjection(double near, double far, double aspect, double focalLength) { + // TODO: implement setCameraLensProjection + throw UnimplementedError(); + } + + @override + Future setCameraModelMatrix4(Matrix4 matrix) { + // TODO: implement setCameraModelMatrix4 + throw UnimplementedError(); + } + + @override + Future setLightDirection(ThermionEntity lightEntity, Vector3 direction) { + // TODO: implement setLightDirection + throw UnimplementedError(); + } + + @override + Future setLightPosition(ThermionEntity lightEntity, double x, double y, double z) { + // TODO: implement setLightPosition + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat(ThermionEntity entity, String propertyName, int materialIndex, double value) { + // TODO: implement setMaterialPropertyFloat + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat4(ThermionEntity entity, String propertyName, int materialIndex, double f1, double f2, double f3, double f4) { + // TODO: implement setMaterialPropertyFloat4 + throw UnimplementedError(); + } + + @override + Future setStencilHighlight(ThermionEntity entity, {double r = 1.0, double g = 0.0, double b = 0.0}) { + // TODO: implement setStencilHighlight + throw UnimplementedError(); + } } diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js_shim.dart b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js_shim.dart similarity index 99% rename from thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js_shim.dart rename to thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js_shim.dart index d4cf5dd2..5ade4d60 100644 --- a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_js_shim.dart +++ b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_js_shim.dart @@ -220,7 +220,7 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject { external JSPromise getMainCamera(); @JS('setCameraFov') - external JSPromise setCameraFov(double degrees, double width, double height); + external JSPromise setCameraFov(double degrees, bool horizontal); @JS('setToneMapping') external JSPromise setToneMapping(int mapper); @@ -378,7 +378,7 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject { JSArray indices, String? materialPath, int primitiveType); @JS('setParent') - external JSPromise setParent(ThermionEntity child, ThermionEntity parent); + external JSPromise setParent(ThermionEntity child, ThermionEntity parent, bool preserveScaling); @JS('getParent') external JSPromise getParent(ThermionEntity child); diff --git a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_wasm.dart b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_wasm.dart similarity index 82% rename from thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_wasm.dart rename to thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_wasm.dart index 429536ff..8b42765d 100644 --- a/thermion_dart/lib/thermion_dart/compatibility/web/interop/thermion_viewer_wasm.dart +++ b/thermion_dart/lib/thermion_dart/viewer/web/thermion_viewer_wasm.dart @@ -5,6 +5,8 @@ import 'dart:math'; import 'dart:typed_data' as td; import 'dart:typed_data'; import 'package:logging/logging.dart'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; +import 'package:thermion_dart/thermion_dart/entities/gizmo.dart'; import 'package:thermion_dart/thermion_dart/scene.dart'; import 'package:web/web.dart'; import 'package:animation_tools_dart/animation_tools_dart.dart'; @@ -57,6 +59,8 @@ class ThermionViewerWasm implements ThermionViewer { late (double, double) viewportDimensions; + late double pixelRatio; + /// /// Construct an instance of this class by explicitly passing the /// module instance via the [module] property, or by specifying [moduleName], @@ -89,7 +93,8 @@ class ThermionViewerWasm implements ThermionViewer { int _width = 0; int _height = 0; - Future initialize(int width, int height, {String? uberArchivePath}) async { + Future initialize(double width, double height, double pixelRatio, + {String? uberArchivePath}) async { if (!_initialized) { await _initializeModule(); _initialized = true; @@ -97,6 +102,7 @@ class ThermionViewerWasm implements ThermionViewer { _setAssetPathPrefix(assetPathPrefix!); } } + this.pixelRatio = pixelRatio; final context = _module!.ccall("thermion_dart_web_create_gl_context", "int", [].toJS, [].toJS, null); @@ -112,10 +118,30 @@ class ThermionViewerWasm implements ThermionViewer { ["void*".toJS, "void*".toJS, "void*".toJS, "string".toJS].toJS, [context!, loader, null, uberArchivePath?.toJS].toJS, null) as JSNumber; - await createSwapChain(width, height); - updateViewportAndCameraProjection(width, height, 1.0); + await createSwapChain(width.ceil(), height.ceil()); + updateViewportAndCameraProjection(width.ceil(), height.ceil(), 1.0); _sceneManager = _module!.ccall("get_scene_manager", "void*", ["void*".toJS].toJS, [_viewer!].toJS, null) as JSNumber; + + _pickCallbackPtr = _module!.addFunction(_onPickCallback.toJS, "viii"); + _pickGizmoCallbackPtr = + _module!.addFunction(_onPickGizmoCallback.toJS, "viii"); + // _module!.removeFunction(_pickCallbackPtr); + // _module!.removeFunction(_pickGizmoCallbackPtr); + + var gizmoOut = _module!._malloc(4 * 4); + + _module!.ccall("get_gizmo", "void", ["void*".toJS, "void*".toJS].toJS, + [_sceneManager!, gizmoOut].toJS, null); + + var x = _module!.getValue(gizmoOut, "i32") as JSNumber; + var y = _module!.getValue((gizmoOut.toDartInt + 4).toJS, "i32") as JSNumber; + var z = _module!.getValue((gizmoOut.toDartInt + 8).toJS, "i32") as JSNumber; + var center = + _module!.getValue((gizmoOut.toDartInt + 12).toJS, "i32") as JSNumber; + _gizmo = + Gizmo(x.toDartInt, y.toDartInt, z.toDartInt, center.toDartInt, this); + _module!._free(gizmoOut); _initialized = true; } @@ -144,20 +170,26 @@ class ThermionViewerWasm implements ThermionViewer { } Future destroySwapChain() async { + if (_viewer == null) { + return; + } _module!.ccall("destroy_swap_chain", "void", ["void*".toJS].toJS, [_viewer!].toJS, null); } void updateViewportAndCameraProjection( int width, int height, double scaleFactor) { - _width = width; - _height = height; - viewportDimensions = (width.toDouble(), height.toDouble()); + if (width == 0 || height == 0) { + throw Exception("Width/height must be greater than zero"); + } + _width = (width * pixelRatio).ceil(); + _height = (height * pixelRatio).ceil(); + viewportDimensions = (_width.toDouble(), _height.toDouble()); _module!.ccall( "update_viewport_and_camera_projection", "void", ["void*".toJS, "uint32_t".toJS, "uint32_t".toJS, "float".toJS].toJS, - [_viewer!, width.toJS, height.toJS, scaleFactor.toJS].toJS, + [_viewer!, _width.toJS, _height.toJS, scaleFactor.toJS].toJS, null); } @@ -166,11 +198,23 @@ class ThermionViewerWasm implements ThermionViewer { return _initialized; } + /// + /// + /// + final _pickResultController = + StreamController.broadcast(); + @override Stream get pickResult { - throw UnimplementedError(); + return _pickResultController.stream; } + @override + Stream get gizmoPickResult => + _gizmoPickResultController.stream; + final _gizmoPickResultController = + StreamController.broadcast(); + @override bool get rendering => _rendering; @@ -240,7 +284,7 @@ class ThermionViewerWasm implements ThermionViewer { [_sceneManager!, entity.toJS, skinIndex.toJS].toJS, null) as JSNumber; var boneCount = boneCountJS.toDartInt; - var buf = _module!._malloc(boneCount * 16 * 4) as JSNumber; + var buf = _module!._malloc(boneCount * 16 * 4); _module!.ccall( "get_rest_local_transforms", "void", @@ -452,7 +496,7 @@ class ThermionViewerWasm implements ThermionViewer { [_sceneManager!, entity.toJS, skinIndex.toJS].toJS, null) as JSNumber; var boneCount = boneCountJS.toDartInt; - var buf = _module!._malloc(boneCount * 4) as JSNumber; + var buf = _module!._malloc(boneCount * 4); var empty = " ".toJS; var ptrs = []; @@ -488,7 +532,7 @@ class ThermionViewerWasm implements ThermionViewer { null) as JSNumber; var entityCount = entityCountJS.toDartInt; var entities = []; - var buf = _module!._malloc(entityCount * 4) as JSNumber; + var buf = _module!._malloc(entityCount * 4); _module!.ccall( "get_entities", @@ -566,7 +610,7 @@ class ThermionViewerWasm implements ThermionViewer { var morphTargetCount = morphTargetCountJS.toDartInt; var names = []; for (int i = 0; i < morphTargetCount; i++) { - var buf = _module!._malloc(256) as JSNumber; + var buf = _module!._malloc(256); _module!.ccall( "get_morph_target_name", "void", @@ -615,7 +659,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getWorldTransform(ThermionEntity entity) async { - final matrixPtr = _module!._malloc(16 * 4) as JSNumber; + final matrixPtr = _module!._malloc(16 * 4); _module!.ccall( "get_world_transform", "void", @@ -628,8 +672,8 @@ class ThermionViewerWasm implements ThermionViewer { } @override - // TODO: implement gizmo - AbstractGizmo? get gizmo => throw UnimplementedError(); + AbstractGizmo? get gizmo => _gizmo; + Gizmo? _gizmo; @override Future hide(ThermionEntity entity, String? meshName) async { @@ -673,7 +717,7 @@ class ThermionViewerWasm implements ThermionViewer { } @override - Future loadGlb(String path, {int numInstances = 1}) async { + Future loadGlb(String path, {int numInstances = 1, bool keepData = false}) async { final promise = _module!.ccall( "load_glb", "int", @@ -688,8 +732,7 @@ class ThermionViewerWasm implements ThermionViewer { } @override - Future loadGltf(String path, String relativeResourcePath, - {bool force = false}) async { + Future loadGltf(String path, String relativeResourcePath, { bool keepData = false}) async { final promise = _module!.ccall( "load_gltf", "int", @@ -785,22 +828,20 @@ class ThermionViewerWasm implements ThermionViewer { Future capture() async { bool wasRendering = rendering; await setRendering(false); - final pixelBuffer = _module!._malloc(_width * _height * 4) as JSNumber; + final pixelBuffer = _module!._malloc(_width * _height * 4); final completer = Completer(); final callback = () { - print("Callback invoked!"); completer.complete(); }; final callbackPtr = _module!.addFunction(callback.toJS, "v"); - print("Aded functrion ${callbackPtr}, calling capture..."); _module!.ccall( "capture", "void", ["void*".toJS, "uint8_t*".toJS, "void*".toJS].toJS, [_viewer!, pixelBuffer, callbackPtr].toJS, null); - print("Waiting for completer..."); + int iter = 0; while (true) { await Future.delayed(Duration(milliseconds: 5)); @@ -948,7 +989,7 @@ class ThermionViewerWasm implements ThermionViewer { assert(frameData.length == animation.numFrames * intersection.length); // Allocate memory in WASM for the morph data - var dataPtr = _module!._malloc(frameData.length * 4) as JSNumber; + var dataPtr = _module!._malloc(frameData.length * 4); // Create a Float32List to copy the morph data to var dataList = td.Float32List.fromList(frameData); @@ -958,7 +999,7 @@ class ThermionViewerWasm implements ThermionViewer { dataList.buffer.asUint8List(dataList.offsetInBytes).toJS, dataPtr); // Allocate memory in WASM for the morph indices - var idxPtr = _module!._malloc(indices.length * 4) as JSNumber; + var idxPtr = _module!._malloc(indices.length * 4); // Create an Int32List to copy the morph indices to var idxList = td.Int32List.fromList(indices); @@ -1191,7 +1232,7 @@ class ThermionViewerWasm implements ThermionViewer { final animationCount = await getAnimationCount(entity); final names = []; for (int i = 0; i < animationCount; i++) { - final namePtr = _module!._malloc(256) as JSNumber; + final namePtr = _module!._malloc(256); _module!.ccall( "get_animation_name", "void", @@ -1220,7 +1261,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getCameraCullingProjectionMatrix() async { - final ptr = _module!._malloc(16 * 8) as JSNumber; + final ptr = _module!._malloc(16 * 8); _module!.ccall("get_camera_culling_projection_matrix", "void", ["void*".toJS, "double*".toJS].toJS, [_viewer!, ptr].toJS, null); final matrix = Matrix4.zero(); @@ -1235,7 +1276,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getCameraFrustum() async { - final ptr = _module!._malloc(24 * 8) as JSNumber; + final ptr = _module!._malloc(24 * 8); _module!.ccall("get_camera_frustum", "void", ["void*".toJS, "double*".toJS].toJS, [_viewer!, ptr].toJS, null); final planes = List.generate(6, (i) { @@ -1265,17 +1306,18 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getCameraModelMatrix() async { - final ptr = _module!._malloc(16 * 8) as JSNumber; - _module!.ccall("get_camera_model_matrix", "void", - ["void*".toJS, "double*".toJS].toJS, [_viewer!, ptr].toJS, null); + final ptr = _module!.ccall("get_camera_model_matrix", "void*", + ["void*".toJS].toJS, [_viewer!].toJS, null) as JSNumber; final matrix = _matrixFromPtr(ptr); - _module!._free(ptr); + _module!.ccall( + "thermion_flutter_free", "void", ["void*".toJS].toJS, [ptr].toJS, null); + return matrix; } @override Future getCameraPosition() async { - final ptr = _module!._malloc(3 * 8) as JSNumber; + final ptr = _module!._malloc(3 * 8); _module!.ccall("get_camera_position", "void", ["void*".toJS, "void*".toJS].toJS, [_viewer!, ptr].toJS, null); final pos = Vector3( @@ -1291,7 +1333,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getCameraProjectionMatrix() async { - final ptr = _module!._malloc(16 * 8) as JSNumber; + final ptr = _module!._malloc(16 * 8); _module!.ccall("get_camera_projection_matrix", "void", ["void*".toJS, "double*".toJS].toJS, [_viewer!, ptr].toJS, null); final matrix = _matrixFromPtr(ptr); @@ -1308,7 +1350,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getCameraViewMatrix() async { - final ptr = _module!._malloc(16 * 8) as JSNumber; + final ptr = _module!._malloc(16 * 8); _module!.ccall("get_camera_view_matrix", "void", ["void*".toJS, "double*".toJS].toJS, [_viewer!, ptr].toJS, null); final matrix = Matrix4.zero(); @@ -1335,7 +1377,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future> getInstances(ThermionEntity entity) async { final instanceCount = await getInstanceCount(entity); - final buf = _module!._malloc(instanceCount * 4) as JSNumber; + final buf = _module!._malloc(instanceCount * 4); _module!.ccall( "get_instances", "void", @@ -1355,7 +1397,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getInverseBindMatrix(ThermionEntity parent, int boneIndex, {int skinIndex = 0}) async { - final ptr = _module!._malloc(16 * 4) as JSNumber; + final ptr = _module!._malloc(16 * 4); _module!.ccall( "get_inverse_bind_matrix", "void", @@ -1369,7 +1411,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future getLocalTransform(ThermionEntity entity) async { - final ptr = _module!._malloc(16 * 4) as JSNumber; + final ptr = _module!._malloc(16 * 4); _module!.ccall( "get_local_transform", "void", @@ -1389,32 +1431,47 @@ class ThermionViewerWasm implements ThermionViewer { @override Future panEnd() async { - _module!.ccall("grab_end", "void", - ["void*".toJS].toJS, [_viewer!].toJS, null); + _module! + .ccall("grab_end", "void", ["void*".toJS].toJS, [_viewer!].toJS, null); } @override Future panStart(double x, double y) async { - _module!.ccall("grab_begin", "void", - ["void*".toJS, "float".toJS, "float".toJS, "bool".toJS].toJS, [_viewer!, x.toJS, y.toJS, true.toJS].toJS, null); + _module!.ccall( + "grab_begin", + "void", + ["void*".toJS, "float".toJS, "float".toJS, "bool".toJS].toJS, + [_viewer!, x.toJS, y.toJS, true.toJS].toJS, + null); } @override Future panUpdate(double x, double y) async { - _module!.ccall("grab_update", "void", - ["void*".toJS, "float".toJS, "float".toJS].toJS, [_viewer!, x.toJS, y.toJS].toJS, null); + _module!.ccall( + "grab_update", + "void", + ["void*".toJS, "float".toJS, "float".toJS].toJS, + [_viewer!, x.toJS, y.toJS].toJS, + null); + } + + late JSNumber _pickCallbackPtr; + + void _onPickCallback(ThermionEntity entity, int x, int y) { + _pickResultController + .add((entity: entity, x: x.toDouble(), y: y.toDouble())); } @override - void pick(int x, int y) { - throw UnimplementedError(); - // _module!.ccall("filament_pick", "void", - // ["void*".toJS, "int".toJS, "int".toJS, "void*".toJS].toJS, [ - // _viewer!, - // x.toJS, - // y.toJS, - // (entityId, x, y) {}.toJS - // ]); + void pick(int x, int y) async { + x = (x * pixelRatio).ceil(); + y = (viewportDimensions.$2 - (y * pixelRatio)).ceil(); + _module!.ccall( + "filament_pick", + "void", + ["void*".toJS, "int".toJS, "int".toJS, "void*".toJS].toJS, + [_viewer!, x.toJS, y.toJS, _pickCallbackPtr].toJS, + null); } @override @@ -1566,26 +1623,21 @@ class ThermionViewerWasm implements ThermionViewer { @override Future reveal(ThermionEntity entity, String? meshName) async { - if (meshName != null) { - final result = _module!.ccall( - "reveal_mesh", - "int", - ["void*".toJS, "int".toJS, "string".toJS].toJS, - [_sceneManager!, entity.toJS, meshName.toJS].toJS, - null) as JSNumber; - if (result.toDartInt == -1) { - throw Exception( - "Failed to reveal mesh ${meshName} on entity ${entity.toJS}"); - } - } else { + final result = _module!.ccall( + "reveal_mesh", + "int", + ["void*".toJS, "int".toJS, "string".toJS].toJS, + [_sceneManager!, entity.toJS, meshName?.toJS].toJS, + null) as JSNumber; + if (result.toDartInt == -1) { throw Exception( - "Cannot reveal mesh, meshName must be specified when invoking this method"); + "Failed to reveal mesh ${meshName} on entity ${entity.toJS}"); } } @override Future rotateIbl(Matrix3 rotation) async { - final ptr = _module!._malloc(9 * 4) as JSNumber; + final ptr = _module!._malloc(9 * 4); for (int i = 0; i < 9; i++) { _module!.setValue( (ptr.toDartInt + (i * 4)).toJS, rotation.storage[i].toJS, "float"); @@ -1597,20 +1649,28 @@ class ThermionViewerWasm implements ThermionViewer { @override Future rotateStart(double x, double y) async { - _module!.ccall("grab_begin", "void", - ["void*".toJS, "float".toJS, "float".toJS, "bool".toJS].toJS, [_viewer!, x.toJS, y.toJS, false.toJS].toJS, null); + _module!.ccall( + "grab_begin", + "void", + ["void*".toJS, "float".toJS, "float".toJS, "bool".toJS].toJS, + [_viewer!, x.toJS, y.toJS, false.toJS].toJS, + null); } @override Future rotateUpdate(double x, double y) async { - _module!.ccall("grab_update", "void", - ["void*".toJS, "float".toJS, "float".toJS].toJS, [_viewer!, x.toJS, y.toJS].toJS, null); + _module!.ccall( + "grab_update", + "void", + ["void*".toJS, "float".toJS, "float".toJS].toJS, + [_viewer!, x.toJS, y.toJS].toJS, + null); } @override Future rotateEnd() async { - _module!.ccall("grab_end", "void", - ["void*".toJS].toJS, [_viewer!].toJS, null); + _module! + .ccall("grab_end", "void", ["void*".toJS].toJS, [_viewer!].toJS, null); } @override @@ -1660,7 +1720,7 @@ class ThermionViewerWasm implements ThermionViewer { Future setBoneTransform( ThermionEntity entity, int boneIndex, Matrix4 transform, {int skinIndex = 0}) async { - final ptr = _module!._malloc(16 * 4) as JSNumber; + final ptr = _module!._malloc(16 * 4); for (int i = 0; i < 16; i++) { _module!.setValue( (ptr.toDartInt + (i * 4)).toJS, transform.storage[i].toJS, "float"); @@ -1737,12 +1797,12 @@ class ThermionViewerWasm implements ThermionViewer { } @override - Future setCameraFov(double degrees, double width, double height) async { + Future setCameraFov(double degrees, {bool horizontal = true}) async { _module!.ccall( "set_camera_fov", "void", - ["void*".toJS, "float".toJS, "float".toJS].toJS, - [_viewer!, degrees.toJS, (width / height).toJS].toJS, + ["void*".toJS, "float".toJS, "bool".toJS].toJS, + [_viewer!, degrees.toJS, horizontal.toJS].toJS, null); } @@ -1770,7 +1830,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future setCameraModelMatrix(List matrix) async { assert(matrix.length == 16, "Matrix must have 16 elements"); - final ptr = _module!._malloc(16 * 8) as JSNumber; + final ptr = _module!._malloc(16 * 8); for (int i = 0; i < 16; i++) { _module! .setValue((ptr.toDartInt + (i * 8)).toJS, matrix[i].toJS, "double"); @@ -1850,12 +1910,13 @@ class ThermionViewerWasm implements ThermionViewer { } @override - Future setParent(ThermionEntity child, ThermionEntity parent) async { + Future setParent(ThermionEntity child, ThermionEntity parent, + {bool preserveScaling = false}) async { _module!.ccall( "set_parent", "void", - ["void*".toJS, "int".toJS, "int".toJS].toJS, - [_sceneManager!, child.toJS, parent.toJS].toJS, + ["void*".toJS, "int".toJS, "int".toJS, "bool".toJS].toJS, + [_sceneManager!, child.toJS, parent.toJS, preserveScaling.toJS].toJS, null); } @@ -1915,7 +1976,7 @@ class ThermionViewerWasm implements ThermionViewer { @override Future setTransform(ThermionEntity entity, Matrix4 transform) async { - final ptr = _module!._malloc(16 * 4) as JSNumber; + final ptr = _module!._malloc(16 * 4); for (int i = 0; i < 16; i++) { _module!.setValue( (ptr.toDartInt + (i * 4)).toJS, transform.storage[i].toJS, "float"); @@ -1999,8 +2060,8 @@ class ThermionViewerWasm implements ThermionViewer { @override Future zoomEnd() async { - _module! - .ccall("scroll_end", "void", ["void*".toJS].toJS, [_viewer!].toJS, null); + _module!.ccall( + "scroll_end", "void", ["void*".toJS].toJS, [_viewer!].toJS, null); } @override @@ -2016,7 +2077,7 @@ class ThermionViewerWasm implements ThermionViewer { // Helper method to allocate a string in the WASM memory JSNumber _allocateString(String str) { final bytes = utf8.encode(str); - final ptr = _module!._malloc(bytes.length + 1) as JSNumber; + final ptr = _module!._malloc(bytes.length + 1); for (var i = 0; i < bytes.length; i++) { _module!.setValue((ptr.toDartInt + i).toJS, bytes[i].toJS, "i8"); } @@ -2047,4 +2108,250 @@ class ThermionViewerWasm implements ThermionViewer { [_viewer!, penumbraScale.toJS, penumbraRatioScale.toJS].toJS, null); } + + @override + Future getBoundingBox(ThermionEntity entity) { + var minX = _module!._malloc(4); + var minY = _module!._malloc(4); + var maxX = _module!._malloc(4); + var maxY = _module!._malloc(4); + _module!.ccall( + "get_bounding_box_to_out", + "void", + [ + "void*".toJS, + "int".toJS, + "float*".toJS, + "float*".toJS, + "float*".toJS, + "float*".toJS + ].toJS, + [_sceneManager!, entity.toJS, minX, minY, maxX, maxY].toJS, + null); + + final min = Vector2( + (_module!.getValue(minX, "float") as JSNumber).toDartDouble, + (_module!.getValue(minY, "float") as JSNumber).toDartDouble); + final max = Vector2( + (_module!.getValue(maxX, "float") as JSNumber).toDartDouble, + (_module!.getValue(maxY, "float") as JSNumber).toDartDouble); + + final box = Aabb2.minMax(min, max); + _module!._free(minX); + _module!._free(minY); + _module!._free(maxX); + _module!._free(maxY); + + return Future.value(box); + } + + @override + Future getCameraFov(bool horizontal) async { + var fov = _module!.ccall( + "get_camera_fov", + "float", + ["void*".toJS, "bool".toJS].toJS, + [_viewer!, horizontal.toJS].toJS, + null); + return (fov as JSNumber).toDartDouble; + } + + @override + Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity, + double viewportX, double viewportY, double x, double y, double z) async { + _module!.ccall( + "queue_relative_position_update_world_axis", + "void", + [ + "void*".toJS, + "int".toJS, + "float".toJS, + "float".toJS, + "float".toJS, + "float".toJS, + "float".toJS + ].toJS, + [ + _sceneManager!, + entity.toJS, + viewportX.toJS, + viewportY.toJS, + x.toJS, + y.toJS, + z.toJS + ].toJS, + null); + } + + @override + Future setLayerEnabled(int layer, bool enabled) async { + _module!.ccall( + "set_layer_visibility", + "void", + [ + "void*".toJS, + "int".toJS, + "bool".toJS, + ].toJS, + [ + _sceneManager!, + layer.toJS, + enabled.toJS, + ].toJS, + null); + } + + @override + Future createIbl(double r, double g, double b, double intensity) async { + _module!.ccall( + "create_ibl", + "void", + [ + "void*".toJS, + "double".toJS, + "double".toJS, + "double".toJS, + "double".toJS, + ].toJS, + [_sceneManager!, r.toJS, g.toJS, b.toJS, intensity.toJS].toJS, + null); + } + + late JSNumber _pickGizmoCallbackPtr; + + void _onPickGizmoCallback(ThermionEntity entity, int x, int y) { + _gizmoPickResultController + .add((entity: entity, x: x.toDouble(), y: y.toDouble())); + } + + @override + void pickGizmo(int x, int y) { + x = (x * pixelRatio).ceil(); + y = (viewportDimensions.$2 - (y * pixelRatio)).ceil(); + + _module!.ccall( + "pick_gizmo", + "void", + [ + "void*".toJS, + "int".toJS, + "int".toJS, + "void*".toJS, + ].toJS, + [_sceneManager!, x.toJS, y.toJS, _pickGizmoCallbackPtr].toJS, + null); + } + + @override + Future setGizmoVisibility(bool visible) async { + _module!.ccall( + "set_gizmo_visibility", + "void", + [ + "void*".toJS, + "bool".toJS, + ].toJS, + [_sceneManager!, visible.toJS].toJS, + null); + } + + @override + Future setLightDirection(ThermionEntity lightEntity, Vector3 direction) async { + direction.normalize(); + _module!.ccall( + "set_light_direction", + "void", + ["void*".toJS, "double".toJS, "double".toJS, "double".toJS].toJS, + [_viewer!, direction.x.toJS, direction.y.toJS, direction.z.toJS] + .toJS, + null); + } + + @override + Future setLightPosition( + ThermionEntity lightEntity, double x, double y, double z) async { + _module!.ccall( + "set_light_position", + "void", + ["void*".toJS, "double".toJS, "double".toJS, "double".toJS].toJS, + [_viewer!, x.toJS,y.toJS,z.toJS] + .toJS, + null); + } + + @override + Future getAncestor(ThermionEntity entity) { + // TODO: implement getAncestor + throw UnimplementedError(); + } + + @override + Future queuePositionUpdateFromViewportCoords(ThermionEntity entity, double x, double y) { + // TODO: implement queuePositionUpdateFromViewportCoords + throw UnimplementedError(); + } + + @override + Future removeStencilHighlight(ThermionEntity entity) { + // TODO: implement removeStencilHighlight + throw UnimplementedError(); + } + + @override + Future setStencilHighlight(ThermionEntity entity, {double r = 1.0, double g = 0.0, double b = 0.0}) { + // TODO: implement setStencilHighlight + throw UnimplementedError(); + } + + @override + // TODO: implement entitiesAdded + Stream get entitiesAdded => throw UnimplementedError(); + + @override + // TODO: implement entitiesRemoved + Stream get entitiesRemoved => throw UnimplementedError(); + + @override + Future getCameraNear() { + // TODO: implement getCameraNear + throw UnimplementedError(); + } + + @override + Future getViewportBoundingBox(ThermionEntity entity) { + // TODO: implement getViewportBoundingBox + throw UnimplementedError(); + } + + @override + // TODO: implement lightsAdded + Stream get lightsAdded => throw UnimplementedError(); + + @override + // TODO: implement lightsRemoved + Stream get lightsRemoved => throw UnimplementedError(); + + @override + Future setCameraLensProjection(double near, double far, double aspect, double focalLength) { + // TODO: implement setCameraLensProjection + throw UnimplementedError(); + } + + @override + Future setCameraModelMatrix4(Matrix4 matrix) { + // TODO: implement setCameraModelMatrix4 + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat(ThermionEntity entity, String propertyName, int materialIndex, double value) { + // TODO: implement setMaterialPropertyFloat + throw UnimplementedError(); + } + + @override + Future setMaterialPropertyFloat4(ThermionEntity entity, String propertyName, int materialIndex, double f1, double f2, double f3, double f4) { + // TODO: implement setMaterialPropertyFloat4 + throw UnimplementedError(); + } } diff --git a/thermion_dart/native/include/APIBoundaryTypes.h b/thermion_dart/native/include/APIBoundaryTypes.h new file mode 100644 index 00000000..61a83cb7 --- /dev/null +++ b/thermion_dart/native/include/APIBoundaryTypes.h @@ -0,0 +1,104 @@ +#pragma once + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include + + typedef int32_t EntityId; + typedef int32_t _ManipulatorMode; + typedef struct TCamera TCamera; + typedef struct TMaterialInstance TMaterialInstance; + typedef struct TEngine TEngine; + typedef struct TViewer TViewer; + + struct TMaterialKey { + bool doubleSided = 1; + bool unlit = 1; + bool hasVertexColors = 1; + bool hasBaseColorTexture = 1; + bool hasNormalTexture = 1; + bool hasOcclusionTexture = 1; + bool hasEmissiveTexture = 1; + bool useSpecularGlossiness = 1; + int alphaMode = 4; + bool enableDiagnostics = 4; + union { + #ifdef __cplusplus + struct { + bool hasMetallicRoughnessTexture; + uint8_t metallicRoughnessUV; + }; + struct { + bool hasSpecularGlossinessTexture; + uint8_t specularGlossinessUV; + }; + #else + struct { + bool hasMetallicRoughnessTexture = 1; + uint8_t metallicRoughnessUV = 7; + }; + struct { + bool hasSpecularGlossinessTexture = 1; + uint8_t specularGlossinessUV = 7; + }; + #endif + }; + uint8_t baseColorUV; + // -- 32 bit boundary -- + bool hasClearCoatTexture = 1; + uint8_t clearCoatUV = 7; + bool hasClearCoatRoughnessTexture = 1; + uint8_t clearCoatRoughnessUV = 7; + bool hasClearCoatNormalTexture = 1; + uint8_t clearCoatNormalUV = 7; + bool hasClearCoat = 1; + bool hasTransmission = 1; + bool hasTextureTransforms = 6; + // -- 32 bit boundary -- + uint8_t emissiveUV; + uint8_t aoUV; + uint8_t normalUV; + bool hasTransmissionTexture = 1; + uint8_t transmissionUV = 7; + // -- 32 bit boundary -- + bool hasSheenColorTexture = 1; + uint8_t sheenColorUV = 7; + bool hasSheenRoughnessTexture = 1; + uint8_t sheenRoughnessUV = 7; + bool hasVolumeThicknessTexture = 1; + uint8_t volumeThicknessUV = 7; + bool hasSheen = 1; + bool hasIOR = 1; + bool hasVolume = 1; + } ; + typedef struct TMaterialKey TMaterialKey; + + typedef struct { + double x; + double y; + double z; + double w; + } double4; + + typedef struct { + double col1[4]; + double col2[4]; + double col3[4]; + double col4[4]; + } double4x4; + + struct Aabb2 { + float minX; + float minY; + float maxX; + float maxY; + }; + + typedef struct Aabb2 Aabb2; + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/thermion_dart/native/include/CustomGeometry.hpp b/thermion_dart/native/include/CustomGeometry.hpp new file mode 100644 index 00000000..5ecc568d --- /dev/null +++ b/thermion_dart/native/include/CustomGeometry.hpp @@ -0,0 +1,59 @@ +#pragma once + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace thermion_filament +{ + + using namespace filament; + +// CustomGeometry.h +class CustomGeometry { +public: + CustomGeometry( + float* vertices, + uint32_t numVertices, + float* normals, + uint32_t numNormals, + float *uvs, + uint32_t numUvs, + uint16_t* indices, + uint32_t numIndices, + RenderableManager::PrimitiveType primitiveType, + Engine* engine); + ~CustomGeometry(); + + VertexBuffer* vertexBuffer() const; + IndexBuffer* indexBuffer() const; + Box getBoundingBox() const; + + float* vertices = nullptr; + float* normals = nullptr; + float *uvs = nullptr; + uint32_t numVertices = 0; + uint16_t* indices = 0; + uint32_t numIndices = 0; + Box boundingBox; + RenderableManager::PrimitiveType primitiveType; + +private: + Engine* _engine; + bool _vertexBufferFreed = false; + bool _indexBufferFreed = false; + + void computeBoundingBox(); + +}; + + + +} \ No newline at end of file diff --git a/thermion_dart/native/include/FilamentViewer.hpp b/thermion_dart/native/include/FilamentViewer.hpp index 11e7a140..d8ee5058 100644 --- a/thermion_dart/native/include/FilamentViewer.hpp +++ b/thermion_dart/native/include/FilamentViewer.hpp @@ -42,8 +42,6 @@ namespace thermion_filament typedef std::chrono::time_point time_point_t; using namespace std::chrono; - using namespace filament; - using namespace filament::math; using namespace gltfio; using namespace camutils; @@ -71,12 +69,13 @@ namespace thermion_filament void loadIbl(const char *const iblUri, float intensity); void removeIbl(); void rotateIbl(const math::mat3f &matrix); + void createIbl(float r, float g, float b, float intensity); void removeEntity(EntityId asset); void clearEntities(); - void updateViewportAndCameraProjection(int height, int width, float scaleFactor); - void render( + void updateViewport(uint32_t width, uint32_t height); + bool render( uint64_t frameTimeInNanos, void *pixelBuffer, void (*callback)(void *buf, size_t size, void *data), @@ -86,7 +85,10 @@ namespace thermion_filament bool setCamera(EntityId asset, const char *nodeName); void setMainCamera(); EntityId getMainCamera(); - void setCameraFov(double fovDegrees, double aspect); + Camera* getCamera(EntityId entity); + + float getCameraFov(bool horizontal); + void setCameraFov(double fovDegrees, bool horizontal); void createSwapChain(const void *surface, uint32_t width, uint32_t height); void destroySwapChain(); @@ -100,24 +102,8 @@ namespace thermion_filament void clearBackgroundImage(); void setBackgroundImagePosition(float x, float y, bool clamp); - // Camera methods - void moveCameraToAsset(EntityId entityId); void setViewFrustumCulling(bool enabled); - void setCameraExposure(float aperture, float shutterSpeed, float sensitivity); - void setCameraPosition(float x, float y, float z); - void setCameraRotation(float w, float x, float y, float z); - const math::mat4 getCameraModelMatrix(); - const math::mat4 getCameraViewMatrix(); - const math::mat4 getCameraProjectionMatrix(); - const math::mat4 getCameraCullingProjectionMatrix(); - const filament::Frustum getCameraFrustum(); - void setCameraModelMatrix(const float *const matrix); - void setCameraProjectionMatrix(const double *const matrix, double near, double far); - void setCameraFocalLength(float focalLength); - void setCameraCulling(double near, double far); - double getCameraCullingNear(); - double getCameraCullingFar(); - void setCameraFocusDistance(float focusDistance); + void setCameraManipulatorOptions(filament::camutils::Mode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed); void grabBegin(float x, float y, bool pan); void grabUpdate(float x, float y); @@ -126,6 +112,9 @@ namespace thermion_filament void scrollUpdate(float x, float y, float delta); void scrollEnd(); void pick(uint32_t x, uint32_t y, void (*callback)(EntityId entityId, int x, int y)); + Engine* getEngine() { + return _engine; + } EntityId addLight( LightManager::Type t, @@ -144,13 +133,15 @@ namespace thermion_filament float sunHaloSize, float sunHaloFallof, bool shadows); + void setLightPosition(EntityId entityId, float x, float y, float z); + void setLightDirection(EntityId entityId, float x, float y, float z); void removeLight(EntityId entityId); void clearLights(); void setPostProcessing(bool enabled); void setRecording(bool recording); void setRecordingOutputDirectory(const char *path); - void capture(uint8_t *out, void (*onComplete)()); + void capture(uint8_t *out, bool useFence, void (*onComplete)()); void setAntiAliasing(bool msaaEnabled, bool fxaaEnabled, bool taaEnabled); void setDepthOfField(); @@ -158,18 +149,20 @@ namespace thermion_filament void setShadowType(ShadowType shadowType); void setSoftShadowOptions( float penumbraScale, float penumbraRatioScale); - EntityId createGeometry(float *vertices, uint32_t numVertices, uint16_t *indices, uint32_t numIndices, filament::RenderableManager::PrimitiveType primitiveType = RenderableManager::PrimitiveType::TRIANGLES, const char *materialPath = nullptr); - SceneManager *const getSceneManager() { return (SceneManager *const)_sceneManager; } + void unprojectTexture(EntityId entity, uint8_t* input, uint32_t inputWidth, uint32_t inputHeight, uint8_t* out, uint32_t outWidth, uint32_t outHeight); + private: const ResourceLoaderWrapperImpl *const _resourceLoaderWrapper; void* _context = nullptr; Scene *_scene = nullptr; + View *_view = nullptr; + Engine *_engine = nullptr; thermion_filament::ThreadPool *_tp = nullptr; Renderer *_renderer = nullptr; @@ -188,32 +181,26 @@ namespace thermion_filament Skybox *_skybox = nullptr; Texture *_iblTexture = nullptr; IndirectLight *_indirectLight = nullptr; - bool _recomputeAabb = false; - bool _actualSize = false; float _frameInterval = 1000.0 / 60.0; // Camera properties Camera *_mainCamera = nullptr; // the default camera added to every scene. If you want the *active* camera, access via View. - float _cameraFocalLength = 28.0f; - float _cameraFocusDistance = 0.0f; + Manipulator *_manipulator = nullptr; filament::camutils::Mode _manipulatorMode = filament::camutils::Mode::ORBIT; double _orbitSpeedX = 0.01; double _orbitSpeedY = 0.01; double _zoomSpeed = 0.01; - math::mat4f _cameraPosition; - math::mat4f _cameraRotation; + void _createManipulator(); - double _near = 0.05; - double _far = 1000.0; ColorGrading *colorGrading = nullptr; // background image properties uint32_t _imageHeight = 0; uint32_t _imageWidth = 0; - mat4f _imageScale; + filament::math::mat4f _imageScale; Texture *_imageTexture = nullptr; Texture *_dummyImageTexture = nullptr; utils::Entity _imageEntity; diff --git a/thermion_dart/native/include/Gizmo.hpp b/thermion_dart/native/include/Gizmo.hpp new file mode 100644 index 00000000..1358106b --- /dev/null +++ b/thermion_dart/native/include/Gizmo.hpp @@ -0,0 +1,113 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "material/gizmo.h" + +#include "ThermionDartApi.h" + +namespace thermion_filament { + +using namespace filament; +using namespace utils; + +class Gizmo { + + enum Axis { X, Y, Z}; + + class PickCallbackHandler { + public: + PickCallbackHandler(Gizmo* gizmo, void (*callback)(EntityId entityId, int x, int y)) : _gizmo(gizmo), _callback(callback) {}; + void handle(filament::View::PickingQueryResult const &result) { + auto x = static_cast(result.fragCoords.x); + auto y= static_cast(result.fragCoords.y); + for(int i = 0; i < 7; i++) { + if(_gizmo->_entities[i] == result.renderable) { + if(i < 4) { + return; + } + _gizmo->highlight(_gizmo->_entities[i - 4]); + _callback(Entity::smuggle(_gizmo->_entities[i - 4]), x, y); + return; + } + } + _gizmo->unhighlight(); + _callback(0, x, y); + delete(this); + } + + private: + Gizmo* _gizmo; + void (*_callback)(EntityId entityId, int x, int y); + + }; + + public: + Gizmo(Engine& engine, View *view, Scene *scene); + ~Gizmo(); + + Entity x() { + return _entities[0]; + }; + Entity y() { + return _entities[1]; + }; + Entity z() { + return _entities[2]; + }; + Entity center() { + return _entities[3]; + }; + View* view() { + return _view; + } + + bool isActive() { + return _isActive; + } + + void pick(uint32_t x, uint32_t y, void (*callback)(EntityId entityId, int x, int y)); + bool isGizmoEntity(Entity entity); + void setVisibility(bool visible); + + private: + void createTransparentRectangles(); + void highlight(Entity entity); + void unhighlight(); + Engine &_engine; + View *_view; + Scene *_scene; + filament::Camera *_camera; + utils::Entity _entities[7] = { utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity() }; + Material* _material; + MaterialInstance* _materialInstances[7]; + math::float4 inactiveColors[3] { + math::float4 { 1.0f, 0.0f, 0.0f, 0.5f }, + math::float4 { 0.0f, 1.0f, 0.0f, 0.5f }, + math::float4 { 0.0f, 0.0f, 1.0f, 0.5f }, + }; + math::float4 activeColors[3] { + math::float4 { 1.0f, 0.0f, 0.0f, 1.0f }, + math::float4 { 0.0f, 1.0f, 0.0f, 1.0f }, + math::float4 { 0.0f, 0.0f, 1.0f, 1.0f }, + }; + bool _isActive = true; + +}; + +} \ No newline at end of file diff --git a/thermion_dart/native/include/GridOverlay.hpp b/thermion_dart/native/include/GridOverlay.hpp new file mode 100644 index 00000000..f4009bcd --- /dev/null +++ b/thermion_dart/native/include/GridOverlay.hpp @@ -0,0 +1,52 @@ +#pragma once + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "material/gizmo.h" + + +namespace thermion_filament { + +using namespace filament; +using namespace utils; + +class GridOverlay { + public: + GridOverlay(Engine& engine); + void destroy(); + + utils::Entity sphere() { + return _sphereEntity; + } + + utils::Entity grid() { + return _gridEntity; + } + + private: + Engine &_engine; + utils::Entity _gridEntity; + utils::Entity _sphereEntity; + Material* _material; + MaterialInstance* _materialInstance; + MaterialInstance* _sphereMaterialInstance; +}; + +} \ No newline at end of file diff --git a/thermion_dart/native/include/SceneManager.hpp b/thermion_dart/native/include/SceneManager.hpp index 4a5bdf41..c5b58b93 100644 --- a/thermion_dart/native/include/SceneManager.hpp +++ b/thermion_dart/native/include/SceneManager.hpp @@ -4,8 +4,11 @@ #include #include #include +#include #include +#include +#include #include #include @@ -14,15 +17,21 @@ #include #include +#include #include "material/gizmo.h" -#include "utils/NameComponentManager.h" + +#include "CustomGeometry.hpp" +#include "Gizmo.hpp" +#include "APIBoundaryTypes.h" +#include "GridOverlay.hpp" #include "ResourceBuffer.hpp" #include "components/CollisionComponentManager.hpp" #include "components/AnimationComponentManager.hpp" #include "tsl/robin_map.h" + namespace thermion_filament { typedef int32_t EntityId; @@ -37,13 +46,45 @@ namespace thermion_filament class SceneManager { public: - SceneManager(const ResourceLoaderWrapperImpl *const loader, + SceneManager(View* view, + const ResourceLoaderWrapperImpl *const loader, Engine *engine, Scene *scene, const char *uberArchivePath); ~SceneManager(); - EntityId loadGltf(const char *uri, const char *relativeResourcePath); + enum LAYERS { + DEFAULT_ASSETS = 0, + BACKGROUND = 6, + OVERLAY = 7, + }; + + class HighlightOverlay { + public: + HighlightOverlay(EntityId id, SceneManager* const sceneManager, Engine* const engine, float r, float g, float b); + ~HighlightOverlay(); + + bool isValid() { + return !_entity.isNull(); + } + + private: + MaterialInstance* _highlightMaterialInstance = nullptr; + bool _isGeometryEntity = false; + bool _isGltfAsset = false; + FilamentInstance* _newInstance = nullptr; + Entity _entity; + Engine* const _engine; + SceneManager* const _sceneManager; + }; + + //// + /// @brief Load the glTF file from the specified path and adds all entities to the scene. + /// @param uri the path to the asset. Should be either asset:// (representing a Flutter asset), or file:// (representing a filesystem file). + /// @param relativeResourcePath the (relative) path to the asset's resources. + /// @return the glTF entity. + /// + EntityId loadGltf(const char *uri, const char *relativeResourcePath, bool keepData = false); //// /// @brief Load the GLB from the specified path, optionally creating multiple instances. @@ -51,8 +92,8 @@ namespace thermion_filament /// @param numInstances the number of instances to create. /// @return an Entity representing the FilamentAsset associated with the loaded FilamentAsset. /// - EntityId loadGlb(const char *uri, int numInstances); - EntityId loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances = 1); + EntityId loadGlb(const char *uri, int numInstances, bool keepData); + EntityId loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances = 1, bool keepData = false, int priority = 4, int layer = 0); EntityId createInstance(EntityId entityId); void remove(EntityId entity); @@ -69,6 +110,8 @@ namespace thermion_filament void setRotation(EntityId e, float rads, float x, float y, float z, float w); void queuePositionUpdate(EntityId e, float x, float y, float z, bool relative); void queueRotationUpdate(EntityId e, float rads, float x, float y, float z, float w, bool relative); + void queueRelativePositionUpdateWorldAxis(EntityId entity, float viewportCoordX, float viewportCoordY, float x, float y, float z); + void queueRelativePositionUpdateFromViewportVector(EntityId entityId, float viewportCoordX, float viewportCoordY); const utils::Entity *getCameraEntities(EntityId e); size_t getCameraEntityCount(EntityId e); const utils::Entity *getLightEntities(EntityId e) noexcept; @@ -132,7 +175,11 @@ namespace thermion_filament void playAnimation(EntityId e, int index, bool loop, bool reverse, bool replaceActive, float crossfade = 0.3f, float startOffset = 0.0f); void stopAnimation(EntityId e, int index); void setMorphTargetWeights(const char *const entityName, float *weights, int count); - void loadTexture(EntityId entity, const char *resourcePath, int renderableIndex); + + Texture* createTexture(const uint8_t* data, size_t length, const char* name); + bool applyTexture(EntityId entityId, Texture *texture, const char* slotName, int materialIndex); + void destroyTexture(Texture* texture); + void setAnimationFrame(EntityId entity, int animationIndex, int animationFrame); bool hide(EntityId entity, const char *meshName); bool reveal(EntityId entity, const char *meshName); @@ -146,10 +193,21 @@ namespace thermion_filament void addCollisionComponent(EntityId entity, void (*onCollisionCallback)(const EntityId entityId1, const EntityId entityId2), bool affectsCollidingTransform); void removeCollisionComponent(EntityId entityId); EntityId getParent(EntityId child); - void setParent(EntityId child, EntityId parent); + EntityId getAncestor(EntityId child); + void setParent(EntityId child, EntityId parent, bool preserveScaling); bool addAnimationComponent(EntityId entity); void removeAnimationComponent(EntityId entity); + /// @brief renders an outline around the specified entity. + /// + /// + void setStencilHighlight(EntityId entity, float r, float g, float b); + + /// @brief removes the outline around the specified entity. + /// + /// + void removeStencilHighlight(EntityId entity); + /// @brief returns the number of instances of the FilamentAsset represented by the given entity. /// @param entityId /// @return the number of instances @@ -164,24 +222,97 @@ namespace thermion_filament /// void setPriority(EntityId entity, int priority); - /// @brief returns the gizmo entity, used to manipulate the global transform for entities - /// @param out a pointer to an array of three EntityId {x, y, z} + /// @brief returns the 2D min/max viewport coordinates of the bounding box for the specified enitty; + /// @param out a pointer large enough to store four floats (the min/max coordinates of the bounding box) /// @return /// - void getGizmo(EntityId *out); + Aabb2 getBoundingBox(EntityId entity); + + /// + /// Toggles the visibility of the given layer. + /// + void setLayerVisibility(SceneManager::LAYERS layer, bool enabled); + + /// + /// Creates an entity with the specified geometry/material/normals and adds to the scene. + /// If [keepData] is true, stores + /// + EntityId createGeometry( + float *vertices, + uint32_t numVertices, + float *normals, + uint32_t numNormals, + float *uvs, + uint32_t numUvs, + uint16_t *indices, + uint32_t numIndices, + filament::RenderableManager::PrimitiveType primitiveType = RenderableManager::PrimitiveType::TRIANGLES, + MaterialInstance* materialInstance = nullptr, + bool keepData = false + ); friend class FilamentViewer; + Gizmo* gizmo = nullptr; + + gltfio::MaterialProvider * const unlitMaterialProvider() { + return _unlitMaterialProvider; + } + + bool isGeometryEntity(EntityId entity) { + return _geometry.find(entity) != _geometry.end(); + } + + const CustomGeometry* const getGeometry(EntityId entityId) { + return _geometry[entityId].get(); + } + + Scene* const getScene() { + return _scene; + } + + bool isGltfAsset(EntityId entity) { + return getAssetByEntityId(entity) != nullptr; + } + + gltfio::FilamentInstance *getInstanceByEntityId(EntityId entityId); + gltfio::FilamentAsset *getAssetByEntityId(EntityId entityId); + + gltfio::FilamentInstance *createGltfAssetInstance(FilamentAsset* asset) { + return _assetLoader->createInstance(asset); + } + + MaterialInstance* getMaterialInstanceAt(EntityId entityId, int materialIndex); + + void setMaterialProperty(EntityId entity, int materialIndex, const char* property, float value); + void setMaterialProperty(EntityId entity, int materialIndex, const char* property, int32_t value); + void setMaterialProperty(EntityId entityId, int materialIndex, const char* property, filament::math::float4& value); + + MaterialInstance* createUbershaderMaterialInstance(MaterialKey key); + void destroy(MaterialInstance* materialInstance); + + gltfio::MaterialProvider* getUbershaderProvider() { + return _ubershaderProvider; + } + + MaterialInstance* createUnlitMaterialInstance(); + + void setVisibilityLayer(EntityId entityId, int layer); + private: gltfio::AssetLoader *_assetLoader = nullptr; const ResourceLoaderWrapperImpl *const _resourceLoaderWrapper; - Engine *_engine; - Scene *_scene; + Engine *_engine = nullptr; + Scene *_scene = nullptr; + View* _view = nullptr; + gltfio::MaterialProvider *_ubershaderProvider = nullptr; + gltfio::MaterialProvider *_unlitMaterialProvider = nullptr; gltfio::ResourceLoader *_gltfResourceLoader = nullptr; gltfio::TextureProvider *_stbDecoder = nullptr; gltfio::TextureProvider *_ktxDecoder = nullptr; std::mutex _mutex; + std::mutex _stencilMutex; utils::NameComponentManager *_ncm; @@ -190,22 +321,20 @@ namespace thermion_filament gltfio::FilamentInstance *> _instances; tsl::robin_map _assets; + tsl::robin_map> _geometry; + tsl::robin_map> _highlighted; tsl::robin_map> _transformUpdates; + std::set _textures; AnimationComponentManager *_animationComponentManager = nullptr; CollisionComponentManager *_collisionComponentManager = nullptr; - gltfio::FilamentInstance *getInstanceByEntityId(EntityId entityId); - gltfio::FilamentAsset *getAssetByEntityId(EntityId entityId); - utils::Entity findEntityByName( const gltfio::FilamentInstance *instance, const char *entityName); - EntityId addGizmo(); - utils::Entity _gizmo[3]; - Material* _gizmoMaterial; - MaterialInstance* _gizmoMaterialInstances[3]; + GridOverlay* _gridOverlay = nullptr; + }; } diff --git a/thermion_dart/native/include/ThermionDartApi.h b/thermion_dart/native/include/ThermionDartApi.h index 4a7c4c76..aa619773 100644 --- a/thermion_dart/native/include/ThermionDartApi.h +++ b/thermion_dart/native/include/ThermionDartApi.h @@ -46,81 +46,87 @@ #include #endif +#include "APIBoundaryTypes.h" #include "ResourceBuffer.hpp" -typedef int32_t EntityId; -typedef int32_t _ManipulatorMode; - #ifdef __cplusplus extern "C" { #endif - EMSCRIPTEN_KEEPALIVE const void *create_filament_viewer(const void *const context, const void *const loader, void *const platform, const char *uberArchivePath); - EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void *get_scene_manager(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void create_render_target(const void *const viewer, intptr_t texture, uint32_t width, uint32_t height); - EMSCRIPTEN_KEEPALIVE void clear_background_image(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_background_image(const void *const viewer, const char *path, bool fillHeight); - EMSCRIPTEN_KEEPALIVE void set_background_image_position(const void *const viewer, float x, float y, bool clamp); - EMSCRIPTEN_KEEPALIVE void set_background_color(const void *const viewer, const float r, const float g, const float b, const float a); - EMSCRIPTEN_KEEPALIVE void set_tone_mapping(const void *const viewer, int toneMapping); - EMSCRIPTEN_KEEPALIVE void set_bloom(const void *const viewer, float strength); - EMSCRIPTEN_KEEPALIVE void load_skybox(const void *const viewer, const char *skyboxPath); - EMSCRIPTEN_KEEPALIVE void load_ibl(const void *const viewer, const char *iblPath, float intensity); - EMSCRIPTEN_KEEPALIVE void rotate_ibl(const void *const viewer, float *rotationMatrix); - EMSCRIPTEN_KEEPALIVE void remove_skybox(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void remove_ibl(const void *const viewer); + EMSCRIPTEN_KEEPALIVE TViewer *create_filament_viewer(const void *const context, const void *const loader, void *const platform, const char *uberArchivePath); + EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void *get_scene_manager(TViewer *viewer); + + // Engine + EMSCRIPTEN_KEEPALIVE TEngine *Viewer_getEngine(TViewer* viewer); + EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine* tEngine, EntityId entityId); + + EMSCRIPTEN_KEEPALIVE void create_render_target(TViewer *viewer, intptr_t texture, uint32_t width, uint32_t height); + EMSCRIPTEN_KEEPALIVE void clear_background_image(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void set_background_image(TViewer *viewer, const char *path, bool fillHeight); + EMSCRIPTEN_KEEPALIVE void set_background_image_position(TViewer *viewer, float x, float y, bool clamp); + EMSCRIPTEN_KEEPALIVE void set_background_color(TViewer *viewer, const float r, const float g, const float b, const float a); + EMSCRIPTEN_KEEPALIVE void set_tone_mapping(TViewer *viewer, int toneMapping); + EMSCRIPTEN_KEEPALIVE void set_bloom(TViewer *viewer, float strength); + EMSCRIPTEN_KEEPALIVE void load_skybox(TViewer *viewer, const char *skyboxPath); + EMSCRIPTEN_KEEPALIVE void load_ibl(TViewer *viewer, const char *iblPath, float intensity); + EMSCRIPTEN_KEEPALIVE void create_ibl(TViewer *viewer, float r, float g, float b, float intensity); + EMSCRIPTEN_KEEPALIVE void rotate_ibl(TViewer *viewer, float *rotationMatrix); + EMSCRIPTEN_KEEPALIVE void remove_skybox(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void remove_ibl(TViewer *viewer); EMSCRIPTEN_KEEPALIVE EntityId add_light( - const void *const viewer, - uint8_t type, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, + TViewer *viewer, + uint8_t type, + float colour, + float intensity, + float posX, + float posY, + float posZ, + float dirX, + float dirY, + float dirZ, float falloffRadius, - float spotLightConeInner, - float spotLightConeOuter, + float spotLightConeInner, + float spotLightConeOuter, float sunAngularRadius, float sunHaloSize, float sunHaloFallof, bool shadows); - EMSCRIPTEN_KEEPALIVE void remove_light(const void *const viewer, EntityId entityId); - EMSCRIPTEN_KEEPALIVE void clear_lights(const void *const viewer); - EMSCRIPTEN_KEEPALIVE EntityId load_glb(void *sceneManager, const char *assetPath, int numInstances); - EMSCRIPTEN_KEEPALIVE EntityId load_glb_from_buffer(void *sceneManager, const void *const data, size_t length); - EMSCRIPTEN_KEEPALIVE EntityId load_gltf(void *sceneManager, const char *assetPath, const char *relativePath); + EMSCRIPTEN_KEEPALIVE void remove_light(TViewer *viewer, EntityId entityId); + EMSCRIPTEN_KEEPALIVE void clear_lights(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void set_light_position(TViewer *viewer, EntityId light, float x, float y, float z); + EMSCRIPTEN_KEEPALIVE void set_light_direction(TViewer *viewer, EntityId light, float x, float y, float z); + EMSCRIPTEN_KEEPALIVE EntityId load_glb(void *sceneManager, const char *assetPath, int numInstances, bool keepData); + EMSCRIPTEN_KEEPALIVE EntityId load_glb_from_buffer(void *sceneManager, const void *const data, size_t length, bool keepData, int priority, int layer); + EMSCRIPTEN_KEEPALIVE EntityId load_gltf(void *sceneManager, const char *assetPath, const char *relativePath, bool keepData); EMSCRIPTEN_KEEPALIVE EntityId create_instance(void *sceneManager, EntityId id); EMSCRIPTEN_KEEPALIVE int get_instance_count(void *sceneManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE void get_instances(void *sceneManager, EntityId entityId, EntityId *out); - EMSCRIPTEN_KEEPALIVE void set_main_camera(const void *const viewer); - EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(const void *const viewer); - EMSCRIPTEN_KEEPALIVE bool set_camera(const void *const viewer, EntityId entity, const char *nodeName); - EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(const void *const viewer, bool enabled); - EMSCRIPTEN_KEEPALIVE void render( - const void *const viewer, + EMSCRIPTEN_KEEPALIVE void set_main_camera(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE bool set_camera(TViewer *viewer, EntityId entity, const char *nodeName); + EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(TViewer *viewer, bool enabled); + EMSCRIPTEN_KEEPALIVE bool render( + TViewer *viewer, uint64_t frameTimeInNanos, void *pixelBuffer, void (*callback)(void *buf, size_t size, void *data), void *data); EMSCRIPTEN_KEEPALIVE void capture( - const void *const viewer, + TViewer *viewer, uint8_t *pixelBuffer, void (*callback)(void)); - EMSCRIPTEN_KEEPALIVE void create_swap_chain(const void *const viewer, const void *const window, uint32_t width, uint32_t height); - EMSCRIPTEN_KEEPALIVE void destroy_swap_chain(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_frame_interval(const void *const viewer, float interval); - EMSCRIPTEN_KEEPALIVE void update_viewport_and_camera_projection(const void *const viewer, uint32_t width, uint32_t height, float scaleFactor); - EMSCRIPTEN_KEEPALIVE void scroll_begin(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void scroll_update(const void *const viewer, float x, float y, float z); - EMSCRIPTEN_KEEPALIVE void scroll_end(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void grab_begin(const void *const viewer, float x, float y, bool pan); - EMSCRIPTEN_KEEPALIVE void grab_update(const void *const viewer, float x, float y); - EMSCRIPTEN_KEEPALIVE void grab_end(const void *const viewer); + EMSCRIPTEN_KEEPALIVE void create_swap_chain(TViewer *viewer, const void *const window, uint32_t width, uint32_t height); + EMSCRIPTEN_KEEPALIVE void destroy_swap_chain(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void set_frame_interval(TViewer *viewer, float interval); + EMSCRIPTEN_KEEPALIVE void update_viewport(TViewer *viewer, uint32_t width, uint32_t height); + EMSCRIPTEN_KEEPALIVE void scroll_begin(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void scroll_update(TViewer *viewer, float x, float y, float z); + EMSCRIPTEN_KEEPALIVE void scroll_end(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void grab_begin(TViewer *viewer, float x, float y, bool pan); + EMSCRIPTEN_KEEPALIVE void grab_update(TViewer *viewer, float x, float y); + EMSCRIPTEN_KEEPALIVE void grab_end(TViewer *viewer); EMSCRIPTEN_KEEPALIVE void apply_weights( void *sceneManager, EntityId entity, @@ -140,6 +146,11 @@ extern "C" int numMorphTargets, int numFrames, float frameLengthInMs); + + EMSCRIPTEN_KEEPALIVE TMaterialInstance *create_material_instance(void *const sceneManager, TMaterialKey materialConfig); + EMSCRIPTEN_KEEPALIVE TMaterialInstance *create_unlit_material_instance(void *const sceneManager); + EMSCRIPTEN_KEEPALIVE void destroy_material_instance(void *const sceneManager, TMaterialInstance *instance); + EMSCRIPTEN_KEEPALIVE void clear_morph_animation( void *sceneManager, EntityId entity); @@ -159,13 +170,13 @@ extern "C" float fadeInInSecs, float maxDelta); EMSCRIPTEN_KEEPALIVE void get_local_transform(void *sceneManager, - EntityId entityId, float* const); + EntityId entityId, float *const); EMSCRIPTEN_KEEPALIVE void get_rest_local_transforms(void *sceneManager, - EntityId entityId, int skinIndex, float* const out, int numBones); + EntityId entityId, int skinIndex, float *const out, int numBones); EMSCRIPTEN_KEEPALIVE void get_world_transform(void *sceneManager, - EntityId entityId, float* const); + EntityId entityId, float *const); EMSCRIPTEN_KEEPALIVE void get_inverse_bind_matrix(void *sceneManager, - EntityId entityId, int skinIndex, int boneIndex, float* const); + EntityId entityId, int skinIndex, int boneIndex, float *const); EMSCRIPTEN_KEEPALIVE bool set_bone_transform( void *sceneManager, EntityId entity, @@ -179,62 +190,66 @@ extern "C" EMSCRIPTEN_KEEPALIVE void get_animation_name(void *sceneManager, EntityId entity, char *const outPtr, int index); EMSCRIPTEN_KEEPALIVE float get_animation_duration(void *sceneManager, EntityId entity, int index); EMSCRIPTEN_KEEPALIVE int get_bone_count(void *sceneManager, EntityId assetEntity, int skinIndex); - EMSCRIPTEN_KEEPALIVE void get_bone_names(void *sceneManager, EntityId assetEntity, const char** outPtr, int skinIndex); + EMSCRIPTEN_KEEPALIVE void get_bone_names(void *sceneManager, EntityId assetEntity, const char **outPtr, int skinIndex); EMSCRIPTEN_KEEPALIVE EntityId get_bone(void *sceneManager, - EntityId entityId, - int skinIndex, - int boneIndex); - EMSCRIPTEN_KEEPALIVE bool set_transform(void* sceneManager, EntityId entityId, const float* const transform); - EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(void* sceneManager, EntityId entityId); + EntityId entityId, + int skinIndex, + int boneIndex); + EMSCRIPTEN_KEEPALIVE bool set_transform(void *sceneManager, EntityId entityId, const float *const transform); + EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(void *sceneManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE void get_morph_target_name(void *sceneManager, EntityId assetEntity, EntityId childEntity, char *const outPtr, int index); EMSCRIPTEN_KEEPALIVE int get_morph_target_name_count(void *sceneManager, EntityId assetEntity, EntityId childEntity); - EMSCRIPTEN_KEEPALIVE void remove_entity(const void *const viewer, EntityId asset); - EMSCRIPTEN_KEEPALIVE void clear_entities(const void *const viewer); + EMSCRIPTEN_KEEPALIVE void remove_entity(TViewer *viewer, EntityId asset); + EMSCRIPTEN_KEEPALIVE void clear_entities(TViewer *viewer); EMSCRIPTEN_KEEPALIVE bool set_material_color(void *sceneManager, EntityId entity, const char *meshName, int materialIndex, const float r, const float g, const float b, const float a); EMSCRIPTEN_KEEPALIVE void transform_to_unit_cube(void *sceneManager, EntityId asset); EMSCRIPTEN_KEEPALIVE void queue_position_update(void *sceneManager, EntityId entity, float x, float y, float z, bool relative); + EMSCRIPTEN_KEEPALIVE void queue_relative_position_update_world_axis(void *sceneManager, EntityId entity, float viewportX, float viewportY, float x, float y, float z); + EMSCRIPTEN_KEEPALIVE void queue_position_update_from_viewport_coords(void *sceneManager, EntityId entity, float viewportX, float viewportY); EMSCRIPTEN_KEEPALIVE void queue_rotation_update(void *sceneManager, EntityId entity, float rads, float x, float y, float z, float w, bool relative); EMSCRIPTEN_KEEPALIVE void set_position(void *sceneManager, EntityId entity, float x, float y, float z); EMSCRIPTEN_KEEPALIVE void set_rotation(void *sceneManager, EntityId entity, float rads, float x, float y, float z, float w); EMSCRIPTEN_KEEPALIVE void set_scale(void *sceneManager, EntityId entity, float scale); // Camera methods - EMSCRIPTEN_KEEPALIVE void move_camera_to_asset(const void *const viewer, EntityId asset); - EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(const void *const viewer, bool enabled); - EMSCRIPTEN_KEEPALIVE void set_camera_exposure(const void *const viewer, float aperture, float shutterSpeed, float sensitivity); - EMSCRIPTEN_KEEPALIVE void set_camera_position(const void *const viewer, float x, float y, float z); - EMSCRIPTEN_KEEPALIVE void get_camera_position(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_camera_rotation(const void *const viewer, float w, float x, float y, float z); - EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(const void *const viewer, const float *const matrix); - EMSCRIPTEN_KEEPALIVE const double *const get_camera_model_matrix(const void *const viewer); - EMSCRIPTEN_KEEPALIVE const double *const get_camera_view_matrix(const void *const viewer); - EMSCRIPTEN_KEEPALIVE const double *const get_camera_projection_matrix(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_camera_projection_matrix(const void *const viewer, const double *const matrix, double near, double far); - EMSCRIPTEN_KEEPALIVE void set_camera_culling(const void *const viewer, double near, double far); - EMSCRIPTEN_KEEPALIVE double get_camera_culling_near(const void *const viewer); - EMSCRIPTEN_KEEPALIVE double get_camera_culling_far(const void *const viewer); - EMSCRIPTEN_KEEPALIVE const double *const get_camera_culling_projection_matrix(const void *const viewer); - EMSCRIPTEN_KEEPALIVE const double *const get_camera_frustum(const void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_camera_fov(const void *const viewer, float fovInDegrees, float aspect); - EMSCRIPTEN_KEEPALIVE void set_camera_focal_length(const void *const viewer, float focalLength); - EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(const void *const viewer, float focusDistance); - EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(const void *const viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed); + EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(TViewer *viewer, bool enabled); + EMSCRIPTEN_KEEPALIVE void set_camera_exposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity); + EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(TCamera *camera, double4x4 matrix); + EMSCRIPTEN_KEEPALIVE TCamera *get_camera(TViewer *viewer, EntityId entity); + EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE double4x4 get_camera_model_matrix(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE double4x4 get_camera_view_matrix(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE double4x4 get_camera_projection_matrix(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE double4x4 get_camera_culling_projection_matrix(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE const double *const get_camera_frustum(TCamera *const camera); + EMSCRIPTEN_KEEPALIVE void set_camera_projection_matrix(TCamera *camera, double4x4 matrix, double near, double far); + EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal); + EMSCRIPTEN_KEEPALIVE double get_camera_near(TCamera *camera); + EMSCRIPTEN_KEEPALIVE double get_camera_culling_far(TCamera *camera); + EMSCRIPTEN_KEEPALIVE float get_camera_fov(TCamera *camera, bool horizontal); + EMSCRIPTEN_KEEPALIVE void set_camera_lens_projection(TCamera *camera, double near, double far, double aspect, double focalLength); + EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(TCamera *camera, float focusDistance); + EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(TViewer *viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed); + EMSCRIPTEN_KEEPALIVE void Camera_setCustomProjectionWithCulling(TCamera* camera, double4x4 projectionMatrix, double near, double far); + EMSCRIPTEN_KEEPALIVE TCamera *get_camera_component(TEngine *engine, EntityId entity); + + EMSCRIPTEN_KEEPALIVE int hide_mesh(void *sceneManager, EntityId entity, const char *meshName); EMSCRIPTEN_KEEPALIVE int reveal_mesh(void *sceneManager, EntityId entity, const char *meshName); - EMSCRIPTEN_KEEPALIVE void set_post_processing(void *const viewer, bool enabled); - EMSCRIPTEN_KEEPALIVE void set_shadows_enabled(void *const viewer, bool enabled); - EMSCRIPTEN_KEEPALIVE void set_shadow_type(void *const viewer, int shadowType); - EMSCRIPTEN_KEEPALIVE void set_soft_shadow_options(void *const viewer, float penumbraScale, float penumbraRatioScale); - EMSCRIPTEN_KEEPALIVE void set_antialiasing(void *const viewer, bool msaa, bool fxaa, bool taa); - EMSCRIPTEN_KEEPALIVE void filament_pick(void *const viewer, int x, int y, void (*callback)(EntityId entityId, int x, int y)); + EMSCRIPTEN_KEEPALIVE void set_post_processing(TViewer *viewer, bool enabled); + EMSCRIPTEN_KEEPALIVE void set_shadows_enabled(TViewer *viewer, bool enabled); + EMSCRIPTEN_KEEPALIVE void set_shadow_type(TViewer *viewer, int shadowType); + EMSCRIPTEN_KEEPALIVE void set_soft_shadow_options(TViewer *viewer, float penumbraScale, float penumbraRatioScale); + EMSCRIPTEN_KEEPALIVE void set_antialiasing(TViewer *viewer, bool msaa, bool fxaa, bool taa); + EMSCRIPTEN_KEEPALIVE void filament_pick(TViewer *viewer, int x, int y, void (*callback)(EntityId entityId, int x, int y)); EMSCRIPTEN_KEEPALIVE const char *get_name_for_entity(void *const sceneManager, const EntityId entityId); EMSCRIPTEN_KEEPALIVE EntityId find_child_entity_by_name(void *const sceneManager, const EntityId parent, const char *name); EMSCRIPTEN_KEEPALIVE int get_entity_count(void *const sceneManager, const EntityId target, bool renderableOnly); EMSCRIPTEN_KEEPALIVE void get_entities(void *const sceneManager, const EntityId target, bool renderableOnly, EntityId *out); EMSCRIPTEN_KEEPALIVE const char *get_entity_name_at(void *const sceneManager, const EntityId target, int index, bool renderableOnly); - EMSCRIPTEN_KEEPALIVE void set_recording(void *const viewer, bool recording); - EMSCRIPTEN_KEEPALIVE void set_recording_output_directory(void *const viewer, const char *outputDirectory); + EMSCRIPTEN_KEEPALIVE void set_recording(TViewer *viewer, bool recording); + EMSCRIPTEN_KEEPALIVE void set_recording_output_directory(TViewer *viewer, const char *outputDirectory); EMSCRIPTEN_KEEPALIVE void ios_dummy(); EMSCRIPTEN_KEEPALIVE void thermion_flutter_free(void *ptr); EMSCRIPTEN_KEEPALIVE void add_collision_component(void *const sceneManager, EntityId entityId, void (*callback)(const EntityId entityId1, const EntityId entityId2), bool affectsCollidingTransform); @@ -242,12 +257,47 @@ extern "C" EMSCRIPTEN_KEEPALIVE bool add_animation_component(void *const sceneManager, EntityId entityId); EMSCRIPTEN_KEEPALIVE void remove_animation_component(void *const sceneManager, EntityId entityId); - EMSCRIPTEN_KEEPALIVE EntityId create_geometry(void *const viewer, float *vertices, int numVertices, uint16_t *indices, int numIndices, int primitiveType, const char *materialPath); + EMSCRIPTEN_KEEPALIVE EntityId create_geometry( + void *const sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData); EMSCRIPTEN_KEEPALIVE EntityId get_parent(void *const sceneManager, EntityId child); - EMSCRIPTEN_KEEPALIVE void set_parent(void *const sceneManager, EntityId child, EntityId parent); + EMSCRIPTEN_KEEPALIVE EntityId get_ancestor(void *const sceneManager, EntityId child); + EMSCRIPTEN_KEEPALIVE void set_parent(void *const sceneManager, EntityId child, EntityId parent, bool preserveScaling); EMSCRIPTEN_KEEPALIVE void test_collisions(void *const sceneManager, EntityId entity); EMSCRIPTEN_KEEPALIVE void set_priority(void *const sceneManager, EntityId entityId, int priority); EMSCRIPTEN_KEEPALIVE void get_gizmo(void *const sceneManager, EntityId *out); + EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(void *const sceneManager, EntityId entity); + EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(void *const sceneManager, EntityId entity, float *minX, float *minY, float *maxX, float *maxY); + EMSCRIPTEN_KEEPALIVE void set_layer_visibility(void *const sceneManager, int layer, bool visible); + EMSCRIPTEN_KEEPALIVE void set_visibility_layer(void *const sceneManager, EntityId entity, int layer); + EMSCRIPTEN_KEEPALIVE void pick_gizmo(void *const sceneManager, int x, int y, void (*callback)(EntityId entityId, int x, int y)); + EMSCRIPTEN_KEEPALIVE void set_gizmo_visibility(void *const sceneManager, bool visible); + EMSCRIPTEN_KEEPALIVE void set_stencil_highlight(void *const sceneManager, EntityId entity, float r, float g, float b); + EMSCRIPTEN_KEEPALIVE void remove_stencil_highlight(void *const sceneManager, EntityId entity); + EMSCRIPTEN_KEEPALIVE void set_material_property_float(void *const sceneManager, EntityId entity, int materialIndex, const char *property, float value); + EMSCRIPTEN_KEEPALIVE void set_material_property_int(void *const sceneManager, EntityId entity, int materialIndex, const char *property, int value); + EMSCRIPTEN_KEEPALIVE void set_material_property_float4(void *const sceneManager, EntityId entity, int materialIndex, const char *property, double4 value); + EMSCRIPTEN_KEEPALIVE void set_material_depth_write(void *const sceneManager, EntityId entity, int materialIndex, bool enabled); + EMSCRIPTEN_KEEPALIVE void unproject_texture(TViewer* viewer, EntityId entity,uint8_t* input, uint32_t inputWidth, uint32_t inputHeight, uint8_t *out, uint32_t outWidth, uint32_t outHeight); + EMSCRIPTEN_KEEPALIVE void *const create_texture(void *const sceneManager, uint8_t *data, size_t length); + EMSCRIPTEN_KEEPALIVE void destroy_texture(void *const sceneManager, void *const texture); + EMSCRIPTEN_KEEPALIVE void apply_texture_to_material(void *const sceneManager, EntityId entity, void *const texture, const char *parameterName, int materialIndex); + + EMSCRIPTEN_KEEPALIVE TMaterialInstance* get_material_instance_at(void *const sceneManager, EntityId entity, int materialIndex); + + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthWrite(TMaterialInstance* materialInstance, bool enabled); + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthCulling(TMaterialInstance* materialInstance, bool enabled); + #ifdef __cplusplus } diff --git a/thermion_dart/native/include/ThermionDartFFIApi.h b/thermion_dart/native/include/ThermionDartFFIApi.h deleted file mode 100644 index 7a49cf5f..00000000 --- a/thermion_dart/native/include/ThermionDartFFIApi.h +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef _DART_FILAMENT_FFI_API_H -#define _DART_FILAMENT_FFI_API_H - -#include "ThermionDartApi.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - /// - /// This header replicates most of the methods in ThermionDartApi.h. - /// It represents the interface for: - /// - invoking those methods that must be called on the main Filament engine thread - /// - setting up a render loop - /// - typedef int32_t EntityId; - typedef void (*FilamentRenderCallback)(void *const owner); - - EMSCRIPTEN_KEEPALIVE void create_filament_viewer_ffi( - void *const context, - void *const platform, - const char *uberArchivePath, - const void *const loader, - void (*renderCallback)(void *const renderCallbackOwner), - void *const renderCallbackOwner, - void (*callback)(void *const viewer)); - EMSCRIPTEN_KEEPALIVE void create_swap_chain_ffi(void *const viewer, void *const surface, uint32_t width, uint32_t height, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void destroy_swap_chain_ffi(void *const viewer, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void create_render_target_ffi(void *const viewer, intptr_t nativeTextureId, uint32_t width, uint32_t height, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void render_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void capture_ffi(void *const viewer, uint8_t* out, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE FilamentRenderCallback make_render_callback_fn_pointer(FilamentRenderCallback); - EMSCRIPTEN_KEEPALIVE void set_rendering_ffi(void *const viewer, bool rendering, void(*onComplete)()); - EMSCRIPTEN_KEEPALIVE void set_frame_interval_ffi(void *const viewer, float frameInterval); - EMSCRIPTEN_KEEPALIVE void update_viewport_and_camera_projection_ffi(void *const viewer, const uint32_t width, const uint32_t height, const float scaleFactor, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void set_background_color_ffi(void *const viewer, const float r, const float g, const float b, const float a); - EMSCRIPTEN_KEEPALIVE void clear_background_image_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void set_background_image_ffi(void *const viewer, const char *path, bool fillHeight, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void set_background_image_position_ffi(void *const viewer, float x, float y, bool clamp); - EMSCRIPTEN_KEEPALIVE void set_tone_mapping_ffi(void *const viewer, int toneMapping); - EMSCRIPTEN_KEEPALIVE void set_bloom_ffi(void *const viewer, float strength); - EMSCRIPTEN_KEEPALIVE void load_skybox_ffi(void *const viewer, const char *skyboxPath, void (*onComplete)()); - EMSCRIPTEN_KEEPALIVE void load_ibl_ffi(void *const viewer, const char *iblPath, float intensity); - EMSCRIPTEN_KEEPALIVE void remove_skybox_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void remove_ibl_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void add_light_ffi( - void *const viewer, - uint8_t type, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, - float falloffRadius, - float spotLightConeInner, - float spotLightConeOuter, - float sunAngularRadius, - float sunHaloSize, - float sunHaloFallof, - bool shadows, - void (*callback)(EntityId)); - EMSCRIPTEN_KEEPALIVE void remove_light_ffi(void *const viewer, EntityId entityId); - EMSCRIPTEN_KEEPALIVE void clear_lights_ffi(void *const viewer); - EMSCRIPTEN_KEEPALIVE void load_glb_ffi(void *const sceneManager, const char *assetPath, int numInstances, void (*callback)(EntityId)); - EMSCRIPTEN_KEEPALIVE void load_glb_from_buffer_ffi(void *const sceneManager, const void *const data, size_t length, int numInstances, void (*callback)(EntityId)); - EMSCRIPTEN_KEEPALIVE void load_gltf_ffi(void *const sceneManager, const char *assetPath, const char *relativePath, void (*callback)(EntityId)); - EMSCRIPTEN_KEEPALIVE void create_instance_ffi(void *const sceneManager, EntityId entityId, void (*callback)(EntityId)); - EMSCRIPTEN_KEEPALIVE void remove_entity_ffi(void *const viewer, EntityId asset, void (*callback)()); - EMSCRIPTEN_KEEPALIVE void clear_entities_ffi(void *const viewer, void (*callback)()); - EMSCRIPTEN_KEEPALIVE void set_camera_ffi(void *const viewer, EntityId asset, const char *nodeName, void (*callback)(bool)); - EMSCRIPTEN_KEEPALIVE void apply_weights_ffi( - void *const sceneManager, - EntityId asset, - const char *const entityName, - float *const weights, - int count); - EMSCRIPTEN_KEEPALIVE void set_animation_frame_ffi(void *const sceneManager, EntityId asset, int animationIndex, int animationFrame); - EMSCRIPTEN_KEEPALIVE void stop_animation_ffi(void *const sceneManager, EntityId asset, int index); - EMSCRIPTEN_KEEPALIVE void get_animation_count_ffi(void *const sceneManager, EntityId asset, void (*callback)(int)); - EMSCRIPTEN_KEEPALIVE void get_animation_name_ffi(void *const sceneManager, EntityId asset, char *const outPtr, int index, void (*callback)()); - EMSCRIPTEN_KEEPALIVE void get_morph_target_name_ffi(void *const sceneManager, EntityId assetEntity, EntityId childEntity, char *const outPtr, int index, void (*callback)()); - EMSCRIPTEN_KEEPALIVE void get_morph_target_name_count_ffi(void *const sceneManager, EntityId asset, EntityId childEntity, void (*callback)(int32_t)); - EMSCRIPTEN_KEEPALIVE void set_morph_target_weights_ffi(void *const sceneManager, - EntityId asset, - const float *const morphData, - int numWeights, - void (*callback)(bool)); - - EMSCRIPTEN_KEEPALIVE void update_bone_matrices_ffi(void *sceneManager, - EntityId asset, void(*callback)(bool)); - EMSCRIPTEN_KEEPALIVE void set_bone_transform_ffi( - void *sceneManager, - EntityId asset, - int skinIndex, - int boneIndex, - const float *const transform, - void (*callback)(bool)); - EMSCRIPTEN_KEEPALIVE void set_post_processing_ffi(void *const viewer, bool enabled); - EMSCRIPTEN_KEEPALIVE void reset_to_rest_pose_ffi(void *const sceneManager, EntityId entityId, void(*callback)()); - EMSCRIPTEN_KEEPALIVE void create_geometry_ffi(void *const viewer, float *vertices, int numVertices, uint16_t *indices, int numIndices, int primitiveType, const char *materialPath, void (*callback)(EntityId)); - -#ifdef __cplusplus -} -#endif - -#endif // _DART_FILAMENT_FFI_API_H diff --git a/thermion_dart/native/include/ThermionDartRenderThreadApi.h b/thermion_dart/native/include/ThermionDartRenderThreadApi.h new file mode 100644 index 00000000..a11a4b03 --- /dev/null +++ b/thermion_dart/native/include/ThermionDartRenderThreadApi.h @@ -0,0 +1,126 @@ +#ifndef _DART_FILAMENT_FFI_API_H +#define _DART_FILAMENT_FFI_API_H + +#include "ThermionDartApi.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + + /// + /// This header replicates most of the methods in ThermionDartApi.h. + /// It represents the interface for: + /// - invoking those methods that must be called on the main Filament engine thread + /// - setting up a render loop + /// + typedef int32_t EntityId; + typedef void (*FilamentRenderCallback)(void *const owner); + + EMSCRIPTEN_KEEPALIVE void create_filament_viewer_render_thread( + void *const context, + void *const platform, + const char *uberArchivePath, + const void *const loader, + void (*renderCallback)(void *const renderCallbackOwner), + void *const renderCallbackOwner, + void (*callback)(TViewer *viewer)); + EMSCRIPTEN_KEEPALIVE void create_swap_chain_render_thread(TViewer *viewer, void *const surface, uint32_t width, uint32_t height, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE void destroy_swap_chain_render_thread(TViewer *viewer, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE void create_render_target_render_thread(TViewer *viewer, intptr_t nativeTextureId, uint32_t width, uint32_t height, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void render_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void capture_render_thread(TViewer *viewer, uint8_t* out, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE FilamentRenderCallback make_render_callback_fn_pointer(FilamentRenderCallback); + EMSCRIPTEN_KEEPALIVE void set_rendering_render_thread(TViewer *viewer, bool rendering, void(*onComplete)()); + EMSCRIPTEN_KEEPALIVE void request_frame_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void set_frame_interval_render_thread(TViewer *viewer, float frameInterval); + EMSCRIPTEN_KEEPALIVE void set_background_color_render_thread(TViewer *viewer, const float r, const float g, const float b, const float a); + EMSCRIPTEN_KEEPALIVE void clear_background_image_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void set_background_image_render_thread(TViewer *viewer, const char *path, bool fillHeight, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE void set_background_image_position_render_thread(TViewer *viewer, float x, float y, bool clamp); + EMSCRIPTEN_KEEPALIVE void set_tone_mapping_render_thread(TViewer *viewer, int toneMapping); + EMSCRIPTEN_KEEPALIVE void set_bloom_render_thread(TViewer *viewer, float strength); + EMSCRIPTEN_KEEPALIVE void load_skybox_render_thread(TViewer *viewer, const char *skyboxPath, void (*onComplete)()); + EMSCRIPTEN_KEEPALIVE void load_ibl_render_thread(TViewer *viewer, const char *iblPath, float intensity); + EMSCRIPTEN_KEEPALIVE void remove_skybox_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void remove_ibl_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void add_light_render_thread( + TViewer *viewer, + uint8_t type, + float colour, + float intensity, + float posX, + float posY, + float posZ, + float dirX, + float dirY, + float dirZ, + float falloffRadius, + float spotLightConeInner, + float spotLightConeOuter, + float sunAngularRadius, + float sunHaloSize, + float sunHaloFallof, + bool shadows, + void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void remove_light_render_thread(TViewer *viewer, EntityId entityId); + EMSCRIPTEN_KEEPALIVE void clear_lights_render_thread(TViewer *viewer); + EMSCRIPTEN_KEEPALIVE void load_glb_render_thread(void *const sceneManager, const char *assetPath, int numInstances, bool keepData, void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void load_glb_from_buffer_render_thread(void *const sceneManager, const uint8_t *const data, size_t length, int numInstances, bool keepData, int priority, int layer, void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void load_gltf_render_thread(void *const sceneManager, const char *assetPath, const char *relativePath, bool keepData, void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void create_instance_render_thread(void *const sceneManager, EntityId entityId, void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void remove_entity_render_thread(TViewer *viewer, EntityId asset, void (*callback)()); + EMSCRIPTEN_KEEPALIVE void clear_entities_render_thread(TViewer *viewer, void (*callback)()); + EMSCRIPTEN_KEEPALIVE void set_camera_render_thread(TViewer *viewer, EntityId asset, const char *nodeName, void (*callback)(bool)); + EMSCRIPTEN_KEEPALIVE void apply_weights_render_thread( + void *const sceneManager, + EntityId asset, + const char *const entityName, + float *const weights, + int count); + EMSCRIPTEN_KEEPALIVE void set_animation_frame_render_thread(void *const sceneManager, EntityId asset, int animationIndex, int animationFrame); + EMSCRIPTEN_KEEPALIVE void stop_animation_render_thread(void *const sceneManager, EntityId asset, int index); + EMSCRIPTEN_KEEPALIVE void get_animation_count_render_thread(void *const sceneManager, EntityId asset, void (*callback)(int)); + EMSCRIPTEN_KEEPALIVE void get_animation_name_render_thread(void *const sceneManager, EntityId asset, char *const outPtr, int index, void (*callback)()); + EMSCRIPTEN_KEEPALIVE void get_morph_target_name_render_thread(void *const sceneManager, EntityId assetEntity, EntityId childEntity, char *const outPtr, int index, void (*callback)()); + EMSCRIPTEN_KEEPALIVE void get_morph_target_name_count_render_thread(void *const sceneManager, EntityId asset, EntityId childEntity, void (*callback)(int32_t)); + EMSCRIPTEN_KEEPALIVE void set_morph_target_weights_render_thread(void *const sceneManager, + EntityId asset, + const float *const morphData, + int numWeights, + void (*callback)(bool)); + + EMSCRIPTEN_KEEPALIVE void update_bone_matrices_render_thread(void *sceneManager, + EntityId asset, void(*callback)(bool)); + EMSCRIPTEN_KEEPALIVE void set_bone_transform_render_thread( + void *sceneManager, + EntityId asset, + int skinIndex, + int boneIndex, + const float *const transform, + void (*callback)(bool)); + EMSCRIPTEN_KEEPALIVE void set_post_processing_render_thread(TViewer *viewer, bool enabled); + EMSCRIPTEN_KEEPALIVE void reset_to_rest_pose_render_thread(void *const sceneManager, EntityId entityId, void(*callback)()); + EMSCRIPTEN_KEEPALIVE void create_geometry_render_thread( + void *const sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData, + void (*callback)(EntityId)); + EMSCRIPTEN_KEEPALIVE void unproject_texture_render_thread(TViewer* viewer, EntityId entity, uint8_t* input, uint32_t inputWidth, uint32_t inputHeight, uint8_t* out, uint32_t outWidth, uint32_t outHeight, void(*callback)()); + + +#ifdef __cplusplus +} +#endif + +#endif // _DART_FILAMENT_FFI_API_H diff --git a/thermion_dart/native/include/UnprojectTexture.hpp b/thermion_dart/native/include/UnprojectTexture.hpp new file mode 100644 index 00000000..0f04dba0 --- /dev/null +++ b/thermion_dart/native/include/UnprojectTexture.hpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "CustomGeometry.hpp" + +namespace thermion_filament { + +class UnprojectTexture { +public: + UnprojectTexture(const CustomGeometry * geometry, Camera& camera, Engine* engine) + : _geometry(geometry), _camera(camera), _engine(engine) {} + + void unproject(utils::Entity entity, const uint8_t* inputTexture, uint8_t* outputTexture, uint32_t inputWidth, uint32_t inputHeight, + uint32_t outputWidth, uint32_t outputHeight); + +private: + const CustomGeometry * _geometry; + const Camera& _camera; + Engine* _engine; + + math::float3 doUnproject(const math::float2& screenPos, float depth, const math::mat4& invViewProj); + bool isInsideTriangle(const math::float2& p, const math::float2& a, const math::float2& b, const math::float2& c); + math::float3 barycentric(const math::float2& p, const math::float2& a, const math::float2& b, const math::float2& c); +}; +} \ No newline at end of file diff --git a/thermion_dart/native/include/material/UnlitMaterialProvider.hpp b/thermion_dart/native/include/material/UnlitMaterialProvider.hpp new file mode 100644 index 00000000..7aa7e56e --- /dev/null +++ b/thermion_dart/native/include/material/UnlitMaterialProvider.hpp @@ -0,0 +1,67 @@ +#ifndef UNLIT_MATERIAL_PROVIDER_HPP +#define UNLIT_MATERIAL_PROVIDER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace thermion_filament { + +class UnlitMaterialProvider : public filament::gltfio::MaterialProvider { +private: + filament::Material* mUnlitMaterial; + const filament::Material* mMaterials[1]; + filament::Engine* mEngine; + +public: + UnlitMaterialProvider(filament::Engine* engine, const void* const data, const size_t size) : mEngine(engine) { + mUnlitMaterial = filament::Material::Builder() + .package(data, size) + .build(*engine); + mMaterials[0] = mUnlitMaterial; + } + + ~UnlitMaterialProvider() { + mEngine->destroy(mUnlitMaterial); + } + + filament::MaterialInstance* createMaterialInstance(filament::gltfio::MaterialKey* config, + filament::gltfio::UvMap* uvmap, + const char* label = "unlit", + const char* extras = nullptr) override { + auto instance = mUnlitMaterial->createInstance(); + return instance; + } + + filament::Material* getMaterial(filament::gltfio::MaterialKey* config, + filament::gltfio::UvMap* uvmap, + const char* label = "unlit") override { + return mUnlitMaterial; + } + + const filament::Material* const* getMaterials() const noexcept override { + return mMaterials; + } + + size_t getMaterialsCount() const noexcept override { + return 1; + } + + void destroyMaterials() override { + // Materials are destroyed in the destructor + } + + bool needsDummyData(filament::VertexAttribute attrib) const noexcept override { + // For unlit material, we don't need dummy data for any attribute + return false; + } +}; + +} // namespace thermion_filament + +#endif // UNLIT_MATERIAL_PROVIDER_HPP \ No newline at end of file diff --git a/thermion_dart/native/include/material/gizmo.S b/thermion_dart/native/include/material/gizmo.S index e3cc4f49..b00f550d 100644 --- a/thermion_dart/native/include/material/gizmo.S +++ b/thermion_dart/native/include/material/gizmo.S @@ -8,5 +8,5 @@ GIZMO_PACKAGE: GIZMO_GIZMO_OFFSET: .int 0 GIZMO_GIZMO_SIZE: - .int 26876 + .int 27809 diff --git a/thermion_dart/native/include/material/gizmo.apple.S b/thermion_dart/native/include/material/gizmo.apple.S index ccc7f03a..3e033da4 100644 --- a/thermion_dart/native/include/material/gizmo.apple.S +++ b/thermion_dart/native/include/material/gizmo.apple.S @@ -8,5 +8,5 @@ _GIZMO_PACKAGE: _GIZMO_GIZMO_OFFSET: .int 0 _GIZMO_GIZMO_SIZE: - .int 26876 + .int 27809 diff --git a/thermion_dart/native/include/material/gizmo.bin b/thermion_dart/native/include/material/gizmo.bin index 0fc109c2..91881fa8 100644 Binary files a/thermion_dart/native/include/material/gizmo.bin and b/thermion_dart/native/include/material/gizmo.bin differ diff --git a/thermion_dart/native/include/material/gizmo.c b/thermion_dart/native/include/material/gizmo.c index f2c45a7c..e9aa1c9d 100644 --- a/thermion_dart/native/include/material/gizmo.c +++ b/thermion_dart/native/include/material/gizmo.c @@ -1,26885 +1,1401 @@ -#include #include "gizmo.h" +#include + const uint8_t GIZMO_PACKAGE[] = { - // GIZMO - 0x53, - 0x52, - 0x45, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x54, - 0x41, - 0x45, - 0x46, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x45, - 0x4d, - 0x41, - 0x4e, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x06, - 0x00, - 0x00, - 0x00, - 0x47, - 0x69, - 0x7a, - 0x6d, - 0x6f, - 0x00, - 0x4c, - 0x44, - 0x4d, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x4d, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x54, - 0x4c, - 0x46, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x46, - 0x49, - 0x4e, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x98, - 0x00, - 0x00, - 0x00, - 0x09, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x01, - 0x4c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x04, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x05, - 0x46, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x52, - 0x65, - 0x63, - 0x6f, - 0x72, - 0x64, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x06, - 0x46, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x07, - 0x42, - 0x6f, - 0x6e, - 0x65, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x02, - 0x4d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x69, - 0x6e, - 0x67, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x03, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x08, - 0x50, - 0x4d, - 0x41, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0xcb, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x02, - 0x07, - 0x07, - 0x01, - 0x02, - 0x09, - 0x07, - 0x00, - 0x09, - 0x01, - 0x01, - 0x0a, - 0x00, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x00, - 0x01, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x00, - 0x02, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x00, - 0x03, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x00, - 0x04, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x00, - 0x05, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x00, - 0x06, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x00, - 0x07, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x73, - 0x00, - 0x08, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x74, - 0x61, - 0x6e, - 0x67, - 0x65, - 0x6e, - 0x74, - 0x73, - 0x00, - 0x09, - 0x62, - 0x6f, - 0x6e, - 0x65, - 0x73, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x69, - 0x63, - 0x65, - 0x73, - 0x41, - 0x6e, - 0x64, - 0x57, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x73, - 0x00, - 0x20, - 0x42, - 0x49, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x3b, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x11, - 0x02, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x20, - 0x42, - 0x49, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x17, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x4e, - 0x4f, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0x42, - 0x55, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x17, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x53, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x49, - 0x53, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x45, - 0x4c, - 0x42, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x4d, - 0x52, - 0x54, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4c, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x49, - 0x52, - 0x57, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x53, - 0x57, - 0x45, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x49, - 0x52, - 0x57, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x53, - 0x45, - 0x54, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x54, - 0x53, - 0x4e, - 0x49, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x43, - 0x32, - 0x41, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x43, - 0x32, - 0x41, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x4d, - 0x55, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x4f, - 0x52, - 0x50, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x49, - 0x55, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0xfe, - 0x16, - 0xc9, - 0x46, - 0x7d, - 0x50, - 0x8b, - 0x83, - 0x44, - 0x41, - 0x48, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4c, - 0x4d, - 0x48, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x54, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x52, - 0x4f, - 0x49, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x41, - 0x51, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x41, - 0x41, - 0x50, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x52, - 0x41, - 0x56, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x99, - 0x19, - 0x3e, - 0x52, - 0x48, - 0x54, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0xcd, - 0xcc, - 0x4c, - 0x3e, - 0x4f, - 0x44, - 0x45, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x52, - 0x54, - 0x4e, - 0x49, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x44, - 0x53, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x54, - 0x58, - 0x45, - 0x54, - 0x5f, - 0x43, - 0x49, - 0x44, - 0x74, - 0x53, - 0x00, - 0x00, - 0x49, - 0x02, - 0x00, - 0x00, - 0x23, - 0x76, - 0x65, - 0x72, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x33, - 0x30, - 0x30, - 0x20, - 0x65, - 0x73, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x00, - 0x7b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x7d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x20, - 0x36, - 0x34, - 0x00, - 0x23, - 0x65, - 0x6e, - 0x64, - 0x69, - 0x66, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x20, - 0x66, - 0x61, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x50, - 0x4f, - 0x57, - 0x45, - 0x52, - 0x5f, - 0x56, - 0x52, - 0x5f, - 0x53, - 0x48, - 0x41, - 0x44, - 0x45, - 0x52, - 0x5f, - 0x57, - 0x4f, - 0x52, - 0x4b, - 0x41, - 0x52, - 0x4f, - 0x55, - 0x4e, - 0x44, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x20, - 0x61, - 0x5b, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x5d, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x61, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x64, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x65, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x68, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x69, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6b, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6c, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x77, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x61, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x75, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x62, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x64, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x67, - 0x7a, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x68, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6c, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6f, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x70, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x77, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x62, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x64, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x75, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x6f, - 0x69, - 0x64, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x28, - 0x29, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x50, - 0x4f, - 0x57, - 0x45, - 0x52, - 0x5f, - 0x56, - 0x52, - 0x5f, - 0x53, - 0x48, - 0x41, - 0x44, - 0x45, - 0x52, - 0x5f, - 0x57, - 0x4f, - 0x52, - 0x4b, - 0x41, - 0x52, - 0x4f, - 0x55, - 0x4e, - 0x44, - 0x53, - 0x29, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x31, - 0x20, - 0x2b, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x44, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x31, - 0x3b, - 0x00, - 0x7d, - 0x00, - 0x65, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x44, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x31, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x36, - 0x29, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x35, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x35, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x35, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x3b, - 0x00, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x3b, - 0x00, - 0x70, - 0x72, - 0x65, - 0x63, - 0x69, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3b, - 0x00, - 0x70, - 0x72, - 0x65, - 0x63, - 0x69, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x65, - 0x6d, - 0x69, - 0x73, - 0x73, - 0x69, - 0x76, - 0x65, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x6c, - 0x65, - 0x61, - 0x72, - 0x43, - 0x6f, - 0x61, - 0x74, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x6c, - 0x65, - 0x61, - 0x72, - 0x43, - 0x6f, - 0x61, - 0x74, - 0x52, - 0x6f, - 0x75, - 0x67, - 0x68, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6e, - 0x69, - 0x73, - 0x6f, - 0x74, - 0x72, - 0x6f, - 0x70, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x61, - 0x6e, - 0x69, - 0x73, - 0x6f, - 0x74, - 0x72, - 0x6f, - 0x70, - 0x79, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x36, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x61, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x36, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x36, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x36, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x38, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x64, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x65, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x68, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x69, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6b, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6c, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6e, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x61, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x62, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x64, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x67, - 0x7a, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x68, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6c, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6f, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x70, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x77, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x62, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x64, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x75, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x43, - 0x75, - 0x62, - 0x65, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x69, - 0x6e, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3e, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x7a, - 0x7a, - 0x29, - 0x00, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6e, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x29, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x30, - 0x31, - 0x32, - 0x35, - 0x29, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x79, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x78, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x36, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x7a, - 0x7a, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x75, - 0x6e, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x48, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x78, - 0x31, - 0x36, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x7a, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x4c, - 0x6f, - 0x64, - 0x28, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2c, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2c, - 0x20, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x38, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x37, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x38, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x36, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x38, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x36, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x38, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x2c, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x33, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x36, - 0x35, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x42, - 0x69, - 0x74, - 0x73, - 0x54, - 0x6f, - 0x46, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x36, - 0x35, - 0x5d, - 0x2e, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x29, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x2f, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x23, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x47, - 0x4c, - 0x5f, - 0x45, - 0x58, - 0x54, - 0x5f, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x5f, - 0x63, - 0x75, - 0x6c, - 0x6c, - 0x5f, - 0x64, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x3a, - 0x20, - 0x72, - 0x65, - 0x71, - 0x75, - 0x69, - 0x72, - 0x65, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x20, - 0x32, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x5f, - 0x37, - 0x35, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x34, - 0x29, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x28, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x36, - 0x20, - 0x2f, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x3b, - 0x00, - 0x23, - 0x76, - 0x65, - 0x72, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x34, - 0x31, - 0x30, - 0x00, - 0x23, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x47, - 0x4c, - 0x5f, - 0x41, - 0x52, - 0x42, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x69, - 0x6e, - 0x67, - 0x5f, - 0x6c, - 0x61, - 0x6e, - 0x67, - 0x75, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x3a, - 0x20, - 0x65, - 0x6e, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x38, - 0x29, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x34, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x37, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x31, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x37, - 0x29, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x43, - 0x75, - 0x62, - 0x65, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x34, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x69, - 0x6e, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x78, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x75, - 0x6e, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x48, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x78, - 0x31, - 0x36, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x7a, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x4c, - 0x6f, - 0x64, - 0x28, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2c, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2c, - 0x20, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x37, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x38, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x39, - 0x38, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x38, - 0x39, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x38, - 0x39, - 0x29, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x37, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x32, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x33, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x32, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x28, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x33, - 0x33, - 0x20, - 0x2f, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x34, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x34, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x33, - 0x33, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x20, - 0x3c, - 0x6d, - 0x65, - 0x74, - 0x61, - 0x6c, - 0x5f, - 0x73, - 0x74, - 0x64, - 0x6c, - 0x69, - 0x62, - 0x3e, - 0x00, - 0x23, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x20, - 0x3c, - 0x73, - 0x69, - 0x6d, - 0x64, - 0x2f, - 0x73, - 0x69, - 0x6d, - 0x64, - 0x2e, - 0x68, - 0x3e, - 0x00, - 0x00, - 0x75, - 0x73, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x6e, - 0x61, - 0x6d, - 0x65, - 0x73, - 0x70, - 0x61, - 0x63, - 0x65, - 0x20, - 0x6d, - 0x65, - 0x74, - 0x61, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x20, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x54, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x43, - 0x6f, - 0x6e, - 0x74, - 0x72, - 0x6f, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x69, - 0x6d, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x65, - 0x6d, - 0x70, - 0x6f, - 0x72, - 0x61, - 0x6c, - 0x4e, - 0x6f, - 0x69, - 0x73, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x54, - 0x69, - 0x6d, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x6f, - 0x6c, - 0x75, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x6f, - 0x67, - 0x69, - 0x63, - 0x61, - 0x6c, - 0x56, - 0x69, - 0x65, - 0x77, - 0x70, - 0x6f, - 0x72, - 0x74, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x6f, - 0x67, - 0x69, - 0x63, - 0x61, - 0x6c, - 0x56, - 0x69, - 0x65, - 0x77, - 0x70, - 0x6f, - 0x72, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x73, - 0x65, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x65, - 0x66, - 0x72, - 0x61, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x4c, - 0x6f, - 0x64, - 0x4f, - 0x66, - 0x66, - 0x73, - 0x65, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x64, - 0x65, - 0x72, - 0x69, - 0x76, - 0x61, - 0x74, - 0x69, - 0x76, - 0x65, - 0x73, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x61, - 0x6d, - 0x65, - 0x72, - 0x61, - 0x46, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x78, - 0x70, - 0x6f, - 0x73, - 0x75, - 0x72, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x76, - 0x31, - 0x30, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x65, - 0x65, - 0x64, - 0x73, - 0x41, - 0x6c, - 0x70, - 0x68, - 0x61, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6f, - 0x53, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x69, - 0x6e, - 0x67, - 0x51, - 0x75, - 0x61, - 0x6c, - 0x69, - 0x74, - 0x79, - 0x41, - 0x6e, - 0x64, - 0x45, - 0x64, - 0x67, - 0x65, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6f, - 0x42, - 0x65, - 0x6e, - 0x74, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x7a, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x33, - 0x20, - 0x66, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x66, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x58, - 0x59, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x52, - 0x6f, - 0x75, - 0x67, - 0x68, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x4f, - 0x6e, - 0x65, - 0x4c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x48, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x61, - 0x64, - 0x64, - 0x69, - 0x6e, - 0x67, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x73, - 0x75, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x46, - 0x61, - 0x72, - 0x41, - 0x74, - 0x74, - 0x65, - 0x6e, - 0x75, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x61, - 0x6c, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x43, - 0x6f, - 0x6e, - 0x74, - 0x61, - 0x63, - 0x74, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x61, - 0x73, - 0x63, - 0x61, - 0x64, - 0x65, - 0x53, - 0x70, - 0x6c, - 0x69, - 0x74, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x61, - 0x73, - 0x63, - 0x61, - 0x64, - 0x65, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x50, - 0x65, - 0x6e, - 0x75, - 0x6d, - 0x62, - 0x72, - 0x61, - 0x52, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x72, - 0x41, - 0x74, - 0x74, - 0x65, - 0x6e, - 0x75, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x45, - 0x78, - 0x70, - 0x6f, - 0x6e, - 0x65, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x44, - 0x65, - 0x70, - 0x74, - 0x68, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x4c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x42, - 0x6c, - 0x65, - 0x65, - 0x64, - 0x52, - 0x65, - 0x64, - 0x75, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x53, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x69, - 0x6e, - 0x67, - 0x54, - 0x79, - 0x70, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x75, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x49, - 0x62, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x73, - 0x73, - 0x72, - 0x52, - 0x65, - 0x70, - 0x72, - 0x6f, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x73, - 0x73, - 0x72, - 0x55, - 0x76, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x54, - 0x68, - 0x69, - 0x63, - 0x6b, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x42, - 0x69, - 0x61, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x53, - 0x74, - 0x72, - 0x69, - 0x64, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x75, - 0x73, - 0x74, - 0x6f, - 0x6d, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x72, - 0x65, - 0x63, - 0x37, - 0x30, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x34, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x61, - 0x74, - 0x74, - 0x72, - 0x69, - 0x62, - 0x75, - 0x74, - 0x65, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x64, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x28, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x35, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x39, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x39, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x39, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6e, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x6f, - 0x69, - 0x64, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x29, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x31, - 0x20, - 0x7b, - 0x00, - 0x64, - 0x65, - 0x70, - 0x74, - 0x68, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x32, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x33, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x63, - 0x75, - 0x62, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x34, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x36, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x39, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x63, - 0x75, - 0x62, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x32, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x33, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x31, - 0x26, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x64, - 0x6f, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x3e, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x75, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x72, - 0x65, - 0x61, - 0x6b, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7d, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x32, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x32, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x36, - 0x32, - 0x32, - 0x29, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x30, - 0x31, - 0x32, - 0x35, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x30, - 0x5d, - 0x2c, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x2c, - 0x20, - 0x5f, - 0x36, - 0x32, - 0x31, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x31, - 0x5d, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x32, - 0x5d, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x36, - 0x32, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x65, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x32, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x20, - 0x2d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x49, - 0x62, - 0x6c, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x3e, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x28, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x29, - 0x2c, - 0x20, - 0x6c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x28, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x38, - 0x32, - 0x30, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x30, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x2c, - 0x20, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x34, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x20, - 0x2d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x33, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x31, - 0x33, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x30, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x30, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x30, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x72, - 0x65, - 0x61, - 0x6b, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7d, - 0x20, - 0x77, - 0x68, - 0x69, - 0x6c, - 0x65, - 0x28, - 0x66, - 0x61, - 0x6c, - 0x73, - 0x65, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x36, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x36, - 0x35, - 0x5d, - 0x2e, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x2f, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x20, - 0x5b, - 0x5b, - 0x66, - 0x75, - 0x6e, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5f, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x28, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x73, - 0x5f, - 0x66, - 0x75, - 0x6e, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5f, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x5f, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x64, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x20, - 0x3a, - 0x20, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x5f, - 0x64, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5d, - 0x5d, - 0x20, - 0x5b, - 0x32, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x30, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x31, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x5f, - 0x36, - 0x35, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x39, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x38, - 0x39, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x2c, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x32, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x2c, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x2d, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x39, - 0x31, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x30, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x30, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x30, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x3e, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x28, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x29, - 0x2c, - 0x20, - 0x6c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x28, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x38, - 0x31, - 0x37, - 0x2e, - 0x79, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x38, - 0x31, - 0x37, - 0x2e, - 0x78, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x2c, - 0x20, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x34, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x5f, - 0x34, - 0x34, - 0x38, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x37, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x36, - 0x30, - 0x35, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x35, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x34, - 0x35, - 0x30, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x39, - 0x30, - 0x5d, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x39, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x2e, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x33, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x33, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x33, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5d, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x36, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x36, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x2c, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x35, - 0x2c, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x38, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x33, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x2d, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x34, - 0x32, - 0x39, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x35, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x38, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x32, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x34, - 0x32, - 0x39, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x38, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x32, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x30, - 0x3b, - 0x00, - 0x4c, - 0x53, - 0x4c, - 0x47, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0xb2, - 0x08, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x01, - 0x90, - 0x01, - 0x00, - 0x00, - 0x01, - 0x10, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x10, - 0x01, - 0xca, - 0x01, - 0x00, - 0x00, - 0x01, - 0x20, - 0x01, - 0xde, - 0x01, - 0x00, - 0x00, - 0x01, - 0x30, - 0x01, - 0x26, - 0x03, - 0x00, - 0x00, - 0x01, - 0x44, - 0x01, - 0x68, - 0x03, - 0x00, - 0x00, - 0x01, - 0x80, - 0x00, - 0x80, - 0x03, - 0x00, - 0x00, - 0x01, - 0x90, - 0x00, - 0x80, - 0x03, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0xa8, - 0x04, - 0x00, - 0x00, - 0x02, - 0x00, - 0x01, - 0xb4, - 0x05, - 0x00, - 0x00, - 0x02, - 0x10, - 0x00, - 0xa8, - 0x04, - 0x00, - 0x00, - 0x02, - 0x10, - 0x01, - 0xec, - 0x05, - 0x00, - 0x00, - 0x02, - 0x20, - 0x01, - 0xfe, - 0x05, - 0x00, - 0x00, - 0x02, - 0x30, - 0x01, - 0x34, - 0x07, - 0x00, - 0x00, - 0x02, - 0x44, - 0x01, - 0x74, - 0x07, - 0x00, - 0x00, - 0x02, - 0x80, - 0x00, - 0x8a, - 0x07, - 0x00, - 0x00, - 0x02, - 0x90, - 0x00, - 0x8a, - 0x07, - 0x00, - 0x00, - 0x8a, - 0x09, - 0x00, - 0x00, - 0x81, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x0f, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x27, - 0x00, - 0x28, - 0x00, - 0x29, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0x2e, - 0x00, - 0x2f, - 0x00, - 0x30, - 0x00, - 0x31, - 0x00, - 0x32, - 0x00, - 0x33, - 0x00, - 0x34, - 0x00, - 0x35, - 0x00, - 0x36, - 0x00, - 0x37, - 0x00, - 0x38, - 0x00, - 0x39, - 0x00, - 0x3a, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0x3d, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - 0x00, - 0x43, - 0x00, - 0x44, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0x4a, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0x4e, - 0x00, - 0x4f, - 0x00, - 0x50, - 0x00, - 0x51, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0x57, - 0x00, - 0x58, - 0x00, - 0x59, - 0x00, - 0x5a, - 0x00, - 0x5b, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x5f, - 0x00, - 0x60, - 0x00, - 0x61, - 0x00, - 0x62, - 0x00, - 0x63, - 0x00, - 0x64, - 0x00, - 0x65, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x67, - 0x00, - 0x02, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x00, - 0x69, - 0x00, - 0x6c, - 0x00, - 0x6d, - 0x00, - 0x6e, - 0x00, - 0x6f, - 0x00, - 0x70, - 0x00, - 0x71, - 0x00, - 0x72, - 0x00, - 0x73, - 0x00, - 0x74, - 0x00, - 0x75, - 0x00, - 0x76, - 0x00, - 0x69, - 0x00, - 0x16, - 0x02, - 0x00, - 0x00, - 0x19, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x79, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x04, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x82, - 0x00, - 0x83, - 0x00, - 0x02, - 0x00, - 0x84, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x87, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x88, - 0x00, - 0x69, - 0x00, - 0x51, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x69, - 0x00, - 0x9b, - 0x0c, - 0x00, - 0x00, - 0xa0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x79, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x04, - 0x00, - 0x89, - 0x00, - 0x8a, - 0x00, - 0x8b, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x84, - 0x00, - 0x8c, - 0x00, - 0x8d, - 0x00, - 0x8e, - 0x00, - 0x8f, - 0x00, - 0x90, - 0x00, - 0x91, - 0x00, - 0x92, - 0x00, - 0x93, - 0x00, - 0x94, - 0x00, - 0x95, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x99, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0xac, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0xbb, - 0x00, - 0xbc, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0xbf, - 0x00, - 0xc0, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0xc3, - 0x00, - 0xc4, - 0x00, - 0xc5, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0xd0, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0x61, - 0x00, - 0x83, - 0x00, - 0x02, - 0x00, - 0x84, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0xd4, - 0x00, - 0xd5, - 0x00, - 0x87, - 0x00, - 0xd6, - 0x00, - 0x02, - 0x00, - 0xd7, - 0x00, - 0xd8, - 0x00, - 0x02, - 0x00, - 0xd9, - 0x00, - 0x69, - 0x00, - 0xda, - 0x00, - 0xdb, - 0x00, - 0xdc, - 0x00, - 0x02, - 0x00, - 0xdd, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xde, - 0x00, - 0x69, - 0x00, - 0xdf, - 0x00, - 0xe0, - 0x00, - 0xe1, - 0x00, - 0xe2, - 0x00, - 0xe3, - 0x00, - 0x02, - 0x00, - 0xe4, - 0x00, - 0xe5, - 0x00, - 0xe6, - 0x00, - 0xe7, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xe8, - 0x00, - 0x69, - 0x00, - 0xe9, - 0x00, - 0xea, - 0x00, - 0xeb, - 0x00, - 0x02, - 0x00, - 0xec, - 0x00, - 0xed, - 0x00, - 0xee, - 0x00, - 0xef, - 0x00, - 0xf0, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xf1, - 0x00, - 0x69, - 0x00, - 0xf2, - 0x00, - 0xf3, - 0x00, - 0xf4, - 0x00, - 0xf5, - 0x00, - 0xf6, - 0x00, - 0xd9, - 0x00, - 0x69, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0xf7, - 0x00, - 0xf8, - 0x00, - 0xf9, - 0x00, - 0xfa, - 0x00, - 0xfb, - 0x00, - 0x69, - 0x00, - 0xec, - 0x02, - 0x00, - 0x00, - 0x1d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0xfc, - 0x00, - 0xfd, - 0x00, - 0xfe, - 0x00, - 0xff, - 0x00, - 0x00, - 0x01, - 0x01, - 0x01, - 0x02, - 0x01, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x03, - 0x01, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x04, - 0x01, - 0x05, - 0x01, - 0x66, - 0x00, - 0x02, - 0x00, - 0x06, - 0x01, - 0x07, - 0x01, - 0x69, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x87, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x08, - 0x01, - 0x69, - 0x00, - 0x48, - 0x0c, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x09, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x0a, - 0x01, - 0x0b, - 0x01, - 0x0f, - 0x00, - 0x0c, - 0x01, - 0x11, - 0x00, - 0x12, - 0x00, - 0x0f, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x27, - 0x00, - 0x28, - 0x00, - 0x29, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0x2e, - 0x00, - 0x2f, - 0x00, - 0x30, - 0x00, - 0x31, - 0x00, - 0x32, - 0x00, - 0x33, - 0x00, - 0x34, - 0x00, - 0x35, - 0x00, - 0x36, - 0x00, - 0x37, - 0x00, - 0x38, - 0x00, - 0x39, - 0x00, - 0x3a, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0x3d, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - 0x00, - 0x43, - 0x00, - 0x44, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0x4a, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0x4e, - 0x00, - 0x4f, - 0x00, - 0x50, - 0x00, - 0x51, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0x57, - 0x00, - 0x58, - 0x00, - 0x59, - 0x00, - 0x5a, - 0x00, - 0x5b, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x5f, - 0x00, - 0x60, - 0x00, - 0x61, - 0x00, - 0x63, - 0x00, - 0x62, - 0x00, - 0x64, - 0x00, - 0x65, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x67, - 0x00, - 0x02, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x00, - 0x69, - 0x00, - 0x0d, - 0x01, - 0x0e, - 0x01, - 0x0f, - 0x01, - 0x10, - 0x01, - 0x11, - 0x01, - 0x12, - 0x01, - 0x13, - 0x01, - 0x14, - 0x01, - 0x15, - 0x01, - 0x16, - 0x01, - 0x17, - 0x01, - 0x18, - 0x01, - 0x19, - 0x01, - 0x1a, - 0x01, - 0x1b, - 0x01, - 0x1c, - 0x01, - 0x1d, - 0x01, - 0x1e, - 0x01, - 0x1f, - 0x01, - 0x20, - 0x01, - 0x21, - 0x01, - 0x69, - 0x00, - 0xca, - 0x08, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x0f, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x39, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0x3d, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0x40, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0x43, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xbd, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0x50, - 0x00, - 0xc4, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0x5b, - 0x00, - 0xcf, - 0x00, - 0xd0, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0x61, - 0x00, - 0x62, - 0x00, - 0x24, - 0x01, - 0x25, - 0x01, - 0x26, - 0x01, - 0x66, - 0x00, - 0x02, - 0x00, - 0x67, - 0x00, - 0x02, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x00, - 0x69, - 0x00, - 0x27, - 0x01, - 0x28, - 0x01, - 0x29, - 0x01, - 0x2a, - 0x01, - 0x70, - 0x00, - 0x71, - 0x00, - 0x72, - 0x00, - 0x2b, - 0x01, - 0x74, - 0x00, - 0x75, - 0x00, - 0x76, - 0x00, - 0x69, - 0x00, - 0x11, - 0x02, - 0x00, - 0x00, - 0x18, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x79, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x04, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x82, - 0x00, - 0x83, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x87, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x88, - 0x00, - 0x69, - 0x00, - 0x52, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x66, - 0x00, - 0x02, - 0x00, - 0x69, - 0x00, - 0xbf, - 0x0a, - 0x00, - 0x00, - 0x97, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x79, - 0x00, - 0x02, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x04, - 0x00, - 0x89, - 0x00, - 0x8a, - 0x00, - 0x8b, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x39, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0x3d, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0x40, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0x43, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xbd, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0x50, - 0x00, - 0xc4, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0x5b, - 0x00, - 0xcf, - 0x00, - 0xd0, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0x61, - 0x00, - 0x83, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x2c, - 0x01, - 0x2d, - 0x01, - 0x87, - 0x00, - 0x2e, - 0x01, - 0x02, - 0x00, - 0x2f, - 0x01, - 0xd8, - 0x00, - 0x02, - 0x00, - 0xd9, - 0x00, - 0x69, - 0x00, - 0x30, - 0x01, - 0x31, - 0x01, - 0xdc, - 0x00, - 0x02, - 0x00, - 0xdd, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xde, - 0x00, - 0x69, - 0x00, - 0x32, - 0x01, - 0xe2, - 0x00, - 0xe3, - 0x00, - 0x02, - 0x00, - 0x33, - 0x01, - 0x34, - 0x01, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xe8, - 0x00, - 0x69, - 0x00, - 0xe9, - 0x00, - 0xea, - 0x00, - 0xeb, - 0x00, - 0x02, - 0x00, - 0x35, - 0x01, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0xf1, - 0x00, - 0x69, - 0x00, - 0xf2, - 0x00, - 0xf3, - 0x00, - 0xf4, - 0x00, - 0xf5, - 0x00, - 0xf6, - 0x00, - 0xd9, - 0x00, - 0x69, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0xf7, - 0x00, - 0xf8, - 0x00, - 0x36, - 0x01, - 0xfa, - 0x00, - 0xfb, - 0x00, - 0x69, - 0x00, - 0xcc, - 0x02, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x03, - 0x01, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x37, - 0x01, - 0x38, - 0x01, - 0x66, - 0x00, - 0x02, - 0x00, - 0x06, - 0x01, - 0x07, - 0x01, - 0x69, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x87, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x08, - 0x01, - 0x69, - 0x00, - 0x66, - 0x0b, - 0x00, - 0x00, - 0x90, - 0x00, - 0x00, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x02, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x04, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x0a, - 0x01, - 0x0b, - 0x01, - 0x0f, - 0x00, - 0x0c, - 0x01, - 0x11, - 0x00, - 0x12, - 0x00, - 0x0f, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x02, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x02, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x39, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0x3d, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0x40, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0x43, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xbd, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0x50, - 0x00, - 0xc4, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0x5b, - 0x00, - 0xcf, - 0x00, - 0xd0, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0x61, - 0x00, - 0x24, - 0x01, - 0x62, - 0x00, - 0x25, - 0x01, - 0x26, - 0x01, - 0x66, - 0x00, - 0x02, - 0x00, - 0x67, - 0x00, - 0x02, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x6a, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x00, - 0x69, - 0x00, - 0x39, - 0x01, - 0x3a, - 0x01, - 0x3b, - 0x01, - 0x3c, - 0x01, - 0x3d, - 0x01, - 0x3e, - 0x01, - 0x3f, - 0x01, - 0x40, - 0x01, - 0x41, - 0x01, - 0x42, - 0x01, - 0x43, - 0x01, - 0x44, - 0x01, - 0x45, - 0x01, - 0x46, - 0x01, - 0x47, - 0x01, - 0x48, - 0x01, - 0x49, - 0x01, - 0x4a, - 0x01, - 0x4b, - 0x01, - 0x4c, - 0x01, - 0x4d, - 0x01, - 0x69, - 0x00, - 0x4c, - 0x54, - 0x45, - 0x4d, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0xc4, - 0x08, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x01, - 0x96, - 0x01, - 0x00, - 0x00, - 0x01, - 0x10, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x10, - 0x01, - 0xcc, - 0x01, - 0x00, - 0x00, - 0x01, - 0x20, - 0x01, - 0xe6, - 0x01, - 0x00, - 0x00, - 0x01, - 0x30, - 0x01, - 0x4e, - 0x03, - 0x00, - 0x00, - 0x01, - 0x44, - 0x01, - 0xb2, - 0x03, - 0x00, - 0x00, - 0x01, - 0x80, - 0x00, - 0xdc, - 0x03, - 0x00, - 0x00, - 0x01, - 0x90, - 0x00, - 0xdc, - 0x03, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x16, - 0x05, - 0x00, - 0x00, - 0x02, - 0x00, - 0x01, - 0x96, - 0x01, - 0x00, - 0x00, - 0x02, - 0x10, - 0x00, - 0x16, - 0x05, - 0x00, - 0x00, - 0x02, - 0x10, - 0x01, - 0xcc, - 0x01, - 0x00, - 0x00, - 0x02, - 0x20, - 0x01, - 0x26, - 0x06, - 0x00, - 0x00, - 0x02, - 0x30, - 0x01, - 0x4e, - 0x03, - 0x00, - 0x00, - 0x02, - 0x44, - 0x01, - 0xb2, - 0x03, - 0x00, - 0x00, - 0x02, - 0x80, - 0x00, - 0x8a, - 0x07, - 0x00, - 0x00, - 0x02, - 0x90, - 0x00, - 0x8a, - 0x07, - 0x00, - 0x00, - 0xea, - 0x0d, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x59, - 0x01, - 0x50, - 0x01, - 0x5a, - 0x01, - 0x02, - 0x00, - 0x5b, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0xa8, - 0x01, - 0xa9, - 0x01, - 0xaa, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xac, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xad, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xaf, - 0x01, - 0xb0, - 0x01, - 0xb1, - 0x01, - 0xb2, - 0x01, - 0xb3, - 0x01, - 0xb4, - 0x01, - 0xb5, - 0x01, - 0xb6, - 0x01, - 0xb7, - 0x01, - 0xb8, - 0x01, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0x92, - 0x01, - 0x00, - 0x00, - 0x17, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0xba, - 0x01, - 0x02, - 0x00, - 0xbb, - 0x01, - 0xbc, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xbd, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xbe, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xbf, - 0x01, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0x64, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0xc0, - 0x01, - 0x02, - 0x00, - 0x69, - 0x00, - 0x50, - 0x01, - 0x6a, - 0x16, - 0x00, - 0x00, - 0xb0, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xba, - 0x01, - 0x02, - 0x00, - 0xbb, - 0x01, - 0xbc, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xc1, - 0x01, - 0xc2, - 0x01, - 0xc3, - 0x01, - 0xc4, - 0x01, - 0xc5, - 0x01, - 0xc6, - 0x01, - 0xc7, - 0x01, - 0xc8, - 0x01, - 0xc9, - 0x01, - 0xca, - 0x01, - 0xcb, - 0x01, - 0xcc, - 0x01, - 0xcd, - 0x01, - 0xce, - 0x01, - 0xcf, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xbd, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xd0, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xd1, - 0x01, - 0xd2, - 0x01, - 0xd3, - 0x01, - 0xd4, - 0x01, - 0xd5, - 0x01, - 0xd6, - 0x01, - 0xd7, - 0x01, - 0xd8, - 0x01, - 0xd9, - 0x01, - 0xda, - 0x01, - 0xdb, - 0x01, - 0xdc, - 0x01, - 0xdd, - 0x01, - 0xde, - 0x01, - 0xdf, - 0x01, - 0xe0, - 0x01, - 0xd9, - 0x01, - 0xe1, - 0x01, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0xe3, - 0x01, - 0xdc, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe6, - 0x01, - 0xe7, - 0x01, - 0xd9, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0xea, - 0x01, - 0xdc, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xd9, - 0x01, - 0xee, - 0x01, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0xef, - 0x01, - 0xdc, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0xbc, - 0x03, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x59, - 0x01, - 0x50, - 0x01, - 0x5a, - 0x01, - 0x02, - 0x00, - 0x5b, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xfa, - 0x01, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xfb, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xa8, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xfc, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0xec, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xbd, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xff, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0x00, - 0x02, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0x1a, - 0x12, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x59, - 0x01, - 0x50, - 0x01, - 0x5a, - 0x01, - 0x02, - 0x00, - 0x5b, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x01, - 0x02, - 0x02, - 0x02, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0xa8, - 0x01, - 0xa9, - 0x01, - 0xaa, - 0x01, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xac, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xad, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xaf, - 0x01, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0xea, - 0x0d, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x59, - 0x01, - 0x50, - 0x01, - 0x5a, - 0x01, - 0x02, - 0x00, - 0x5b, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0xa8, - 0x01, - 0xa9, - 0x01, - 0xaa, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xac, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xad, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xaf, - 0x01, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0xb7, - 0x01, - 0xb8, - 0x01, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0x12, - 0x16, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xba, - 0x01, - 0x02, - 0x00, - 0xbb, - 0x01, - 0xbc, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xc1, - 0x01, - 0xc2, - 0x01, - 0xc3, - 0x01, - 0xc4, - 0x01, - 0xc5, - 0x01, - 0xc6, - 0x01, - 0xc7, - 0x01, - 0xc8, - 0x01, - 0xc9, - 0x01, - 0xca, - 0x01, - 0xcb, - 0x01, - 0xcc, - 0x01, - 0xcd, - 0x01, - 0xce, - 0x01, - 0xcf, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xbd, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xd0, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xbf, - 0x01, - 0xd3, - 0x01, - 0x25, - 0x02, - 0x26, - 0x02, - 0xd5, - 0x01, - 0xd6, - 0x01, - 0xd7, - 0x01, - 0xd8, - 0x01, - 0xd9, - 0x01, - 0x27, - 0x02, - 0xdb, - 0x01, - 0xdc, - 0x01, - 0xdd, - 0x01, - 0xde, - 0x01, - 0xdf, - 0x01, - 0xe0, - 0x01, - 0xd9, - 0x01, - 0xe1, - 0x01, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0xe3, - 0x01, - 0xdc, - 0x01, - 0x28, - 0x02, - 0x29, - 0x02, - 0xe7, - 0x01, - 0xd9, - 0x01, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0x2c, - 0x02, - 0xdc, - 0x01, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0xed, - 0x01, - 0xd9, - 0x01, - 0x2f, - 0x02, - 0xdc, - 0x01, - 0xe2, - 0x01, - 0xd9, - 0x01, - 0xef, - 0x01, - 0xdc, - 0x01, - 0x30, - 0x02, - 0x31, - 0x02, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0x32, - 0x02, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, - 0x3b, - 0x12, - 0x00, - 0x00, - 0x99, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x02, - 0x00, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x59, - 0x01, - 0x50, - 0x01, - 0x5a, - 0x01, - 0x02, - 0x00, - 0x5b, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0x01, - 0x02, - 0x02, - 0x02, - 0x50, - 0x01, - 0x5c, - 0x01, - 0x02, - 0x00, - 0x5d, - 0x01, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x6b, - 0x01, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xa6, - 0x01, - 0x02, - 0x00, - 0xa7, - 0x01, - 0xa8, - 0x01, - 0xa9, - 0x01, - 0xaa, - 0x01, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x04, - 0x00, - 0x50, - 0x01, - 0xab, - 0x01, - 0x02, - 0x00, - 0xac, - 0x01, - 0x04, - 0x00, - 0x50, - 0x01, - 0xad, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xaf, - 0x01, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0x36, - 0x02, - 0x37, - 0x02, - 0x38, - 0x02, - 0x39, - 0x02, - 0x3a, - 0x02, - 0x3b, - 0x02, - 0x3c, - 0x02, - 0x3d, - 0x02, - 0x3e, - 0x02, - 0x3f, - 0x02, - 0x40, - 0x02, - 0x41, - 0x02, - 0x42, - 0x02, - 0x43, - 0x02, - 0x44, - 0x02, - 0x45, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x48, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0xb9, - 0x01, - 0x69, - 0x00, - 0x50, - 0x01, +// GIZMO +0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x06, 0x00, 0x00, +0x00, 0x47, 0x69, 0x7a, 0x6d, 0x6f, 0x00, 0x4c, 0x44, 0x4d, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, +0x00, 0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, +0x98, 0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, +0x74, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x00, 0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0xcb, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x00, 0x09, 0x01, +0x01, 0x0a, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, +0x73, 0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, +0x6f, 0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, +0x09, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x3b, +0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x02, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x07, 0x00, 0x20, 0x42, 0x49, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x4e, 0x4f, +0x43, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x55, +0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x45, +0x4c, 0x42, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x4d, 0x01, +0x00, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x52, 0x57, +0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, +0x00, 0x00, 0x01, 0x49, 0x52, 0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x45, 0x54, 0x44, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x66, 0x67, 0xec, 0x49, 0xc7, 0x6b, 0x8c, +0xf9, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, +0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x41, 0x41, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, 0x53, 0x5f, +0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, +0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, +0x52, 0x54, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0xd5, 0x56, 0x00, 0x00, 0x69, 0x02, +0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, 0x73, 0x74, +0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, 0x65, +0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, 0x6e, +0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x74, +0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, +0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, +0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, +0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x00, 0x23, +0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, +0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x23, 0x65, 0x6e, 0x64, +0x69, 0x66, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x31, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, +0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x00, 0x23, 0x64, 0x65, +0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, +0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x00, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, +0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, +0x44, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, +0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, +0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, +0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, +0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, +0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x62, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, +0x69, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x32, 0x20, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, +0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x61, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, +0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x6f, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x73, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, +0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, +0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, +0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, +0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, +0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, +0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, +0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x6f, 0x69, +0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, +0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x20, +0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x33, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, +0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, +0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x35, +0x3b, 0x00, 0x5f, 0x33, 0x38, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x5f, +0x33, 0x38, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x34, +0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, +0x37, 0x35, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, +0x2a, 0x20, 0x5f, 0x33, 0x38, 0x34, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, +0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, +0x35, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x33, 0x32, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x33, +0x32, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x3b, 0x00, 0x70, 0x72, 0x65, +0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x69, 0x6e, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x6c, +0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x7d, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, +0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, +0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, +0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x33, +0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, +0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, +0x33, 0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, +0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x37, 0x32, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x37, +0x33, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x6a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x70, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x63, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, +0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, +0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, +0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x70, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, +0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, +0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, +0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, +0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, +0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, +0x69, 0x66, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6c, +0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, +0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x31, +0x34, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, +0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, +0x20, 0x2d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, +0x2e, 0x78, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x29, 0x29, 0x20, 0x2f, 0x20, +0x5f, 0x32, 0x31, 0x34, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, +0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x34, 0x37, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, +0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, +0x34, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, +0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x30, 0x32, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, +0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x20, +0x3d, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, +0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, +0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, +0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, +0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x6d, +0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x30, 0x34, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, +0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, +0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, +0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, +0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, +0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, +0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x70, +0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x35, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, +0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x37, 0x32, 0x20, 0x3d, +0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x20, +0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, +0x20, 0x28, 0x5f, 0x33, 0x37, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x5f, 0x32, 0x35, 0x34, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, +0x32, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x78, +0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x79, 0x3b, 0x00, +0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x66, 0x72, +0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, +0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x35, +0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, +0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, +0x35, 0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, +0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, +0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, +0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2c, +0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, +0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, +0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, +0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, +0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x42, 0x69, 0x74, 0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, +0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, +0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, +0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, +0x20, 0x47, 0x4c, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, +0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, +0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, +0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, +0x49, 0x44, 0x5f, 0x38, 0x20, 0x32, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, +0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x20, 0x3d, 0x20, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x5f, +0x37, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x34, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, +0x2a, 0x20, 0x5f, 0x37, 0x37, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x37, 0x3b, 0x00, 0x5f, 0x38, 0x38, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, +0x5f, 0x38, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x7a, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, +0x38, 0x38, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, +0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x31, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x5f, 0x31, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, +0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x20, +0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x31, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x39, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, +0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x20, +0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x37, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x29, +0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, +0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x39, +0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, +0x5f, 0x31, 0x30, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, +0x20, 0x34, 0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, +0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, +0x70, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, +0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, +0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, +0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, +0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, +0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, +0x5f, 0x33, 0x35, 0x36, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x3b, 0x00, 0x5f, 0x33, +0x38, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x35, 0x2e, +0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x35, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x20, 0x3d, +0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, +0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, +0x38, 0x35, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x3b, 0x00, +0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, +0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, +0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, +0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, +0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, +0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, +0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, +0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, +0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, +0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, +0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, +0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, +0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, +0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, +0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, +0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, +0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, +0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, +0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, +0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, +0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, +0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x32, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x32, 0x31, 0x33, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, +0x2e, 0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, +0x38, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x78, 0x3b, 0x00, +0x5f, 0x34, 0x36, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x34, 0x36, +0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x34, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, +0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x32, 0x31, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x36, 0x31, 0x29, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x32, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x79, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x32, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x32, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2a, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, +0x34, 0x37, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x34, 0x38, +0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x32, 0x33, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, +0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, +0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, +0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, +0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, 0x29, 0x29, 0x3b, +0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x7a, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x33, 0x3b, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, +0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x00, 0x23, 0x69, +0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, +0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, +0x74, 0x61, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, +0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, +0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, +0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, +0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, +0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, +0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, +0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, +0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, +0x61, 0x74, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, +0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, +0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, +0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, 0x6f, 0x69, 0x73, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, +0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, +0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, +0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, +0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x73, +0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, +0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x4f, 0x76, +0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, 0x6d, 0x70, 0x6c, +0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, 0x44, 0x69, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x42, +0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x7a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, +0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x43, 0x6f, +0x75, 0x6e, 0x74, 0x58, 0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, +0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x69, 0x62, 0x6c, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, 0x65, 0x76, 0x65, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, 0x53, 0x48, 0x5b, +0x39, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, +0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x73, 0x75, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x68, 0x61, +0x64, 0x6f, 0x77, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, +0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, +0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, 0x61, 0x74, 0x69, +0x6f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x45, +0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, +0x73, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, 0x52, 0x65, 0x64, +0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, +0x64, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x44, 0x65, +0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, +0x66, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, +0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, +0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, +0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, +0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, +0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x55, 0x76, +0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, 0x72, 0x69, 0x64, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, +0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, 0x30, 0x39, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, +0x65, 0x64, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, +0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, +0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x73, 0x74, +0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, +0x63, 0x6e, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, +0x63, 0x6e, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, +0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, +0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, +0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, +0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, +0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x49, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, +0x20, 0x5f, 0x33, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, +0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, +0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, +0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, +0x36, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x33, 0x36, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x38, +0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, +0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x32, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, +0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, +0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, +0x6f, 0x75, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, +0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, +0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, +0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, +0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x20, +0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x20, 0x5b, +0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, +0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x20, +0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, +0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, +0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, +0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, +0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, +0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, +0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x36, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, +0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, +0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, +0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x38, 0x29, 0x5d, 0x5d, +0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x53, +0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, +0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, +0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, +0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x31, 0x29, 0x5d, 0x5d, +0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, +0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x32, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, +0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, +0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, +0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, +0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, +0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, +0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, +0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, +0x34, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, +0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x00, 0x20, 0x20, 0x20, +0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, +0x31, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x38, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, +0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x36, 0x31, 0x38, 0x29, +0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, +0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, +0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x31, 0x5d, 0x29, +0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x36, 0x31, 0x38, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x3d, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x38, 0x31, 0x30, +0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, +0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, +0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, +0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, +0x20, 0x5f, 0x38, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, +0x20, 0x5f, 0x37, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x31, 0x34, 0x20, 0x3d, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, +0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x5f, +0x38, 0x32, 0x34, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, +0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, +0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, +0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, +0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, +0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, +0x78, 0x28, 0x5f, 0x38, 0x31, 0x34, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, +0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x29, 0x2c, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, +0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, +0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, +0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, +0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, +0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, +0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, +0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, +0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x37, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, +0x5f, 0x38, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, +0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x5f, 0x38, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x37, 0x35, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, +0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x28, 0x5f, 0x38, 0x30, 0x35, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x31, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, +0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, +0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, +0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, +0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, +0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x73, +0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, 0x5d, 0x2e, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, +0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x69, 0x6e, 0x2e, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, +0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, +0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x5b, +0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x28, 0x38, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, +0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, +0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5d, 0x5d, +0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, +0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x5b, +0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x5f, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, +0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, +0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x37, 0x29, 0x29, 0x2e, 0x78, 0x79, +0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x5f, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, +0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x38, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x38, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x38, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x79, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x7a, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x38, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x39, 0x20, 0x3d, 0x20, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x31, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x36, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, +0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x20, 0x3d, +0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x39, 0x39, 0x2c, 0x20, 0x66, 0x6d, 0x61, +0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2c, 0x20, 0x28, 0x2d, +0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x20, 0x3d, 0x20, +0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, +0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x5f, 0x31, 0x30, +0x31, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, +0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, +0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x35, 0x20, 0x3d, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, +0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, +0x35, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x35, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x30, 0x2e, +0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x30, +0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, +0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x39, +0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, +0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, +0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, +0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, +0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x39, +0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, +0x20, 0x5f, 0x38, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, +0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, +0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, +0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, +0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, +0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, +0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, +0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, +0x78, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x31, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x28, 0x5f, 0x38, 0x31, 0x31, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, +0x61, 0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, +0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, +0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, +0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, +0x20, 0x2a, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, +0x6f, 0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, +0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, +0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, +0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, +0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, +0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, +0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x38, 0x30, +0x34, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, +0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x20, +0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x34, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, +0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, +0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, +0x32, 0x30, 0x35, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, +0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x5f, 0x34, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, +0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, +0x34, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x34, 0x34, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x32, 0x30, 0x35, 0x5d, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, +0x33, 0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, +0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x32, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, +0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x32, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x33, 0x36, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, +0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x20, 0x3d, +0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x32, 0x33, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x2c, 0x20, 0x66, +0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x2c, +0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, +0x36, 0x33, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x32, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, +0x35, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x35, +0x39, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x2c, +0x20, 0x5f, 0x32, 0x36, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, +0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x35, 0x39, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, +0x33, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x2c, +0x20, 0x5f, 0x32, 0x36, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x30, 0x35, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, 0x54, 0x41, 0x4d, 0xd6, 0x08, 0x00, 0x00, 0x12, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x98, 0x01, 0x00, +0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xd2, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xe6, 0x01, +0x00, 0x00, 0x01, 0x30, 0x01, 0x30, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0x72, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x8a, +0x03, 0x00, 0x00, 0x01, 0x90, 0x00, 0x8a, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0xba, 0x04, 0x00, 0x00, 0x02, 0x00, 0x01, +0xce, 0x05, 0x00, 0x00, 0x02, 0x10, 0x00, 0xba, 0x04, 0x00, 0x00, 0x02, 0x10, 0x01, 0x06, 0x06, 0x00, 0x00, 0x02, 0x20, +0x01, 0x18, 0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x50, 0x07, 0x00, 0x00, 0x02, 0x44, 0x01, 0x90, 0x07, 0x00, 0x00, 0x02, +0x80, 0x00, 0xa6, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xa6, 0x07, 0x00, 0x00, 0x16, 0x0a, 0x00, 0x00, 0x85, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, +0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, +0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, +0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, +0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, +0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, +0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, +0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, 0x00, 0x67, +0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, +0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, +0x00, 0x79, 0x00, 0x7a, 0x00, 0x69, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, +0x00, 0x7d, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x84, +0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x02, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, +0x00, 0x8c, 0x00, 0x69, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x66, +0x00, 0x02, 0x00, 0x69, 0x00, 0xaf, 0x0c, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, +0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x8e, +0x00, 0x8f, 0x00, 0x17, 0x00, 0x02, 0x00, 0x88, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, +0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, +0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, +0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, +0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, +0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, +0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, +0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, 0x00, 0x87, 0x00, 0x02, 0x00, 0x88, +0x00, 0x89, 0x00, 0x8a, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0x8b, 0x00, 0xda, 0x00, 0x02, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0x02, +0x00, 0xdd, 0x00, 0x69, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, +0x00, 0xe2, 0x00, 0x69, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0x02, 0x00, 0xe8, 0x00, 0xe9, +0x00, 0xea, 0x00, 0xeb, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xec, 0x00, 0x69, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef, +0x00, 0x02, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xf5, +0x00, 0x69, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x66, +0x00, 0x02, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x00, 0x01, 0x69, 0x00, 0xec, 0x02, 0x00, 0x00, 0x1d, +0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, +0x01, 0x05, 0x01, 0x06, 0x01, 0x07, 0x01, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x08, 0x01, 0x14, +0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x09, 0x01, 0x0a, 0x01, 0x66, 0x00, 0x02, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x69, +0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, +0x00, 0x0d, 0x01, 0x69, 0x00, 0x98, 0x0c, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x00, 0x02, +0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x0f, 0x00, 0x11, +0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, +0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, +0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, +0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, +0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, +0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, +0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, +0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, +0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, +0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x12, 0x01, 0x13, +0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x1d, +0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, 0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, +0x01, 0x28, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x69, 0x00, 0x56, 0x09, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, +0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, +0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, +0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, +0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, +0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, +0x00, 0xaf, 0x00, 0x39, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, 0x00, 0xb8, +0x00, 0xb9, 0x00, 0x43, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, 0x00, 0x4b, +0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, +0x00, 0x56, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, +0x00, 0xd7, 0x00, 0x61, 0x00, 0x62, 0x00, 0x2d, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, +0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, +0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x38, 0x01, 0x78, 0x00, 0x79, +0x00, 0x7a, 0x00, 0x69, 0x00, 0x06, 0x02, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x7d, 0x00, 0x02, +0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, +0x00, 0x87, 0x00, 0x02, 0x00, 0x18, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x69, +0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x66, 0x00, 0x02, 0x00, 0x69, 0x00, 0xd3, +0x0a, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x7d, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, +0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, +0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, +0x00, 0xae, 0x00, 0xaf, 0x00, 0x39, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, +0x00, 0xb8, 0x00, 0xb9, 0x00, 0x43, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, +0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, +0x00, 0x55, 0x00, 0x56, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, +0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, 0x00, 0x87, 0x00, 0x02, 0x00, 0x18, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x39, 0x01, 0x3a, +0x01, 0x8b, 0x00, 0x3b, 0x01, 0x02, 0x00, 0x3c, 0x01, 0xdc, 0x00, 0x02, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x3d, 0x01, 0x3e, +0x01, 0xe0, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x69, 0x00, 0x3f, 0x01, 0xe6, +0x00, 0xe7, 0x00, 0x02, 0x00, 0x40, 0x01, 0x41, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xec, 0x00, 0x69, 0x00, 0xed, +0x00, 0xee, 0x00, 0xef, 0x00, 0x02, 0x00, 0x42, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xf5, 0x00, 0x69, 0x00, 0xf6, +0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x66, 0x00, 0x02, 0x00, 0xfc, +0x00, 0xfd, 0x00, 0x43, 0x01, 0xff, 0x00, 0x00, 0x01, 0x69, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2b, +0x01, 0x2c, 0x01, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, +0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x08, 0x01, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, +0x00, 0x44, 0x01, 0x45, 0x01, 0x66, 0x00, 0x02, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x69, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, +0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x8b, 0x00, 0x66, 0x00, 0x02, 0x00, 0x0d, 0x01, 0x69, 0x00, 0xc1, 0x0b, 0x00, +0x00, 0x94, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, +0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x0f, 0x00, 0x11, 0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, +0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0xa5, 0x00, 0xa6, +0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0x39, +0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0x43, +0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, +0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xce, +0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, +0x00, 0x2d, 0x01, 0x62, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, +0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x4b, +0x01, 0x4c, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, +0x01, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x69, +0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0xe4, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x9e, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, +0x00, 0x00, 0x01, 0x10, 0x01, 0xd4, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xee, 0x01, 0x00, 0x00, 0x01, 0x30, 0x01, 0x56, +0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0xba, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x01, 0x90, 0x00, +0xe4, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x02, 0x00, 0x01, 0x9e, 0x01, 0x00, 0x00, 0x02, 0x10, +0x00, 0x26, 0x05, 0x00, 0x00, 0x02, 0x10, 0x01, 0xd4, 0x01, 0x00, 0x00, 0x02, 0x20, 0x01, 0x3e, 0x06, 0x00, 0x00, 0x02, +0x30, 0x01, 0x56, 0x03, 0x00, 0x00, 0x02, 0x44, 0x01, 0xba, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0xa2, 0x07, 0x00, 0x00, +0x02, 0x90, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, +0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, +0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, +0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, +0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, +0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, +0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, +0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, +0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, +0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, +0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, +0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, +0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, +0x01, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x71, 0x01, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0xcf, 0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, +0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xce, 0x01, 0x69, 0x00, 0x61, +0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0xd5, +0x01, 0x02, 0x00, 0x69, 0x00, 0x61, 0x01, 0x5d, 0x16, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, +0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, +0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, +0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, +0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, +0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, +0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, +0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, 0x01, 0xcf, +0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xd9, 0x01, 0xda, +0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, +0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xb8, +0x01, 0x04, 0x00, 0x61, 0x01, 0xe5, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0xe9, +0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, +0x01, 0xec, 0x01, 0xf4, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xf6, 0x01, 0xef, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, +0x01, 0xfa, 0x01, 0xfb, 0x01, 0xec, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xfe, 0x01, 0xef, +0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0xec, 0x01, 0x02, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x03, 0x02, 0xef, +0x01, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, +0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, +0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, +0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0e, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0x0f, 0x02, 0x04, 0x00, 0x61, +0x01, 0xbc, 0x01, 0x02, 0x00, 0xb9, 0x01, 0x04, 0x00, 0x61, 0x01, 0x10, 0x02, 0x02, 0x00, 0xbf, 0x01, 0x11, 0x02, 0x12, +0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0x13, 0x02, 0x02, 0x00, 0xbf, +0x01, 0x14, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x73, 0x12, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, +0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, +0x01, 0x68, 0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, +0x01, 0x02, 0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, +0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, +0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, +0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, +0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, +0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, +0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, +0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, +0x00, 0x61, 0x01, 0x15, 0x02, 0x16, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, +0x01, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, +0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, +0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, +0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, +0x02, 0x34, 0x02, 0x35, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x80, 0x0e, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x5f, +0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, +0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, +0x01, 0x6b, 0x01, 0x02, 0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, +0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, +0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, +0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, +0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, +0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, +0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, +0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, +0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x04, 0x00, 0x61, +0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x36, +0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0x40, +0x02, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xfc, 0x15, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x5f, +0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, +0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, +0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, +0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, +0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, +0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, +0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, +0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, +0x00, 0x61, 0x01, 0xcf, 0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, +0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, +0x01, 0xe3, 0x01, 0xe4, 0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, +0x01, 0x02, 0x00, 0xb8, 0x01, 0x04, 0x00, 0x61, 0x01, 0xe5, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xe6, 0x01, 0x41, +0x02, 0x42, 0x02, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0x43, 0x02, 0xee, 0x01, 0xef, 0x01, 0xf0, +0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xec, 0x01, 0xf4, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xf6, 0x01, 0xef, +0x01, 0x44, 0x02, 0x45, 0x02, 0xfb, 0x01, 0xec, 0x01, 0x46, 0x02, 0x47, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x48, +0x02, 0xef, 0x01, 0x49, 0x02, 0x4a, 0x02, 0x01, 0x02, 0xec, 0x01, 0x4b, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x03, +0x02, 0xef, 0x01, 0x4c, 0x02, 0x4d, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x4e, +0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x98, 0x12, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, +0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, +0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, +0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, +0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, +0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, +0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, +0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, +0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, +0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, +0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, +0x01, 0x15, 0x02, 0x16, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x17, +0x02, 0x18, 0x02, 0x19, 0x02, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, +0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02, 0x55, +0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x5f, +0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x34, +0x02, 0x35, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, }; int GIZMO_GIZMO_OFFSET = 0; -int GIZMO_GIZMO_SIZE = 26876; +int GIZMO_GIZMO_SIZE = 27809; diff --git a/thermion_dart/native/include/material/gizmo.h b/thermion_dart/native/include/material/gizmo.h index fd62c71d..86a4282a 100644 --- a/thermion_dart/native/include/material/gizmo.h +++ b/thermion_dart/native/include/material/gizmo.h @@ -3,16 +3,11 @@ #include -#if defined(__cplusplus) -extern "C" -{ -#endif +extern "C" { extern const uint8_t GIZMO_PACKAGE[]; extern int GIZMO_GIZMO_OFFSET; extern int GIZMO_GIZMO_SIZE; -#if defined(__cplusplus) } -#endif #define GIZMO_GIZMO_DATA (GIZMO_PACKAGE + GIZMO_GIZMO_OFFSET) #endif diff --git a/thermion_dart/native/include/material/grid.S b/thermion_dart/native/include/material/grid.S new file mode 100644 index 00000000..3cb7bc24 --- /dev/null +++ b/thermion_dart/native/include/material/grid.S @@ -0,0 +1,12 @@ + .global GRID_GRID_OFFSET; + .global GRID_GRID_SIZE; + + .global GRID_PACKAGE + .section .rodata +GRID_PACKAGE: + .incbin "grid.bin" +GRID_GRID_OFFSET: + .int 0 +GRID_GRID_SIZE: + .int 30210 + diff --git a/thermion_dart/native/include/material/grid.apple.S b/thermion_dart/native/include/material/grid.apple.S new file mode 100644 index 00000000..491a62d8 --- /dev/null +++ b/thermion_dart/native/include/material/grid.apple.S @@ -0,0 +1,12 @@ + .global _GRID_GRID_OFFSET; + .global _GRID_GRID_SIZE; + + .global _GRID_PACKAGE + .section __TEXT,__const +_GRID_PACKAGE: + .incbin "grid.bin" +_GRID_GRID_OFFSET: + .int 0 +_GRID_GRID_SIZE: + .int 30210 + diff --git a/thermion_dart/native/include/material/grid.bin b/thermion_dart/native/include/material/grid.bin new file mode 100644 index 00000000..1c5dd192 Binary files /dev/null and b/thermion_dart/native/include/material/grid.bin differ diff --git a/thermion_dart/native/include/material/grid.c b/thermion_dart/native/include/material/grid.c new file mode 100644 index 00000000..f68f4007 --- /dev/null +++ b/thermion_dart/native/include/material/grid.c @@ -0,0 +1,1521 @@ +#include "grid.h" +#include + +const uint8_t GRID_PACKAGE[] = { +// GRID +0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x05, 0x00, 0x00, +0x00, 0x47, 0x72, 0x69, 0x64, 0x00, 0x4c, 0x44, 0x4d, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, 0x5f, +0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x98, +0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, 0x4f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, 0x74, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, +0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, 0x4d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, 0x5f, +0x54, 0x41, 0x4d, 0xcb, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x00, 0x09, 0x01, 0x01, +0x0a, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, +0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, +0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, +0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, +0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, 0x09, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, +0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x3d, 0x00, +0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x02, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x06, 0x03, 0x20, 0x42, 0x49, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x4e, +0x4f, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, +0x55, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, +0x45, 0x4c, 0x42, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x52, +0x57, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, +0x00, 0x00, 0x00, 0x01, 0x49, 0x52, 0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x45, 0x54, +0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, +0x00, 0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x2e, 0x93, 0xfd, 0x40, 0xe9, 0x81, +0xd0, 0x07, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x00, 0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x41, 0x41, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, 0x4d, +0x04, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x00, 0x52, 0x54, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0x63, 0x5c, 0x00, 0x00, 0x8f, +0x02, 0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, 0x73, +0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, +0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, +0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, +0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, +0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, +0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, +0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, +0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, +0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x00, +0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, +0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x23, 0x65, 0x6e, +0x64, 0x69, 0x66, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, +0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, +0x5f, 0x31, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, +0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x00, 0x23, 0x64, +0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, +0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x00, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, +0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, +0x4e, 0x44, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, +0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, +0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, +0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, +0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, +0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x20, 0x62, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, +0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, +0x20, 0x69, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, +0x20, 0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x61, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x74, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, +0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, +0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, +0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, +0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, +0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, +0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x6f, +0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, +0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x49, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x30, 0x39, +0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x38, +0x36, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x38, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x3b, 0x00, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x39, 0x38, 0x2e, +0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, +0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x39, 0x38, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, +0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, +0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x52, 0x6f, 0x75, +0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, +0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, +0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x34, +0x32, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x34, 0x33, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x34, 0x34, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, +0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, +0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, +0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, +0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x69, 0x6e, +0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, +0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x3b, 0x00, 0x7d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, +0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, +0x78, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, +0x5f, 0x33, 0x38, 0x31, 0x20, 0x3e, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x61, 0x29, 0x00, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, +0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x38, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x33, 0x38, 0x31, +0x20, 0x3e, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x2d, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x29, 0x20, 0x2f, 0x20, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2d, 0x20, 0x5f, +0x33, 0x39, 0x38, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x37, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x3b, 0x00, +0x5f, 0x34, 0x37, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x37, 0x33, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x34, 0x37, 0x32, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x2c, 0x20, +0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x34, +0x34, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x2c, +0x20, 0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x33, 0x2c, 0x20, 0x5f, +0x34, 0x34, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x36, 0x37, 0x38, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x37, 0x39, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x30, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, +0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, +0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, 0x72, 0x65, 0x74, 0x75, +0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x31, 0x35, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, +0x62, 0x73, 0x28, 0x5f, 0x32, 0x32, 0x31, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, +0x5f, 0x37, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x31, +0x29, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x3b, 0x00, 0x5f, 0x37, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x65, 0x78, +0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x31, 0x35, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, +0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, +0x79, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x32, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, +0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x35, 0x34, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x36, 0x3b, 0x00, +0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x7a, +0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x31, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x20, 0x3d, 0x20, +0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x37, 0x31, 0x36, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, +0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, +0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, +0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, +0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, +0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x78, 0x2c, 0x20, 0x63, +0x6c, 0x61, 0x6d, 0x70, 0x28, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x38, 0x31, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x37, 0x31, 0x36, 0x20, +0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x36, 0x20, 0x2a, 0x20, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x20, 0x2a, 0x20, +0x5f, 0x32, 0x36, 0x31, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x38, 0x3b, 0x00, 0x69, 0x66, +0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x20, +0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x33, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x31, 0x35, 0x20, 0x2a, 0x20, 0x6d, +0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, +0x38, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x20, +0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, +0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, +0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x3b, 0x00, 0x5f, 0x37, +0x31, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, +0x70, 0x6f, 0x77, 0x28, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x36, 0x34, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x38, 0x29, 0x29, 0x29, 0x3b, +0x00, 0x5f, 0x37, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x33, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x33, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x33, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x38, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x36, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x37, 0x31, 0x38, +0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x38, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x38, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x38, +0x2e, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, +0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, +0x78, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x31, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, +0x5f, 0x36, 0x30, 0x39, 0x20, 0x3e, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x61, 0x29, 0x00, 0x5f, 0x37, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, +0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x36, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x38, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x31, 0x34, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x39, +0x20, 0x3e, 0x20, 0x5f, 0x36, 0x32, 0x36, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x30, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x36, 0x32, 0x32, 0x3b, 0x00, 0x5f, 0x37, 0x30, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x30, 0x39, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x32, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2d, 0x20, 0x5f, +0x36, 0x32, 0x36, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x37, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x34, 0x3b, 0x00, +0x5f, 0x37, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x32, 0x3b, 0x00, 0x5f, 0x37, 0x31, 0x33, 0x20, 0x3d, 0x20, +0x5f, 0x37, 0x31, 0x34, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x37, 0x31, 0x33, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x38, 0x2c, 0x20, +0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, 0x36, +0x38, 0x30, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x38, 0x2c, +0x20, 0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x39, 0x2c, 0x20, 0x5f, +0x36, 0x38, 0x30, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, +0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x35, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2c, 0x20, 0x70, 0x61, 0x72, +0x61, 0x6d, 0x5f, 0x31, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, +0x35, 0x30, 0x37, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, +0x75, 0x6e, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, +0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x5f, 0x31, 0x36, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x69, 0x6e, 0x74, 0x42, 0x69, 0x74, 0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, 0x5d, 0x2e, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, +0x79, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x7a, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, +0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, +0x45, 0x58, 0x54, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x20, 0x3a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, +0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, +0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, +0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, +0x20, 0x32, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x53, +0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, +0x49, 0x44, 0x5f, 0x38, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x39, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x3b, 0x00, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, +0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x34, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, +0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x39, +0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, +0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x39, 0x35, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, +0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, +0x5f, 0x39, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x39, 0x31, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x39, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x5f, 0x39, 0x33, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x77, 0x29, 0x29, +0x3b, 0x00, 0x5f, 0x39, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x39, 0x31, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x5f, 0x39, 0x31, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x33, 0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x34, +0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, +0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, +0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, +0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, 0x61, 0x74, +0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x6f, 0x75, +0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x30, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, +0x31, 0x30, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x34, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, +0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, +0x65, 0x77, 0x29, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, +0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, +0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, +0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, +0x31, 0x35, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x31, 0x35, 0x20, 0x2a, 0x20, +0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, +0x20, 0x5f, 0x32, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, +0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, +0x3b, 0x00, 0x5f, 0x37, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x79, 0x2c, 0x20, 0x5f, +0x32, 0x38, 0x38, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, 0x31, 0x39, 0x33, 0x20, 0x2a, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, +0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x2c, +0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x37, +0x31, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, +0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, +0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x31, 0x35, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, +0x31, 0x39, 0x33, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x65, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, +0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, +0x7a, 0x29, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, +0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x37, 0x39, +0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x31, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x39, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x2e, 0x79, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x32, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x38, 0x36, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x3b, 0x00, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x32, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x32, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x35, 0x20, 0x2a, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, +0x31, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x35, +0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x32, 0x30, 0x35, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x77, +0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, +0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, +0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, +0x30, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x77, 0x29, 0x29, 0x3b, +0x00, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x7a, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x37, 0x39, 0x3b, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, +0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x00, 0x23, 0x69, +0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, +0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, +0x74, 0x61, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, +0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, +0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, +0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, +0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, +0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, +0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, +0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, +0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, +0x61, 0x74, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, +0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, +0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, +0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, 0x6f, 0x69, 0x73, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, +0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, +0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, +0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, +0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x73, +0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, +0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x4f, 0x76, +0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, 0x6d, 0x70, 0x6c, +0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, 0x44, 0x69, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x42, +0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x7a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, +0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x43, 0x6f, +0x75, 0x6e, 0x74, 0x58, 0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, +0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x69, 0x62, 0x6c, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, 0x65, 0x76, 0x65, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, 0x53, 0x48, 0x5b, +0x39, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, +0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x73, 0x75, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x68, 0x61, +0x64, 0x6f, 0x77, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, +0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, +0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, 0x61, 0x74, 0x69, +0x6f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x45, +0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, +0x73, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, 0x52, 0x65, 0x64, +0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, +0x64, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x44, 0x65, +0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, +0x66, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, +0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, +0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, +0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, +0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, +0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x55, 0x76, +0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, 0x72, 0x69, 0x64, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, +0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, 0x30, 0x39, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, +0x65, 0x64, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, +0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, +0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x73, 0x74, +0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, +0x63, 0x6e, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, +0x63, 0x6e, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, +0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, +0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, +0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, +0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, +0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x49, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, +0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x36, 0x39, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x30, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, +0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, +0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, +0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, +0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, +0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x31, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x33, 0x38, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, +0x5f, 0x34, 0x38, 0x31, 0x20, 0x3e, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x20, 0x5f, 0x34, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x34, +0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x2c, 0x20, 0x5f, 0x34, +0x38, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x34, +0x38, 0x37, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, +0x20, 0x28, 0x5f, 0x34, 0x38, 0x31, 0x20, 0x3e, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x38, 0x37, 0x20, +0x2a, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x29, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x34, 0x39, 0x31, +0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x2d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x39, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x34, 0x36, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x6d, +0x61, 0x28, 0x5f, 0x34, 0x39, 0x31, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x29, 0x20, +0x2f, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x39, 0x31, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x2c, 0x20, 0x5f, 0x34, +0x38, 0x37, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, +0x37, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x37, 0x32, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, +0x6e, 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x73, 0x74, 0x72, 0x75, +0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x20, 0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, +0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, +0x6f, 0x77, 0x4d, 0x61, 0x70, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, +0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, +0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, +0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, +0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, +0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, +0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, +0x5b, 0x69, 0x64, 0x28, 0x36, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, +0x28, 0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, +0x64, 0x28, 0x31, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x31, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, +0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, +0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x37, 0x29, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, +0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x20, 0x5f, 0x36, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, +0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, +0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x31, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x36, 0x31, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x31, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, +0x5f, 0x39, 0x33, 0x31, 0x20, 0x3e, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x20, 0x5f, 0x39, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x36, 0x32, 0x39, 0x20, +0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x2c, 0x20, 0x5f, 0x39, 0x33, +0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x39, 0x33, +0x37, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x28, 0x30, 0x2e, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, +0x28, 0x5f, 0x39, 0x33, 0x31, 0x20, 0x3e, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x37, 0x20, 0x2a, +0x20, 0x5f, 0x39, 0x33, 0x38, 0x29, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x39, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x2d, 0x6d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x33, 0x36, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x39, 0x33, +0x38, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x34, 0x31, 0x2c, +0x20, 0x5f, 0x39, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x39, 0x33, 0x37, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x5f, +0x36, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x31, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x31, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x39, 0x31, 0x31, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x35, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, +0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, +0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x32, +0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, 0x35, +0x30, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x37, 0x30, +0x38, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x35, +0x30, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x37, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x20, 0x2a, 0x20, +0x5f, 0x37, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x39, 0x31, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, +0x73, 0x28, 0x5f, 0x37, 0x32, 0x35, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, +0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, +0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x37, 0x32, 0x34, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, +0x69, 0x74, 0x79, 0x5b, 0x31, 0x5d, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2f, +0x20, 0x5f, 0x37, 0x32, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x39, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, +0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, +0x37, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x39, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, +0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x37, 0x30, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, +0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x30, 0x20, +0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, +0x62, 0x6c, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x39, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, +0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, +0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x30, 0x20, 0x2a, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, +0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, +0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, +0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x35, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x39, 0x35, 0x32, +0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x39, 0x35, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, +0x6c, 0x66, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, +0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, +0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x39, 0x34, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x36, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, +0x30, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, +0x61, 0x6e, 0x63, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x35, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, +0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x39, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x37, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, +0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x2e, 0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, +0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, +0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x35, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, +0x28, 0x2d, 0x28, 0x5f, 0x39, 0x31, 0x33, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, +0x5f, 0x37, 0x30, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, +0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x37, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x36, 0x39, 0x20, 0x3d, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x35, +0x37, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x39, 0x36, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x39, 0x34, +0x39, 0x20, 0x2d, 0x20, 0x5f, 0x37, 0x35, 0x38, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x39, 0x31, 0x39, 0x20, 0x2a, +0x20, 0x5f, 0x39, 0x36, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x35, 0x37, 0x2e, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, +0x38, 0x35, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x35, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x39, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, +0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x39, 0x32, 0x30, 0x29, +0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x35, 0x20, +0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, +0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, +0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, +0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, +0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, +0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, 0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, +0x64, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, +0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x5b, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, +0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, +0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, +0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, +0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, +0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, +0x6c, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5d, 0x5d, 0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, +0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, +0x63, 0x6c, 0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, +0x33, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x38, 0x30, 0x20, +0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, +0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x38, +0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x37, 0x38, 0x2e, 0x78, 0x2c, +0x20, 0x5f, 0x38, 0x33, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x38, 0x31, 0x2c, +0x20, 0x5f, 0x38, 0x35, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x33, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x38, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x39, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x32, +0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x38, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x32, 0x2c, 0x20, 0x5f, +0x38, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x38, 0x38, 0x2c, 0x20, 0x5f, 0x39, 0x30, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, +0x39, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x30, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x38, 0x38, 0x2c, 0x20, 0x5f, 0x39, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, +0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, +0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, +0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x2e, 0x7a, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x37, +0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, 0x20, +0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x33, 0x38, 0x31, +0x20, 0x3e, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, +0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3e, 0x20, 0x28, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x38, 0x29, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x2d, 0x6d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x37, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, +0x20, 0x5f, 0x33, 0x38, 0x31, 0x29, 0x20, 0x2f, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x37, 0x34, 0x2c, 0x20, 0x30, +0x2e, 0x38, 0x2c, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, +0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, +0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, +0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x29, 0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x39, 0x31, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x31, 0x36, 0x20, 0x3e, 0x20, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x31, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, +0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x31, 0x36, 0x20, 0x3e, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x20, 0x2a, 0x20, 0x30, 0x2e, 0x38, 0x29, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x2d, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x32, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, 0x20, 0x5f, 0x36, +0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x32, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x61, 0x78, 0x44, +0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, +0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, +0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x39, 0x32, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x39, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, +0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x39, 0x31, 0x33, 0x20, +0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x37, 0x30, 0x38, 0x20, 0x2d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, +0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x34, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, +0x5f, 0x39, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, +0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, +0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, +0x31, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, +0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, +0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, +0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, +0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x28, 0x5f, 0x39, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, +0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x37, 0x30, 0x38, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, +0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, +0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, +0x30, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, +0x2a, 0x20, 0x5f, 0x37, 0x35, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x39, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x37, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, +0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, +0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x35, 0x30, 0x32, 0x29, 0x2c, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x2a, +0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x39, 0x31, 0x33, 0x20, 0x2a, +0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x37, 0x30, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, +0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, +0x5f, 0x38, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x35, 0x30, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x37, 0x35, 0x38, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x39, 0x31, 0x39, +0x20, 0x2a, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x32, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x37, 0x31, 0x20, 0x3d, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, +0x34, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x31, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x32, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x20, 0x3d, 0x20, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x32, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x39, 0x37, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x33, +0x34, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x39, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x31, 0x31, +0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x36, 0x2c, 0x20, 0x5f, 0x32, +0x31, 0x37, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x29, 0x20, 0x2a, +0x20, 0x5f, 0x32, 0x33, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x33, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x38, 0x30, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x33, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, +0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, +0x5f, 0x33, 0x38, 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, +0x33, 0x30, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, +0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x38, 0x36, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x28, 0x5f, 0x32, 0x30, 0x32, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, +0x33, 0x30, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x30, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x37, 0x31, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, 0x54, 0x41, 0x4d, 0x92, 0x0a, +0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, +0x8c, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x8e, 0x02, 0x00, 0x00, 0x01, 0x20, +0x01, 0xa2, 0x02, 0x00, 0x00, 0x01, 0x30, 0x01, 0x1a, 0x04, 0x00, 0x00, 0x01, 0x44, 0x01, 0x5c, 0x04, 0x00, 0x00, 0x01, +0x80, 0x00, 0x74, 0x04, 0x00, 0x00, 0x01, 0x90, 0x00, 0x74, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x98, 0x05, 0x00, 0x00, +0x02, 0x00, 0x01, 0xa0, 0x06, 0x00, 0x00, 0x02, 0x10, 0x00, 0x98, 0x05, 0x00, 0x00, 0x02, 0x10, 0x01, 0xa0, 0x07, 0x00, +0x00, 0x02, 0x20, 0x01, 0xb2, 0x07, 0x00, 0x00, 0x02, 0x30, 0x01, 0x18, 0x09, 0x00, 0x00, 0x02, 0x44, 0x01, 0x58, 0x09, +0x00, 0x00, 0x02, 0x80, 0x00, 0x6e, 0x09, 0x00, 0x00, 0x02, 0x90, 0x00, 0x6e, 0x09, 0x00, 0x00, 0x40, 0x09, 0x00, 0x00, +0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, +0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, +0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, +0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, +0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, +0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, +0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x6c, 0x00, +0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x07, +0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x02, 0x00, 0x78, 0x00, 0x79, 0x00, +0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x17, 0x00, 0x02, 0x00, +0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, +0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, +0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, +0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, +0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, +0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, +0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, +0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, 0xca, 0x00, 0x02, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, +0xcf, 0x00, 0x66, 0x00, 0x02, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x69, 0x00, 0x6a, 0x00, +0x02, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x02, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x69, 0x00, +0x6a, 0x00, 0x02, 0x00, 0xdb, 0x00, 0x69, 0x00, 0xdc, 0x00, 0x69, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x51, 0x00, 0x00, 0x00, +0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x76, 0x00, 0x66, 0x00, 0x02, 0x00, 0x69, 0x00, 0x22, 0x0e, 0x00, 0x00, +0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x02, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, +0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x04, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0x17, 0x00, 0x02, 0x00, 0x81, 0x00, +0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, +0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, +0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, +0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, +0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, +0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, +0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, +0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, 0xca, 0x00, 0x02, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xe1, 0x00, 0xce, 0x00, +0xcf, 0x00, 0xe2, 0x00, 0x02, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0x69, 0x00, 0xe6, 0x00, 0xe7, 0x00, +0xe8, 0x00, 0x02, 0x00, 0xe9, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xea, 0x00, 0x69, 0x00, 0xeb, 0x00, 0xec, 0x00, +0xed, 0x00, 0xee, 0x00, 0xef, 0x00, 0x02, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0x69, 0x00, 0x6a, 0x00, +0x02, 0x00, 0xf4, 0x00, 0x69, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0x02, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, +0xfb, 0x00, 0xfc, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xfd, 0x00, 0x69, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x00, 0x01, +0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0xe5, 0x00, 0x69, 0x00, 0x66, 0x00, 0x02, 0x00, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, +0x02, 0x00, 0x07, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x08, 0x01, 0x09, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x02, 0x00, +0x0c, 0x01, 0x0d, 0x01, 0x0e, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x0f, 0x01, 0x69, 0x00, 0x10, 0x01, 0x69, 0x00, +0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x69, 0x00, 0xec, 0x02, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x75, 0x00, 0x76, 0x00, 0x05, 0x00, 0x02, 0x00, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, +0x1b, 0x01, 0x1c, 0x01, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x1d, 0x01, 0x14, 0x00, 0x02, 0x00, +0x15, 0x00, 0x16, 0x00, 0x1e, 0x01, 0x1f, 0x01, 0x66, 0x00, 0x02, 0x00, 0x20, 0x01, 0x21, 0x01, 0x69, 0x00, 0x91, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x76, 0x00, 0xcf, 0x00, 0x66, 0x00, 0x02, 0x00, 0x22, 0x01, +0x69, 0x00, 0xbe, 0x0b, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, +0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, +0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x24, 0x01, 0x25, 0x01, 0x0f, 0x00, 0x26, 0x01, 0x11, 0x00, +0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, +0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, +0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, +0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, +0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, +0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, +0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, +0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, +0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, +0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x27, 0x01, 0x28, 0x01, 0x29, 0x01, +0x2a, 0x01, 0x2b, 0x01, 0x2c, 0x01, 0x2d, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, 0x01, +0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x69, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x3a, 0x01, 0x3b, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, +0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, +0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0x39, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0x3d, 0x00, 0xa7, 0x00, +0xa8, 0x00, 0x40, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x43, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x48, 0x00, +0x49, 0x00, 0xb3, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0x50, 0x00, 0xba, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0x5b, 0x00, 0xc5, 0x00, +0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, 0x62, 0x00, 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x66, 0x00, +0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x3f, 0x01, +0x40, 0x01, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x41, 0x01, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0xa4, 0x06, +0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x3b, 0x01, 0x77, 0x00, 0x02, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, +0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, +0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, +0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, +0x2d, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, +0xa0, 0x00, 0xa1, 0x00, 0x39, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0x3d, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0x40, 0x00, +0xaa, 0x00, 0xab, 0x00, 0x43, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x48, 0x00, 0x49, 0x00, 0xb3, 0x00, +0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0x50, 0x00, 0xba, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, +0x55, 0x00, 0x56, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0x5b, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, +0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, 0xca, 0x00, 0x02, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0x42, 0x01, 0xcf, 0x00, +0x66, 0x00, 0x02, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, +0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x02, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x69, 0x00, 0x6a, 0x00, +0x02, 0x00, 0xdb, 0x00, 0x69, 0x00, 0xdc, 0x00, 0x69, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, +0x00, 0x00, 0x3a, 0x01, 0x3b, 0x01, 0x66, 0x00, 0x02, 0x00, 0x69, 0x00, 0x4c, 0x0c, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, +0x3a, 0x01, 0x3b, 0x01, 0x77, 0x00, 0x02, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, +0x04, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x97, 0x00, 0x98, 0x00, +0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0x39, 0x00, +0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0x3d, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0x40, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x43, 0x00, +0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x48, 0x00, 0x49, 0x00, 0xb3, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0xb7, 0x00, 0xb8, 0x00, 0x50, 0x00, 0xba, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xc0, 0x00, +0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0x5b, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, +0xca, 0x00, 0x02, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0x43, 0x01, 0x42, 0x01, 0xcf, 0x00, 0x44, 0x01, 0x02, 0x00, +0x45, 0x01, 0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0x69, 0x00, 0x46, 0x01, 0x47, 0x01, 0xe8, 0x00, 0x02, 0x00, 0xe9, 0x00, +0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xea, 0x00, 0x69, 0x00, 0x48, 0x01, 0xee, 0x00, 0xef, 0x00, 0x02, 0x00, 0x49, 0x01, +0x4a, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xf4, 0x00, 0x69, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0x02, 0x00, +0x4b, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xfd, 0x00, 0x69, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, +0x02, 0x01, 0x03, 0x01, 0xe5, 0x00, 0x69, 0x00, 0x66, 0x00, 0x02, 0x00, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x00, +0x07, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x08, 0x01, 0x09, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x02, 0x00, 0x0c, 0x01, +0x0d, 0x01, 0x0e, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x0f, 0x01, 0x69, 0x00, 0x10, 0x01, 0x69, 0x00, 0x11, 0x01, +0x12, 0x01, 0x4c, 0x01, 0x14, 0x01, 0x15, 0x01, 0x69, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3a, 0x01, +0x3b, 0x01, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, +0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x1d, 0x01, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, +0x4d, 0x01, 0x4e, 0x01, 0x66, 0x00, 0x02, 0x00, 0x20, 0x01, 0x21, 0x01, 0x69, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, 0x00, +0x00, 0x00, 0x3a, 0x01, 0x3b, 0x01, 0xcf, 0x00, 0x66, 0x00, 0x02, 0x00, 0x22, 0x01, 0x69, 0x00, 0xf5, 0x0a, 0x00, 0x00, +0x8e, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x3b, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, +0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, +0x0f, 0x00, 0x10, 0x00, 0x24, 0x01, 0x25, 0x01, 0x0f, 0x00, 0x26, 0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, +0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x97, 0x00, 0x98, 0x00, +0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0x39, 0x00, +0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0x3d, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0x40, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x43, 0x00, +0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x48, 0x00, 0x49, 0x00, 0xb3, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0xb7, 0x00, 0xb8, 0x00, 0x50, 0x00, 0xba, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xc0, 0x00, +0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0x5b, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x61, 0x00, +0x3c, 0x01, 0x62, 0x00, 0x3d, 0x01, 0x3e, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, +0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, +0x55, 0x01, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, +0x5f, 0x01, 0x60, 0x01, 0x61, 0x01, 0x69, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0xfa, 0x0a, 0x00, 0x00, +0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x92, 0x01, +0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xa2, 0x02, 0x00, 0x00, 0x01, 0x20, 0x01, 0xbc, +0x02, 0x00, 0x00, 0x01, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x01, 0x44, 0x01, 0xbe, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00, +0xe8, 0x04, 0x00, 0x00, 0x01, 0x90, 0x00, 0xe8, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x02, 0x00, +0x01, 0x2a, 0x07, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x02, 0x10, 0x01, 0xa2, 0x02, 0x00, 0x00, 0x02, +0x20, 0x01, 0x32, 0x08, 0x00, 0x00, 0x02, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x02, 0x44, 0x01, 0xbe, 0x04, 0x00, 0x00, +0x02, 0x80, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x02, 0x90, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x72, 0x0d, 0x00, 0x00, 0x82, 0x00, +0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, +0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, +0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, +0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, +0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, +0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, +0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, +0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, +0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, +0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, +0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, +0xc3, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0x69, 0x00, +0x64, 0x01, 0x12, 0x0d, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, +0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, +0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, +0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, +0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, +0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, +0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, +0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, +0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, +0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, +0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd0, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, +0xd5, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, +0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0xe6, 0x01, +0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0xe8, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, +0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0x69, 0x00, 0x64, 0x01, +0x72, 0x19, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, +0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, +0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, +0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, +0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, +0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, +0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, +0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, +0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, +0x04, 0x00, 0x64, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, +0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, +0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xf9, 0x01, +0x02, 0x00, 0xc2, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xd5, 0x01, 0xfe, 0x01, 0xd7, 0x01, 0xd8, 0x01, +0xd5, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0xdf, 0x01, 0x05, 0x02, 0x06, 0x02, +0x07, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01, 0x0b, 0x02, +0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0xd5, 0x01, 0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x11, 0x02, 0x12, 0x02, 0xe4, 0x01, +0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x18, 0x02, +0xe4, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0xdf, 0x01, 0x1e, 0x02, 0x1f, 0x02, 0xe4, 0x01, +0xe5, 0x01, 0xdf, 0x01, 0x20, 0x02, 0xe4, 0x01, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0xdf, 0x01, 0x24, 0x02, 0xe4, 0x01, +0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, +0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, +0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, +0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x30, 0x02, 0x64, 0x01, 0xba, 0x01, +0x02, 0x00, 0x31, 0x02, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbc, 0x01, 0x04, 0x00, 0x64, 0x01, 0x32, 0x02, +0x02, 0x00, 0xc2, 0x01, 0x33, 0x02, 0x34, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, +0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, +0x64, 0x01, 0x35, 0x02, 0x02, 0x00, 0xc2, 0x01, 0x36, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x70, 0x11, 0x00, 0x00, +0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, +0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, +0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x37, 0x02, 0x38, 0x02, +0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, +0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, +0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, +0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, +0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, +0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, +0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, +0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, +0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, +0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x3c, 0x02, 0x3d, 0x02, +0x3e, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x47, 0x02, +0x48, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, +0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x72, 0x0d, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, +0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, +0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, +0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, +0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, +0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, +0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, +0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, +0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, +0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, +0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, +0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, +0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02, +0x55, 0x02, 0x56, 0x02, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x88, 0x0c, 0x00, 0x00, 0x80, 0x00, +0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, +0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, +0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, +0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, +0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, +0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, +0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, +0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, +0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, +0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd0, 0x01, +0x02, 0x00, 0xc2, 0x01, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0xd5, 0x01, 0x5a, 0x02, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, +0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0xdf, 0x01, 0x5e, 0x02, 0x5f, 0x02, 0x60, 0x02, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, +0xdf, 0x01, 0xe6, 0x01, 0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0x61, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x87, 0x18, +0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, +0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, +0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, +0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, +0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, +0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, +0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, +0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, +0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, 0x04, 0x00, +0x64, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, +0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, +0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xf9, 0x01, 0x02, 0x00, +0xc2, 0x01, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0xd5, 0x01, 0x65, 0x02, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0x66, 0x02, +0x67, 0x02, 0x68, 0x02, 0xdf, 0x01, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, +0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01, 0x6c, 0x02, 0x0c, 0x02, 0x6d, 0x02, 0x6e, 0x02, 0x0e, 0x02, 0xd5, 0x01, +0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x6f, 0x02, 0x12, 0x02, 0xe4, 0x01, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, +0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x18, 0x02, 0xe4, 0x01, 0x70, 0x02, 0x71, 0x02, 0x1d, 0x02, +0xdf, 0x01, 0x72, 0x02, 0x73, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x74, 0x02, 0xe4, 0x01, 0x75, 0x02, 0x76, 0x02, +0x23, 0x02, 0xdf, 0x01, 0x77, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x78, 0x02, 0x79, 0x02, +0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x7a, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, +0x98, 0x11, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, +0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, +0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, +0x37, 0x02, 0x38, 0x02, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, +0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, +0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, +0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, +0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, +0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, +0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, +0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, +0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x04, 0x00, +0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, +0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, +0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, 0x02, +0x50, 0x02, 0x51, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, + +}; + +int GRID_GRID_OFFSET = 0; +int GRID_GRID_SIZE = 30210; diff --git a/thermion_dart/native/include/material/grid.h b/thermion_dart/native/include/material/grid.h new file mode 100644 index 00000000..58dbdbd3 --- /dev/null +++ b/thermion_dart/native/include/material/grid.h @@ -0,0 +1,13 @@ +#ifndef GRID_H_ +#define GRID_H_ + +#include + +extern "C" { + extern const uint8_t GRID_PACKAGE[]; + extern int GRID_GRID_OFFSET; + extern int GRID_GRID_SIZE; +} +#define GRID_GRID_DATA (GRID_PACKAGE + GRID_GRID_OFFSET) + +#endif diff --git a/thermion_dart/native/include/material/image.bin b/thermion_dart/native/include/material/image.bin index 72fb882e..5291f70d 100644 Binary files a/thermion_dart/native/include/material/image.bin and b/thermion_dart/native/include/material/image.bin differ diff --git a/thermion_dart/native/include/material/image.c b/thermion_dart/native/include/material/image.c index cb4390c0..19501f9e 100644 --- a/thermion_dart/native/include/material/image.c +++ b/thermion_dart/native/include/material/image.c @@ -1,37418 +1,1879 @@ +#include "image.h" #include -#include "image.h" - const uint8_t IMAGE_PACKAGE[] = { - // IMAGE - 0x53, - 0x52, - 0x45, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x33, - 0x00, - 0x00, - 0x00, - 0x54, - 0x41, - 0x45, - 0x46, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x45, - 0x4d, - 0x41, - 0x4e, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x06, - 0x00, - 0x00, - 0x00, - 0x49, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x00, - 0x4c, - 0x44, - 0x4d, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x4d, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x54, - 0x4c, - 0x46, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x2c, - 0x00, - 0x00, - 0x00, - 0x46, - 0x49, - 0x4e, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x98, - 0x00, - 0x00, - 0x00, - 0x09, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x01, - 0x4c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x04, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x05, - 0x46, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x52, - 0x65, - 0x63, - 0x6f, - 0x72, - 0x64, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x06, - 0x46, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x07, - 0x42, - 0x6f, - 0x6e, - 0x65, - 0x73, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x02, - 0x4d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x69, - 0x6e, - 0x67, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x03, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x08, - 0x50, - 0x4d, - 0x41, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0xe1, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x02, - 0x07, - 0x07, - 0x01, - 0x02, - 0x09, - 0x07, - 0x01, - 0x0a, - 0x01, - 0x01, - 0x0b, - 0x00, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x00, - 0x01, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x00, - 0x02, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x00, - 0x03, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x00, - 0x04, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x00, - 0x05, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x00, - 0x06, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x00, - 0x07, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x73, - 0x00, - 0x08, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x74, - 0x61, - 0x6e, - 0x67, - 0x65, - 0x6e, - 0x74, - 0x73, - 0x00, - 0x09, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x00, - 0x0a, - 0x62, - 0x6f, - 0x6e, - 0x65, - 0x73, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x69, - 0x63, - 0x65, - 0x73, - 0x41, - 0x6e, - 0x64, - 0x57, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x73, - 0x00, - 0x20, - 0x42, - 0x49, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x59, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x03, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x11, - 0x02, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x07, - 0x03, - 0x73, - 0x68, - 0x6f, - 0x77, - 0x49, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x03, - 0x20, - 0x42, - 0x49, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x21, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x00, - 0x00, - 0x02, - 0x03, - 0x00, - 0x53, - 0x4e, - 0x4f, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0x42, - 0x55, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x17, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x53, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x49, - 0x53, - 0x4f, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4e, - 0x45, - 0x4c, - 0x42, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x4d, - 0x52, - 0x54, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4c, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x49, - 0x52, - 0x57, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x53, - 0x57, - 0x45, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x49, - 0x52, - 0x57, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x45, - 0x54, - 0x44, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x54, - 0x53, - 0x4e, - 0x49, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x53, - 0x43, - 0x32, - 0x41, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x43, - 0x32, - 0x41, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4f, - 0x4d, - 0x55, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x4f, - 0x52, - 0x50, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x49, - 0x55, - 0x55, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x08, - 0x00, - 0x00, - 0x00, - 0x71, - 0x20, - 0x8a, - 0x14, - 0xbe, - 0xed, - 0x26, - 0x66, - 0x44, - 0x41, - 0x48, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4c, - 0x4d, - 0x48, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x4d, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x54, - 0x46, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x52, - 0x4f, - 0x49, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x41, - 0x51, - 0x45, - 0x52, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x41, - 0x41, - 0x50, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x52, - 0x41, - 0x56, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0x9a, - 0x99, - 0x19, - 0x3e, - 0x52, - 0x48, - 0x54, - 0x53, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x04, - 0x00, - 0x00, - 0x00, - 0xcd, - 0xcc, - 0x4c, - 0x3e, - 0x4f, - 0x44, - 0x45, - 0x56, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x03, - 0x52, - 0x54, - 0x4e, - 0x49, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x44, - 0x53, - 0x43, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x01, - 0x00, - 0x00, - 0x00, - 0x01, - 0x54, - 0x58, - 0x45, - 0x54, - 0x5f, - 0x43, - 0x49, - 0x44, - 0x89, - 0x75, - 0x00, - 0x00, - 0x7d, - 0x03, - 0x00, - 0x00, - 0x23, - 0x76, - 0x65, - 0x72, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x33, - 0x30, - 0x30, - 0x20, - 0x65, - 0x73, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x00, - 0x7b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x7d, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x20, - 0x66, - 0x61, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x23, - 0x65, - 0x6e, - 0x64, - 0x69, - 0x66, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x50, - 0x4f, - 0x57, - 0x45, - 0x52, - 0x5f, - 0x56, - 0x52, - 0x5f, - 0x53, - 0x48, - 0x41, - 0x44, - 0x45, - 0x52, - 0x5f, - 0x57, - 0x4f, - 0x52, - 0x4b, - 0x41, - 0x52, - 0x4f, - 0x55, - 0x4e, - 0x44, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x35, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x61, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x64, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x65, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x68, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x69, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6b, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6c, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x77, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x61, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x75, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x62, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x64, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x67, - 0x7a, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x68, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6c, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6f, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x70, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x77, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x62, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x64, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x75, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x6f, - 0x69, - 0x64, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x28, - 0x29, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x50, - 0x4f, - 0x57, - 0x45, - 0x52, - 0x5f, - 0x56, - 0x52, - 0x5f, - 0x53, - 0x48, - 0x41, - 0x44, - 0x45, - 0x52, - 0x5f, - 0x57, - 0x4f, - 0x52, - 0x4b, - 0x41, - 0x52, - 0x4f, - 0x55, - 0x4e, - 0x44, - 0x53, - 0x29, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x31, - 0x20, - 0x2b, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x44, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x31, - 0x3b, - 0x00, - 0x7d, - 0x00, - 0x65, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x44, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x30, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x33, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x32, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x32, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x33, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x33, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x30, - 0x34, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x31, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x33, - 0x33, - 0x37, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x36, - 0x3b, - 0x00, - 0x70, - 0x72, - 0x65, - 0x63, - 0x69, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3b, - 0x00, - 0x70, - 0x72, - 0x65, - 0x63, - 0x69, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x65, - 0x6d, - 0x69, - 0x73, - 0x73, - 0x69, - 0x76, - 0x65, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x6c, - 0x65, - 0x61, - 0x72, - 0x43, - 0x6f, - 0x61, - 0x74, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x6c, - 0x65, - 0x61, - 0x72, - 0x43, - 0x6f, - 0x61, - 0x74, - 0x52, - 0x6f, - 0x75, - 0x67, - 0x68, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6e, - 0x69, - 0x73, - 0x6f, - 0x74, - 0x72, - 0x6f, - 0x70, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x61, - 0x6e, - 0x69, - 0x73, - 0x6f, - 0x74, - 0x72, - 0x6f, - 0x70, - 0x79, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x36, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x33, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x61, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x64, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x65, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x68, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x69, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6b, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6c, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6e, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x61, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x62, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x64, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x67, - 0x7a, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x68, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6c, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x6f, - 0x7a, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x70, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x72, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x7a, - 0x3b, - 0x00, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x77, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x78, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x62, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x64, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6a, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6b, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x71, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x75, - 0x7a, - 0x7a, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x62, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x32, - 0x44, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x20, - 0x3d, - 0x3d, - 0x20, - 0x30, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x29, - 0x00, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x29, - 0x00, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x29, - 0x00, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x29, - 0x00, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x29, - 0x00, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2c, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x70, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x33, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x36, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x30, - 0x36, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x30, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x32, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x34, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x6d, - 0x65, - 0x64, - 0x69, - 0x75, - 0x6d, - 0x70, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x43, - 0x75, - 0x62, - 0x65, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x69, - 0x6e, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3e, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x7a, - 0x7a, - 0x29, - 0x00, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6e, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x29, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x30, - 0x31, - 0x32, - 0x35, - 0x29, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x79, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x7a, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x78, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x34, - 0x37, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x36, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x7a, - 0x7a, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x75, - 0x6e, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x48, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x78, - 0x31, - 0x36, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x7a, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x4c, - 0x6f, - 0x64, - 0x28, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2c, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2c, - 0x20, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x32, - 0x37, - 0x34, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x38, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x35, - 0x37, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x6d, - 0x70, - 0x5f, - 0x63, - 0x6f, - 0x70, - 0x79, - 0x5f, - 0x33, - 0x34, - 0x31, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x37, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x38, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x37, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x20, - 0x3d, - 0x3d, - 0x20, - 0x30, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x34, - 0x31, - 0x29, - 0x00, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x29, - 0x00, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x00, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x3b, - 0x00, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x29, - 0x00, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x29, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x3b, - 0x00, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2c, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x70, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x34, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x34, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x34, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x39, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x39, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x38, - 0x39, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x37, - 0x37, - 0x36, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x34, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x38, - 0x33, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x38, - 0x33, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x38, - 0x33, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x33, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x30, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x32, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x30, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x31, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x34, - 0x32, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x2c, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x39, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x20, - 0x36, - 0x34, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x36, - 0x37, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x73, - 0x74, - 0x64, - 0x31, - 0x34, - 0x30, - 0x29, - 0x20, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x20, - 0x61, - 0x5b, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x5d, - 0x3b, - 0x00, - 0x7d, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x20, - 0x68, - 0x69, - 0x67, - 0x68, - 0x70, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x42, - 0x69, - 0x74, - 0x73, - 0x54, - 0x6f, - 0x46, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x36, - 0x37, - 0x5d, - 0x2e, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x29, - 0x3b, - 0x00, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x2f, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x23, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x47, - 0x4c, - 0x5f, - 0x45, - 0x58, - 0x54, - 0x5f, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x5f, - 0x63, - 0x75, - 0x6c, - 0x6c, - 0x5f, - 0x64, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x3a, - 0x20, - 0x72, - 0x65, - 0x71, - 0x75, - 0x69, - 0x72, - 0x65, - 0x00, - 0x23, - 0x69, - 0x66, - 0x6e, - 0x64, - 0x65, - 0x66, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x00, - 0x23, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x20, - 0x32, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x38, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x36, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x38, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x38, - 0x32, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x39, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x32, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x5f, - 0x39, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x39, - 0x3b, - 0x00, - 0x5f, - 0x39, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x39, - 0x35, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x39, - 0x35, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x39, - 0x34, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x37, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x37, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x37, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x36, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x36, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x28, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x37, - 0x20, - 0x2f, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x31, - 0x32, - 0x31, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x31, - 0x32, - 0x31, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x35, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x3d, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x23, - 0x76, - 0x65, - 0x72, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x34, - 0x31, - 0x30, - 0x00, - 0x23, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x47, - 0x4c, - 0x5f, - 0x41, - 0x52, - 0x42, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x69, - 0x6e, - 0x67, - 0x5f, - 0x6c, - 0x61, - 0x6e, - 0x67, - 0x75, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x3a, - 0x20, - 0x65, - 0x6e, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x38, - 0x29, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x34, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x37, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x30, - 0x35, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x34, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x33, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x35, - 0x31, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x33, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x36, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x31, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x36, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x34, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x33, - 0x36, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x35, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x30, - 0x35, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x31, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x33, - 0x33, - 0x38, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x35, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x32, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x32, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x37, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x32, - 0x44, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x32, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x34, - 0x2c, - 0x20, - 0x5f, - 0x35, - 0x35, - 0x33, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x32, - 0x36, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x32, - 0x36, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x32, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x32, - 0x36, - 0x3b, - 0x00, - 0x75, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x43, - 0x75, - 0x62, - 0x65, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x34, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x28, - 0x69, - 0x6e, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x35, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x78, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x75, - 0x6e, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x48, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x78, - 0x31, - 0x36, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x7a, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x63, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x4c, - 0x6f, - 0x64, - 0x28, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2c, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x2c, - 0x20, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x67, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x32, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6a, - 0x7a, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x76, - 0x69, - 0x65, - 0x77, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x68, - 0x7a, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x7a, - 0x7a, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x38, - 0x30, - 0x35, - 0x20, - 0x2a, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x38, - 0x36, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x65, - 0x7a, - 0x7a, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x36, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x34, - 0x29, - 0x2e, - 0x62, - 0x61, - 0x73, - 0x65, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x36, - 0x33, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x61, - 0x20, - 0x2a, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x36, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x36, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x5f, - 0x37, - 0x36, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x35, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x5f, - 0x38, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x36, - 0x31, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x70, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x7a, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x6d, - 0x61, - 0x74, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x30, - 0x29, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x3b, - 0x00, - 0x6c, - 0x61, - 0x79, - 0x6f, - 0x75, - 0x74, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x37, - 0x29, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x32, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x37, - 0x32, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x38, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x3b, - 0x00, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x35, - 0x30, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x76, - 0x65, - 0x63, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x32, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x32, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x37, - 0x32, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x76, - 0x65, - 0x63, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x30, - 0x35, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x39, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x30, - 0x35, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x37, - 0x39, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x56, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x49, - 0x6e, - 0x70, - 0x75, - 0x74, - 0x73, - 0x28, - 0x5f, - 0x34, - 0x30, - 0x35, - 0x2c, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x32, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x3b, - 0x00, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x39, - 0x2e, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x63, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x39, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x35, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x35, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x39, - 0x35, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x3b, - 0x00, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x37, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x28, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x38, - 0x20, - 0x2f, - 0x20, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x39, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x28, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x31, - 0x34, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x78, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x2e, - 0x77, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x23, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x20, - 0x3c, - 0x6d, - 0x65, - 0x74, - 0x61, - 0x6c, - 0x5f, - 0x73, - 0x74, - 0x64, - 0x6c, - 0x69, - 0x62, - 0x3e, - 0x00, - 0x23, - 0x69, - 0x6e, - 0x63, - 0x6c, - 0x75, - 0x64, - 0x65, - 0x20, - 0x3c, - 0x73, - 0x69, - 0x6d, - 0x64, - 0x2f, - 0x73, - 0x69, - 0x6d, - 0x64, - 0x2e, - 0x68, - 0x3e, - 0x00, - 0x00, - 0x75, - 0x73, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x6e, - 0x61, - 0x6d, - 0x65, - 0x73, - 0x70, - 0x61, - 0x63, - 0x65, - 0x20, - 0x6d, - 0x65, - 0x74, - 0x61, - 0x6c, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x76, - 0x69, - 0x65, - 0x77, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x54, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x43, - 0x6f, - 0x6e, - 0x74, - 0x72, - 0x6f, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x69, - 0x6d, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x74, - 0x65, - 0x6d, - 0x70, - 0x6f, - 0x72, - 0x61, - 0x6c, - 0x4e, - 0x6f, - 0x69, - 0x73, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x54, - 0x69, - 0x6d, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x6f, - 0x6c, - 0x75, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x6f, - 0x67, - 0x69, - 0x63, - 0x61, - 0x6c, - 0x56, - 0x69, - 0x65, - 0x77, - 0x70, - 0x6f, - 0x72, - 0x74, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x6f, - 0x67, - 0x69, - 0x63, - 0x61, - 0x6c, - 0x56, - 0x69, - 0x65, - 0x77, - 0x70, - 0x6f, - 0x72, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x73, - 0x65, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x72, - 0x65, - 0x66, - 0x72, - 0x61, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x4c, - 0x6f, - 0x64, - 0x4f, - 0x66, - 0x66, - 0x73, - 0x65, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x64, - 0x65, - 0x72, - 0x69, - 0x76, - 0x61, - 0x74, - 0x69, - 0x76, - 0x65, - 0x73, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x63, - 0x61, - 0x6d, - 0x65, - 0x72, - 0x61, - 0x46, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x78, - 0x70, - 0x6f, - 0x73, - 0x75, - 0x72, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x76, - 0x31, - 0x30, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x6e, - 0x65, - 0x65, - 0x64, - 0x73, - 0x41, - 0x6c, - 0x70, - 0x68, - 0x61, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6f, - 0x53, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x69, - 0x6e, - 0x67, - 0x51, - 0x75, - 0x61, - 0x6c, - 0x69, - 0x74, - 0x79, - 0x41, - 0x6e, - 0x64, - 0x45, - 0x64, - 0x67, - 0x65, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x61, - 0x6f, - 0x42, - 0x65, - 0x6e, - 0x74, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x7a, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x33, - 0x20, - 0x66, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x66, - 0x72, - 0x6f, - 0x78, - 0x65, - 0x6c, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x58, - 0x59, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x52, - 0x6f, - 0x75, - 0x67, - 0x68, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x4f, - 0x6e, - 0x65, - 0x4c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x48, - 0x5b, - 0x39, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x70, - 0x61, - 0x64, - 0x64, - 0x69, - 0x6e, - 0x67, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x73, - 0x75, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x46, - 0x61, - 0x72, - 0x41, - 0x74, - 0x74, - 0x65, - 0x6e, - 0x75, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x64, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x61, - 0x6c, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x43, - 0x6f, - 0x6e, - 0x74, - 0x61, - 0x63, - 0x74, - 0x53, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x61, - 0x73, - 0x63, - 0x61, - 0x64, - 0x65, - 0x53, - 0x70, - 0x6c, - 0x69, - 0x74, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x63, - 0x61, - 0x73, - 0x63, - 0x61, - 0x64, - 0x65, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x50, - 0x65, - 0x6e, - 0x75, - 0x6d, - 0x62, - 0x72, - 0x61, - 0x52, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x72, - 0x41, - 0x74, - 0x74, - 0x65, - 0x6e, - 0x75, - 0x61, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x45, - 0x78, - 0x70, - 0x6f, - 0x6e, - 0x65, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x44, - 0x65, - 0x70, - 0x74, - 0x68, - 0x53, - 0x63, - 0x61, - 0x6c, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x76, - 0x73, - 0x6d, - 0x4c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x42, - 0x6c, - 0x65, - 0x65, - 0x64, - 0x52, - 0x65, - 0x64, - 0x75, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x53, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x69, - 0x6e, - 0x67, - 0x54, - 0x79, - 0x70, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x75, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6b, - 0x65, - 0x64, - 0x5f, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x49, - 0x62, - 0x6c, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x20, - 0x66, - 0x6f, - 0x67, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x73, - 0x73, - 0x72, - 0x52, - 0x65, - 0x70, - 0x72, - 0x6f, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x73, - 0x73, - 0x72, - 0x55, - 0x76, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x54, - 0x68, - 0x69, - 0x63, - 0x6b, - 0x6e, - 0x65, - 0x73, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x42, - 0x69, - 0x61, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x73, - 0x73, - 0x72, - 0x53, - 0x74, - 0x72, - 0x69, - 0x64, - 0x65, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x63, - 0x75, - 0x73, - 0x74, - 0x6f, - 0x6d, - 0x5b, - 0x34, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x72, - 0x65, - 0x63, - 0x37, - 0x30, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x65, - 0x73, - 0x32, - 0x52, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x34, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x34, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x6c, - 0x6f, - 0x63, - 0x6e, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x61, - 0x74, - 0x74, - 0x72, - 0x69, - 0x62, - 0x75, - 0x74, - 0x65, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x75, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x64, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x28, - 0x67, - 0x6c, - 0x5f, - 0x49, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x49, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x36, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x34, - 0x2e, - 0x7a, - 0x2c, - 0x20, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x30, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x36, - 0x32, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x36, - 0x32, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7d, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x65, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x39, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x39, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x34, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x33, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x31, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x33, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x31, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x36, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x36, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x36, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6e, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x68, - 0x6f, - 0x77, - 0x49, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x37, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x33, - 0x20, - 0x7b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x33, - 0x26, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x39, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x73, - 0x68, - 0x6f, - 0x77, - 0x49, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x20, - 0x3d, - 0x3d, - 0x20, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x79, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x79, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x33, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x34, - 0x34, - 0x32, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x29, - 0x2c, - 0x20, - 0x62, - 0x69, - 0x61, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x38, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x29, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x76, - 0x6f, - 0x69, - 0x64, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x29, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x31, - 0x20, - 0x7b, - 0x00, - 0x64, - 0x65, - 0x70, - 0x74, - 0x68, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x68, - 0x61, - 0x64, - 0x6f, - 0x77, - 0x4d, - 0x61, - 0x70, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x32, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x44, - 0x46, - 0x47, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x33, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x63, - 0x75, - 0x62, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x34, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x69, - 0x62, - 0x6c, - 0x53, - 0x70, - 0x65, - 0x63, - 0x75, - 0x6c, - 0x61, - 0x72, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x36, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x61, - 0x6f, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x5f, - 0x61, - 0x72, - 0x72, - 0x61, - 0x79, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x73, - 0x72, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x39, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x32, - 0x64, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x75, - 0x72, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x74, - 0x65, - 0x78, - 0x74, - 0x75, - 0x72, - 0x65, - 0x63, - 0x75, - 0x62, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x32, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x72, - 0x20, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x20, - 0x5b, - 0x5b, - 0x69, - 0x64, - 0x28, - 0x31, - 0x33, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x31, - 0x26, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x42, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x33, - 0x26, - 0x20, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x39, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x46, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x37, - 0x29, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x32, - 0x35, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x2e, - 0x78, - 0x79, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x73, - 0x68, - 0x6f, - 0x77, - 0x49, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x20, - 0x3d, - 0x3d, - 0x20, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x35, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x79, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x6f, - 0x6f, - 0x6c, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x21, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x79, - 0x20, - 0x3e, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x36, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x36, - 0x37, - 0x36, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x29, - 0x2c, - 0x20, - 0x62, - 0x69, - 0x61, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x36, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x36, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x36, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x35, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x35, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x35, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x56, - 0x69, - 0x65, - 0x77, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x33, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x64, - 0x6f, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x6c, - 0x65, - 0x6e, - 0x67, - 0x74, - 0x68, - 0x28, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x3e, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x75, - 0x74, - 0x4f, - 0x66, - 0x66, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x72, - 0x65, - 0x61, - 0x6b, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7d, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x37, - 0x38, - 0x36, - 0x29, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x30, - 0x31, - 0x32, - 0x35, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x30, - 0x5d, - 0x2c, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x48, - 0x65, - 0x69, - 0x67, - 0x68, - 0x74, - 0x46, - 0x61, - 0x6c, - 0x6c, - 0x6f, - 0x66, - 0x66, - 0x2c, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x35, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x31, - 0x5d, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x32, - 0x5d, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x37, - 0x38, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x65, - 0x6c, - 0x73, - 0x65, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x44, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x5b, - 0x32, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x38, - 0x20, - 0x2d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x49, - 0x62, - 0x6c, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x3e, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x39, - 0x20, - 0x2a, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x28, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x29, - 0x2c, - 0x20, - 0x6c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x28, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x31, - 0x2e, - 0x79, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x31, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x2c, - 0x20, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x38, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x20, - 0x3e, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x38, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x77, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x38, - 0x20, - 0x2d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x28, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x33, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x38, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x32, - 0x38, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x34, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x34, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x62, - 0x72, - 0x65, - 0x61, - 0x6b, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x7d, - 0x20, - 0x77, - 0x68, - 0x69, - 0x6c, - 0x65, - 0x28, - 0x66, - 0x61, - 0x6c, - 0x73, - 0x65, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x78, - 0x34, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x20, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x4d, - 0x6f, - 0x64, - 0x65, - 0x6c, - 0x4e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x6f, - 0x72, - 0x70, - 0x68, - 0x54, - 0x61, - 0x72, - 0x67, - 0x65, - 0x74, - 0x43, - 0x6f, - 0x75, - 0x6e, - 0x74, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x61, - 0x67, - 0x73, - 0x43, - 0x68, - 0x61, - 0x6e, - 0x6e, - 0x65, - 0x6c, - 0x73, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x75, - 0x73, - 0x65, - 0x72, - 0x44, - 0x61, - 0x74, - 0x61, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x72, - 0x65, - 0x73, - 0x65, - 0x72, - 0x76, - 0x65, - 0x64, - 0x5b, - 0x38, - 0x5d, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x20, - 0x3d, - 0x20, - 0x53, - 0x50, - 0x49, - 0x52, - 0x56, - 0x5f, - 0x43, - 0x52, - 0x4f, - 0x53, - 0x53, - 0x5f, - 0x43, - 0x4f, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x54, - 0x5f, - 0x49, - 0x44, - 0x5f, - 0x31, - 0x3b, - 0x00, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x50, - 0x65, - 0x72, - 0x52, - 0x65, - 0x6e, - 0x64, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x44, - 0x61, - 0x74, - 0x61, - 0x20, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x4d, - 0x41, - 0x58, - 0x5f, - 0x49, - 0x4e, - 0x53, - 0x54, - 0x41, - 0x4e, - 0x43, - 0x45, - 0x53, - 0x5d, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x36, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x28, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x69, - 0x6e, - 0x20, - 0x69, - 0x6e, - 0x20, - 0x5b, - 0x5b, - 0x73, - 0x74, - 0x61, - 0x67, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x5d, - 0x5d, - 0x2c, - 0x20, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x4f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x26, - 0x20, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x20, - 0x5b, - 0x5b, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x28, - 0x31, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x3e, - 0x28, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x64, - 0x61, - 0x74, - 0x61, - 0x5b, - 0x5f, - 0x31, - 0x36, - 0x37, - 0x5d, - 0x2e, - 0x6f, - 0x62, - 0x6a, - 0x65, - 0x63, - 0x74, - 0x49, - 0x64, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x6f, - 0x75, - 0x74, - 0x50, - 0x69, - 0x63, - 0x6b, - 0x69, - 0x6e, - 0x67, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x2f, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x66, - 0x72, - 0x61, - 0x67, - 0x6d, - 0x65, - 0x6e, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x5f, - 0x6f, - 0x75, - 0x74, - 0x20, - 0x6d, - 0x61, - 0x69, - 0x6e, - 0x30, - 0x28, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x20, - 0x5b, - 0x5b, - 0x66, - 0x75, - 0x6e, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5f, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x28, - 0x38, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x73, - 0x5f, - 0x66, - 0x75, - 0x6e, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x5f, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x5f, - 0x64, - 0x65, - 0x66, - 0x69, - 0x6e, - 0x65, - 0x64, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x5f, - 0x74, - 0x6d, - 0x70, - 0x20, - 0x3a, - 0x20, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x5b, - 0x5b, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x5f, - 0x64, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5d, - 0x5d, - 0x20, - 0x5b, - 0x32, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x30, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x30, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x31, - 0x20, - 0x5b, - 0x5b, - 0x75, - 0x73, - 0x65, - 0x72, - 0x28, - 0x63, - 0x6c, - 0x69, - 0x70, - 0x31, - 0x29, - 0x5d, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x7a, - 0x2c, - 0x20, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x37, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x37, - 0x32, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x37, - 0x32, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x38, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x38, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x38, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x33, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x39, - 0x38, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x2c, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x2c, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x2d, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x33, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x77, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x38, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x31, - 0x31, - 0x30, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x39, - 0x38, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x36, - 0x37, - 0x2e, - 0x77, - 0x2c, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x38, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x2f, - 0x3d, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x38, - 0x35, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x37, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x35, - 0x2e, - 0x7a, - 0x2c, - 0x20, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x32, - 0x36, - 0x33, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x31, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x36, - 0x33, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x36, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x30, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x30, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x32, - 0x38, - 0x35, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x39, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x37, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x37, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x37, - 0x37, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x37, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x37, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x30, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x31, - 0x2c, - 0x20, - 0x62, - 0x69, - 0x61, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x36, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x37, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x34, - 0x35, - 0x39, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x37, - 0x38, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x34, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x36, - 0x33, - 0x3b, - 0x00, - 0x63, - 0x6f, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x74, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x7b, - 0x7d, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x78, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x34, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x33, - 0x2e, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x5f, - 0x36, - 0x34, - 0x35, - 0x2c, - 0x20, - 0x62, - 0x69, - 0x61, - 0x73, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x6f, - 0x64, - 0x42, - 0x69, - 0x61, - 0x73, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x31, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x6d, - 0x61, - 0x74, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6c, - 0x50, - 0x61, - 0x72, - 0x61, - 0x6d, - 0x73, - 0x2e, - 0x62, - 0x61, - 0x63, - 0x6b, - 0x67, - 0x72, - 0x6f, - 0x75, - 0x6e, - 0x64, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x36, - 0x39, - 0x33, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x38, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x38, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x38, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x37, - 0x31, - 0x32, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x36, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x69, - 0x6e, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x61, - 0x78, - 0x4f, - 0x70, - 0x61, - 0x63, - 0x69, - 0x74, - 0x79, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x61, - 0x73, - 0x5f, - 0x74, - 0x79, - 0x70, - 0x65, - 0x3c, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x32, - 0x3e, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4d, - 0x69, - 0x6e, - 0x4d, - 0x61, - 0x78, - 0x4d, - 0x69, - 0x70, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x68, - 0x61, - 0x6c, - 0x66, - 0x34, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x2e, - 0x73, - 0x61, - 0x6d, - 0x70, - 0x6c, - 0x65, - 0x28, - 0x73, - 0x70, - 0x76, - 0x44, - 0x65, - 0x73, - 0x63, - 0x72, - 0x69, - 0x70, - 0x74, - 0x6f, - 0x72, - 0x53, - 0x65, - 0x74, - 0x31, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x5f, - 0x66, - 0x6f, - 0x67, - 0x53, - 0x6d, - 0x70, - 0x6c, - 0x72, - 0x2c, - 0x20, - 0x28, - 0x74, - 0x72, - 0x61, - 0x6e, - 0x73, - 0x70, - 0x6f, - 0x73, - 0x65, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x78, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x30, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x31, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x75, - 0x73, - 0x65, - 0x72, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x57, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x5b, - 0x32, - 0x5d, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x29, - 0x2c, - 0x20, - 0x6c, - 0x65, - 0x76, - 0x65, - 0x6c, - 0x28, - 0x6d, - 0x69, - 0x78, - 0x28, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x34, - 0x2e, - 0x79, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x31, - 0x30, - 0x31, - 0x34, - 0x2e, - 0x78, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x63, - 0x6c, - 0x61, - 0x6d, - 0x70, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4f, - 0x6e, - 0x65, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x2c, - 0x20, - 0x2d, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x4f, - 0x76, - 0x65, - 0x72, - 0x46, - 0x61, - 0x72, - 0x4d, - 0x69, - 0x6e, - 0x75, - 0x73, - 0x4e, - 0x65, - 0x61, - 0x72, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x39, - 0x39, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x69, - 0x62, - 0x6c, - 0x4c, - 0x75, - 0x6d, - 0x69, - 0x6e, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x38, - 0x36, - 0x38, - 0x20, - 0x2b, - 0x20, - 0x28, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x49, - 0x6e, - 0x74, - 0x65, - 0x6e, - 0x73, - 0x69, - 0x74, - 0x79, - 0x2e, - 0x77, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x70, - 0x6f, - 0x77, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x64, - 0x6f, - 0x74, - 0x28, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6e, - 0x6f, - 0x72, - 0x6d, - 0x61, - 0x6c, - 0x69, - 0x7a, - 0x65, - 0x28, - 0x5f, - 0x35, - 0x33, - 0x34, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x28, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x6c, - 0x69, - 0x67, - 0x68, - 0x74, - 0x44, - 0x69, - 0x72, - 0x65, - 0x63, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x29, - 0x29, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x69, - 0x7a, - 0x65, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x65, - 0x78, - 0x70, - 0x28, - 0x2d, - 0x28, - 0x5f, - 0x39, - 0x39, - 0x37, - 0x20, - 0x2a, - 0x20, - 0x66, - 0x61, - 0x73, - 0x74, - 0x3a, - 0x3a, - 0x6d, - 0x61, - 0x78, - 0x28, - 0x5f, - 0x37, - 0x36, - 0x39, - 0x20, - 0x2d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x66, - 0x6f, - 0x67, - 0x49, - 0x6e, - 0x73, - 0x63, - 0x61, - 0x74, - 0x74, - 0x65, - 0x72, - 0x69, - 0x6e, - 0x67, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x33, - 0x20, - 0x5f, - 0x39, - 0x31, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x35, - 0x33, - 0x36, - 0x2e, - 0x78, - 0x79, - 0x7a, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2d, - 0x20, - 0x5f, - 0x38, - 0x31, - 0x39, - 0x29, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x33, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x39, - 0x38, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x35, - 0x33, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x66, - 0x72, - 0x61, - 0x67, - 0x43, - 0x6f, - 0x6c, - 0x6f, - 0x72, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x31, - 0x30, - 0x30, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x20, - 0x3d, - 0x20, - 0x69, - 0x6e, - 0x2e, - 0x6d, - 0x65, - 0x73, - 0x68, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x7a, - 0x2c, - 0x20, - 0x2d, - 0x30, - 0x2e, - 0x35, - 0x2c, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x72, - 0x61, - 0x6d, - 0x65, - 0x55, - 0x6e, - 0x69, - 0x66, - 0x6f, - 0x72, - 0x6d, - 0x73, - 0x2e, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x46, - 0x72, - 0x6f, - 0x6d, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x4d, - 0x61, - 0x74, - 0x72, - 0x69, - 0x78, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x38, - 0x2e, - 0x77, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x66, - 0x20, - 0x28, - 0x61, - 0x62, - 0x73, - 0x28, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x29, - 0x20, - 0x3c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x38, - 0x2e, - 0x77, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x33, - 0x30, - 0x20, - 0x3c, - 0x20, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x3f, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x29, - 0x20, - 0x3a, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x38, - 0x34, - 0x32, - 0x30, - 0x32, - 0x32, - 0x65, - 0x2d, - 0x31, - 0x39, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x32, - 0x38, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x34, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x20, - 0x2a, - 0x20, - 0x28, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x34, - 0x31, - 0x38, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x39, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x78, - 0x79, - 0x20, - 0x2a, - 0x20, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x32, - 0x28, - 0x30, - 0x2e, - 0x35, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x34, - 0x28, - 0x30, - 0x2e, - 0x30, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x31, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x39, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x31, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x39, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x61, - 0x72, - 0x69, - 0x61, - 0x62, - 0x6c, - 0x65, - 0x5f, - 0x69, - 0x6d, - 0x61, - 0x67, - 0x65, - 0x55, - 0x56, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x34, - 0x30, - 0x31, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x34, - 0x2e, - 0x78, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x79, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x34, - 0x2e, - 0x79, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x77, - 0x6f, - 0x72, - 0x6c, - 0x64, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x2e, - 0x7a, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x34, - 0x34, - 0x2e, - 0x7a, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x76, - 0x65, - 0x72, - 0x74, - 0x65, - 0x78, - 0x5f, - 0x70, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x69, - 0x6e, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x30, - 0x37, - 0x20, - 0x3d, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x69, - 0x6e, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5f, - 0x69, - 0x6e, - 0x64, - 0x65, - 0x78, - 0x20, - 0x25, - 0x20, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x43, - 0x4f, - 0x4e, - 0x46, - 0x49, - 0x47, - 0x5f, - 0x53, - 0x54, - 0x45, - 0x52, - 0x45, - 0x4f, - 0x5f, - 0x45, - 0x59, - 0x45, - 0x5f, - 0x43, - 0x4f, - 0x55, - 0x4e, - 0x54, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x35, - 0x20, - 0x3d, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x30, - 0x37, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x36, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x78, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x35, - 0x2c, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x32, - 0x2e, - 0x30, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x30, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x2c, - 0x20, - 0x28, - 0x2d, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2b, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x35, - 0x29, - 0x20, - 0x2a, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x77, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x2e, - 0x78, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x36, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x20, - 0x5f, - 0x34, - 0x32, - 0x30, - 0x20, - 0x3d, - 0x20, - 0x28, - 0x2d, - 0x32, - 0x2e, - 0x30, - 0x29, - 0x20, - 0x2f, - 0x20, - 0x5f, - 0x32, - 0x31, - 0x30, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x30, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x34, - 0x32, - 0x30, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x32, - 0x31, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x77, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x36, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x43, - 0x6c, - 0x69, - 0x70, - 0x44, - 0x69, - 0x73, - 0x74, - 0x61, - 0x6e, - 0x63, - 0x65, - 0x5b, - 0x31, - 0x5d, - 0x20, - 0x3d, - 0x20, - 0x2d, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x66, - 0x6d, - 0x61, - 0x28, - 0x5f, - 0x34, - 0x32, - 0x30, - 0x2c, - 0x20, - 0x66, - 0x6c, - 0x6f, - 0x61, - 0x74, - 0x28, - 0x5f, - 0x32, - 0x30, - 0x37, - 0x20, - 0x2b, - 0x20, - 0x31, - 0x29, - 0x2c, - 0x20, - 0x31, - 0x2e, - 0x30, - 0x29, - 0x2c, - 0x20, - 0x5f, - 0x33, - 0x35, - 0x32, - 0x2e, - 0x77, - 0x2c, - 0x20, - 0x5f, - 0x32, - 0x33, - 0x36, - 0x29, - 0x3b, - 0x00, - 0x20, - 0x20, - 0x20, - 0x20, - 0x6f, - 0x75, - 0x74, - 0x2e, - 0x67, - 0x6c, - 0x5f, - 0x50, - 0x6f, - 0x73, - 0x69, - 0x74, - 0x69, - 0x6f, - 0x6e, - 0x20, - 0x3d, - 0x20, - 0x5f, - 0x33, - 0x39, - 0x34, - 0x3b, - 0x00, - 0x4c, - 0x53, - 0x4c, - 0x47, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0xf6, - 0x0b, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x01, - 0x96, - 0x01, - 0x00, - 0x00, - 0x01, - 0x10, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x10, - 0x01, - 0xe8, - 0x02, - 0x00, - 0x00, - 0x01, - 0x20, - 0x01, - 0xfc, - 0x02, - 0x00, - 0x00, - 0x01, - 0x30, - 0x01, - 0xc4, - 0x04, - 0x00, - 0x00, - 0x01, - 0x44, - 0x01, - 0x06, - 0x05, - 0x00, - 0x00, - 0x01, - 0x80, - 0x00, - 0x1e, - 0x05, - 0x00, - 0x00, - 0x01, - 0x90, - 0x00, - 0x1e, - 0x05, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x4a, - 0x06, - 0x00, - 0x00, - 0x02, - 0x00, - 0x01, - 0x5c, - 0x07, - 0x00, - 0x00, - 0x02, - 0x10, - 0x00, - 0x4a, - 0x06, - 0x00, - 0x00, - 0x02, - 0x10, - 0x01, - 0xac, - 0x08, - 0x00, - 0x00, - 0x02, - 0x20, - 0x01, - 0xbe, - 0x08, - 0x00, - 0x00, - 0x02, - 0x30, - 0x01, - 0x74, - 0x0a, - 0x00, - 0x00, - 0x02, - 0x44, - 0x01, - 0xb4, - 0x0a, - 0x00, - 0x00, - 0x02, - 0x80, - 0x00, - 0xca, - 0x0a, - 0x00, - 0x00, - 0x02, - 0x90, - 0x00, - 0xca, - 0x0a, - 0x00, - 0x00, - 0x82, - 0x09, - 0x00, - 0x00, - 0x84, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x27, - 0x00, - 0x28, - 0x00, - 0x29, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0x2e, - 0x00, - 0x2f, - 0x00, - 0x30, - 0x00, - 0x31, - 0x00, - 0x32, - 0x00, - 0x33, - 0x00, - 0x34, - 0x00, - 0x35, - 0x00, - 0x36, - 0x00, - 0x37, - 0x00, - 0x38, - 0x00, - 0x39, - 0x00, - 0x3a, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0x3d, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - 0x00, - 0x43, - 0x00, - 0x44, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0x4a, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0x4e, - 0x00, - 0x4f, - 0x00, - 0x50, - 0x00, - 0x51, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0x57, - 0x00, - 0x58, - 0x00, - 0x59, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5b, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x5d, - 0x00, - 0x60, - 0x00, - 0x61, - 0x00, - 0x62, - 0x00, - 0x63, - 0x00, - 0x64, - 0x00, - 0x65, - 0x00, - 0x66, - 0x00, - 0x02, - 0x00, - 0x67, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x6a, - 0x00, - 0x5d, - 0x00, - 0x6b, - 0x00, - 0x6c, - 0x00, - 0x6d, - 0x00, - 0x6e, - 0x00, - 0x6f, - 0x00, - 0x70, - 0x00, - 0x71, - 0x00, - 0x72, - 0x00, - 0x73, - 0x00, - 0x74, - 0x00, - 0x75, - 0x00, - 0x76, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x5d, - 0x00, - 0xbf, - 0x09, - 0x00, - 0x00, - 0xa5, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x02, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x82, - 0x00, - 0x83, - 0x00, - 0x84, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x87, - 0x00, - 0x88, - 0x00, - 0x89, - 0x00, - 0x8a, - 0x00, - 0x8b, - 0x00, - 0x8c, - 0x00, - 0x8d, - 0x00, - 0x8e, - 0x00, - 0x8f, - 0x00, - 0x90, - 0x00, - 0x91, - 0x00, - 0x92, - 0x00, - 0x93, - 0x00, - 0x94, - 0x00, - 0x95, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x99, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0xac, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0xbb, - 0x00, - 0xbc, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0xbf, - 0x00, - 0xc0, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0xc3, - 0x00, - 0xc4, - 0x00, - 0xc5, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0xd0, - 0x00, - 0x02, - 0x00, - 0x87, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0xd4, - 0x00, - 0xd5, - 0x00, - 0xd6, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0xd7, - 0x00, - 0xd8, - 0x00, - 0xd9, - 0x00, - 0xda, - 0x00, - 0x02, - 0x00, - 0xdb, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xdc, - 0x00, - 0x5d, - 0x00, - 0xdd, - 0x00, - 0xde, - 0x00, - 0x02, - 0x00, - 0xdf, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe0, - 0x00, - 0x5d, - 0x00, - 0xe1, - 0x00, - 0xe2, - 0x00, - 0x02, - 0x00, - 0xe3, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe4, - 0x00, - 0x5d, - 0x00, - 0xe5, - 0x00, - 0xe6, - 0x00, - 0x02, - 0x00, - 0xe7, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe8, - 0x00, - 0x5d, - 0x00, - 0xe9, - 0x00, - 0xea, - 0x00, - 0x02, - 0x00, - 0xeb, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xec, - 0x00, - 0xed, - 0x00, - 0xee, - 0x00, - 0xef, - 0x00, - 0xf0, - 0x00, - 0xf1, - 0x00, - 0xf2, - 0x00, - 0xf3, - 0x00, - 0xf4, - 0x00, - 0xf5, - 0x00, - 0xf6, - 0x00, - 0xf7, - 0x00, - 0xf8, - 0x00, - 0x5d, - 0x00, - 0xf9, - 0x00, - 0x5d, - 0x00, - 0x51, - 0x00, - 0x00, - 0x00, - 0x06, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x7a, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5d, - 0x00, - 0x80, - 0x10, - 0x00, - 0x00, - 0xe0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x7a, - 0x00, - 0x7b, - 0x00, - 0x02, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0xfa, - 0x00, - 0xfb, - 0x00, - 0xfc, - 0x00, - 0xfd, - 0x00, - 0xfe, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x87, - 0x00, - 0x88, - 0x00, - 0x89, - 0x00, - 0x8a, - 0x00, - 0x8b, - 0x00, - 0x8c, - 0x00, - 0x8d, - 0x00, - 0x8e, - 0x00, - 0x8f, - 0x00, - 0x90, - 0x00, - 0x91, - 0x00, - 0x92, - 0x00, - 0x93, - 0x00, - 0x94, - 0x00, - 0x95, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x99, - 0x00, - 0x9a, - 0x00, - 0x9b, - 0x00, - 0x9c, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0xa8, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0xac, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0xaf, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0xb2, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0xb7, - 0x00, - 0xb8, - 0x00, - 0xb9, - 0x00, - 0xba, - 0x00, - 0xbb, - 0x00, - 0xbc, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0xbf, - 0x00, - 0xc0, - 0x00, - 0xc1, - 0x00, - 0xc2, - 0x00, - 0xc3, - 0x00, - 0xc4, - 0x00, - 0xc5, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0xca, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0xd0, - 0x00, - 0x02, - 0x00, - 0x87, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0xff, - 0x00, - 0xd4, - 0x00, - 0x00, - 0x01, - 0xd5, - 0x00, - 0xd6, - 0x00, - 0x01, - 0x01, - 0x02, - 0x00, - 0x02, - 0x01, - 0x03, - 0x01, - 0x02, - 0x00, - 0x04, - 0x01, - 0x5d, - 0x00, - 0x05, - 0x01, - 0x06, - 0x01, - 0x07, - 0x01, - 0x02, - 0x00, - 0x08, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x09, - 0x01, - 0x5d, - 0x00, - 0x0a, - 0x01, - 0x0b, - 0x01, - 0x0c, - 0x01, - 0x0d, - 0x01, - 0x0e, - 0x01, - 0x02, - 0x00, - 0x0f, - 0x01, - 0x10, - 0x01, - 0x11, - 0x01, - 0x12, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x13, - 0x01, - 0x5d, - 0x00, - 0x14, - 0x01, - 0x15, - 0x01, - 0x16, - 0x01, - 0x02, - 0x00, - 0x17, - 0x01, - 0x18, - 0x01, - 0x19, - 0x01, - 0x1a, - 0x01, - 0x1b, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x1c, - 0x01, - 0x5d, - 0x00, - 0x1d, - 0x01, - 0x1e, - 0x01, - 0x1f, - 0x01, - 0x20, - 0x01, - 0x21, - 0x01, - 0x04, - 0x01, - 0x5d, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x22, - 0x01, - 0x23, - 0x01, - 0x24, - 0x01, - 0x25, - 0x01, - 0x02, - 0x00, - 0x26, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x27, - 0x01, - 0x5d, - 0x00, - 0x28, - 0x01, - 0x29, - 0x01, - 0x02, - 0x00, - 0x2a, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x2b, - 0x01, - 0x5d, - 0x00, - 0x2c, - 0x01, - 0x2d, - 0x01, - 0x02, - 0x00, - 0x2e, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x2f, - 0x01, - 0x5d, - 0x00, - 0x30, - 0x01, - 0x31, - 0x01, - 0x02, - 0x00, - 0x32, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x33, - 0x01, - 0x5d, - 0x00, - 0x34, - 0x01, - 0x35, - 0x01, - 0x02, - 0x00, - 0x36, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x37, - 0x01, - 0x38, - 0x01, - 0x39, - 0x01, - 0x3a, - 0x01, - 0x3b, - 0x01, - 0x3c, - 0x01, - 0x3d, - 0x01, - 0x3e, - 0x01, - 0x3f, - 0x01, - 0x40, - 0x01, - 0x41, - 0x01, - 0x42, - 0x01, - 0x43, - 0x01, - 0x5d, - 0x00, - 0x44, - 0x01, - 0x45, - 0x01, - 0x46, - 0x01, - 0x47, - 0x01, - 0x48, - 0x01, - 0x5d, - 0x00, - 0xec, - 0x02, - 0x00, - 0x00, - 0x1d, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x7a, - 0x00, - 0x49, - 0x01, - 0x02, - 0x00, - 0x4a, - 0x01, - 0x4b, - 0x01, - 0x4c, - 0x01, - 0x4d, - 0x01, - 0x4e, - 0x01, - 0x4f, - 0x01, - 0x50, - 0x01, - 0x05, - 0x00, - 0x51, - 0x01, - 0x52, - 0x01, - 0x08, - 0x00, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x02, - 0x00, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x59, - 0x01, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5a, - 0x01, - 0x5b, - 0x01, - 0x5d, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x79, - 0x00, - 0x7a, - 0x00, - 0xd6, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x01, - 0x5d, - 0x00, - 0xba, - 0x0b, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x5d, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x08, - 0x00, - 0x60, - 0x01, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1a, - 0x00, - 0x1b, - 0x00, - 0x1c, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x27, - 0x00, - 0x28, - 0x00, - 0x29, - 0x00, - 0x2a, - 0x00, - 0x2b, - 0x00, - 0x2c, - 0x00, - 0x2d, - 0x00, - 0x2e, - 0x00, - 0x2f, - 0x00, - 0x30, - 0x00, - 0x31, - 0x00, - 0x32, - 0x00, - 0x33, - 0x00, - 0x34, - 0x00, - 0x35, - 0x00, - 0x36, - 0x00, - 0x37, - 0x00, - 0x38, - 0x00, - 0x39, - 0x00, - 0x3a, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0x3d, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - 0x00, - 0x43, - 0x00, - 0x44, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0x4a, - 0x00, - 0x4b, - 0x00, - 0x4c, - 0x00, - 0x4d, - 0x00, - 0x4e, - 0x00, - 0x4f, - 0x00, - 0x50, - 0x00, - 0x51, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0x57, - 0x00, - 0x58, - 0x00, - 0x59, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5b, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x5d, - 0x00, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x02, - 0x00, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6a, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x6b, - 0x01, - 0x5d, - 0x00, - 0x6c, - 0x01, - 0x6d, - 0x01, - 0x6e, - 0x01, - 0x6f, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x01, - 0x7a, - 0x01, - 0x7b, - 0x01, - 0x7c, - 0x01, - 0x7d, - 0x01, - 0x7e, - 0x01, - 0x7f, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x5d, - 0x00, - 0xd7, - 0x08, - 0x00, - 0x00, - 0x85, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0x2c, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x30, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0x33, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0x36, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0xb9, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0x43, - 0x00, - 0xc0, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0x4e, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5b, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x5d, - 0x00, - 0x89, - 0x01, - 0x8a, - 0x01, - 0x8b, - 0x01, - 0x8c, - 0x01, - 0x8d, - 0x01, - 0x8e, - 0x01, - 0x8f, - 0x01, - 0x02, - 0x00, - 0x90, - 0x01, - 0x91, - 0x01, - 0x92, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x93, - 0x01, - 0x5d, - 0x00, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9a, - 0x01, - 0x9b, - 0x01, - 0x73, - 0x00, - 0x74, - 0x00, - 0x75, - 0x00, - 0x9c, - 0x01, - 0x9d, - 0x01, - 0x9e, - 0x01, - 0x5d, - 0x00, - 0xe9, - 0x08, - 0x00, - 0x00, - 0xa4, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x7b, - 0x00, - 0x02, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0x82, - 0x00, - 0x83, - 0x00, - 0x84, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0x2c, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x30, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0x33, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0x36, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0xb9, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0x43, - 0x00, - 0xc0, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0x4e, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0xd0, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0x9f, - 0x01, - 0xa0, - 0x01, - 0xd6, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0xa1, - 0x01, - 0xa2, - 0x01, - 0xd8, - 0x00, - 0xd9, - 0x00, - 0xda, - 0x00, - 0x02, - 0x00, - 0xdb, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xdc, - 0x00, - 0x5d, - 0x00, - 0xdd, - 0x00, - 0xde, - 0x00, - 0x02, - 0x00, - 0xdf, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe0, - 0x00, - 0x5d, - 0x00, - 0xe1, - 0x00, - 0xe2, - 0x00, - 0x02, - 0x00, - 0xe3, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe4, - 0x00, - 0x5d, - 0x00, - 0xe5, - 0x00, - 0xe6, - 0x00, - 0x02, - 0x00, - 0xe7, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xe8, - 0x00, - 0x5d, - 0x00, - 0xe9, - 0x00, - 0xea, - 0x00, - 0x02, - 0x00, - 0xeb, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xec, - 0x00, - 0xed, - 0x00, - 0xee, - 0x00, - 0xef, - 0x00, - 0xf0, - 0x00, - 0xf1, - 0x00, - 0xf2, - 0x00, - 0xf3, - 0x00, - 0xa3, - 0x01, - 0xa4, - 0x01, - 0xa5, - 0x01, - 0xa6, - 0x01, - 0x5d, - 0x00, - 0xf9, - 0x00, - 0x5d, - 0x00, - 0x52, - 0x00, - 0x00, - 0x00, - 0x05, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5d, - 0x00, - 0xa5, - 0x0e, - 0x00, - 0x00, - 0xd7, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x7b, - 0x00, - 0x02, - 0x00, - 0x7c, - 0x00, - 0x7d, - 0x00, - 0x7e, - 0x00, - 0x7f, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x05, - 0x00, - 0xfa, - 0x00, - 0xfb, - 0x00, - 0xfc, - 0x00, - 0xfd, - 0x00, - 0xfe, - 0x00, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0x2c, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x30, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0x33, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0x36, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0xb9, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0x43, - 0x00, - 0xc0, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0x4e, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0xd0, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0xd1, - 0x00, - 0xd2, - 0x00, - 0xd3, - 0x00, - 0xa7, - 0x01, - 0x9f, - 0x01, - 0xa8, - 0x01, - 0xa0, - 0x01, - 0xd6, - 0x00, - 0xa9, - 0x01, - 0x02, - 0x00, - 0xaa, - 0x01, - 0x03, - 0x01, - 0x02, - 0x00, - 0x04, - 0x01, - 0x5d, - 0x00, - 0xab, - 0x01, - 0xac, - 0x01, - 0x07, - 0x01, - 0x02, - 0x00, - 0x08, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x09, - 0x01, - 0x5d, - 0x00, - 0xad, - 0x01, - 0x0d, - 0x01, - 0x0e, - 0x01, - 0x02, - 0x00, - 0xae, - 0x01, - 0xaf, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x13, - 0x01, - 0x5d, - 0x00, - 0x14, - 0x01, - 0x15, - 0x01, - 0x16, - 0x01, - 0x02, - 0x00, - 0xb0, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x1c, - 0x01, - 0x5d, - 0x00, - 0x1d, - 0x01, - 0x1e, - 0x01, - 0x1f, - 0x01, - 0x20, - 0x01, - 0x21, - 0x01, - 0x04, - 0x01, - 0x5d, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0xb1, - 0x01, - 0xb2, - 0x01, - 0x23, - 0x01, - 0x24, - 0x01, - 0x25, - 0x01, - 0x02, - 0x00, - 0x26, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x27, - 0x01, - 0x5d, - 0x00, - 0x28, - 0x01, - 0x29, - 0x01, - 0x02, - 0x00, - 0x2a, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x2b, - 0x01, - 0x5d, - 0x00, - 0x2c, - 0x01, - 0x2d, - 0x01, - 0x02, - 0x00, - 0x2e, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x2f, - 0x01, - 0x5d, - 0x00, - 0x30, - 0x01, - 0x31, - 0x01, - 0x02, - 0x00, - 0x32, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x33, - 0x01, - 0x5d, - 0x00, - 0x34, - 0x01, - 0x35, - 0x01, - 0x02, - 0x00, - 0x36, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x37, - 0x01, - 0x38, - 0x01, - 0x39, - 0x01, - 0x3a, - 0x01, - 0x3b, - 0x01, - 0x3c, - 0x01, - 0x3d, - 0x01, - 0x3e, - 0x01, - 0xb3, - 0x01, - 0xb4, - 0x01, - 0xb5, - 0x01, - 0xb6, - 0x01, - 0x5d, - 0x00, - 0x44, - 0x01, - 0x45, - 0x01, - 0xb7, - 0x01, - 0x47, - 0x01, - 0x48, - 0x01, - 0x5d, - 0x00, - 0xcc, - 0x02, - 0x00, - 0x00, - 0x1c, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x49, - 0x01, - 0x02, - 0x00, - 0xb8, - 0x01, - 0xb9, - 0x01, - 0xba, - 0x01, - 0xbb, - 0x01, - 0xbc, - 0x01, - 0xbd, - 0x01, - 0xbe, - 0x01, - 0x05, - 0x00, - 0x51, - 0x01, - 0x52, - 0x01, - 0x08, - 0x00, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x02, - 0x00, - 0x56, - 0x01, - 0x57, - 0x01, - 0xbf, - 0x01, - 0xc0, - 0x01, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5a, - 0x01, - 0x5b, - 0x01, - 0x5d, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x07, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0xd6, - 0x00, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x01, - 0x5d, - 0x00, - 0x0e, - 0x0b, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x83, - 0x01, - 0x84, - 0x01, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x5e, - 0x01, - 0x5f, - 0x01, - 0x08, - 0x00, - 0x60, - 0x01, - 0x0a, - 0x00, - 0x02, - 0x00, - 0x0b, - 0x00, - 0x0c, - 0x00, - 0x0d, - 0x00, - 0x0e, - 0x00, - 0x0f, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x1d, - 0x00, - 0x1e, - 0x00, - 0x1f, - 0x00, - 0x20, - 0x00, - 0x9d, - 0x00, - 0x9e, - 0x00, - 0x9f, - 0x00, - 0xa0, - 0x00, - 0xa1, - 0x00, - 0xa2, - 0x00, - 0xa3, - 0x00, - 0xa4, - 0x00, - 0xa5, - 0x00, - 0xa6, - 0x00, - 0xa7, - 0x00, - 0x2c, - 0x00, - 0xa9, - 0x00, - 0xaa, - 0x00, - 0xab, - 0x00, - 0x30, - 0x00, - 0xad, - 0x00, - 0xae, - 0x00, - 0x33, - 0x00, - 0xb0, - 0x00, - 0xb1, - 0x00, - 0x36, - 0x00, - 0xb3, - 0x00, - 0xb4, - 0x00, - 0xb5, - 0x00, - 0xb6, - 0x00, - 0x3b, - 0x00, - 0x3c, - 0x00, - 0xb9, - 0x00, - 0x3e, - 0x00, - 0x3f, - 0x00, - 0x40, - 0x00, - 0xbd, - 0x00, - 0xbe, - 0x00, - 0x43, - 0x00, - 0xc0, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0xc6, - 0x00, - 0xc7, - 0x00, - 0xc8, - 0x00, - 0xc9, - 0x00, - 0x4e, - 0x00, - 0xcb, - 0x00, - 0xcc, - 0x00, - 0xcd, - 0x00, - 0xce, - 0x00, - 0xcf, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x5a, - 0x00, - 0x02, - 0x00, - 0x5b, - 0x00, - 0x02, - 0x00, - 0x5c, - 0x00, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0x5f, - 0x00, - 0x5d, - 0x00, - 0xc1, - 0x01, - 0xc2, - 0x01, - 0xc3, - 0x01, - 0xc4, - 0x01, - 0xc5, - 0x01, - 0xc6, - 0x01, - 0xc7, - 0x01, - 0x02, - 0x00, - 0xc8, - 0x01, - 0xc9, - 0x01, - 0xca, - 0x01, - 0x5d, - 0x00, - 0x5e, - 0x00, - 0x02, - 0x00, - 0xcb, - 0x01, - 0x5d, - 0x00, - 0xcc, - 0x01, - 0xcd, - 0x01, - 0xce, - 0x01, - 0xcf, - 0x01, - 0xd0, - 0x01, - 0xd1, - 0x01, - 0xd2, - 0x01, - 0xd3, - 0x01, - 0xd4, - 0x01, - 0xd5, - 0x01, - 0xd6, - 0x01, - 0xd7, - 0x01, - 0xd8, - 0x01, - 0xd9, - 0x01, - 0xda, - 0x01, - 0xdb, - 0x01, - 0xdc, - 0x01, - 0xdd, - 0x01, - 0xde, - 0x01, - 0xdf, - 0x01, - 0xe0, - 0x01, - 0xe1, - 0x01, - 0x82, - 0x01, - 0x5d, - 0x00, - 0x4c, - 0x54, - 0x45, - 0x4d, - 0x5f, - 0x54, - 0x41, - 0x4d, - 0x52, - 0x0c, - 0x00, - 0x00, - 0x12, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x01, - 0x92, - 0x01, - 0x00, - 0x00, - 0x01, - 0x10, - 0x00, - 0x86, - 0x00, - 0x00, - 0x00, - 0x01, - 0x10, - 0x01, - 0xf6, - 0x02, - 0x00, - 0x00, - 0x01, - 0x20, - 0x01, - 0x10, - 0x03, - 0x00, - 0x00, - 0x01, - 0x30, - 0x01, - 0x04, - 0x05, - 0x00, - 0x00, - 0x01, - 0x44, - 0x01, - 0x68, - 0x05, - 0x00, - 0x00, - 0x01, - 0x80, - 0x00, - 0x92, - 0x05, - 0x00, - 0x00, - 0x01, - 0x90, - 0x00, - 0x92, - 0x05, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0xc2, - 0x06, - 0x00, - 0x00, - 0x02, - 0x00, - 0x01, - 0xce, - 0x07, - 0x00, - 0x00, - 0x02, - 0x10, - 0x00, - 0xc2, - 0x06, - 0x00, - 0x00, - 0x02, - 0x10, - 0x01, - 0xf6, - 0x02, - 0x00, - 0x00, - 0x02, - 0x20, - 0x01, - 0x32, - 0x09, - 0x00, - 0x00, - 0x02, - 0x30, - 0x01, - 0x04, - 0x05, - 0x00, - 0x00, - 0x02, - 0x44, - 0x01, - 0x68, - 0x05, - 0x00, - 0x00, - 0x02, - 0x80, - 0x00, - 0x22, - 0x0b, - 0x00, - 0x00, - 0x02, - 0x90, - 0x00, - 0x22, - 0x0b, - 0x00, - 0x00, - 0x66, - 0x0d, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x37, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x38, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x3a, - 0x02, - 0x3b, - 0x02, - 0x3c, - 0x02, - 0x3d, - 0x02, - 0x3e, - 0x02, - 0x3f, - 0x02, - 0x40, - 0x02, - 0x41, - 0x02, - 0x42, - 0x02, - 0x43, - 0x02, - 0x44, - 0x02, - 0x45, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x48, - 0x02, - 0x46, - 0x02, - 0x49, - 0x02, - 0x4a, - 0x02, - 0x4b, - 0x02, - 0x4c, - 0x02, - 0x4d, - 0x02, - 0x4e, - 0x02, - 0x4f, - 0x02, - 0x50, - 0x02, - 0x51, - 0x02, - 0x52, - 0x02, - 0x53, - 0x02, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x64, - 0x10, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x55, - 0x02, - 0x02, - 0x00, - 0x56, - 0x02, - 0x57, - 0x02, - 0x58, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x59, - 0x02, - 0xe4, - 0x01, - 0x5a, - 0x02, - 0x5b, - 0x02, - 0x5c, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x5e, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x5f, - 0x02, - 0x60, - 0x02, - 0x61, - 0x02, - 0x62, - 0x02, - 0x63, - 0x02, - 0x42, - 0x02, - 0x64, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x65, - 0x02, - 0x46, - 0x02, - 0x66, - 0x02, - 0x67, - 0x02, - 0x42, - 0x02, - 0x68, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x69, - 0x02, - 0x46, - 0x02, - 0x6a, - 0x02, - 0x6b, - 0x02, - 0x42, - 0x02, - 0x6c, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x6d, - 0x02, - 0x46, - 0x02, - 0x6e, - 0x02, - 0x6f, - 0x02, - 0x42, - 0x02, - 0x70, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x71, - 0x02, - 0x46, - 0x02, - 0x72, - 0x02, - 0x73, - 0x02, - 0x42, - 0x02, - 0x74, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x75, - 0x02, - 0x76, - 0x02, - 0x77, - 0x02, - 0x78, - 0x02, - 0x79, - 0x02, - 0x7a, - 0x02, - 0x7b, - 0x02, - 0x7c, - 0x02, - 0x7d, - 0x02, - 0x7e, - 0x02, - 0x7f, - 0x02, - 0x80, - 0x02, - 0x81, - 0x02, - 0x82, - 0x02, - 0x46, - 0x02, - 0x83, - 0x02, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x64, - 0x00, - 0x00, - 0x00, - 0x09, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0x84, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x06, - 0x1d, - 0x00, - 0x00, - 0xf6, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x55, - 0x02, - 0x02, - 0x00, - 0x56, - 0x02, - 0x57, - 0x02, - 0x58, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x85, - 0x02, - 0xe4, - 0x01, - 0x86, - 0x02, - 0x87, - 0x02, - 0x88, - 0x02, - 0x89, - 0x02, - 0x8a, - 0x02, - 0x8b, - 0x02, - 0x8c, - 0x02, - 0x8d, - 0x02, - 0x8e, - 0x02, - 0x8f, - 0x02, - 0x90, - 0x02, - 0x91, - 0x02, - 0x92, - 0x02, - 0x93, - 0x02, - 0x94, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x5a, - 0x02, - 0x5b, - 0x02, - 0x5c, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x95, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x96, - 0x02, - 0x97, - 0x02, - 0x98, - 0x02, - 0x99, - 0x02, - 0x9a, - 0x02, - 0x42, - 0x02, - 0x9b, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x9c, - 0x02, - 0x46, - 0x02, - 0x9d, - 0x02, - 0x9e, - 0x02, - 0x42, - 0x02, - 0x9f, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa0, - 0x02, - 0x46, - 0x02, - 0xa1, - 0x02, - 0xa2, - 0x02, - 0x42, - 0x02, - 0xa3, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa4, - 0x02, - 0x46, - 0x02, - 0xa5, - 0x02, - 0xa6, - 0x02, - 0x42, - 0x02, - 0xa7, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa8, - 0x02, - 0x46, - 0x02, - 0xa9, - 0x02, - 0xaa, - 0x02, - 0x42, - 0x02, - 0xab, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xac, - 0x02, - 0xad, - 0x02, - 0xae, - 0x02, - 0xaf, - 0x02, - 0xb0, - 0x02, - 0xb1, - 0x02, - 0xb2, - 0x02, - 0xb3, - 0x02, - 0xb4, - 0x02, - 0xb5, - 0x02, - 0xb6, - 0x02, - 0xb7, - 0x02, - 0xb8, - 0x02, - 0xb9, - 0x02, - 0x46, - 0x02, - 0xba, - 0x02, - 0xbb, - 0x02, - 0xbc, - 0x02, - 0xbd, - 0x02, - 0x42, - 0x02, - 0xbe, - 0x02, - 0xbf, - 0x02, - 0xc0, - 0x02, - 0xc1, - 0x02, - 0xc2, - 0x02, - 0xc3, - 0x02, - 0xc4, - 0x02, - 0xc5, - 0x02, - 0xc6, - 0x02, - 0xc7, - 0x02, - 0xc0, - 0x02, - 0xc8, - 0x02, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0xca, - 0x02, - 0xc3, - 0x02, - 0xcb, - 0x02, - 0xcc, - 0x02, - 0xcd, - 0x02, - 0xce, - 0x02, - 0xcf, - 0x02, - 0xc0, - 0x02, - 0xd0, - 0x02, - 0xd1, - 0x02, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0xd2, - 0x02, - 0xc3, - 0x02, - 0xd3, - 0x02, - 0xd4, - 0x02, - 0xd5, - 0x02, - 0xc0, - 0x02, - 0xd6, - 0x02, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0xd7, - 0x02, - 0xc3, - 0x02, - 0xd8, - 0x02, - 0xd9, - 0x02, - 0xda, - 0x02, - 0xdb, - 0x02, - 0xdc, - 0x02, - 0xdd, - 0x02, - 0xde, - 0x02, - 0xdf, - 0x02, - 0xe0, - 0x02, - 0xe1, - 0x02, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0xbc, - 0x03, - 0x00, - 0x00, - 0x2e, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0x49, - 0x01, - 0x02, - 0x00, - 0xe2, - 0x02, - 0xe3, - 0x02, - 0xe4, - 0x02, - 0xe5, - 0x02, - 0xe6, - 0x02, - 0xe7, - 0x02, - 0xe8, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x51, - 0x01, - 0x52, - 0x01, - 0x08, - 0x00, - 0xe9, - 0x02, - 0xe4, - 0x01, - 0xea, - 0x02, - 0x02, - 0x00, - 0xeb, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0xec, - 0x02, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0xed, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x33, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0xee, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0xef, - 0x02, - 0xf0, - 0x02, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0xec, - 0x00, - 0x00, - 0x00, - 0x11, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0xf1, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0xf2, - 0x02, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0xec, - 0x10, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0xf3, - 0x02, - 0xf4, - 0x02, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0xf5, - 0x02, - 0xf6, - 0x02, - 0xf7, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x37, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x38, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x3a, - 0x02, - 0xf8, - 0x02, - 0xf9, - 0x02, - 0xfa, - 0x02, - 0xfb, - 0x02, - 0xfc, - 0x02, - 0xfd, - 0x02, - 0xfe, - 0x02, - 0x42, - 0x02, - 0xff, - 0x02, - 0x00, - 0x03, - 0x01, - 0x03, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x02, - 0x03, - 0x46, - 0x02, - 0x03, - 0x03, - 0x04, - 0x03, - 0x05, - 0x03, - 0x06, - 0x03, - 0x07, - 0x03, - 0x08, - 0x03, - 0x09, - 0x03, - 0x0a, - 0x03, - 0x0b, - 0x03, - 0x0c, - 0x03, - 0x0d, - 0x03, - 0x0e, - 0x03, - 0x0f, - 0x03, - 0x10, - 0x03, - 0x11, - 0x03, - 0x12, - 0x03, - 0x13, - 0x03, - 0x14, - 0x03, - 0x15, - 0x03, - 0x16, - 0x03, - 0x17, - 0x03, - 0x18, - 0x03, - 0x19, - 0x03, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x66, - 0x0d, - 0x00, - 0x00, - 0x82, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x37, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x38, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x3a, - 0x02, - 0x1a, - 0x03, - 0x1b, - 0x03, - 0x1c, - 0x03, - 0x1d, - 0x03, - 0x1e, - 0x03, - 0x1f, - 0x03, - 0x20, - 0x03, - 0x42, - 0x02, - 0x21, - 0x03, - 0x22, - 0x03, - 0x23, - 0x03, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x24, - 0x03, - 0x46, - 0x02, - 0x25, - 0x03, - 0x26, - 0x03, - 0x27, - 0x03, - 0x28, - 0x03, - 0x29, - 0x03, - 0x2a, - 0x03, - 0x2b, - 0x03, - 0x2c, - 0x03, - 0x2d, - 0x03, - 0x2e, - 0x03, - 0x2f, - 0x03, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x2d, - 0x10, - 0x00, - 0x00, - 0xae, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x55, - 0x02, - 0x02, - 0x00, - 0x56, - 0x02, - 0x57, - 0x02, - 0x58, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x03, - 0xe4, - 0x01, - 0x5a, - 0x02, - 0x5b, - 0x02, - 0x5c, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x5e, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x5f, - 0x02, - 0x31, - 0x03, - 0x61, - 0x02, - 0x62, - 0x02, - 0x63, - 0x02, - 0x42, - 0x02, - 0x64, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x65, - 0x02, - 0x46, - 0x02, - 0x66, - 0x02, - 0x67, - 0x02, - 0x42, - 0x02, - 0x68, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x69, - 0x02, - 0x46, - 0x02, - 0x6a, - 0x02, - 0x6b, - 0x02, - 0x42, - 0x02, - 0x6c, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x6d, - 0x02, - 0x46, - 0x02, - 0x6e, - 0x02, - 0x6f, - 0x02, - 0x42, - 0x02, - 0x70, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x71, - 0x02, - 0x46, - 0x02, - 0x32, - 0x03, - 0x73, - 0x02, - 0x42, - 0x02, - 0x33, - 0x03, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x34, - 0x03, - 0x35, - 0x03, - 0x36, - 0x03, - 0x37, - 0x03, - 0x38, - 0x03, - 0x7a, - 0x02, - 0x7b, - 0x02, - 0x7c, - 0x02, - 0x39, - 0x03, - 0x3a, - 0x03, - 0x3b, - 0x03, - 0x3c, - 0x03, - 0x3d, - 0x03, - 0x3e, - 0x03, - 0x46, - 0x02, - 0x3f, - 0x03, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x5e, - 0x1c, - 0x00, - 0x00, - 0xf4, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x55, - 0x02, - 0x02, - 0x00, - 0x56, - 0x02, - 0x57, - 0x02, - 0x58, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x40, - 0x03, - 0xe4, - 0x01, - 0x86, - 0x02, - 0x87, - 0x02, - 0x88, - 0x02, - 0x89, - 0x02, - 0x8a, - 0x02, - 0x8b, - 0x02, - 0x8c, - 0x02, - 0x8d, - 0x02, - 0x8e, - 0x02, - 0x8f, - 0x02, - 0x90, - 0x02, - 0x91, - 0x02, - 0x92, - 0x02, - 0x93, - 0x02, - 0x94, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x5a, - 0x02, - 0x5b, - 0x02, - 0x5c, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x5d, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x95, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x96, - 0x02, - 0x41, - 0x03, - 0x98, - 0x02, - 0x99, - 0x02, - 0x9a, - 0x02, - 0x42, - 0x02, - 0x9b, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x9c, - 0x02, - 0x46, - 0x02, - 0x9d, - 0x02, - 0x9e, - 0x02, - 0x42, - 0x02, - 0x9f, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa0, - 0x02, - 0x46, - 0x02, - 0xa1, - 0x02, - 0xa2, - 0x02, - 0x42, - 0x02, - 0xa3, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa4, - 0x02, - 0x46, - 0x02, - 0xa5, - 0x02, - 0xa6, - 0x02, - 0x42, - 0x02, - 0xa7, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0xa8, - 0x02, - 0x46, - 0x02, - 0x42, - 0x03, - 0xaa, - 0x02, - 0x42, - 0x02, - 0x43, - 0x03, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x44, - 0x03, - 0x45, - 0x03, - 0x46, - 0x03, - 0x47, - 0x03, - 0x48, - 0x03, - 0xb1, - 0x02, - 0xb2, - 0x02, - 0xb3, - 0x02, - 0x49, - 0x03, - 0x4a, - 0x03, - 0x4b, - 0x03, - 0x4c, - 0x03, - 0x4d, - 0x03, - 0x4e, - 0x03, - 0x46, - 0x02, - 0x4f, - 0x03, - 0xbb, - 0x02, - 0x50, - 0x03, - 0x51, - 0x03, - 0xbd, - 0x02, - 0x42, - 0x02, - 0xbe, - 0x02, - 0xbf, - 0x02, - 0xc0, - 0x02, - 0x52, - 0x03, - 0xc2, - 0x02, - 0xc3, - 0x02, - 0xc4, - 0x02, - 0xc5, - 0x02, - 0xc6, - 0x02, - 0xc7, - 0x02, - 0xc0, - 0x02, - 0xc8, - 0x02, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0xca, - 0x02, - 0xc3, - 0x02, - 0x53, - 0x03, - 0x54, - 0x03, - 0xcf, - 0x02, - 0xc0, - 0x02, - 0x55, - 0x03, - 0x56, - 0x03, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0x57, - 0x03, - 0xc3, - 0x02, - 0x58, - 0x03, - 0x59, - 0x03, - 0xd5, - 0x02, - 0xc0, - 0x02, - 0x5a, - 0x03, - 0xc3, - 0x02, - 0xc9, - 0x02, - 0xc0, - 0x02, - 0xd7, - 0x02, - 0xc3, - 0x02, - 0x5b, - 0x03, - 0x5c, - 0x03, - 0xdb, - 0x02, - 0xdc, - 0x02, - 0xdd, - 0x02, - 0xde, - 0x02, - 0xdf, - 0x02, - 0xe0, - 0x02, - 0x5d, - 0x03, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, - 0x1b, - 0x11, - 0x00, - 0x00, - 0x94, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x01, - 0xe3, - 0x01, - 0xe4, - 0x01, - 0xe5, - 0x01, - 0xe4, - 0x01, - 0xe6, - 0x01, - 0x02, - 0x00, - 0xe7, - 0x01, - 0xe8, - 0x01, - 0xe9, - 0x01, - 0xea, - 0x01, - 0xeb, - 0x01, - 0xec, - 0x01, - 0xed, - 0x01, - 0xee, - 0x01, - 0xef, - 0x01, - 0xf0, - 0x01, - 0xf1, - 0x01, - 0xf2, - 0x01, - 0xf3, - 0x01, - 0xf4, - 0x01, - 0xf5, - 0x01, - 0xf6, - 0x01, - 0xf7, - 0x01, - 0xf8, - 0x01, - 0xf9, - 0x01, - 0xfa, - 0x01, - 0xfb, - 0x01, - 0xfc, - 0x01, - 0xfd, - 0x01, - 0xfe, - 0x01, - 0xff, - 0x01, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0a, - 0x02, - 0x0b, - 0x02, - 0x0c, - 0x02, - 0x0d, - 0x02, - 0x0e, - 0x02, - 0x0f, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1a, - 0x02, - 0x1b, - 0x02, - 0x1c, - 0x02, - 0x1d, - 0x02, - 0x1e, - 0x02, - 0x1f, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2a, - 0x02, - 0x2b, - 0x02, - 0x2c, - 0x02, - 0x2d, - 0x02, - 0x2e, - 0x02, - 0x2f, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0xf3, - 0x02, - 0xf4, - 0x02, - 0xe4, - 0x01, - 0x30, - 0x02, - 0x02, - 0x00, - 0x31, - 0x02, - 0x32, - 0x02, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0xf5, - 0x02, - 0xf6, - 0x02, - 0xf7, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x36, - 0x02, - 0x02, - 0x00, - 0x37, - 0x02, - 0x05, - 0x00, - 0xe4, - 0x01, - 0x38, - 0x02, - 0x02, - 0x00, - 0x39, - 0x02, - 0x3a, - 0x02, - 0x5e, - 0x03, - 0x5f, - 0x03, - 0x60, - 0x03, - 0x61, - 0x03, - 0x62, - 0x03, - 0x63, - 0x03, - 0x64, - 0x03, - 0x42, - 0x02, - 0x65, - 0x03, - 0x66, - 0x03, - 0x67, - 0x03, - 0x46, - 0x02, - 0x47, - 0x02, - 0x42, - 0x02, - 0x68, - 0x03, - 0x46, - 0x02, - 0x69, - 0x03, - 0x6a, - 0x03, - 0x6b, - 0x03, - 0x6c, - 0x03, - 0x6d, - 0x03, - 0x6e, - 0x03, - 0x6f, - 0x03, - 0x70, - 0x03, - 0x71, - 0x03, - 0x72, - 0x03, - 0x73, - 0x03, - 0x74, - 0x03, - 0x75, - 0x03, - 0x76, - 0x03, - 0x77, - 0x03, - 0x78, - 0x03, - 0x79, - 0x03, - 0x7a, - 0x03, - 0x7b, - 0x03, - 0x7c, - 0x03, - 0x17, - 0x03, - 0x18, - 0x03, - 0x19, - 0x03, - 0x54, - 0x02, - 0x5d, - 0x00, - 0xe4, - 0x01, +// IMAGE +0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x06, 0x00, 0x00, +0x00, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x4c, 0x44, 0x4d, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, +0x00, 0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, +0x98, 0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, +0x74, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x00, 0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0xe1, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x01, 0x0a, 0x01, +0x01, 0x0b, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, +0x73, 0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, +0x6f, 0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, +0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, +0x65, 0x00, 0x0a, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, +0x4d, 0x59, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6d, +0x61, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x20, 0x42, 0x49, 0x53, 0x5f, 0x54, +0x41, 0x4d, 0x21, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x00, 0x02, 0x03, 0x00, 0x53, +0x4e, 0x4f, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, +0x42, 0x55, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, +0x4e, 0x45, 0x4c, 0x42, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, +0x52, 0x57, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x01, 0x49, 0x52, 0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x45, +0x54, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, +0x00, 0x00, 0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, +0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, +0x00, 0x00, 0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0xdc, 0xa2, 0x66, 0x74, 0xeb, +0x96, 0xfe, 0x92, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x00, 0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x41, 0x41, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, +0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, +0x4d, 0x04, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x03, 0x52, 0x54, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0x89, 0x75, 0x00, 0x00, +0x7d, 0x03, 0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, +0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, +0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, +0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x7d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, +0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, +0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, +0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, +0x00, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, +0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, +0x5d, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x32, 0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, +0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, +0x5d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x6b, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, +0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, +0x3b, 0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, +0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, +0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x6f, +0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x6f, 0x69, 0x64, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, +0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, +0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x30, 0x34, 0x20, 0x3d, +0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x33, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x30, 0x34, 0x3b, 0x00, 0x5f, 0x33, 0x34, 0x36, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x30, 0x34, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x2d, 0x30, 0x2e, 0x35, 0x29, 0x29, +0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x38, 0x30, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x33, +0x34, 0x36, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, +0x30, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, +0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x38, 0x32, 0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, +0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x5f, +0x32, 0x38, 0x30, 0x3b, 0x00, 0x5f, 0x33, 0x35, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x38, 0x32, 0x20, +0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, +0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, +0x39, 0x3b, 0x00, 0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x33, 0x36, 0x33, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x30, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, +0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, +0x20, 0x2f, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, +0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x30, 0x34, 0x2e, 0x78, 0x79, 0x20, +0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, +0x5f, 0x33, 0x33, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x33, 0x33, +0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x20, +0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x28, 0x5f, 0x33, 0x33, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x00, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, +0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, +0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, +0x32, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x36, +0x3b, 0x00, 0x5f, 0x33, 0x34, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x34, 0x36, 0x2e, 0x7a, 0x20, 0x2a, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x5f, 0x33, 0x34, 0x36, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x36, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, +0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x70, 0x72, 0x65, +0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x3b, 0x00, +0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, +0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, +0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, +0x72, 0x43, 0x6f, 0x61, 0x74, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, +0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x30, +0x35, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x30, 0x36, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x35, 0x35, 0x33, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, +0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, +0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, +0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, +0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, +0x34, 0x30, 0x5d, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, +0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x3b, 0x00, 0x7d, 0x20, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, +0x44, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, +0x67, 0x65, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x61, +0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, +0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, +0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, +0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, +0x55, 0x56, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, 0x65, +0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, +0x2e, 0x78, 0x79, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x3b, 0x00, +0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x32, 0x31, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x31, 0x34, +0x29, 0x00, 0x5f, 0x34, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x78, 0x20, 0x3e, 0x20, 0x31, 0x2e, +0x30, 0x3b, 0x00, 0x5f, 0x34, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, +0x20, 0x5f, 0x34, 0x32, 0x38, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x32, 0x31, 0x29, 0x00, 0x5f, 0x34, +0x32, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x5f, +0x34, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, 0x31, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x33, +0x35, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x32, 0x38, 0x29, 0x00, 0x5f, 0x34, 0x33, 0x35, 0x20, 0x3d, +0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x5f, 0x34, 0x33, 0x35, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x3b, 0x00, 0x69, +0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x33, 0x35, 0x29, 0x00, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, +0x31, 0x2e, 0x79, 0x20, 0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x33, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, +0x34, 0x34, 0x32, 0x29, 0x00, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, +0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x5f, +0x34, 0x31, 0x31, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x70, +0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x34, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x34, +0x35, 0x37, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x35, 0x37, 0x3b, 0x00, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x78, 0x3b, +0x00, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x35, +0x34, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x34, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x6d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2e, 0x78, 0x79, 0x7a, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, +0x34, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, +0x20, 0x5f, 0x35, 0x35, 0x33, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x5f, 0x35, +0x34, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x35, 0x34, 0x38, 0x2e, +0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x35, 0x34, 0x38, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x38, +0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x28, 0x5f, 0x35, 0x36, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x35, +0x2c, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x36, 0x29, 0x2e, +0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x30, +0x35, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x35, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x36, 0x29, +0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x34, +0x30, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x37, 0x34, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x34, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, +0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, +0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, +0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, +0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, +0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, +0x31, 0x34, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x5f, 0x38, 0x30, 0x35, 0x20, +0x3d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, +0x7a, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, +0x7a, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x29, 0x29, 0x20, 0x2f, +0x20, 0x5f, 0x32, 0x31, 0x34, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, +0x38, 0x30, 0x35, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, +0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x34, 0x37, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, +0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, +0x32, 0x34, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, +0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x36, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, +0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x34, +0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, +0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, +0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, +0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, +0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, +0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, +0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, +0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x38, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, +0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, +0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, +0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, +0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, +0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, +0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, +0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, +0x5f, 0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x38, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, +0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x35, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x38, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x31, 0x20, 0x3d, +0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x37, 0x37, 0x20, 0x3d, 0x20, +0x28, 0x5f, 0x33, 0x37, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, +0x32, 0x35, 0x34, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x38, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x37, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x37, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, +0x36, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x76, 0x61, 0x72, +0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x76, 0x65, +0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, +0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, +0x20, 0x5f, 0x36, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x2e, 0x63, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x34, 0x38, +0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x34, 0x31, 0x29, 0x00, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x3d, 0x20, +0x5f, 0x36, 0x33, 0x38, 0x2e, 0x78, 0x20, 0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x3d, +0x20, 0x5f, 0x36, 0x34, 0x31, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x35, 0x35, 0x3b, 0x00, 0x69, 0x66, +0x20, 0x28, 0x21, 0x5f, 0x36, 0x34, 0x38, 0x29, 0x00, 0x5f, 0x36, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x33, 0x38, +0x2e, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, +0x38, 0x3b, 0x00, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x36, 0x32, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, +0x36, 0x35, 0x35, 0x29, 0x00, 0x5f, 0x36, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x33, 0x38, 0x2e, 0x79, 0x20, 0x3c, +0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x5f, 0x36, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x35, 0x35, 0x3b, 0x00, 0x62, +0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x36, 0x39, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x36, 0x32, 0x29, +0x00, 0x5f, 0x36, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x33, 0x38, 0x2e, 0x79, 0x20, 0x3e, 0x20, 0x31, 0x2e, 0x30, +0x3b, 0x00, 0x5f, 0x36, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x36, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x38, 0x30, 0x34, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x36, 0x39, 0x29, 0x00, 0x5f, 0x38, 0x30, 0x34, +0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x3b, +0x00, 0x5f, 0x36, 0x33, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x33, 0x38, +0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x36, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, +0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x5f, 0x36, 0x33, 0x38, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x70, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, +0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, +0x38, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x38, 0x34, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x5f, 0x37, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x34, 0x3b, 0x00, 0x5f, 0x37, 0x37, 0x36, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x37, 0x37, 0x36, 0x2e, 0x79, 0x20, 0x3d, +0x20, 0x5f, 0x36, 0x38, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x37, 0x37, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x36, +0x38, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x37, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x5f, 0x37, 0x37, 0x36, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x38, 0x33, 0x20, +0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, +0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x2c, 0x20, +0x5f, 0x37, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x34, 0x29, 0x2e, 0x62, 0x61, +0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x5f, 0x37, 0x38, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x30, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x37, 0x38, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x2e, +0x79, 0x3b, 0x00, 0x5f, 0x37, 0x38, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x2e, 0x7a, 0x3b, 0x00, +0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, 0x33, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x2c, +0x20, 0x5f, 0x37, 0x34, 0x30, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x31, 0x2c, 0x20, 0x5f, +0x37, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x32, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x2c, 0x20, 0x5f, 0x37, 0x34, 0x30, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x31, 0x2c, 0x20, +0x5f, 0x37, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x37, 0x34, 0x32, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, +0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, +0x61, 0x6d, 0x2c, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x39, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, +0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, +0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, +0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, +0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x31, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, +0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x63, +0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, +0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, +0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, +0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, +0x44, 0x61, 0x74, 0x61, 0x20, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, +0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, +0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x69, 0x6e, 0x74, 0x42, 0x69, 0x74, 0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x37, 0x5d, 0x2e, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, +0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, +0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, +0x4c, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x20, 0x3a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, +0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, +0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, +0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, +0x5f, 0x38, 0x20, 0x32, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, +0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, +0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, +0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, +0x37, 0x36, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x2d, 0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x30, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x31, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x39, 0x30, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x38, 0x32, 0x29, 0x20, 0x3c, 0x20, +0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x31, 0x3b, 0x00, 0x5f, 0x38, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, +0x5f, 0x38, 0x32, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, +0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, +0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, 0x5f, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x39, 0x3b, 0x00, 0x5f, 0x39, +0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x31, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, +0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x39, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, +0x20, 0x5f, 0x39, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x34, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, +0x39, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x37, 0x36, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, +0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x39, 0x2e, +0x79, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, +0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x39, 0x34, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x00, 0x76, 0x61, 0x72, +0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x32, +0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x32, +0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, +0x35, 0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x20, 0x2a, 0x20, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x37, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, +0x32, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, +0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x38, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x38, 0x30, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x5f, 0x31, 0x31, 0x35, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x77, 0x29, +0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x38, 0x30, 0x2e, 0x7a, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x5f, 0x38, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x20, 0x2f, 0x3d, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, +0x20, 0x34, 0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, +0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, +0x70, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, +0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x61, 0x72, +0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, +0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, +0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x33, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x30, 0x35, 0x3b, 0x00, 0x5f, +0x33, 0x34, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x30, 0x35, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x2d, +0x30, 0x2e, 0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, +0x38, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x20, 0x2a, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x33, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x3b, +0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x38, 0x33, 0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, +0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, +0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x3b, 0x00, 0x5f, 0x33, 0x35, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, +0x5f, 0x32, 0x38, 0x33, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, +0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, +0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x31, 0x3b, +0x00, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x33, 0x33, 0x35, 0x20, +0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x2a, +0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x35, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, +0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x30, +0x35, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, +0x2e, 0x35, 0x29, 0x3b, 0x00, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x32, 0x2e, 0x78, +0x3b, 0x00, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x4d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, +0x5f, 0x33, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, +0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x33, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x33, 0x35, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x00, 0x76, 0x61, 0x72, 0x69, 0x61, +0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x32, 0x2e, 0x69, +0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x39, 0x32, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x34, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, +0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x33, 0x34, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, +0x34, 0x37, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x33, 0x34, 0x37, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, +0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x3b, 0x00, 0x75, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3b, 0x00, 0x6c, 0x61, +0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, +0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, +0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, +0x20, 0x5f, 0x35, 0x35, 0x34, 0x2c, 0x20, 0x5f, 0x35, 0x35, 0x33, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, +0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, +0x65, 0x55, 0x56, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, +0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, +0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x5f, 0x35, 0x32, 0x36, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, +0x78, 0x3b, 0x00, 0x5f, 0x35, 0x32, 0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x79, 0x3b, 0x00, +0x5f, 0x35, 0x32, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x35, 0x36, +0x33, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x32, 0x36, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, +0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, +0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, +0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, +0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, +0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x36, +0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, +0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, +0x38, 0x30, 0x35, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, +0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, +0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, +0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, +0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, +0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, +0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, +0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, +0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, +0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, +0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x2a, +0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, +0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x2c, 0x20, 0x5f, 0x37, +0x39, 0x35, 0x2c, 0x20, 0x5f, 0x37, 0x39, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x36, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x63, 0x6c, +0x61, 0x6d, 0x70, 0x28, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, +0x2e, 0x78, 0x79, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, +0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2e, 0x78, +0x79, 0x3b, 0x00, 0x5f, 0x37, 0x36, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x2e, 0x78, 0x3b, 0x00, +0x5f, 0x37, 0x36, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x37, 0x36, +0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x37, 0x36, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, +0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, +0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, 0x6e, 0x74, +0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, +0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, +0x38, 0x5d, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, +0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, +0x32, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x32, 0x3b, 0x00, 0x5f, 0x34, 0x31, +0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x37, 0x32, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x2d, 0x30, 0x2e, +0x35, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x34, 0x38, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x20, 0x2a, +0x20, 0x5f, 0x34, 0x31, 0x34, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x34, 0x38, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x3b, 0x00, 0x69, +0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x33, 0x35, 0x30, 0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, +0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x34, 0x38, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x38, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, +0x35, 0x30, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, +0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, +0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x3b, 0x00, 0x5f, +0x34, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x38, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x20, 0x3d, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, +0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x34, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x37, 0x32, 0x2e, +0x78, 0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x35, +0x29, 0x3b, 0x00, 0x5f, 0x34, 0x30, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x2e, 0x78, 0x3b, 0x00, +0x5f, 0x34, 0x30, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x34, +0x30, 0x39, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x5f, 0x34, 0x30, 0x35, 0x2c, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x00, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, +0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x2e, 0x69, 0x6d, 0x61, +0x67, 0x65, 0x55, 0x56, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x30, 0x39, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x39, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x2e, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x34, 0x31, 0x34, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x39, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x31, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x3b, +0x00, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x38, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x32, 0x32, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, +0x34, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x39, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x38, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x34, 0x31, 0x34, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, +0x34, 0x31, 0x34, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x34, 0x31, 0x34, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x3b, 0x00, 0x23, +0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, +0x62, 0x3e, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, +0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, +0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x78, 0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, +0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, +0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, +0x72, 0x6f, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, +0x6f, 0x69, 0x73, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, +0x72, 0x54, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, +0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, +0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, +0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, +0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, +0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, +0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, +0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, +0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, +0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x61, 0x6f, 0x42, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x7a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, +0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, +0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, +0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x58, 0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, +0x65, 0x76, 0x65, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, +0x53, 0x48, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x73, 0x75, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, +0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, +0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, +0x77, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, +0x61, 0x74, 0x69, 0x6f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x32, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, +0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, +0x73, 0x6d, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x76, 0x73, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, +0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, +0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, +0x6c, 0x6f, 0x66, 0x66, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, +0x75, 0x74, 0x4f, 0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, +0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, +0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, +0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, +0x72, 0x55, 0x76, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, +0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, +0x72, 0x69, 0x64, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, +0x74, 0x6f, 0x6d, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, +0x30, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, +0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, +0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, +0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, +0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x30, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, +0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, +0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, +0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, +0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, +0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, +0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, +0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, +0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, +0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, +0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x38, +0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x38, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x66, +0x6d, 0x61, 0x28, 0x5f, 0x32, 0x38, 0x34, 0x2e, 0x7a, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x36, 0x30, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, +0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x36, 0x30, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x33, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x36, +0x32, 0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, +0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x33, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x33, 0x33, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x36, 0x32, 0x20, 0x3c, 0x20, 0x30, +0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, +0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x30, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x32, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x38, +0x34, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, +0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, +0x33, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x33, 0x33, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x39, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x39, 0x31, 0x2e, 0x79, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, +0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6d, +0x61, 0x67, 0x65, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, +0x5f, 0x35, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x33, 0x20, 0x7b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, +0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, +0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, +0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, +0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x33, 0x26, 0x20, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x20, 0x5b, 0x5b, 0x62, 0x75, +0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x39, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, +0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, +0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x20, 0x3d, 0x20, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, +0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, +0x61, 0x67, 0x65, 0x55, 0x56, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x34, +0x31, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x5f, 0x34, 0x31, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6d, 0x61, 0x67, +0x65, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x32, +0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x31, 0x34, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x78, 0x20, +0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x32, 0x31, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x32, +0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x32, 0x31, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x78, 0x20, +0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x32, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x33, +0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x32, 0x38, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x79, 0x20, +0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x33, 0x35, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x34, 0x34, +0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x34, 0x33, 0x35, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x79, 0x20, +0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x33, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x35, +0x36, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x34, 0x34, 0x32, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, +0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x34, 0x31, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x5f, 0x34, 0x31, 0x30, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, +0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x73, +0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, +0x6d, 0x61, 0x67, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x5f, 0x34, +0x31, 0x31, 0x29, 0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x34, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, +0x37, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, +0x34, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, +0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x35, 0x34, +0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x36, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x34, 0x31, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x5f, +0x35, 0x34, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, +0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, +0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x35, 0x39, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x35, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x38, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x38, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, +0x34, 0x37, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x38, 0x31, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x38, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, +0x5f, 0x35, 0x36, 0x33, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, +0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, +0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x20, 0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, +0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, +0x6f, 0x77, 0x4d, 0x61, 0x70, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, +0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, +0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, +0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, +0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, +0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, +0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, +0x5b, 0x69, 0x64, 0x28, 0x36, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, +0x28, 0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, +0x64, 0x28, 0x31, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x31, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, +0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, +0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x37, 0x29, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, +0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x33, 0x26, 0x20, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x20, 0x5b, 0x5b, 0x62, 0x75, +0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x39, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, +0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, +0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x20, 0x3d, 0x20, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, +0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, +0x61, 0x67, 0x65, 0x55, 0x56, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x36, +0x34, 0x35, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x5f, 0x36, 0x34, 0x34, 0x29, 0x2e, 0x78, 0x79, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6d, 0x61, 0x67, +0x65, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x35, +0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x34, 0x38, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x78, 0x20, +0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x35, 0x35, 0x20, +0x3d, 0x20, 0x5f, 0x36, 0x34, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x36, +0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x35, 0x35, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x78, 0x20, +0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x36, 0x32, 0x20, +0x3d, 0x20, 0x5f, 0x36, 0x35, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x36, +0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x36, 0x32, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x79, 0x20, +0x3c, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x36, 0x39, 0x20, +0x3d, 0x20, 0x5f, 0x36, 0x36, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x5f, 0x36, 0x37, +0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x5f, 0x36, 0x36, 0x39, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x79, 0x20, +0x3e, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x37, 0x36, 0x20, +0x3d, 0x20, 0x5f, 0x36, 0x36, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, +0x39, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x37, 0x36, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, +0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x36, 0x34, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x5f, 0x36, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, +0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x73, +0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, +0x6d, 0x61, 0x67, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x5f, 0x36, +0x34, 0x35, 0x29, 0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, +0x31, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, +0x36, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x36, +0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x36, 0x39, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x31, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x39, 0x36, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x36, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, +0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, +0x28, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, +0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x35, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x39, 0x39, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x33, 0x20, 0x5f, 0x35, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, +0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x64, 0x6f, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x36, +0x39, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, 0x35, 0x33, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x37, 0x36, 0x39, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x20, 0x3d, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x34, 0x2e, 0x79, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x38, 0x36, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, +0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x38, 0x35, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x39, 0x37, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x37, 0x38, 0x36, +0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, +0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x37, 0x38, 0x35, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x31, 0x5d, +0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x37, 0x38, 0x36, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, +0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x31, +0x30, 0x32, 0x38, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x39, 0x39, +0x37, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x37, 0x36, 0x39, 0x20, 0x2d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, +0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, +0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x39, 0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, +0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, +0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, +0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, +0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, +0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, +0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x33, 0x34, 0x29, 0x2c, 0x20, 0x6c, 0x65, +0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x31, 0x30, 0x33, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x37, 0x36, 0x39, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, +0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, +0x65, 0x61, 0x72, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x38, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, +0x29, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3e, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, +0x30, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, +0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, 0x73, 0x74, +0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, +0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x35, 0x33, 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, +0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, +0x2d, 0x28, 0x5f, 0x39, 0x39, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, +0x37, 0x36, 0x39, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, +0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x20, +0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x39, +0x31, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x5f, +0x31, 0x30, 0x32, 0x38, 0x20, 0x2d, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x30, 0x30, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x39, 0x38, +0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x39, 0x38, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x38, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x2e, 0x79, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x38, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x31, 0x34, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x38, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, +0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, +0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, +0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, +0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, +0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, +0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, +0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, +0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x20, 0x3d, 0x20, +0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, +0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, +0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, +0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, +0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, +0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, +0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x37, 0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, +0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, +0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x5b, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, +0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x66, +0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, +0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, +0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, 0x6c, 0x69, +0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5d, 0x5d, 0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, +0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x36, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x30, 0x20, 0x3d, 0x20, +0x5f, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x36, 0x37, 0x2e, 0x7a, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x30, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x2e, 0x77, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x37, 0x32, 0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, 0x38, +0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x37, 0x32, 0x20, 0x3c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, +0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x38, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x36, 0x37, 0x2e, 0x78, +0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, +0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x38, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, +0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x38, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, +0x38, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, +0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, +0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, +0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x20, 0x3d, 0x20, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x38, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x36, 0x37, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, +0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x39, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x77, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x30, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, +0x29, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x30, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x77, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x30, +0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x38, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x77, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x37, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x3d, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x35, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x32, 0x38, +0x35, 0x2e, 0x7a, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, +0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x31, 0x2e, 0x77, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x36, 0x33, 0x29, 0x20, 0x3c, 0x20, 0x31, +0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x31, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, +0x5f, 0x32, 0x36, 0x33, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x38, +0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, +0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x34, 0x30, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x34, +0x30, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x32, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x32, 0x20, 0x5f, 0x32, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x38, 0x35, 0x2e, 0x78, 0x79, 0x20, 0x2a, 0x20, +0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, 0x2e, 0x35, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x39, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x34, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x39, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x56, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x33, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, +0x32, 0x37, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x37, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x37, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x78, +0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, +0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x31, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x20, 0x3d, 0x20, +0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, +0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, +0x20, 0x5f, 0x34, 0x31, 0x31, 0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x77, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x35, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x39, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x20, +0x3d, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x34, +0x35, 0x39, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x35, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x37, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x35, 0x34, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x36, +0x33, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x31, 0x30, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x32, 0x20, 0x5f, 0x36, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x39, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x36, 0x34, 0x35, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, +0x3a, 0x6d, 0x61, 0x78, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, +0x61, 0x67, 0x65, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, +0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x5f, 0x36, 0x34, 0x35, +0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, +0x2e, 0x30, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x36, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, 0x31, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x36, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x39, +0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x36, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, +0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2b, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, +0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x36, 0x38, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x31, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x38, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x39, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x39, 0x36, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x35, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, +0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x39, +0x39, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x37, 0x36, 0x39, 0x20, +0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, +0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, +0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, +0x39, 0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x32, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, +0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x39, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x20, +0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, +0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, +0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, +0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, +0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, +0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x33, 0x34, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, +0x28, 0x6d, 0x69, 0x78, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x31, 0x34, 0x2e, 0x79, 0x29, 0x2c, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x31, 0x34, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, +0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x37, 0x36, 0x39, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, +0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, +0x38, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, +0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, +0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, +0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, +0x5f, 0x35, 0x33, 0x34, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, +0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, +0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, +0x2d, 0x28, 0x5f, 0x39, 0x39, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, +0x37, 0x36, 0x39, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, +0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x35, 0x33, 0x36, +0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x38, 0x31, 0x39, 0x29, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x32, +0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x5f, 0x33, 0x35, 0x32, 0x2e, 0x7a, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x39, 0x34, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x32, 0x38, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, +0x31, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x33, 0x33, 0x30, +0x29, 0x20, 0x3c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x2e, +0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x33, 0x30, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x28, +0x2d, 0x31, 0x2e, 0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x29, 0x20, 0x3a, 0x20, 0x31, 0x2e, +0x30, 0x38, 0x34, 0x32, 0x30, 0x32, 0x32, 0x65, 0x2d, 0x31, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x34, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x20, 0x2a, 0x20, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x35, 0x32, 0x2e, +0x78, 0x79, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x30, +0x2e, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x30, 0x31, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x34, 0x30, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x34, 0x30, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, +0x55, 0x56, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x3d, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, +0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, +0x32, 0x31, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x20, +0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x35, 0x32, +0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x31, 0x35, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, +0x5f, 0x32, 0x31, 0x30, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x32, 0x31, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, 0x32, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, +0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x32, 0x30, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x35, 0x32, 0x2e, 0x77, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x32, +0x30, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x35, 0x32, 0x2e, 0x77, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x34, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, 0x54, 0x41, 0x4d, 0xf6, 0x0b, 0x00, +0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x96, +0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xe8, 0x02, 0x00, 0x00, 0x01, 0x20, 0x01, +0xfc, 0x02, 0x00, 0x00, 0x01, 0x30, 0x01, 0xc4, 0x04, 0x00, 0x00, 0x01, 0x44, 0x01, 0x06, 0x05, 0x00, 0x00, 0x01, 0x80, +0x00, 0x1e, 0x05, 0x00, 0x00, 0x01, 0x90, 0x00, 0x1e, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x4a, 0x06, 0x00, 0x00, 0x02, +0x00, 0x01, 0x5c, 0x07, 0x00, 0x00, 0x02, 0x10, 0x00, 0x4a, 0x06, 0x00, 0x00, 0x02, 0x10, 0x01, 0xac, 0x08, 0x00, 0x00, +0x02, 0x20, 0x01, 0xbe, 0x08, 0x00, 0x00, 0x02, 0x30, 0x01, 0x74, 0x0a, 0x00, 0x00, 0x02, 0x44, 0x01, 0xb4, 0x0a, 0x00, +0x00, 0x02, 0x80, 0x00, 0xca, 0x0a, 0x00, 0x00, 0x02, 0x90, 0x00, 0xca, 0x0a, 0x00, 0x00, 0x82, 0x09, 0x00, 0x00, 0x84, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, +0x00, 0x09, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, +0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, +0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, +0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, +0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, +0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, +0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x02, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, +0x00, 0x5f, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, +0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x5d, 0x00, 0x6b, 0x00, 0x6c, +0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, +0x00, 0x77, 0x00, 0x78, 0x00, 0x5d, 0x00, 0xbf, 0x09, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x7a, +0x00, 0x7b, 0x00, 0x02, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x05, 0x00, 0x82, +0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, +0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, +0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, +0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, +0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, +0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, +0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, +0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, +0x00, 0xd0, 0x00, 0x02, 0x00, 0x87, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0x5a, +0x00, 0x02, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x02, 0x00, 0xdb, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, +0x00, 0xdc, 0x00, 0x5d, 0x00, 0xdd, 0x00, 0xde, 0x00, 0x02, 0x00, 0xdf, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe0, +0x00, 0x5d, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0x02, 0x00, 0xe3, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe4, 0x00, 0x5d, +0x00, 0xe5, 0x00, 0xe6, 0x00, 0x02, 0x00, 0xe7, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe8, 0x00, 0x5d, 0x00, 0xe9, +0x00, 0xea, 0x00, 0x02, 0x00, 0xeb, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef, +0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0x5d, +0x00, 0xf9, 0x00, 0x5d, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x5a, +0x00, 0x02, 0x00, 0x5d, 0x00, 0x80, 0x10, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, +0x00, 0x02, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x05, 0x00, 0xfa, 0x00, 0xfb, +0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, +0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, +0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, +0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, +0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, +0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, +0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, +0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, 0x00, 0xd0, +0x00, 0x02, 0x00, 0x87, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xff, 0x00, 0xd4, 0x00, 0x00, 0x01, 0xd5, 0x00, 0xd6, +0x00, 0x01, 0x01, 0x02, 0x00, 0x02, 0x01, 0x03, 0x01, 0x02, 0x00, 0x04, 0x01, 0x5d, 0x00, 0x05, 0x01, 0x06, 0x01, 0x07, +0x01, 0x02, 0x00, 0x08, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x09, 0x01, 0x5d, 0x00, 0x0a, 0x01, 0x0b, 0x01, 0x0c, +0x01, 0x0d, 0x01, 0x0e, 0x01, 0x02, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, +0x00, 0x13, 0x01, 0x5d, 0x00, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x02, 0x00, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1a, +0x01, 0x1b, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x1c, 0x01, 0x5d, 0x00, 0x1d, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, +0x01, 0x21, 0x01, 0x04, 0x01, 0x5d, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x02, +0x00, 0x26, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x27, 0x01, 0x5d, 0x00, 0x28, 0x01, 0x29, 0x01, 0x02, 0x00, 0x2a, +0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x2b, 0x01, 0x5d, 0x00, 0x2c, 0x01, 0x2d, 0x01, 0x02, 0x00, 0x2e, 0x01, 0x5d, +0x00, 0x5e, 0x00, 0x02, 0x00, 0x2f, 0x01, 0x5d, 0x00, 0x30, 0x01, 0x31, 0x01, 0x02, 0x00, 0x32, 0x01, 0x5d, 0x00, 0x5e, +0x00, 0x02, 0x00, 0x33, 0x01, 0x5d, 0x00, 0x34, 0x01, 0x35, 0x01, 0x02, 0x00, 0x36, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, +0x00, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x40, +0x01, 0x41, 0x01, 0x42, 0x01, 0x43, 0x01, 0x5d, 0x00, 0x44, 0x01, 0x45, 0x01, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x5d, +0x00, 0xec, 0x02, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x49, 0x01, 0x02, 0x00, 0x4a, +0x01, 0x4b, 0x01, 0x4c, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x05, 0x00, 0x51, 0x01, 0x52, 0x01, 0x08, +0x00, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x02, 0x00, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x00, 0x02, +0x00, 0x5a, 0x01, 0x5b, 0x01, 0x5d, 0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x7a, +0x00, 0xd6, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x5c, 0x01, 0x5d, 0x00, 0xba, 0x0b, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, +0x00, 0x5d, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x5e, 0x01, 0x5f, 0x01, 0x08, 0x00, 0x60, 0x01, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, +0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, +0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, +0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, +0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, +0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, +0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, +0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, +0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x02, 0x00, 0x5c, +0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x61, 0x01, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, +0x01, 0x66, 0x01, 0x67, 0x01, 0x02, 0x00, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x6b, +0x01, 0x5d, 0x00, 0x6c, 0x01, 0x6d, 0x01, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, +0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, +0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x5d, 0x00, 0xd7, 0x08, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x83, +0x01, 0x84, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, +0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, +0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, +0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x2c, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x30, +0x00, 0xad, 0x00, 0xae, 0x00, 0x33, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0x36, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, +0x00, 0x3b, 0x00, 0x3c, 0x00, 0xb9, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x43, 0x00, 0xc0, +0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x4e, +0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, 0x00, 0x55, 0x00, 0x85, 0x01, 0x86, 0x01, 0x87, +0x01, 0x88, 0x01, 0x5a, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x02, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x5f, +0x00, 0x5d, 0x00, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x02, 0x00, 0x90, +0x01, 0x91, 0x01, 0x92, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x93, 0x01, 0x5d, 0x00, 0x94, 0x01, 0x95, 0x01, 0x96, +0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x9c, 0x01, 0x9d, +0x01, 0x9e, 0x01, 0x5d, 0x00, 0xe9, 0x08, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0x7b, 0x00, 0x02, +0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x05, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, +0x00, 0x85, 0x00, 0x86, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x96, +0x00, 0x97, 0x00, 0x98, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, +0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x2c, 0x00, 0xa9, 0x00, 0xaa, +0x00, 0xab, 0x00, 0x30, 0x00, 0xad, 0x00, 0xae, 0x00, 0x33, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0x36, 0x00, 0xb3, 0x00, 0xb4, +0x00, 0xb5, 0x00, 0xb6, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0xb9, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0xbd, 0x00, 0xbe, +0x00, 0x43, 0x00, 0xc0, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, +0x00, 0xc9, 0x00, 0x4e, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, 0x00, 0xd0, 0x00, 0x02, +0x00, 0x0b, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0x9f, 0x01, 0xa0, 0x01, 0xd6, 0x00, 0x5a, 0x00, 0x02, 0x00, 0xa1, +0x01, 0xa2, 0x01, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x02, 0x00, 0xdb, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xdc, +0x00, 0x5d, 0x00, 0xdd, 0x00, 0xde, 0x00, 0x02, 0x00, 0xdf, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x5d, +0x00, 0xe1, 0x00, 0xe2, 0x00, 0x02, 0x00, 0xe3, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe4, 0x00, 0x5d, 0x00, 0xe5, +0x00, 0xe6, 0x00, 0x02, 0x00, 0xe7, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xe8, 0x00, 0x5d, 0x00, 0xe9, 0x00, 0xea, +0x00, 0x02, 0x00, 0xeb, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef, 0x00, 0xf0, +0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0x5d, 0x00, 0xf9, 0x00, 0x5d, +0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0x5a, 0x00, 0x02, 0x00, 0x5d, 0x00, 0xa5, +0x0e, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0x7b, 0x00, 0x02, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, +0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x05, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x0a, +0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, +0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x1d, +0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, +0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x2c, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x30, 0x00, 0xad, +0x00, 0xae, 0x00, 0x33, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0x36, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x3b, +0x00, 0x3c, 0x00, 0xb9, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x43, 0x00, 0xc0, 0x00, 0x45, +0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x4e, 0x00, 0xcb, +0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, 0x00, 0xd0, 0x00, 0x02, 0x00, 0x0b, 0x00, 0xd1, 0x00, 0xd2, +0x00, 0xd3, 0x00, 0xa7, 0x01, 0x9f, 0x01, 0xa8, 0x01, 0xa0, 0x01, 0xd6, 0x00, 0xa9, 0x01, 0x02, 0x00, 0xaa, 0x01, 0x03, +0x01, 0x02, 0x00, 0x04, 0x01, 0x5d, 0x00, 0xab, 0x01, 0xac, 0x01, 0x07, 0x01, 0x02, 0x00, 0x08, 0x01, 0x5d, 0x00, 0x5e, +0x00, 0x02, 0x00, 0x09, 0x01, 0x5d, 0x00, 0xad, 0x01, 0x0d, 0x01, 0x0e, 0x01, 0x02, 0x00, 0xae, 0x01, 0xaf, 0x01, 0x5d, +0x00, 0x5e, 0x00, 0x02, 0x00, 0x13, 0x01, 0x5d, 0x00, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x02, 0x00, 0xb0, 0x01, 0x5d, +0x00, 0x5e, 0x00, 0x02, 0x00, 0x1c, 0x01, 0x5d, 0x00, 0x1d, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, 0x01, 0x21, 0x01, 0x04, +0x01, 0x5d, 0x00, 0x5a, 0x00, 0x02, 0x00, 0xb1, 0x01, 0xb2, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x02, 0x00, 0x26, +0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x27, 0x01, 0x5d, 0x00, 0x28, 0x01, 0x29, 0x01, 0x02, 0x00, 0x2a, 0x01, 0x5d, +0x00, 0x5e, 0x00, 0x02, 0x00, 0x2b, 0x01, 0x5d, 0x00, 0x2c, 0x01, 0x2d, 0x01, 0x02, 0x00, 0x2e, 0x01, 0x5d, 0x00, 0x5e, +0x00, 0x02, 0x00, 0x2f, 0x01, 0x5d, 0x00, 0x30, 0x01, 0x31, 0x01, 0x02, 0x00, 0x32, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, +0x00, 0x33, 0x01, 0x5d, 0x00, 0x34, 0x01, 0x35, 0x01, 0x02, 0x00, 0x36, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x37, +0x01, 0x38, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, +0x01, 0xb6, 0x01, 0x5d, 0x00, 0x44, 0x01, 0x45, 0x01, 0xb7, 0x01, 0x47, 0x01, 0x48, 0x01, 0x5d, 0x00, 0xcc, 0x02, 0x00, +0x00, 0x1c, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0x49, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, +0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x05, 0x00, 0x51, 0x01, 0x52, 0x01, 0x08, 0x00, 0x53, 0x01, 0x54, 0x01, 0x55, +0x01, 0x02, 0x00, 0x56, 0x01, 0x57, 0x01, 0xbf, 0x01, 0xc0, 0x01, 0x5a, 0x00, 0x02, 0x00, 0x5a, 0x01, 0x5b, 0x01, 0x5d, +0x00, 0x92, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0xd6, 0x00, 0x5a, 0x00, 0x02, 0x00, 0x5c, +0x01, 0x5d, 0x00, 0x0e, 0x0b, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x83, 0x01, 0x84, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, +0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x5e, 0x01, 0x5f, 0x01, 0x08, 0x00, 0x60, +0x01, 0x0a, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, +0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, +0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, +0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x2c, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x30, +0x00, 0xad, 0x00, 0xae, 0x00, 0x33, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0x36, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, +0x00, 0x3b, 0x00, 0x3c, 0x00, 0xb9, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x43, 0x00, 0xc0, +0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x4e, +0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x54, 0x00, 0x55, 0x00, 0x85, 0x01, 0x86, 0x01, 0x87, +0x01, 0x88, 0x01, 0x5a, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x02, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0x5f, +0x00, 0x5d, 0x00, 0xc1, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0x02, 0x00, 0xc8, +0x01, 0xc9, 0x01, 0xca, 0x01, 0x5d, 0x00, 0x5e, 0x00, 0x02, 0x00, 0xcb, 0x01, 0x5d, 0x00, 0xcc, 0x01, 0xcd, 0x01, 0xce, +0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd5, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, +0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0x82, +0x01, 0x5d, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0x52, 0x0c, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x92, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, +0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xf6, 0x02, 0x00, 0x00, 0x01, 0x20, 0x01, 0x10, 0x03, 0x00, 0x00, 0x01, 0x30, +0x01, 0x04, 0x05, 0x00, 0x00, 0x01, 0x44, 0x01, 0x68, 0x05, 0x00, 0x00, 0x01, 0x80, 0x00, 0x92, 0x05, 0x00, 0x00, 0x01, +0x90, 0x00, 0x92, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc2, 0x06, 0x00, 0x00, 0x02, 0x00, 0x01, 0xce, 0x07, 0x00, 0x00, +0x02, 0x10, 0x00, 0xc2, 0x06, 0x00, 0x00, 0x02, 0x10, 0x01, 0xf6, 0x02, 0x00, 0x00, 0x02, 0x20, 0x01, 0x32, 0x09, 0x00, +0x00, 0x02, 0x30, 0x01, 0x04, 0x05, 0x00, 0x00, 0x02, 0x44, 0x01, 0x68, 0x05, 0x00, 0x00, 0x02, 0x80, 0x00, 0x22, 0x0b, +0x00, 0x00, 0x02, 0x90, 0x00, 0x22, 0x0b, 0x00, 0x00, 0x66, 0x0d, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, +0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, +0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, +0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, +0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, +0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, +0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, +0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, +0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, +0x01, 0x30, 0x02, 0x02, 0x00, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, +0x02, 0x02, 0x00, 0x37, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x38, 0x02, 0x02, 0x00, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x3c, +0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, +0x02, 0x47, 0x02, 0x42, 0x02, 0x48, 0x02, 0x46, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, +0x02, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0x64, 0x10, 0x00, +0x00, 0xae, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, +0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, +0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, +0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, +0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, +0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, +0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, +0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, +0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x55, 0x02, 0x02, 0x00, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x59, 0x02, 0xe4, 0x01, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x30, 0x02, 0x02, +0x00, 0x5d, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x31, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x5e, 0x02, 0x02, +0x00, 0x39, 0x02, 0x5f, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x42, 0x02, 0x64, 0x02, 0x46, 0x02, 0x47, +0x02, 0x42, 0x02, 0x65, 0x02, 0x46, 0x02, 0x66, 0x02, 0x67, 0x02, 0x42, 0x02, 0x68, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, +0x02, 0x69, 0x02, 0x46, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x42, 0x02, 0x6c, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x6d, +0x02, 0x46, 0x02, 0x6e, 0x02, 0x6f, 0x02, 0x42, 0x02, 0x70, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x71, 0x02, 0x46, +0x02, 0x72, 0x02, 0x73, 0x02, 0x42, 0x02, 0x74, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x75, 0x02, 0x76, 0x02, 0x77, +0x02, 0x78, 0x02, 0x79, 0x02, 0x7a, 0x02, 0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, +0x02, 0x82, 0x02, 0x46, 0x02, 0x83, 0x02, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, +0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0x84, 0x02, 0x02, 0x00, 0x5d, 0x00, 0xe4, 0x01, 0x06, +0x1d, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, +0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, +0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, +0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, +0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, +0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, +0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, +0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, +0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x55, 0x02, 0x02, 0x00, 0x56, 0x02, 0x57, 0x02, 0x58, +0x02, 0x05, 0x00, 0xe4, 0x01, 0x85, 0x02, 0xe4, 0x01, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, +0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x30, 0x02, 0x02, 0x00, 0x5d, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x31, 0x02, 0x32, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x95, 0x02, 0x02, 0x00, 0x39, +0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x9a, 0x02, 0x42, 0x02, 0x9b, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, +0x02, 0x9c, 0x02, 0x46, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0x42, 0x02, 0x9f, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xa0, +0x02, 0x46, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0x42, 0x02, 0xa3, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xa4, 0x02, 0x46, +0x02, 0xa5, 0x02, 0xa6, 0x02, 0x42, 0x02, 0xa7, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xa8, 0x02, 0x46, 0x02, 0xa9, +0x02, 0xaa, 0x02, 0x42, 0x02, 0xab, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xac, 0x02, 0xad, 0x02, 0xae, 0x02, 0xaf, +0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xb6, 0x02, 0xb7, 0x02, 0xb8, 0x02, 0xb9, +0x02, 0x46, 0x02, 0xba, 0x02, 0xbb, 0x02, 0xbc, 0x02, 0xbd, 0x02, 0x42, 0x02, 0xbe, 0x02, 0xbf, 0x02, 0xc0, 0x02, 0xc1, +0x02, 0xc2, 0x02, 0xc3, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0xc6, 0x02, 0xc7, 0x02, 0xc0, 0x02, 0xc8, 0x02, 0xc3, 0x02, 0xc9, +0x02, 0xc0, 0x02, 0xca, 0x02, 0xc3, 0x02, 0xcb, 0x02, 0xcc, 0x02, 0xcd, 0x02, 0xce, 0x02, 0xcf, 0x02, 0xc0, 0x02, 0xd0, +0x02, 0xd1, 0x02, 0xc3, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0xd2, 0x02, 0xc3, 0x02, 0xd3, 0x02, 0xd4, 0x02, 0xd5, 0x02, 0xc0, +0x02, 0xd6, 0x02, 0xc3, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0xd7, 0x02, 0xc3, 0x02, 0xd8, 0x02, 0xd9, 0x02, 0xda, 0x02, 0xdb, +0x02, 0xdc, 0x02, 0xdd, 0x02, 0xde, 0x02, 0xdf, 0x02, 0xe0, 0x02, 0xe1, 0x02, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0xbc, +0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0x49, 0x01, 0x02, +0x00, 0xe2, 0x02, 0xe3, 0x02, 0xe4, 0x02, 0xe5, 0x02, 0xe6, 0x02, 0xe7, 0x02, 0xe8, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x51, +0x01, 0x52, 0x01, 0x08, 0x00, 0xe9, 0x02, 0xe4, 0x01, 0xea, 0x02, 0x02, 0x00, 0xeb, 0x02, 0x05, 0x00, 0xe4, 0x01, 0xec, +0x02, 0xe4, 0x01, 0x30, 0x02, 0x02, 0x00, 0xed, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x33, 0x02, 0x05, +0x00, 0xe4, 0x01, 0xee, 0x02, 0x02, 0x00, 0x39, 0x02, 0xef, 0x02, 0xf0, 0x02, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0xec, +0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0x30, 0x02, 0x02, +0x00, 0x5d, 0x02, 0x05, 0x00, 0xe4, 0x01, 0xf1, 0x02, 0x02, 0x00, 0x39, 0x02, 0xf2, 0x02, 0x54, 0x02, 0x5d, 0x00, 0xe4, +0x01, 0xec, 0x10, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, +0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, +0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, +0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, +0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, +0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, +0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, +0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, +0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, 0x01, 0xf3, 0x02, 0xf4, 0x02, 0xe4, 0x01, 0x30, +0x02, 0x02, 0x00, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0xf5, 0x02, 0xf6, 0x02, 0xf7, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x37, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x38, 0x02, 0x02, 0x00, 0x39, 0x02, 0x3a, +0x02, 0xf8, 0x02, 0xf9, 0x02, 0xfa, 0x02, 0xfb, 0x02, 0xfc, 0x02, 0xfd, 0x02, 0xfe, 0x02, 0x42, 0x02, 0xff, 0x02, 0x00, +0x03, 0x01, 0x03, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x02, 0x03, 0x46, 0x02, 0x03, 0x03, 0x04, 0x03, 0x05, 0x03, 0x06, +0x03, 0x07, 0x03, 0x08, 0x03, 0x09, 0x03, 0x0a, 0x03, 0x0b, 0x03, 0x0c, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0x0f, 0x03, 0x10, +0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, 0x03, 0x18, 0x03, 0x19, 0x03, 0x54, +0x02, 0x5d, 0x00, 0xe4, 0x01, 0x66, 0x0d, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, +0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, +0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, +0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, +0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, +0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, +0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, +0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, +0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x30, 0x02, 0x02, +0x00, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x37, +0x02, 0x05, 0x00, 0xe4, 0x01, 0x38, 0x02, 0x02, 0x00, 0x39, 0x02, 0x3a, 0x02, 0x1a, 0x03, 0x1b, 0x03, 0x1c, 0x03, 0x1d, +0x03, 0x1e, 0x03, 0x1f, 0x03, 0x20, 0x03, 0x42, 0x02, 0x21, 0x03, 0x22, 0x03, 0x23, 0x03, 0x46, 0x02, 0x47, 0x02, 0x42, +0x02, 0x24, 0x03, 0x46, 0x02, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, 0x28, 0x03, 0x29, 0x03, 0x2a, 0x03, 0x2b, 0x03, 0x2c, +0x03, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0x2d, 0x10, 0x00, 0x00, 0xae, 0x00, 0x00, +0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, +0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, +0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, +0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, +0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, +0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, +0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, +0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, +0x02, 0x05, 0x00, 0xe4, 0x01, 0x55, 0x02, 0x02, 0x00, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x30, +0x03, 0xe4, 0x01, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x30, 0x02, 0x02, 0x00, 0x5d, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x31, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x5e, 0x02, 0x02, 0x00, 0x39, 0x02, 0x5f, +0x02, 0x31, 0x03, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x42, 0x02, 0x64, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x65, +0x02, 0x46, 0x02, 0x66, 0x02, 0x67, 0x02, 0x42, 0x02, 0x68, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x69, 0x02, 0x46, +0x02, 0x6a, 0x02, 0x6b, 0x02, 0x42, 0x02, 0x6c, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x6d, 0x02, 0x46, 0x02, 0x6e, +0x02, 0x6f, 0x02, 0x42, 0x02, 0x70, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x71, 0x02, 0x46, 0x02, 0x32, 0x03, 0x73, +0x02, 0x42, 0x02, 0x33, 0x03, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x38, +0x03, 0x7a, 0x02, 0x7b, 0x02, 0x7c, 0x02, 0x39, 0x03, 0x3a, 0x03, 0x3b, 0x03, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x46, +0x02, 0x3f, 0x03, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, 0x5e, 0x1c, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, +0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, +0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, +0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, +0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, +0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, +0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, +0x02, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, +0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, +0x01, 0x55, 0x02, 0x02, 0x00, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x40, 0x03, 0xe4, 0x01, 0x86, +0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x90, +0x02, 0x91, 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x05, +0x00, 0xe4, 0x01, 0x30, 0x02, 0x02, 0x00, 0x5d, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x31, 0x02, 0x32, +0x02, 0x05, 0x00, 0xe4, 0x01, 0x95, 0x02, 0x02, 0x00, 0x39, 0x02, 0x96, 0x02, 0x41, 0x03, 0x98, 0x02, 0x99, 0x02, 0x9a, +0x02, 0x42, 0x02, 0x9b, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x9c, 0x02, 0x46, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0x42, +0x02, 0x9f, 0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xa0, 0x02, 0x46, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0x42, 0x02, 0xa3, +0x02, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0xa4, 0x02, 0x46, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0x42, 0x02, 0xa7, 0x02, 0x46, +0x02, 0x47, 0x02, 0x42, 0x02, 0xa8, 0x02, 0x46, 0x02, 0x42, 0x03, 0xaa, 0x02, 0x42, 0x02, 0x43, 0x03, 0x46, 0x02, 0x47, +0x02, 0x42, 0x02, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0xb1, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0x49, +0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x46, 0x02, 0x4f, 0x03, 0xbb, 0x02, 0x50, 0x03, 0x51, +0x03, 0xbd, 0x02, 0x42, 0x02, 0xbe, 0x02, 0xbf, 0x02, 0xc0, 0x02, 0x52, 0x03, 0xc2, 0x02, 0xc3, 0x02, 0xc4, 0x02, 0xc5, +0x02, 0xc6, 0x02, 0xc7, 0x02, 0xc0, 0x02, 0xc8, 0x02, 0xc3, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0xca, 0x02, 0xc3, 0x02, 0x53, +0x03, 0x54, 0x03, 0xcf, 0x02, 0xc0, 0x02, 0x55, 0x03, 0x56, 0x03, 0xc3, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0x57, 0x03, 0xc3, +0x02, 0x58, 0x03, 0x59, 0x03, 0xd5, 0x02, 0xc0, 0x02, 0x5a, 0x03, 0xc3, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0xd7, 0x02, 0xc3, +0x02, 0x5b, 0x03, 0x5c, 0x03, 0xdb, 0x02, 0xdc, 0x02, 0xdd, 0x02, 0xde, 0x02, 0xdf, 0x02, 0xe0, 0x02, 0x5d, 0x03, 0x54, +0x02, 0x5d, 0x00, 0xe4, 0x01, 0x1b, 0x11, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, +0x01, 0xe4, 0x01, 0xe6, 0x01, 0x02, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, +0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, +0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, +0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, +0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, +0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, +0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, +0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x05, 0x00, 0xe4, 0x01, 0xf3, 0x02, 0xf4, +0x02, 0xe4, 0x01, 0x30, 0x02, 0x02, 0x00, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0xf5, 0x02, 0xf6, +0x02, 0xf7, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x36, 0x02, 0x02, 0x00, 0x37, 0x02, 0x05, 0x00, 0xe4, 0x01, 0x38, 0x02, 0x02, +0x00, 0x39, 0x02, 0x3a, 0x02, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x42, +0x02, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x46, 0x02, 0x47, 0x02, 0x42, 0x02, 0x68, 0x03, 0x46, 0x02, 0x69, 0x03, 0x6a, +0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, +0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x17, 0x03, 0x18, +0x03, 0x19, 0x03, 0x54, 0x02, 0x5d, 0x00, 0xe4, 0x01, }; diff --git a/thermion_dart/native/include/material/image.h b/thermion_dart/native/include/material/image.h index 4761bfae..a3d5b42b 100644 --- a/thermion_dart/native/include/material/image.h +++ b/thermion_dart/native/include/material/image.h @@ -3,16 +3,11 @@ #include -#if defined(__cplusplus) -extern "C" -{ -#endif +extern "C" { extern const uint8_t IMAGE_PACKAGE[]; extern int IMAGE_IMAGE_OFFSET; extern int IMAGE_IMAGE_SIZE; -#if defined(__cplusplus) } -#endif #define IMAGE_IMAGE_DATA (IMAGE_PACKAGE + IMAGE_IMAGE_OFFSET) #endif diff --git a/thermion_dart/native/include/material/unlit.S b/thermion_dart/native/include/material/unlit.S new file mode 100644 index 00000000..25b0436d --- /dev/null +++ b/thermion_dart/native/include/material/unlit.S @@ -0,0 +1,12 @@ + .global UNLIT_UNLIT_OFFSET; + .global UNLIT_UNLIT_SIZE; + + .global UNLIT_PACKAGE + .section .rodata +UNLIT_PACKAGE: + .incbin "unlit.bin" +UNLIT_UNLIT_OFFSET: + .int 0 +UNLIT_UNLIT_SIZE: + .int 101394 + diff --git a/thermion_dart/native/include/material/unlit.apple.S b/thermion_dart/native/include/material/unlit.apple.S new file mode 100644 index 00000000..d6ad1d11 --- /dev/null +++ b/thermion_dart/native/include/material/unlit.apple.S @@ -0,0 +1,12 @@ + .global _UNLIT_UNLIT_OFFSET; + .global _UNLIT_UNLIT_SIZE; + + .global _UNLIT_PACKAGE + .section __TEXT,__const +_UNLIT_PACKAGE: + .incbin "unlit.bin" +_UNLIT_UNLIT_OFFSET: + .int 0 +_UNLIT_UNLIT_SIZE: + .int 101394 + diff --git a/thermion_dart/native/include/material/unlit.bin b/thermion_dart/native/include/material/unlit.bin new file mode 100644 index 00000000..75365a9a Binary files /dev/null and b/thermion_dart/native/include/material/unlit.bin differ diff --git a/thermion_dart/native/include/material/unlit.c b/thermion_dart/native/include/material/unlit.c new file mode 100644 index 00000000..899af44c --- /dev/null +++ b/thermion_dart/native/include/material/unlit.c @@ -0,0 +1,5080 @@ +#include "unlit.h" +#include + +const uint8_t UNLIT_PACKAGE[] = { +// UNLIT +0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x06, 0x00, 0x00, +0x00, 0x75, 0x6e, 0x6c, 0x69, 0x74, 0x00, 0x4c, 0x44, 0x4d, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, +0x00, 0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, +0x98, 0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, +0x74, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x00, 0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0xe8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x01, 0x0a, 0x01, +0x01, 0x0b, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, +0x73, 0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, +0x6f, 0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, +0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x00, 0x0a, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, +0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x4a, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x61, 0x73, 0x65, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x03, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x20, 0x42, 0x49, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x28, 0x00, 0x00, 0x00, 0x4d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x00, 0x00, 0x02, 0x03, 0x00, 0x53, 0x4e, +0x4f, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, +0x55, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, +0x45, 0x4c, 0x42, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x52, +0x57, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, +0x00, 0x00, 0x00, 0x01, 0x49, 0x52, 0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x45, 0x54, +0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, +0x00, 0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x15, 0x4c, 0x1e, 0x11, 0x05, 0x24, +0x51, 0x3e, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x00, 0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x09, +0x00, 0x00, 0x00, 0x41, 0x41, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, 0x4d, +0x04, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x00, 0x52, 0x54, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, 0x54, +0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0x67, 0x4c, 0x01, 0x00, 0x36, +0x06, 0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, 0x73, +0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, +0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x7d, +0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, +0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, +0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, +0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, +0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, +0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, +0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, +0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, +0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, +0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, +0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, +0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, +0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x61, +0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, +0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, +0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, +0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, +0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, +0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, +0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, +0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, +0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, +0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, +0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, +0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x33, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x3b, +0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, +0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, +0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, +0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, +0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, +0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, +0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, +0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, +0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, +0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x31, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x2e, +0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x32, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x30, 0x3b, 0x00, 0x5f, +0x32, 0x31, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x30, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x5f, 0x32, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x30, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, +0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, +0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, +0x72, 0x43, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, +0x61, 0x74, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, +0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6e, 0x69, 0x73, +0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x38, 0x32, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x33, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, +0x34, 0x20, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, +0x34, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6c, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x71, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, +0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, +0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, +0x64, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x66, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x71, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, +0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, +0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, +0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, +0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, +0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x6c, +0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x61, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x3b, 0x00, 0x7d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x4d, 0x61, 0x70, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, +0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, +0x30, 0x39, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x2e, 0x62, 0x20, 0x3e, 0x20, 0x28, 0x2d, 0x31, 0x29, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, +0x30, 0x31, 0x3b, 0x00, 0x5f, 0x33, 0x36, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, +0x33, 0x36, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, +0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x70, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x3b, 0x00, 0x66, +0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, +0x28, 0x5f, 0x34, 0x30, 0x39, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x32, 0x2c, 0x20, 0x5f, +0x33, 0x38, 0x32, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x32, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x33, 0x29, 0x2e, 0x62, 0x61, 0x73, +0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x32, 0x2c, 0x20, +0x5f, 0x33, 0x38, 0x32, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x32, 0x2c, 0x20, 0x5f, 0x33, 0x38, 0x33, 0x29, 0x2e, 0x62, 0x61, +0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x6f, 0x6e, 0x65, +0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x78, 0x34, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x66, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x39, 0x35, 0x36, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, +0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x00, 0x42, 0x6f, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x61, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x00, 0x7d, +0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, +0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4d, +0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x75, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, +0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, +0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, +0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x35, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x75, 0x76, 0x65, 0x63, 0x34, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x00, 0x6c, +0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x36, 0x29, 0x20, +0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x3b, 0x00, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x2c, 0x20, 0x75, +0x76, 0x65, 0x63, 0x34, 0x20, 0x69, 0x64, 0x73, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x20, 0x3e, 0x3d, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x20, 0x3d, 0x20, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, +0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x35, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x35, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x35, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x38, 0x33, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x38, 0x33, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x38, 0x33, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x38, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x37, 0x31, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x37, 0x31, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, +0x31, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x31, 0x30, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x37, 0x33, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x77, 0x29, 0x3b, 0x00, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x37, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x37, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, +0x31, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x35, 0x20, +0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x20, +0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x36, 0x35, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x35, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x28, +0x28, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x37, 0x36, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x37, 0x36, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, +0x36, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x37, 0x39, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x31, 0x38, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x31, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x31, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x31, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, +0x74, 0x20, 0x5f, 0x39, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x35, 0x3b, 0x20, 0x5f, 0x39, 0x35, 0x34, 0x20, +0x3c, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x3b, 0x20, 0x29, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x20, +0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, +0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x35, 0x34, 0x20, 0x25, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x35, 0x34, 0x20, 0x2f, 0x20, +0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, +0x28, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x35, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x35, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x34, 0x2b, 0x2b, 0x3b, 0x00, 0x63, 0x6f, +0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x35, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x39, 0x34, 0x38, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, +0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x39, 0x34, 0x37, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x39, 0x35, +0x30, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x37, 0x20, 0x3d, +0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x39, 0x35, 0x32, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x3b, 0x00, 0x66, +0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x39, +0x34, 0x36, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x6f, +0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x39, 0x35, 0x30, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x2c, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x32, +0x2c, 0x20, 0x5f, 0x39, 0x34, 0x36, 0x2b, 0x2b, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, +0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x34, 0x36, 0x5d, 0x2e, 0x78, +0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x37, 0x37, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x38, 0x37, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, +0x36, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x37, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x32, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x20, 0x2b, 0x20, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, +0x68, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x5f, 0x38, 0x37, 0x37, 0x2c, 0x20, 0x30, 0x29, 0x20, +0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x5f, 0x39, 0x34, 0x36, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x35, 0x30, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x39, 0x34, +0x38, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x34, +0x39, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, 0x36, +0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x35, 0x33, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x34, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x28, 0x5f, 0x35, 0x35, 0x33, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x37, 0x39, 0x3b, 0x00, 0x5f, +0x38, 0x37, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x35, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x38, 0x37, 0x39, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x35, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x37, 0x39, 0x2e, 0x7a, 0x20, +0x3d, 0x20, 0x5f, 0x35, 0x35, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, +0x39, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x38, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x38, 0x37, +0x35, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, +0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, +0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x39, 0x34, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x34, 0x39, +0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x34, 0x39, 0x2e, 0x78, 0x79, 0x7a, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x37, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, +0x37, 0x35, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x35, 0x2e, 0x75, 0x76, 0x30, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x36, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x30, 0x2e, 0x78, +0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x36, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x30, 0x2e, +0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x37, 0x30, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x5f, 0x34, 0x37, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x32, +0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, +0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x34, 0x3b, 0x00, 0x5f, 0x31, 0x39, 0x34, +0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x39, 0x34, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x39, +0x34, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x39, 0x34, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x34, 0x30, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, +0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x36, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, +0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, +0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, +0x20, 0x5f, 0x37, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, +0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, +0x28, 0x28, 0x5f, 0x36, 0x34, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x36, 0x34, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x36, 0x34, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x34, +0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x36, 0x37, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, +0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x39, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x39, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x39, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x35, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x35, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x35, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x32, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, +0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x37, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, +0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, +0x20, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, +0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, +0x33, 0x39, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x32, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x32, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x32, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x35, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, +0x37, 0x37, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, +0x37, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, +0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x37, 0x39, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x38, 0x30, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x7a, 0x29, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x36, 0x35, 0x3b, 0x20, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x3b, 0x20, +0x29, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, +0x65, 0x74, 0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, +0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, +0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, +0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, +0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x78, 0x29, +0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x39, 0x20, 0x2b, +0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x38, 0x33, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x79, 0x29, +0x3b, 0x00, 0x5f, 0x39, 0x33, 0x38, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x39, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x31, +0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x34, 0x20, 0x3d, +0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, +0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, +0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, +0x33, 0x36, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x33, 0x37, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, +0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x39, 0x33, 0x30, 0x20, +0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, +0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x33, 0x37, 0x2c, 0x20, 0x5f, 0x39, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x36, 0x2c, 0x20, 0x5f, +0x39, 0x33, 0x30, 0x2b, 0x2b, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x33, 0x30, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x33, 0x34, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x30, 0x3b, 0x00, +0x5f, 0x39, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x36, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x33, 0x31, 0x20, 0x2b, 0x20, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x5f, 0x38, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x39, +0x33, 0x30, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x3b, +0x00, 0x5f, 0x39, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x32, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x33, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x33, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x2e, 0x78, 0x79, 0x7a, +0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x5f, 0x35, 0x34, 0x31, 0x2c, +0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x36, 0x33, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x35, 0x34, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, +0x31, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x31, 0x2e, 0x7a, +0x3b, 0x00, 0x5f, 0x39, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x33, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x33, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, +0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, +0x33, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x33, 0x33, 0x2e, 0x78, 0x79, +0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x33, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, +0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x3b, +0x00, 0x5f, 0x34, 0x35, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x35, 0x36, 0x2e, 0x7a, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x5f, 0x34, 0x35, 0x36, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x36, 0x31, 0x39, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x36, 0x32, 0x31, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, +0x6f, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, +0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x34, +0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x69, 0x66, 0x20, +0x28, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x32, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, +0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x36, 0x35, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x32, 0x32, 0x29, 0x20, +0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x5f, 0x36, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x20, 0x2d, 0x20, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x78, 0x20, +0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x32, 0x29, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x32, +0x32, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x35, 0x33, 0x20, +0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, +0x32, 0x35, 0x35, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x6d, 0x69, +0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x35, 0x35, 0x2c, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x35, 0x34, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x28, +0x5f, 0x31, 0x39, 0x34, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, +0x5f, 0x32, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x32, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, +0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, +0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, +0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x39, 0x2e, 0x79, +0x2c, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x6d, 0x70, 0x5f, 0x63, +0x6f, 0x70, 0x79, 0x5f, 0x32, 0x38, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x33, +0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x29, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x33, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, +0x28, 0x2d, 0x28, 0x5f, 0x36, 0x35, 0x33, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x2d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, +0x79, 0x5f, 0x33, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x39, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, +0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, +0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x36, 0x35, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x35, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x30, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, +0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x70, 0x5f, 0x63, 0x6f, +0x70, 0x79, 0x5f, 0x33, 0x36, 0x35, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, +0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x39, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x33, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, +0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x37, +0x39, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x29, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x35, 0x36, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x38, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x38, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x35, +0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x36, 0x35, 0x32, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x35, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x5f, 0x35, 0x39, 0x32, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, +0x20, 0x5f, 0x35, 0x39, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, +0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x2c, 0x20, 0x5f, 0x35, 0x39, 0x32, 0x2c, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x70, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x32, +0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x61, 0x3b, +0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x28, 0x5f, 0x36, 0x35, 0x32, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2c, +0x20, 0x5f, 0x36, 0x32, 0x30, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x31, 0x29, 0x2e, 0x62, +0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x39, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x30, +0x2c, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x30, 0x2c, 0x20, 0x5f, 0x36, 0x32, 0x31, 0x29, 0x2e, +0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x61, 0x72, 0x61, +0x6d, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, +0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, +0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x38, 0x31, 0x20, 0x3d, +0x20, 0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2c, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x29, +0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x38, 0x31, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, +0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, +0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, +0x65, 0x6c, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x49, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, +0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, +0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x38, 0x3b, +0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, +0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, +0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x42, 0x69, +0x74, 0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x38, 0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, +0x64, 0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, +0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, +0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x63, +0x6c, 0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3a, 0x20, +0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, +0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, +0x38, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, +0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x20, 0x32, 0x00, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, +0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x3b, +0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x20, 0x3d, +0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, +0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x2e, 0x75, 0x76, 0x30, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2e, 0x78, +0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x2e, +0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x36, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x31, 0x31, 0x39, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x32, 0x30, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x38, 0x29, 0x3b, +0x00, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x39, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x32, 0x30, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x31, 0x32, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, +0x36, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x31, 0x32, 0x30, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x38, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x31, 0x36, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, +0x31, 0x31, 0x36, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x36, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x3b, 0x00, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x32, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, +0x38, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x30, +0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x36, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x36, +0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x36, 0x35, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x36, 0x35, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x36, 0x35, 0x5b, 0x33, 0x5d, 0x29, +0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x28, 0x5f, 0x32, 0x38, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x32, 0x38, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x32, 0x38, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x38, 0x35, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x30, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x30, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x30, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x33, 0x30, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, +0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x32, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x32, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x32, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x32, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, +0x34, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x36, +0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x38, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x30, 0x36, 0x20, 0x3d, 0x20, +0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x20, 0x2d, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x30, 0x36, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, +0x28, 0x5f, 0x33, 0x34, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x33, 0x34, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x33, 0x34, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x34, 0x37, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x36, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x36, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x33, 0x36, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x33, 0x36, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x38, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x38, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x38, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x38, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x5f, 0x34, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x36, 0x3b, 0x20, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x3c, 0x20, +0x5f, 0x34, 0x30, 0x39, 0x3b, 0x20, 0x29, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x34, 0x32, 0x36, 0x20, 0x3d, 0x20, +0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, +0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x25, 0x20, 0x32, +0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x34, 0x31, 0x34, 0x20, 0x2f, 0x20, 0x32, 0x30, +0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, +0x20, 0x5f, 0x34, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, +0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, +0x34, 0x32, 0x36, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, +0x5f, 0x34, 0x31, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x34, 0x33, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x34, 0x33, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x34, 0x33, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x33, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x34, 0x32, 0x36, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x31, 0x34, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x31, 0x31, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x66, 0x6c, +0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, 0x20, 0x21, +0x3d, 0x20, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x34, 0x37, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x5f, 0x31, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x31, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, +0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, +0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, +0x20, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x34, 0x38, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x35, 0x31, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, +0x31, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x34, +0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x34, 0x38, 0x2c, 0x20, 0x5f, 0x31, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x35, +0x31, 0x2c, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2b, 0x2b, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, +0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x35, 0x32, 0x5d, 0x2e, +0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x36, 0x31, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x31, 0x36, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x35, 0x32, 0x3b, 0x00, 0x5f, 0x31, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x36, 0x31, 0x3b, 0x00, 0x5f, 0x31, 0x35, +0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x35, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, +0x63, 0x68, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x5f, 0x31, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x29, +0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x5f, 0x31, 0x35, 0x32, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x31, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x31, +0x36, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x35, 0x30, 0x3b, 0x00, 0x5f, 0x31, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, +0x38, 0x33, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, +0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, 0x36, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x36, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x3b, +0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x5f, 0x31, 0x31, 0x35, 0x2c, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x37, 0x38, 0x3b, 0x00, 0x5f, 0x31, 0x37, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x31, 0x37, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x35, +0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x31, 0x37, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x2e, 0x7a, 0x3b, +0x00, 0x5f, 0x31, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x37, 0x38, 0x3b, 0x00, 0x5f, 0x31, 0x38, 0x33, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x36, 0x37, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, +0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, +0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x38, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x38, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x38, 0x33, 0x2e, 0x78, 0x79, 0x7a, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x5f, 0x32, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x38, 0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, +0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x79, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x32, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, +0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, +0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x35, 0x20, +0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x32, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x35, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, +0x35, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x36, 0x20, +0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, +0x31, 0x32, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, +0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x77, 0x29, +0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, +0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, +0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, +0x5f, 0x32, 0x31, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x5f, 0x32, 0x31, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, +0x30, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, +0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, +0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, +0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, +0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x32, +0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, +0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, +0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x78, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x38, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, +0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x38, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x31, +0x36, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, +0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x31, 0x30, +0x38, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x20, +0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x30, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x28, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x30, 0x38, 0x2e, 0x77, 0x20, +0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, +0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, +0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, +0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x37, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x39, 0x38, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x39, 0x38, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x39, 0x38, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x39, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x28, 0x5f, 0x33, 0x31, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x33, 0x31, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x33, 0x31, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x31, 0x38, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, +0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x75, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x77, 0x65, 0x69, +0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x34, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x38, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x64, 0x73, 0x2e, +0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x30, 0x33, 0x3b, 0x00, +0x5f, 0x34, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x33, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x33, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x33, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x33, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x35, 0x39, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x35, 0x39, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x35, 0x39, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x33, 0x38, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x33, 0x38, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, +0x38, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x38, 0x30, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, +0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, +0x38, 0x3b, 0x20, 0x5f, 0x34, 0x30, 0x36, 0x20, 0x3c, 0x20, 0x5f, 0x34, 0x30, 0x31, 0x3b, 0x20, 0x29, 0x00, 0x76, 0x65, +0x63, 0x32, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x34, 0x30, 0x36, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, +0x28, 0x5f, 0x34, 0x30, 0x36, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x2e, +0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x34, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x34, 0x31, 0x38, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x30, 0x33, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, +0x28, 0x5f, 0x34, 0x32, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x34, 0x32, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x34, 0x32, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x32, 0x34, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x31, 0x38, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x5f, 0x34, +0x30, 0x36, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x33, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x32, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, +0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, +0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, +0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, +0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, +0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x38, 0x33, 0x2e, +0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x38, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x38, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x32, 0x34, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x32, +0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, +0x36, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x78, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x34, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, +0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x30, 0x38, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x30, 0x34, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x31, +0x32, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, +0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x30, +0x34, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x30, 0x38, 0x20, +0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x28, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x30, 0x34, 0x2e, 0x77, 0x20, +0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, +0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x34, +0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x34, 0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, +0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, +0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, +0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x29, 0x20, 0x6f, +0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, +0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, +0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, +0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, +0x20, 0x5f, 0x33, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, +0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, +0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, +0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, +0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, +0x34, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, +0x39, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x32, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x3b, +0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x31, +0x30, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, +0x30, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x37, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, +0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x41, +0x72, 0x72, 0x61, 0x79, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, +0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, +0x20, 0x5f, 0x36, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, +0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x36, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x37, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, +0x33, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, +0x36, 0x35, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, +0x35, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x35, +0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x35, 0x37, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x28, 0x5f, 0x36, 0x38, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x36, 0x38, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x36, 0x38, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, +0x38, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, +0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x31, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x31, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x31, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x37, 0x31, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x38, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x38, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x33, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x37, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x37, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, +0x31, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x36, 0x3b, +0x00, 0x5f, 0x39, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x35, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x36, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x32, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x32, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x32, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x39, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x28, 0x5f, 0x38, 0x31, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x31, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x38, 0x31, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x31, 0x39, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, +0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x36, 0x35, 0x3b, 0x20, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x3b, 0x20, 0x29, 0x00, 0x76, +0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, +0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, 0x69, +0x6e, 0x74, 0x28, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x39, 0x35, 0x35, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, +0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x36, 0x20, 0x2b, 0x3d, 0x20, 0x28, +0x28, 0x28, 0x5f, 0x38, 0x34, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x38, 0x34, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x34, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, +0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x5f, +0x39, 0x35, 0x35, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x36, 0x3b, 0x00, 0x69, 0x76, 0x65, +0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, +0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, +0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, +0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x3b, 0x00, 0x69, 0x76, 0x65, +0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x34, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, +0x34, 0x37, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, +0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x39, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x34, 0x2c, 0x20, 0x5f, +0x39, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x2c, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x2b, 0x2b, 0x29, 0x00, +0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x34, 0x37, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x31, 0x3b, 0x00, 0x5f, 0x38, +0x37, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x37, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x38, 0x37, 0x38, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x38, 0x20, 0x2b, 0x20, +0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, +0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, +0x20, 0x5f, 0x38, 0x37, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x34, 0x37, 0x5d, 0x2e, 0x78, 0x29, 0x3b, +0x00, 0x5f, 0x39, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x33, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x34, 0x38, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x39, 0x2e, 0x78, 0x79, 0x7a, +0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x5f, 0x35, 0x35, 0x34, 0x2c, +0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x38, 0x30, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x30, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x35, 0x35, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x30, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x35, +0x34, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x35, 0x34, 0x2e, 0x7a, +0x3b, 0x00, 0x5f, 0x39, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x38, 0x30, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x30, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x34, 0x39, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, +0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x38, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, +0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x2e, 0x78, 0x79, +0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x38, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x36, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, +0x31, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x36, 0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x34, 0x36, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x34, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x37, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x39, 0x34, 0x31, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x34, 0x35, 0x20, 0x3d, 0x20, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, +0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x34, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x34, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x34, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x34, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x32, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x32, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, 0x37, 0x32, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x37, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x36, 0x39, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x36, 0x39, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x36, +0x39, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x37, 0x32, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x34, 0x30, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x30, 0x20, 0x3d, 0x20, +0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x37, 0x35, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x37, 0x35, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x37, 0x38, 0x30, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x37, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x37, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x36, 0x35, 0x3b, 0x20, 0x5f, 0x39, 0x33, 0x39, +0x20, 0x3c, 0x20, 0x5f, 0x32, 0x37, 0x30, 0x3b, 0x20, 0x29, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x32, +0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x39, 0x20, +0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x33, 0x39, 0x20, 0x2f, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x34, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x34, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x34, 0x5b, 0x32, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x33, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x39, 0x2b, 0x2b, 0x3b, 0x00, 0x70, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x30, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x33, 0x35, 0x3b, +0x00, 0x5f, 0x39, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x37, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x33, 0x38, 0x3b, +0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, +0x5f, 0x39, 0x33, 0x31, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x39, +0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x33, 0x37, 0x2c, 0x20, 0x5f, 0x39, 0x33, 0x31, 0x2b, 0x2b, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, +0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x33, 0x31, 0x5d, +0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x36, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x35, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x33, 0x31, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x32, 0x3b, 0x00, 0x5f, 0x39, +0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, +0x74, 0x63, 0x68, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x5f, 0x38, 0x36, 0x32, 0x2c, 0x20, 0x30, +0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x5f, 0x39, 0x33, 0x31, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x38, 0x20, 0x3d, 0x20, +0x5f, 0x39, 0x33, 0x35, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x32, 0x3b, 0x00, 0x5f, +0x39, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x34, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x5f, 0x35, 0x34, 0x32, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, +0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x36, +0x34, 0x3b, 0x00, 0x5f, 0x38, 0x36, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x32, 0x2e, 0x78, 0x3b, 0x00, +0x5f, 0x38, 0x36, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x36, +0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x35, 0x34, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x38, 0x36, 0x34, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x33, 0x33, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x39, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, +0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, +0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, +0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, +0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x65, +0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x34, 0x20, +0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x36, 0x35, 0x33, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x32, 0x20, +0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, +0x35, 0x33, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, +0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, +0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, +0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x39, +0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, +0x31, 0x39, 0x34, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x68, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, +0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, +0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, +0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, +0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x35, 0x33, 0x20, 0x2a, 0x20, +0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x39, 0x34, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x35, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, +0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, +0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, +0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, +0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, +0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x34, 0x30, 0x33, +0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, +0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, +0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, +0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, +0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x39, +0x38, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x33, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x30, 0x33, 0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x39, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, +0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x30, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x33, 0x39, 0x38, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x32, 0x20, +0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x20, +0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x32, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x5f, 0x32, 0x32, 0x32, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x37, +0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x29, 0x3b, 0x00, 0x5f, +0x32, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x32, 0x37, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, +0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x33, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x77, 0x29, +0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, +0x5f, 0x32, 0x33, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, +0x5f, 0x32, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, +0x32, 0x37, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x31, 0x29, +0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x31, 0x37, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x37, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x37, +0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, +0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x32, 0x31, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x38, 0x37, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, +0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, +0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, +0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x37, 0x33, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, +0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x35, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, +0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x36, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x36, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x36, 0x5b, 0x32, 0x5d, 0x20, +0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x38, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, +0x38, 0x31, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, +0x31, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x31, +0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x31, 0x33, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, +0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, +0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, +0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x32, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x77, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, +0x32, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x20, +0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x3b, 0x00, 0x5f, +0x31, 0x30, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, 0x30, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x37, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x37, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x37, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x36, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x38, 0x39, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x38, 0x39, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, +0x39, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x39, 0x34, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, +0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x37, 0x32, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x31, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x37, 0x37, 0x3b, 0x20, 0x29, 0x00, +0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, +0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, +0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x34, 0x31, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, +0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x34, 0x31, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, +0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x32, 0x31, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x33, 0x30, 0x39, 0x2e, 0x78, 0x29, +0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x20, +0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x39, 0x32, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x2e, 0x79, +0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x34, 0x31, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x32, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, +0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, +0x30, 0x29, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x34, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, +0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, +0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, +0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x3b, +0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x30, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x20, +0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, +0x34, 0x34, 0x39, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, +0x74, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x30, 0x2c, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x2b, 0x2b, +0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, +0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, +0x3b, 0x00, 0x5f, 0x39, 0x35, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x3b, 0x00, 0x5f, 0x31, +0x30, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x33, 0x34, 0x20, 0x2b, 0x20, 0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x5f, 0x39, 0x35, 0x33, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, +0x31, 0x30, 0x33, 0x33, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x37, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x34, 0x3b, 0x00, +0x5f, 0x31, 0x30, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x34, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x35, +0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x66, 0x6c, +0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, 0x36, 0x29, 0x20, 0x21, +0x3d, 0x20, 0x30, 0x29, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x28, 0x5f, 0x36, 0x32, 0x35, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x69, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x35, 0x3b, 0x00, 0x5f, 0x39, 0x35, +0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x35, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x36, 0x32, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x39, 0x35, 0x35, 0x2e, 0x7a, 0x20, 0x3d, 0x20, +0x5f, 0x36, 0x32, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x35, +0x3b, 0x00, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x3b, 0x00, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x5f, 0x39, +0x35, 0x31, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, +0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, +0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x2e, 0x78, 0x79, +0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x34, 0x36, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x35, 0x31, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x31, +0x2e, 0x75, 0x76, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x34, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x37, 0x2e, 0x78, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x37, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, +0x34, 0x36, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, +0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x39, 0x34, 0x36, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x34, 0x20, 0x3d, 0x20, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, +0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x20, 0x3d, 0x20, +0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, +0x39, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x38, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, +0x38, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x78, +0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x37, +0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, +0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x34, 0x38, 0x38, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x34, 0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, +0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, +0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x34, +0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, +0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x34, +0x37, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x34, 0x38, 0x38, +0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x38, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x7a, 0x20, +0x3d, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x39, 0x2e, 0x77, +0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, +0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, +0x39, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x34, 0x39, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, +0x65, 0x63, 0x32, 0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, +0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, +0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x38, 0x37, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x32, 0x30, 0x31, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x33, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x37, 0x29, 0x3b, +0x00, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x32, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x32, 0x32, 0x33, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, +0x31, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x32, 0x33, 0x29, 0x20, +0x2a, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x78, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x31, 0x32, 0x20, 0x2a, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x30, 0x37, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x32, 0x30, 0x31, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, +0x32, 0x30, 0x31, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x30, 0x31, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x31, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, +0x32, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x34, +0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x37, 0x35, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x32, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x31, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x31, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x31, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x32, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x37, 0x34, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x37, 0x34, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, +0x34, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x34, 0x38, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x37, 0x37, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x32, +0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x35, 0x36, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x38, 0x33, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x64, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x3b, 0x00, 0x5f, +0x31, 0x30, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x32, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x32, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x32, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x32, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x36, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x36, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x36, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x35, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x38, 0x38, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x38, 0x38, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, +0x38, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x38, 0x33, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, +0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x37, 0x32, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x37, 0x37, 0x3b, 0x20, 0x29, 0x00, +0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, +0x63, 0x68, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 0x32, 0x28, +0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, +0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x2c, +0x20, 0x30, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x30, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x33, 0x30, 0x39, 0x2e, 0x78, 0x29, +0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x20, +0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x39, 0x31, 0x30, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x39, 0x2e, 0x79, +0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x2b, 0x2b, 0x3b, 0x00, 0x70, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x37, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, +0x5f, 0x31, 0x30, 0x31, 0x39, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x3b, 0x00, +0x5f, 0x31, 0x30, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x44, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, +0x30, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x3b, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x35, 0x3b, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x38, +0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x38, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, +0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x38, 0x2b, 0x2b, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, +0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x30, +0x31, 0x38, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, +0x5f, 0x39, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x38, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x38, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x33, 0x38, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x39, 0x20, 0x2b, 0x20, +0x28, 0x74, 0x65, 0x78, 0x65, 0x6c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, +0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, +0x20, 0x5f, 0x39, 0x33, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x31, 0x38, 0x5d, 0x2e, 0x78, 0x29, +0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x3b, 0x00, 0x5f, 0x31, 0x30, +0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x39, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x30, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x31, 0x39, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x30, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x73, 0x6b, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x5f, 0x36, +0x31, 0x34, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x29, 0x3b, 0x00, 0x5f, 0x39, 0x34, 0x30, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x31, 0x34, 0x2e, 0x78, 0x3b, 0x00, +0x5f, 0x39, 0x34, 0x30, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x31, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x39, 0x34, +0x30, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x31, 0x34, 0x2e, 0x7a, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x20, +0x3d, 0x20, 0x5f, 0x39, 0x34, 0x30, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x30, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, +0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x76, 0x65, 0x63, 0x32, +0x28, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x2e, +0x78, 0x79, 0x7a, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x3b, 0x00, 0x69, 0x6e, +0x74, 0x20, 0x5f, 0x34, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, +0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x37, +0x32, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x33, 0x20, 0x2a, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x36, 0x39, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x78, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, +0x34, 0x37, 0x32, 0x29, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x2e, +0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x34, 0x37, +0x33, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x38, 0x34, 0x29, 0x20, 0x2a, 0x20, +0x5f, 0x34, 0x36, 0x33, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x34, 0x38, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x2e, +0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, +0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, +0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x33, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, +0x36, 0x39, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x77, 0x29, 0x29, +0x3b, 0x00, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x7a, 0x20, 0x2a, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x5f, 0x34, 0x36, 0x33, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x33, 0x3b, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, +0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x00, 0x23, 0x69, 0x6e, 0x63, +0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x00, 0x00, +0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, +0x75, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, +0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, +0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, +0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, +0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, +0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, +0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x50, +0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, 0x61, 0x74, +0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, +0x45, 0x53, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x76, +0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, +0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, +0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, +0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x78, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, +0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x63, 0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, +0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, +0x70, 0x6f, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x72, 0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, +0x69, 0x76, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x6f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, +0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, +0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x42, 0x65, 0x6e, +0x74, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x7a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, +0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, +0x74, 0x58, 0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, 0x4c, 0x75, +0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, +0x62, 0x6c, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, 0x53, 0x48, 0x5b, 0x39, 0x5d, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, +0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x73, +0x75, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, +0x77, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x61, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x61, 0x73, +0x63, 0x61, 0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, +0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x53, +0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, +0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x45, 0x78, 0x70, +0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, +0x44, 0x65, 0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, 0x52, 0x65, 0x64, 0x75, 0x63, +0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, +0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, +0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, +0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x53, 0x74, +0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4d, 0x61, +0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x66, +0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, +0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, +0x49, 0x62, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, +0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, +0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, +0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, +0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x55, 0x76, 0x46, 0x72, +0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5b, 0x34, +0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, 0x30, 0x39, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, +0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, +0x72, 0x76, 0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, +0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, +0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, +0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, +0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, +0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, +0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, +0x76, 0x30, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, +0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x2c, 0x20, +0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x5b, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, +0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, +0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, +0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x75, 0x76, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x75, 0x76, 0x30, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, +0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x49, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, +0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x33, 0x20, 0x7b, 0x00, +0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x4d, 0x61, 0x70, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, +0x6c, 0x65, 0x72, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, +0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, +0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x66, +0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, +0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x33, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, +0x72, 0x53, 0x65, 0x74, 0x33, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x39, 0x29, 0x5d, 0x5d, +0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, +0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, +0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x34, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, +0x61, 0x63, 0x74, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x34, +0x30, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x3e, 0x20, 0x28, 0x2d, 0x31, 0x29, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x32, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, +0x66, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, +0x30, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, +0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, +0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, +0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, +0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x5f, 0x34, 0x31, 0x33, 0x29, 0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, +0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x37, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x34, 0x30, 0x39, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x34, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x63, 0x6f, 0x66, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, +0x20, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x42, +0x6f, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x00, +0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, +0x75, 0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x32, 0x20, 0x7b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, +0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, +0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, +0x69, 0x6e, 0x74, 0x3e, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, +0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, +0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x6d, 0x70, +0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, +0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, +0x66, 0x65, 0x72, 0x34, 0x20, 0x7b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x3e, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, +0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x35, +0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x36, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, +0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, +0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, +0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x32, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, +0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, +0x72, 0x28, 0x32, 0x38, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x34, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x34, +0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x33, 0x30, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, +0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, +0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, +0x31, 0x38, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x42, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x39, 0x29, 0x5d, 0x5d, 0x2c, +0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x30, 0x29, 0x5d, 0x5d, 0x2c, +0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x5b, 0x5b, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x64, 0x5d, 0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, +0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, +0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x35, 0x31, +0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, +0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, +0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, +0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, +0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x31, 0x30, 0x35, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, +0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, +0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x32, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, +0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, +0x3b, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x2c, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x2b, 0x2b, 0x29, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x5d, 0x2e, 0x78, +0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, +0x6e, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x37, 0x37, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x37, 0x37, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, +0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, +0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, +0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, +0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x5f, 0x39, 0x37, 0x37, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, +0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x37, 0x37, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x34, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, +0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, +0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, +0x36, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, +0x6f, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, +0x20, 0x3e, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x33, 0x34, 0x20, 0x3d, +0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, +0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x34, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x34, +0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x33, +0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, +0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, +0x37, 0x36, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x37, 0x36, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x36, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x38, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x38, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x38, 0x38, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, +0x38, 0x31, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x38, 0x31, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x31, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x31, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x38, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x39, 0x36, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, +0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x38, +0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x20, 0x3d, 0x20, +0x28, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, +0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x39, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x39, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x38, 0x36, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x38, 0x36, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x28, 0x5f, 0x38, 0x39, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x39, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x39, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x39, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x36, +0x38, 0x38, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x20, 0x3c, 0x20, 0x5f, 0x36, 0x39, 0x32, 0x3b, 0x20, 0x29, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x5f, 0x37, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, +0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, +0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, +0x30, 0x34, 0x35, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, +0x30, 0x34, 0x35, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x37, 0x31, 0x30, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x33, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x39, 0x32, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x39, 0x32, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x39, 0x32, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x31, 0x30, +0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, +0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, +0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x38, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, +0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x31, 0x30, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x35, 0x31, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x35, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x38, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x38, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x36, 0x35, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x28, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x3b, 0x00, 0x66, 0x72, 0x61, +0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x63, +0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x31, +0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, +0x5f, 0x31, 0x30, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, +0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, +0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, +0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, +0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x20, 0x3c, 0x20, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, +0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, +0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, +0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, +0x30, 0x32, 0x36, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x31, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x36, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x36, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x37, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, +0x32, 0x28, 0x5f, 0x39, 0x36, 0x31, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x36, +0x31, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, 0x32, +0x36, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, +0x32, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, +0x31, 0x30, 0x33, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, +0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x32, 0x20, +0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, +0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x32, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x32, 0x32, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x34, 0x39, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x37, 0x34, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x37, 0x34, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x37, 0x34, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x36, 0x5b, 0x32, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x37, 0x36, 0x5b, 0x33, 0x5d, +0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x33, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x38, 0x30, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x38, 0x30, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x38, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x35, 0x37, +0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, +0x5f, 0x36, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, +0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x36, 0x38, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x36, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, +0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x38, +0x33, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x38, 0x33, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x33, 0x30, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, +0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x37, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x35, 0x37, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x38, +0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x38, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x38, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x36, 0x3b, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x39, 0x20, 0x3c, 0x20, 0x5f, 0x36, 0x38, 0x30, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, +0x38, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, +0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x20, 0x25, 0x20, +0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x20, 0x2f, 0x20, +0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x39, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, +0x28, 0x5f, 0x36, 0x39, 0x38, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x31, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x31, +0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x31, +0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, +0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x32, 0x2e, 0x78, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, +0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, +0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, +0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, +0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x35, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x39, +0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, +0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x20, 0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, +0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, +0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, +0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, +0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, +0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, +0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x36, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, +0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, +0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, +0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, +0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, +0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, +0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, +0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, +0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, +0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, +0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, +0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, +0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, +0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, +0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, +0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, +0x65, 0x72, 0x28, 0x32, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, +0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x33, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x33, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x39, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, +0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, +0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, +0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, +0x36, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, +0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x34, 0x34, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x35, 0x39, 0x20, 0x3d, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, +0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x39, 0x2e, 0x79, 0x20, 0x3d, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x38, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x33, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, +0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x4d, 0x61, 0x70, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, +0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, +0x6c, 0x72, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x5f, 0x38, 0x35, 0x39, 0x29, 0x2c, 0x20, 0x62, 0x69, +0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, +0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, +0x34, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, +0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x38, 0x34, +0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, 0x37, 0x36, 0x20, +0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x69, 0x6e, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, +0x20, 0x5f, 0x38, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, +0x68, 0x28, 0x5f, 0x34, 0x37, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, +0x28, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x32, 0x20, 0x3d, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x36, 0x34, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, +0x66, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x36, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x34, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, +0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x36, 0x36, 0x35, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, +0x32, 0x35, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x35, +0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, +0x28, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x36, +0x36, 0x34, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x31, 0x5d, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, +0x32, 0x5d, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x36, 0x36, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, +0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x38, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, +0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x36, 0x39, +0x38, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x38, 0x36, 0x35, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, +0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x38, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, +0x61, 0x78, 0x28, 0x5f, 0x36, 0x34, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x37, 0x37, 0x20, 0x3d, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, +0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, +0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x37, 0x20, 0x2a, 0x20, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, +0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x37, +0x36, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x38, 0x36, 0x38, 0x2e, 0x79, +0x2c, 0x20, 0x5f, 0x38, 0x36, 0x38, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, 0x6c, 0x66, +0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x34, 0x38, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, +0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, +0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x30, 0x29, +0x2c, 0x20, 0x5f, 0x38, 0x36, 0x35, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x37, 0x37, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x34, 0x37, +0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, +0x63, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x35, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3e, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, +0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, +0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, +0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, 0x73, 0x74, +0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, +0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x37, 0x36, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, +0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x28, 0x5f, 0x38, 0x36, 0x35, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, +0x28, 0x5f, 0x38, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, +0x34, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, +0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, +0x3d, 0x20, 0x28, 0x5f, 0x38, 0x38, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x38, 0x36, 0x35, 0x20, +0x2d, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x35, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, +0x38, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x33, +0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x38, 0x33, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, +0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x28, 0x5f, 0x38, 0x35, 0x32, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x5f, 0x31, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, +0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, +0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, +0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, +0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, +0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x38, 0x5d, 0x2e, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, +0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x69, 0x6e, 0x2e, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, +0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x63, +0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, +0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, +0x5b, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x28, +0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, +0x70, 0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5d, +0x5d, 0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, +0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, +0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, +0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x38, 0x5d, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, +0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x31, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x30, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x20, +0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, +0x30, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, +0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x38, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x33, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2e, 0x77, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x5f, 0x31, 0x30, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, +0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x28, 0x2d, +0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, +0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x35, 0x2c, 0x20, +0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x2c, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, +0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, +0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x35, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x33, 0x20, +0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x2c, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, +0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, +0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, +0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x31, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, +0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x33, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, +0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, +0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, +0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, +0x5f, 0x31, 0x33, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x31, 0x33, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x20, 0x3c, +0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, +0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x32, 0x2c, 0x20, 0x5f, 0x31, +0x33, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x35, 0x2c, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x2b, 0x2b, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, +0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, +0x5f, 0x31, 0x33, 0x36, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x34, +0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x34, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x33, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x34, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x34, 0x20, 0x2b, 0x20, +0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x2e, 0x6d, +0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x5f, 0x31, +0x34, 0x36, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x34, 0x36, 0x2e, 0x7a, 0x29, +0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x33, 0x36, 0x5d, 0x2e, 0x78, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x33, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x34, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x34, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, +0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, +0x26, 0x20, 0x32, 0x35, 0x36, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x31, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x31, 0x38, +0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x31, 0x20, 0x3d, 0x20, +0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, +0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, +0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x31, 0x36, 0x39, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x36, 0x39, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, +0x36, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, +0x36, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x31, 0x38, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x31, 0x38, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x38, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x38, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, +0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x30, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, +0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, +0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x32, 0x31, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x32, 0x31, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, +0x32, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, +0x32, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x33, +0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x20, +0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, +0x39, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x5f, 0x32, 0x39, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x32, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x33, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x33, 0x38, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x33, 0x38, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x33, 0x38, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x35, +0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x32, 0x35, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x32, 0x35, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x34, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, +0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x37, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, +0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, +0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x38, 0x3b, +0x20, 0x5f, 0x32, 0x39, 0x36, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x39, 0x31, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x33, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, +0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x32, 0x39, 0x36, 0x20, 0x25, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x32, 0x39, 0x36, 0x20, 0x2f, 0x20, +0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, +0x33, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, +0x28, 0x5f, 0x33, 0x30, 0x37, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, +0x39, 0x33, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, 0x31, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x31, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x33, 0x31, 0x32, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x31, 0x32, 0x5b, 0x33, 0x5d, +0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x30, 0x37, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x39, 0x36, 0x2b, 0x2b, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x39, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x33, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2e, 0x78, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, +0x32, 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x35, 0x2e, 0x7a, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x35, 0x32, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x34, 0x35, 0x20, 0x3d, 0x20, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, +0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x33, 0x33, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, +0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, +0x35, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x34, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x34, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, +0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, +0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, +0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x34, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x35, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x38, 0x20, 0x3d, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, +0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, +0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x39, +0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x33, +0x35, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x33, 0x35, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x2e, 0x77, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, +0x5f, 0x33, 0x35, 0x36, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, +0x30, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, +0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x36, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x35, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, +0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x37, 0x30, 0x20, 0x3d, 0x20, +0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, +0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x37, 0x30, 0x2c, 0x20, 0x5f, 0x33, +0x36, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x38, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x33, 0x37, 0x30, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x33, 0x35, 0x38, 0x20, 0x2b, 0x20, +0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x36, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x38, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x38, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, +0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, +0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, +0x74, 0x61, 0x5b, 0x5f, 0x36, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, +0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x33, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x38, +0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, +0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, +0x5f, 0x38, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x31, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x38, 0x34, 0x2e, +0x78, 0x2c, 0x20, 0x5f, 0x38, 0x39, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x38, +0x37, 0x2c, 0x20, 0x5f, 0x39, 0x31, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x39, +0x29, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x37, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x39, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x38, 0x37, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x38, 0x2c, +0x20, 0x5f, 0x39, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x39, 0x34, 0x2c, 0x20, 0x5f, 0x39, 0x36, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x39, 0x38, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x39, 0x34, 0x2c, 0x20, 0x5f, 0x39, 0x36, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x5f, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x33, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x7b, +0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, +0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, +0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x32, 0x31, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x32, +0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, +0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, +0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x32, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x32, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x32, 0x36, 0x20, 0x3d, 0x20, +0x30, 0x3b, 0x20, 0x5f, 0x31, 0x32, 0x36, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, +0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x20, 0x3d, +0x20, 0x5f, 0x31, 0x32, 0x32, 0x2c, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x35, 0x2c, 0x20, +0x5f, 0x31, 0x32, 0x36, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x32, 0x36, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x33, 0x36, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x35, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, +0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, +0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x5f, 0x31, 0x33, 0x36, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x31, 0x33, 0x36, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, +0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x5b, 0x5f, 0x31, 0x32, 0x36, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x31, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x32, 0x35, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x34, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x34, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, +0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, 0x36, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, +0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x31, +0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x31, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x31, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x31, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x28, +0x28, 0x28, 0x28, 0x5f, 0x31, 0x35, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x35, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, +0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x35, 0x39, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, +0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x35, 0x39, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, 0x37, 0x38, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x37, 0x38, 0x5b, 0x33, 0x5d, +0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x31, 0x39, 0x35, +0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x31, +0x39, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x31, 0x39, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x31, 0x39, 0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x28, 0x5f, 0x32, 0x31, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x31, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, +0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x31, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, +0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x31, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x32, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x32, 0x36, 0x34, 0x20, 0x3d, +0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, +0x30, 0x29, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x38, 0x20, 0x2b, +0x20, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x32, 0x38, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, +0x5f, 0x32, 0x32, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x32, 0x32, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x32, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x32, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x34, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x34, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x34, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, +0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x32, 0x36, 0x34, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x36, 0x34, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x32, 0x36, +0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x36, +0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, +0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x38, +0x36, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x38, 0x3b, 0x20, 0x5f, 0x32, 0x38, 0x36, 0x20, 0x3c, 0x20, 0x5f, 0x32, 0x38, +0x31, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, +0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, +0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, +0x6e, 0x74, 0x28, 0x5f, 0x32, 0x38, 0x36, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x32, 0x38, 0x36, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x32, 0x39, 0x37, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x32, 0x38, 0x33, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x33, +0x30, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x33, 0x30, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x33, 0x30, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x2e, 0x7a, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x33, 0x30, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x39, 0x37, 0x2e, +0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x32, 0x38, 0x36, 0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x33, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x31, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x33, 0x31, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x35, +0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x31, 0x37, 0x2e, 0x7a, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x31, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x32, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, +0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x34, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, +0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, +0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x7a, 0x29, +0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, +0x74, 0x61, 0x5b, 0x5f, 0x31, 0x30, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x33, 0x34, +0x32, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x33, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, +0x34, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x33, 0x34, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, +0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x32, 0x20, 0x3d, 0x20, +0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x33, 0x34, 0x35, 0x2c, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x2c, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x2c, 0x20, +0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x33, 0x34, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, +0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x33, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x35, 0x33, 0x2e, 0x78, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, +0x34, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x35, 0x34, +0x2c, 0x20, 0x5f, 0x33, 0x34, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x2c, 0x20, +0x5f, 0x33, 0x35, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, +0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, +0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x35, 0x34, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x33, 0x34, +0x32, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x33, 0x35, 0x30, 0x2c, 0x20, +0x5f, 0x33, 0x35, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x38, +0x39, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x38, 0x39, 0x2e, +0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x30, 0x32, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x32, 0x38, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x30, +0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x33, +0x36, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, +0x30, 0x20, 0x2d, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x2a, 0x20, +0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, +0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, +0x6f, 0x72, 0x4d, 0x61, 0x70, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, +0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, +0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x53, 0x6d, +0x70, 0x6c, 0x72, 0x2c, 0x20, 0x5f, 0x33, 0x36, 0x33, 0x2c, 0x20, 0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, +0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x39, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x7b, 0x7d, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, +0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, +0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, +0x30, 0x35, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, +0x30, 0x35, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, +0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x20, 0x3c, +0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, +0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x36, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x33, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, +0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, +0x31, 0x30, 0x34, 0x33, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x37, +0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x39, 0x37, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x37, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x34, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, +0x65, 0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, +0x74, 0x32, 0x28, 0x5f, 0x39, 0x37, 0x38, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, +0x37, 0x38, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, +0x34, 0x33, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x35, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x30, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, +0x30, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, +0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x39, +0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x33, 0x35, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x33, 0x35, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x36, +0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x37, 0x36, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x36, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x36, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x38, 0x39, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x38, 0x39, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x31, +0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x31, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x31, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x31, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x37, +0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, +0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x20, 0x2b, 0x20, 0x28, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, +0x38, 0x34, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x38, 0x34, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x37, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x37, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x37, 0x30, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x37, 0x30, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, +0x39, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x38, 0x39, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x39, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x39, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, +0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x39, 0x3b, 0x20, 0x5f, +0x31, 0x30, 0x34, 0x36, 0x20, 0x3c, 0x20, 0x5f, 0x36, 0x39, 0x33, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, +0x31, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, +0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x20, 0x25, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x34, 0x36, 0x20, 0x2f, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x39, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x37, 0x31, 0x31, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x30, 0x34, 0x37, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x32, 0x34, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x32, +0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, +0x32, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x31, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x36, 0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x31, 0x30, 0x33, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x34, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x35, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, +0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, +0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x32, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x39, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x39, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x39, 0x2e, +0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x39, 0x35, 0x39, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, +0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, +0x38, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, +0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x20, +0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x30, 0x34, 0x30, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x2c, +0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x5d, 0x2e, 0x78, 0x20, +0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, +0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x39, 0x36, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x5f, +0x39, 0x36, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, +0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, +0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x5f, 0x39, 0x36, 0x32, 0x2e, +0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x39, 0x36, 0x32, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, +0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x30, 0x32, 0x37, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x34, +0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x38, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x20, 0x3d, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x37, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, +0x30, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, +0x5f, 0x37, 0x32, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x32, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x32, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x30, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x35, 0x30, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x35, 0x30, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, +0x37, 0x37, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x37, 0x37, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x37, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x37, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x5b, 0x31, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x34, +0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x33, 0x31, 0x20, +0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, +0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x38, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x37, 0x37, 0x20, 0x3d, 0x20, +0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x38, 0x31, +0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x37, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, +0x5f, 0x31, 0x30, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x30, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x31, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, +0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, +0x33, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, +0x5f, 0x38, 0x35, 0x38, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x38, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x35, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x35, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, +0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x35, 0x5b, 0x31, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x35, +0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x38, +0x35, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, +0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x37, 0x3b, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x20, 0x3c, 0x20, 0x5f, +0x36, 0x38, 0x31, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, +0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, +0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, +0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, +0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, +0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x36, 0x39, 0x39, 0x2e, 0x78, +0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x31, 0x20, 0x2b, 0x3d, 0x20, +0x28, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x32, +0x39, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x39, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x31, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, +0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, 0x39, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x31, 0x30, 0x32, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x33, 0x2e, 0x79, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x36, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, +0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, +0x33, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, +0x36, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x5f, 0x35, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x75, 0x76, 0x30, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x35, +0x39, 0x39, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x35, 0x39, 0x39, 0x2e, 0x79, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, +0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, +0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, +0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x33, 0x2e, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x5f, 0x35, 0x39, 0x39, 0x2c, 0x20, +0x62, 0x69, 0x61, 0x73, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, +0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, +0x34, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, +0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, +0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x20, 0x3d, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, +0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, +0x28, 0x5f, 0x38, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, +0x34, 0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, +0x63, 0x69, 0x74, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, +0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, +0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, +0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, +0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x37, 0x36, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, +0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x35, 0x38, 0x2e, 0x79, 0x29, +0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x35, 0x38, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, +0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x34, 0x38, 0x2c, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, +0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, +0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x34, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, +0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x35, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x37, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x78, 0x79, +0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, +0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, +0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, +0x37, 0x36, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, +0x69, 0x7a, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, +0x5f, 0x38, 0x34, 0x35, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x34, +0x38, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x37, 0x38, 0x2e, 0x78, +0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x39, 0x38, 0x29, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x38, 0x35, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x38, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x35, 0x32, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x37, 0x39, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x32, 0x20, 0x3d, 0x20, +0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, +0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, +0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x32, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x32, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x36, 0x32, 0x2e, +0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x20, 0x3d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, +0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, +0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x32, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x38, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x5f, 0x32, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x32, 0x30, 0x39, +0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x33, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, +0x5f, 0x32, 0x31, 0x38, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x39, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, +0x20, 0x5f, 0x32, 0x32, 0x33, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x39, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x39, 0x30, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x35, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, +0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, +0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x39, 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x39, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x35, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x39, +0x36, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, +0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x35, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x39, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x37, 0x39, 0x3b, 0x00, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x37, 0x20, +0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x20, 0x3d, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, +0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x35, 0x31, 0x32, 0x29, +0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, +0x33, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, +0x33, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, +0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x69, 0x6e, +0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2f, 0x20, +0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x31, 0x31, 0x34, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, +0x31, 0x31, 0x34, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, +0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x20, +0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, +0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, +0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x32, 0x2c, +0x20, 0x5f, 0x31, 0x31, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x31, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x32, +0x39, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, +0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x5d, 0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, +0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, +0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x39, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x33, +0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x35, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x31, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, +0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, +0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x2e, 0x78, +0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x35, 0x33, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, +0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x34, +0x32, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x30, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x20, 0x3d, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x69, 0x66, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, +0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x32, 0x35, 0x36, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x35, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, +0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, +0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, +0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x33, 0x20, 0x5f, 0x38, 0x36, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x38, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, +0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, +0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, +0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x30, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x33, +0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, +0x33, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x28, 0x5f, 0x38, 0x36, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, +0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x36, 0x30, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, +0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x36, 0x30, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, +0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, +0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x38, 0x37, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x38, +0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, +0x38, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, +0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x31, +0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, +0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, +0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x36, 0x30, 0x20, +0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, +0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x33, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x31, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x34, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x31, 0x34, +0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, +0x39, 0x31, 0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x39, 0x31, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x28, 0x5f, 0x39, 0x34, 0x31, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x34, 0x31, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, +0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x34, 0x31, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x34, 0x31, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, +0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x36, 0x38, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x36, 0x38, 0x5b, +0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, +0x36, 0x38, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x39, 0x36, 0x38, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, +0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, +0x31, 0x31, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x30, 0x3b, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x32, 0x20, 0x3c, +0x20, 0x5f, 0x37, 0x36, 0x34, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x73, +0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, +0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, +0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x33, 0x32, 0x20, 0x25, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, +0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x33, 0x32, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x75, +0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x39, 0x35, 0x20, 0x3d, +0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x37, 0x38, 0x32, +0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x33, 0x20, 0x2b, +0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x39, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x39, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x31, 0x33, 0x31, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x39, 0x35, 0x5b, 0x32, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x39, 0x35, 0x5b, 0x33, 0x5d, 0x29, +0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x38, 0x32, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x32, 0x2b, 0x2b, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x33, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x31, 0x31, 0x31, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, +0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x35, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x31, 0x33, 0x35, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, +0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x31, 0x31, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, +0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, +0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x38, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, +0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x38, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, +0x33, 0x38, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x2e, +0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, +0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, +0x37, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, +0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, +0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, +0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x37, 0x37, 0x20, 0x3d, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, +0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, +0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, +0x34, 0x38, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x20, +0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x37, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x37, 0x32, 0x2e, 0x77, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x30, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, +0x28, 0x5f, 0x34, 0x37, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, +0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x38, 0x30, 0x2c, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x2c, 0x20, 0x28, 0x2d, 0x31, +0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x34, 0x38, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x35, 0x30, 0x32, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x34, 0x37, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, +0x5f, 0x35, 0x30, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x34, +0x34, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x38, 0x30, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x34, +0x34, 0x2c, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x32, 0x2c, +0x20, 0x5f, 0x35, 0x30, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, +0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x34, 0x34, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, +0x34, 0x37, 0x37, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x35, 0x30, 0x32, +0x2c, 0x20, 0x5f, 0x35, 0x30, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x5f, 0x31, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, +0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, +0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, +0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, +0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x37, +0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, +0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x6f, 0x75, +0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x33, 0x20, 0x3d, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x33, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x39, 0x39, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x33, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x33, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, +0x39, 0x33, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x30, 0x38, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, +0x2f, 0x20, 0x5f, 0x32, 0x30, 0x33, 0x2c, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, +0x20, 0x2b, 0x20, 0x5f, 0x32, 0x30, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x39, 0x33, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x30, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x2d, +0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, +0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x33, 0x38, 0x31, 0x2c, 0x20, 0x5f, 0x32, 0x31, 0x34, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x30, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, +0x33, 0x38, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x39, 0x39, 0x20, 0x2b, 0x20, 0x31, 0x29, +0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x32, 0x36, 0x2c, 0x20, 0x5f, 0x32, 0x33, 0x30, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x28, 0x69, 0x6e, +0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x25, 0x20, +0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, +0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x30, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x30, +0x3b, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x34, 0x20, 0x3c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x6d, 0x6f, 0x72, 0x70, +0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x37, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, +0x32, 0x36, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x34, 0x2b, 0x2b, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x31, 0x31, 0x34, 0x5d, +0x2e, 0x78, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x34, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, +0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, +0x20, 0x2b, 0x20, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x32, 0x2e, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x32, +0x28, 0x5f, 0x31, 0x30, 0x33, 0x38, 0x2e, 0x78, 0x79, 0x29, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x30, +0x33, 0x38, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x5f, 0x31, 0x31, +0x31, 0x34, 0x5d, 0x2e, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x34, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x36, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, +0x31, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, +0x31, 0x32, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, +0x5f, 0x31, 0x31, 0x32, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x74, +0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, +0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, +0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, +0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x38, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, +0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, +0x63, 0x65, 0x73, 0x2e, 0x77, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x30, +0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x35, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x35, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x37, 0x39, 0x35, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x37, 0x39, 0x35, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x32, +0x32, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x32, 0x32, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x32, 0x32, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x32, 0x32, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x39, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, +0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x39, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x38, 0x34, 0x39, 0x5b, 0x32, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x34, 0x39, 0x5b, 0x33, +0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, +0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x38, 0x37, +0x36, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, +0x5f, 0x38, 0x37, 0x36, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, +0x20, 0x28, 0x28, 0x5f, 0x38, 0x37, 0x36, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, +0x29, 0x20, 0x2b, 0x20, 0x5f, 0x38, 0x37, 0x36, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x77, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x78, 0x33, 0x20, 0x5f, 0x39, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, +0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, +0x2e, 0x78, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x33, +0x30, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, +0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x79, 0x5d, 0x2e, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, 0x5f, 0x39, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x72, +0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x7a, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, +0x6d, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, +0x20, 0x5f, 0x37, 0x34, 0x39, 0x20, 0x3d, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, +0x2d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, +0x74, 0x73, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x39, 0x20, 0x2b, 0x20, 0x28, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, +0x77, 0x20, 0x2d, 0x20, 0x33, 0x75, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x28, 0x5f, +0x39, 0x30, 0x33, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, +0x28, 0x28, 0x5f, 0x39, 0x30, 0x33, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, +0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x30, 0x33, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, +0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x30, 0x33, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, +0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, +0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x33, 0x30, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, +0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x33, 0x30, 0x5b, 0x31, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x33, 0x30, 0x5b, 0x32, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x33, 0x30, 0x5b, +0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, +0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x79, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, +0x35, 0x37, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x5f, 0x39, 0x35, 0x37, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, +0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x35, 0x37, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, +0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x35, 0x37, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x62, 0x6f, 0x6e, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x7a, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, +0x75, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x39, 0x3b, 0x20, 0x5f, +0x31, 0x31, 0x31, 0x37, 0x20, 0x3c, 0x20, 0x5f, 0x37, 0x35, 0x33, 0x3b, 0x20, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, +0x37, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, +0x74, 0x34, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, +0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x28, 0x75, 0x69, +0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x32, 0x28, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x37, 0x20, 0x25, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x37, 0x20, 0x2f, +0x20, 0x32, 0x30, 0x34, 0x38, 0x75, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x33, 0x20, +0x5f, 0x39, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x62, 0x6f, 0x6e, +0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x5b, 0x75, 0x69, 0x6e, +0x74, 0x28, 0x5f, 0x37, 0x37, 0x31, 0x2e, 0x78, 0x29, 0x5d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x31, 0x31, 0x31, 0x38, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x28, 0x28, 0x5f, 0x39, 0x38, 0x34, 0x5b, 0x30, 0x5d, 0x20, 0x2a, +0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x38, 0x34, 0x5b, 0x31, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x5f, 0x39, 0x38, +0x34, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, +0x38, 0x34, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x37, 0x31, 0x2e, 0x79, 0x29, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x31, +0x37, 0x2b, 0x2b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, +0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x30, 0x39, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x30, 0x2e, 0x78, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x39, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x32, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x39, +0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x36, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, +0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, +0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, +0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x33, +0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x31, 0x32, 0x33, 0x2e, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, 0x5d, 0x2e, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, +0x32, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x33, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x34, 0x34, 0x32, +0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x36, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x34, 0x36, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x20, 0x3d, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, +0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x34, 0x37, 0x30, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x36, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x5f, 0x34, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x36, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x35, +0x36, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x34, 0x37, 0x30, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, +0x20, 0x5f, 0x34, 0x36, 0x35, 0x2c, 0x20, 0x5f, 0x34, 0x37, 0x36, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, +0x2b, 0x20, 0x5f, 0x34, 0x37, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x36, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x39, 0x31, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x20, 0x3d, 0x20, +0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x34, 0x36, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, +0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x2c, 0x20, 0x5f, +0x34, 0x37, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x2c, 0x20, 0x5f, 0x34, 0x39, +0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, +0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, +0x61, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x39, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x34, 0x36, 0x32, 0x20, +0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x34, 0x38, 0x37, 0x2c, 0x20, 0x5f, 0x34, +0x39, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x39, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, 0x54, +0x41, 0x4d, 0x54, 0x1d, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x00, +0x00, 0x01, 0x00, 0x01, 0xce, 0x01, 0x00, 0x00, 0x01, 0x08, 0x00, 0xba, 0x02, 0x00, 0x00, 0x01, 0x10, 0x00, 0x80, 0x04, +0x00, 0x00, 0x01, 0x10, 0x01, 0x82, 0x05, 0x00, 0x00, 0x01, 0x18, 0x00, 0x96, 0x05, 0x00, 0x00, 0x01, 0x20, 0x01, 0x4e, +0x07, 0x00, 0x00, 0x01, 0x30, 0x01, 0xb0, 0x08, 0x00, 0x00, 0x01, 0x44, 0x01, 0xf2, 0x08, 0x00, 0x00, 0x01, 0x80, 0x00, +0x0a, 0x09, 0x00, 0x00, 0x01, 0x88, 0x00, 0x38, 0x0a, 0x00, 0x00, 0x01, 0x90, 0x00, 0x1c, 0x0c, 0x00, 0x00, 0x01, 0x98, +0x00, 0x3c, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x01, 0x24, 0x10, 0x00, 0x00, 0x02, +0x08, 0x00, 0x0e, 0x11, 0x00, 0x00, 0x02, 0x10, 0x00, 0xd6, 0x12, 0x00, 0x00, 0x02, 0x10, 0x01, 0xda, 0x13, 0x00, 0x00, +0x02, 0x18, 0x00, 0xec, 0x13, 0x00, 0x00, 0x02, 0x20, 0x01, 0xa6, 0x15, 0x00, 0x00, 0x02, 0x30, 0x01, 0xf6, 0x16, 0x00, +0x00, 0x02, 0x44, 0x01, 0x36, 0x17, 0x00, 0x00, 0x02, 0x80, 0x00, 0x4c, 0x17, 0x00, 0x00, 0x02, 0x88, 0x00, 0x7a, 0x18, +0x00, 0x00, 0x02, 0x90, 0x00, 0x5e, 0x1a, 0x00, 0x00, 0x02, 0x98, 0x00, 0x7e, 0x1b, 0x00, 0x00, 0xd5, 0x0a, 0x00, 0x00, +0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, +0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, +0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, +0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, +0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, +0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, +0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x6e, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, +0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x6c, 0x00, 0xe9, 0x06, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, +0x7b, 0x00, 0x7c, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x05, 0x00, +0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x18, 0x00, 0x02, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, +0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, +0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, +0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, +0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, +0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, +0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, +0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xcf, 0x00, +0x02, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0x69, 0x00, 0x02, 0x00, 0xd6, 0x00, +0xd7, 0x00, 0x02, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xdb, 0x00, 0x6c, 0x00, +0xdc, 0x00, 0x6c, 0x00, 0xa1, 0x15, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, +0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, +0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, +0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0xe0, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, +0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, +0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, +0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, +0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, +0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, +0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, +0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0xeb, 0x00, 0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0xed, 0x00, 0xee, 0x00, +0xef, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0x6c, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, +0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0x02, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x6c, 0x00, +0x00, 0x01, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x6e, 0x00, 0x6c, 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x03, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x07, 0x01, +0x08, 0x01, 0x09, 0x01, 0x02, 0x00, 0x0a, 0x01, 0x02, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x0e, 0x01, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x6c, 0x00, 0x6c, 0x00, 0x11, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x12, 0x01, 0x6c, 0x00, 0x13, 0x01, 0x14, 0x01, 0x02, 0x00, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, +0x1a, 0x01, 0x1b, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x1c, 0x01, 0x6c, 0x00, 0x1d, 0x01, 0x1e, 0x01, 0x1f, 0x01, +0x20, 0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x6c, 0x00, 0x10, 0x0a, +0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, +0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, +0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, +0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, +0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, +0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, +0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, +0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, +0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, +0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, +0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, +0x68, 0x00, 0x67, 0x00, 0x66, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, +0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x28, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x6c, 0x00, 0x51, 0x00, 0x00, 0x00, +0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6c, 0x00, 0xdc, 0x14, 0x00, 0x00, +0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, +0x14, 0x00, 0x2c, 0x01, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, +0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, +0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, +0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, +0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, +0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, +0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, +0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, +0x61, 0x00, 0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0xe6, 0x00, +0xe7, 0x00, 0xe8, 0x00, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, 0x65, 0x00, 0x68, 0x00, 0x67, 0x00, 0x66, 0x00, +0xeb, 0x00, 0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0x2d, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x31, 0x01, 0xf2, 0x00, +0x6c, 0x00, 0x32, 0x01, 0x33, 0x01, 0x34, 0x01, 0xf6, 0x00, 0xf7, 0x00, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x02, 0x00, +0x38, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0xff, 0x00, 0x6c, 0x00, 0x3c, 0x01, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, +0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x3d, 0x01, 0x02, 0x01, +0x02, 0x00, 0x3e, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0x02, 0x00, 0x45, 0x01, +0x02, 0x00, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x4a, 0x01, 0x4b, 0x01, +0x6c, 0x00, 0x6c, 0x00, 0x4c, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x4d, 0x01, 0x6c, 0x00, 0x4e, 0x01, 0x14, 0x01, +0x02, 0x00, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x6c, 0x00, 0x6d, 0x00, +0x02, 0x00, 0x56, 0x01, 0x6c, 0x00, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x6c, 0x00, 0xaa, 0x0d, 0x00, 0x00, +0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, +0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x05, 0x00, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x18, 0x00, 0x02, 0x00, 0x86, 0x00, +0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, +0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, +0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, +0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, +0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, +0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, +0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, +0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xcf, 0x00, 0x02, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0x5e, 0x01, 0xd3, 0x00, +0xd4, 0x00, 0x5f, 0x01, 0xd5, 0x00, 0x60, 0x01, 0x02, 0x00, 0x61, 0x01, 0x62, 0x01, 0x02, 0x00, 0x63, 0x01, 0x6c, 0x00, +0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x02, 0x00, 0x67, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x68, 0x01, 0x6c, 0x00, +0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, +0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x72, 0x01, 0x6c, 0x00, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x02, 0x00, 0x76, 0x01, +0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x7b, 0x01, 0x6c, 0x00, 0x7c, 0x01, +0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x63, 0x01, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x81, 0x01, 0xd7, 0x00, +0x02, 0x00, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x85, 0x01, 0x6c, 0x00, 0x86, 0x01, +0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x6c, 0x00, 0xec, 0x02, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, +0x7a, 0x00, 0x7b, 0x00, 0x06, 0x00, 0x02, 0x00, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, +0x91, 0x01, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x92, 0x01, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, +0x17, 0x00, 0x93, 0x01, 0x94, 0x01, 0x69, 0x00, 0x02, 0x00, 0x95, 0x01, 0x96, 0x01, 0x6c, 0x00, 0x91, 0x00, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0xd5, 0x00, 0x69, 0x00, 0x02, 0x00, 0x97, 0x01, 0x6c, 0x00, +0x55, 0x0d, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, +0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, +0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, 0x12, 0x00, +0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, +0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, +0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, +0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, +0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, +0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, +0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, +0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, +0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x65, 0x00, 0x63, 0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, +0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x9c, 0x01, +0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, +0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, +0x6c, 0x00, 0x09, 0x18, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, +0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, +0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, +0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0xb1, 0x01, +0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, +0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, +0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, +0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, +0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, +0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, +0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, +0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, +0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, +0x65, 0x00, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0xeb, 0x00, 0x02, 0x00, +0xec, 0x00, 0x02, 0x00, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xf2, 0x00, 0x6c, 0x00, 0xb7, 0x01, +0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, +0xc1, 0x01, 0xc2, 0x01, 0xff, 0x00, 0x6c, 0x00, 0xc3, 0x01, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, +0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0x02, 0x00, +0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0x02, 0x00, 0xce, 0x01, 0x02, 0x00, +0xcf, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xd3, 0x01, 0xd4, 0x01, 0x6c, 0x00, +0x6c, 0x00, 0xd5, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xd6, 0x01, 0x6c, 0x00, 0xd7, 0x01, 0xd8, 0x01, 0x02, 0x00, +0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0xe0, 0x01, 0x6c, 0x00, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, +0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, +0xf3, 0x01, 0xf4, 0x01, 0x6c, 0x00, 0x90, 0x0c, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x01, 0x00, +0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, +0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, +0x10, 0x00, 0x9b, 0x01, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, +0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, +0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, +0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, +0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, +0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x65, 0x00, 0x63, 0x00, 0x64, 0x00, 0x68, 0x00, +0x67, 0x00, 0x66, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x6e, 0x00, 0x6c, 0x00, 0x9c, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0xfb, 0x01, +0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0x00, 0x02, 0xb0, 0x01, 0x6c, 0x00, 0x44, 0x17, 0x00, 0x00, 0xe7, 0x00, +0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, +0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0xb1, 0x01, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, +0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, +0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, +0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, +0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, +0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, +0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, +0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, +0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, +0xe4, 0x00, 0x02, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0x65, 0x00, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, +0x64, 0x00, 0x68, 0x00, 0x67, 0x00, 0x66, 0x00, 0xeb, 0x00, 0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0x01, 0x02, 0x02, 0x02, +0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0xf2, 0x00, 0x6c, 0x00, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, +0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x02, 0x00, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0xff, 0x00, 0x6c, 0x00, +0x12, 0x02, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x6e, 0x00, 0x6c, 0x00, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0x02, 0x00, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, +0xcb, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0x02, 0x00, 0xce, 0x01, 0x02, 0x00, 0xcf, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xd2, 0x01, +0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xd3, 0x01, 0xd4, 0x01, 0x6c, 0x00, 0x6c, 0x00, 0xd5, 0x01, 0x6c, 0x00, 0x6d, 0x00, +0x02, 0x00, 0xd6, 0x01, 0x6c, 0x00, 0xd7, 0x01, 0xd8, 0x01, 0x02, 0x00, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, +0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xe0, 0x01, 0x6c, 0x00, 0x13, 0x02, 0x14, 0x02, +0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, +0xf4, 0x01, 0x6c, 0x00, 0x2b, 0x0a, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, 0x02, 0x00, +0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, +0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, +0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, +0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, +0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, +0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, +0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, +0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, +0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, +0x28, 0x02, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x29, 0x02, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x1a, 0x06, +0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x7c, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, +0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x05, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, +0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, +0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, +0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, +0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, +0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, +0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, +0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, +0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xcf, 0x00, 0x02, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0x2a, 0x02, 0x2b, 0x02, +0xd5, 0x00, 0x69, 0x00, 0x02, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x02, 0x00, 0x2c, 0x02, 0xd9, 0x00, 0xda, 0x00, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0xdb, 0x00, 0x6c, 0x00, 0xdc, 0x00, 0x6c, 0x00, 0xe3, 0x14, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, +0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, +0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, +0x11, 0x00, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, +0x2d, 0x02, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, +0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, +0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, +0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, +0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, +0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x2e, 0x02, 0xe6, 0x00, 0x2f, 0x02, +0x30, 0x02, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0xeb, 0x00, +0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0xf2, 0x00, 0x6c, 0x00, +0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0xf6, 0x00, 0xf7, 0x00, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x02, 0x00, 0x3c, 0x02, +0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0xff, 0x00, 0x6c, 0x00, 0x40, 0x02, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, +0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x13, 0x01, 0x02, 0x01, 0x02, 0x00, +0x01, 0x01, 0x41, 0x02, 0x42, 0x02, 0x12, 0x01, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x02, 0x00, 0x46, 0x02, 0x02, 0x00, +0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x4b, 0x02, 0x4c, 0x02, 0x6c, 0x00, +0x6c, 0x00, 0x1c, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x4d, 0x02, 0x6c, 0x00, 0x4e, 0x02, 0x14, 0x01, 0x02, 0x00, +0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02, 0x55, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0x56, 0x02, 0x6c, 0x00, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x5b, 0x02, +0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x6c, 0x00, 0x66, 0x09, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, +0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, +0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, +0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, +0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, +0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, +0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, +0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, +0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, +0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, +0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, +0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x21, 0x02, 0x24, 0x02, 0x23, 0x02, 0x22, 0x02, 0x69, 0x00, +0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x28, 0x01, +0x29, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x6c, 0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, +0x69, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x1e, 0x14, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, +0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, +0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0xdd, 0x00, 0x02, 0x00, +0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x5c, 0x02, 0x15, 0x00, 0x02, 0x00, +0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, +0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, +0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, +0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, +0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, +0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, +0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, +0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, +0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x2e, 0x02, 0xe6, 0x00, 0x2f, 0x02, 0x30, 0x02, 0x63, 0x00, 0xe9, 0x00, +0xea, 0x00, 0x64, 0x00, 0x21, 0x02, 0x24, 0x02, 0x23, 0x02, 0x22, 0x02, 0xeb, 0x00, 0x02, 0x00, 0xec, 0x00, 0x02, 0x00, +0x5d, 0x02, 0x5e, 0x02, 0x5f, 0x02, 0x60, 0x02, 0x61, 0x02, 0xf2, 0x00, 0x6c, 0x00, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, +0xf6, 0x00, 0xf7, 0x00, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x02, 0x00, 0x68, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, +0xff, 0x00, 0x6c, 0x00, 0x6c, 0x02, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x4e, 0x01, 0x02, 0x01, 0x02, 0x00, 0x3d, 0x01, 0x6d, 0x02, 0x6e, 0x02, +0x4d, 0x01, 0x6f, 0x02, 0x70, 0x02, 0x71, 0x02, 0x02, 0x00, 0x72, 0x02, 0x02, 0x00, 0x73, 0x02, 0x74, 0x02, 0x75, 0x02, +0x76, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x77, 0x02, 0x78, 0x02, 0x6c, 0x00, 0x6c, 0x00, 0x56, 0x01, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0x79, 0x02, 0x6c, 0x00, 0x7a, 0x02, 0x14, 0x01, 0x02, 0x00, 0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, +0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x82, 0x02, 0x6c, 0x00, 0x83, 0x02, +0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x6c, 0x00, 0xd6, 0x0b, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, +0x7c, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x05, 0x00, 0x5b, 0x01, +0x5c, 0x01, 0x5d, 0x01, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, +0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, +0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, +0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, +0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, +0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, +0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, +0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xcf, 0x00, 0x02, 0x00, +0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0x84, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x85, 0x02, 0xd5, 0x00, 0x86, 0x02, 0x02, 0x00, +0x87, 0x02, 0x62, 0x01, 0x02, 0x00, 0x63, 0x01, 0x6c, 0x00, 0x88, 0x02, 0x89, 0x02, 0x66, 0x01, 0x02, 0x00, 0x67, 0x01, +0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x68, 0x01, 0x6c, 0x00, 0x8a, 0x02, 0x6c, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x8b, 0x02, +0x8c, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x72, 0x01, 0x6c, 0x00, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x02, 0x00, +0x8d, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x7b, 0x01, 0x6c, 0x00, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, +0x80, 0x01, 0x63, 0x01, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x81, 0x01, 0xd7, 0x00, 0x02, 0x00, 0x8e, 0x02, 0x83, 0x01, +0x84, 0x01, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x85, 0x01, 0x6c, 0x00, 0x86, 0x01, 0x87, 0x01, 0x8f, 0x02, 0x89, 0x01, +0x8a, 0x01, 0x6c, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x06, 0x00, 0x02, 0x00, +0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x11, 0x00, 0x92, 0x01, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x90, 0x02, 0x91, 0x02, 0x69, 0x00, +0x02, 0x00, 0x95, 0x01, 0x96, 0x01, 0x6c, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, +0xd5, 0x00, 0x69, 0x00, 0x02, 0x00, 0x97, 0x01, 0x6c, 0x00, 0x82, 0x0c, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x1f, 0x02, +0x20, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, +0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, +0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x02, 0x00, +0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, +0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, +0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, +0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, +0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, +0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, +0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, +0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0x21, 0x02, 0x63, 0x00, +0x64, 0x00, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, +0x98, 0x02, 0x99, 0x02, 0x9a, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0x9f, 0x02, 0xa0, 0x02, 0xa1, 0x02, +0xa2, 0x02, 0xa3, 0x02, 0xa4, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0x6c, 0x00, 0x4a, 0x17, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, +0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, +0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, +0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, +0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, 0xa7, 0x02, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, +0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, +0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, +0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, +0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, +0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, +0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, +0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, +0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, +0x02, 0x00, 0x2e, 0x02, 0xe6, 0x00, 0x2f, 0x02, 0x30, 0x02, 0x21, 0x02, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, +0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0xeb, 0x00, 0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0xa8, 0x02, 0xa9, 0x02, 0xaa, 0x02, +0xab, 0x02, 0xac, 0x02, 0xf2, 0x00, 0x6c, 0x00, 0xad, 0x02, 0xae, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x02, +0xb3, 0x02, 0xb4, 0x02, 0x02, 0x00, 0xb5, 0x02, 0xb6, 0x02, 0xb7, 0x02, 0xb8, 0x02, 0xff, 0x00, 0x6c, 0x00, 0xb9, 0x02, +0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, +0x6c, 0x00, 0xba, 0x02, 0xbb, 0x02, 0xbc, 0x02, 0x02, 0x00, 0xbd, 0x02, 0xbe, 0x02, 0xbf, 0x02, 0xc0, 0x02, 0xc1, 0x02, +0xc2, 0x02, 0xc3, 0x02, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x00, 0xc5, 0x02, 0xc6, 0x02, 0xc7, 0x02, 0xc8, 0x02, 0x6c, 0x00, +0x6d, 0x00, 0x02, 0x00, 0xc9, 0x02, 0xca, 0x02, 0x6c, 0x00, 0x6c, 0x00, 0xcb, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, +0xcc, 0x02, 0x6c, 0x00, 0xcd, 0x02, 0xce, 0x02, 0x02, 0x00, 0xcf, 0x02, 0xd0, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0xd3, 0x02, +0xd4, 0x02, 0xd5, 0x02, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0xd6, 0x02, 0x6c, 0x00, 0xd7, 0x02, 0xd8, 0x02, 0xd9, 0x02, +0xda, 0x02, 0xdb, 0x02, 0xdc, 0x02, 0xdd, 0x02, 0xde, 0x02, 0xdf, 0x02, 0xe0, 0x02, 0xe1, 0x02, 0xe2, 0x02, 0xe3, 0x02, +0xe4, 0x02, 0xe5, 0x02, 0xe6, 0x02, 0xe7, 0x02, 0xe8, 0x02, 0xe9, 0x02, 0xea, 0x02, 0x6c, 0x00, 0xbd, 0x0b, 0x00, 0x00, +0x8c, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, +0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, +0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, 0x9b, 0x01, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, +0x14, 0x00, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, +0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, +0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, +0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, +0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, +0x62, 0x00, 0x21, 0x02, 0x63, 0x00, 0x64, 0x00, 0x24, 0x02, 0x23, 0x02, 0x22, 0x02, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, +0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x92, 0x02, 0xeb, 0x02, 0xec, 0x02, +0xed, 0x02, 0xee, 0x02, 0xef, 0x02, 0xf0, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0xf3, 0x02, 0xf4, 0x02, 0xf5, 0x02, 0xf6, 0x02, +0xa6, 0x02, 0x6c, 0x00, 0x85, 0x16, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x20, 0x02, 0x01, 0x00, 0x02, 0x00, +0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, +0x0c, 0x00, 0x0d, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x99, 0x01, 0x9a, 0x01, 0x10, 0x00, +0x9b, 0x01, 0xdd, 0x00, 0x02, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x05, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x14, 0x00, +0xf7, 0x02, 0x15, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, +0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, +0x26, 0x00, 0x27, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x9c, 0x00, +0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, +0x3a, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x3e, 0x00, 0xac, 0x00, 0xad, 0x00, 0x41, 0x00, 0xaf, 0x00, 0xb0, 0x00, +0x44, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x49, 0x00, 0x4a, 0x00, 0xb8, 0x00, 0x4c, 0x00, 0x4d, 0x00, +0x4e, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0x51, 0x00, 0xbf, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, +0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0x5c, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, +0x62, 0x00, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0x02, 0x00, 0x2e, 0x02, 0xe6, 0x00, 0x2f, 0x02, +0x30, 0x02, 0x21, 0x02, 0x63, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x64, 0x00, 0x24, 0x02, 0x23, 0x02, 0x22, 0x02, 0xeb, 0x00, +0x02, 0x00, 0xec, 0x00, 0x02, 0x00, 0xf8, 0x02, 0xf9, 0x02, 0xfa, 0x02, 0xfb, 0x02, 0xfc, 0x02, 0xf2, 0x00, 0x6c, 0x00, +0xfd, 0x02, 0xfe, 0x02, 0xff, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x02, 0x00, 0x03, 0x03, +0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0xff, 0x00, 0x6c, 0x00, 0x07, 0x03, 0x6c, 0x00, 0x69, 0x00, 0x02, 0x00, 0x6a, 0x00, +0x02, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0xba, 0x02, 0x08, 0x03, 0xbc, 0x02, +0x02, 0x00, 0x09, 0x03, 0x0a, 0x03, 0x0b, 0x03, 0x0c, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0x0f, 0x03, 0x02, 0x00, 0x10, 0x03, +0x02, 0x00, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, 0x14, 0x03, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x15, 0x03, 0x16, 0x03, +0x6c, 0x00, 0x6c, 0x00, 0x17, 0x03, 0x6c, 0x00, 0x6d, 0x00, 0x02, 0x00, 0x18, 0x03, 0x6c, 0x00, 0x19, 0x03, 0xce, 0x02, +0x02, 0x00, 0x1a, 0x03, 0x1b, 0x03, 0x2c, 0x01, 0x1c, 0x03, 0x1d, 0x03, 0x1e, 0x03, 0x1f, 0x03, 0x6c, 0x00, 0x6d, 0x00, +0x02, 0x00, 0x20, 0x03, 0x6c, 0x00, 0x21, 0x03, 0x22, 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, +0x28, 0x03, 0x29, 0x03, 0x2a, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0xea, 0x02, 0x6c, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, +0x41, 0x4d, 0x08, 0x1e, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xbe, 0x00, 0x00, +0x00, 0x01, 0x00, 0x01, 0xd0, 0x01, 0x00, 0x00, 0x01, 0x08, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x01, 0x10, 0x00, 0xb0, 0x04, +0x00, 0x00, 0x01, 0x10, 0x01, 0xb6, 0x05, 0x00, 0x00, 0x01, 0x18, 0x00, 0xd0, 0x05, 0x00, 0x00, 0x01, 0x20, 0x01, 0xa8, +0x07, 0x00, 0x00, 0x01, 0x30, 0x01, 0x34, 0x09, 0x00, 0x00, 0x01, 0x44, 0x01, 0x98, 0x09, 0x00, 0x00, 0x01, 0x80, 0x00, +0xc2, 0x09, 0x00, 0x00, 0x01, 0x88, 0x00, 0xfe, 0x0a, 0x00, 0x00, 0x01, 0x90, 0x00, 0x0c, 0x0d, 0x00, 0x00, 0x01, 0x98, +0x00, 0x3c, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3e, 0x10, 0x00, 0x00, 0x02, 0x00, 0x01, 0x50, 0x11, 0x00, 0x00, 0x02, +0x08, 0x00, 0x4a, 0x12, 0x00, 0x00, 0x02, 0x10, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0x10, 0x01, 0xb6, 0x05, 0x00, 0x00, +0x02, 0x18, 0x00, 0x2e, 0x14, 0x00, 0x00, 0x02, 0x20, 0x01, 0x06, 0x16, 0x00, 0x00, 0x02, 0x30, 0x01, 0x34, 0x09, 0x00, +0x00, 0x02, 0x44, 0x01, 0x98, 0x09, 0x00, 0x00, 0x02, 0x80, 0x00, 0x8c, 0x17, 0x00, 0x00, 0x02, 0x88, 0x00, 0xc8, 0x18, +0x00, 0x00, 0x02, 0x90, 0x00, 0xd6, 0x1a, 0x00, 0x00, 0x02, 0x98, 0x00, 0x06, 0x1c, 0x00, 0x00, 0x02, 0x0f, 0x00, 0x00, +0x85, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, +0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, +0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, +0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, +0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, +0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, +0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, +0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, +0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, +0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, +0x89, 0x03, 0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x8d, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95, 0x03, 0x96, 0x03, +0x97, 0x03, 0x98, 0x03, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x85, 0x0c, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x2d, 0x03, +0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, +0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, +0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, +0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, +0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, +0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, +0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, +0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x9a, 0x03, 0x02, 0x00, 0x9b, 0x03, 0x9c, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0xa0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x89, 0x03, +0x05, 0x00, 0x2f, 0x03, 0xa1, 0x03, 0x02, 0x00, 0x8f, 0x03, 0xa2, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, 0x03, +0xa7, 0x03, 0xa8, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xab, 0x03, 0xa9, 0x03, 0xac, 0x03, 0x99, 0x03, 0x6c, 0x00, +0x2f, 0x03, 0xb6, 0x20, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, +0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, +0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, +0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, +0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, +0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, +0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, +0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, +0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, +0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, +0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb3, 0x03, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, +0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, +0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, +0x8d, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xbf, 0x03, +0xc0, 0x03, 0xa5, 0x03, 0xc1, 0x03, 0xc2, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0xc6, 0x03, 0xc7, 0x03, 0xc8, 0x03, +0xc9, 0x03, 0xca, 0x03, 0xcb, 0x03, 0xcc, 0x03, 0xcd, 0x03, 0xce, 0x03, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0xd1, 0x03, +0xd2, 0x03, 0xcf, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xd5, 0x03, 0xa9, 0x03, 0xd6, 0x03, +0xd7, 0x03, 0xa5, 0x03, 0xd8, 0x03, 0xd9, 0x03, 0xc8, 0x03, 0xda, 0x03, 0xca, 0x03, 0xdb, 0x03, 0xdc, 0x03, 0xdd, 0x03, +0xde, 0x03, 0xdf, 0x03, 0xe0, 0x03, 0xcf, 0x03, 0xe1, 0x03, 0xe2, 0x03, 0xe3, 0x03, 0xe4, 0x03, 0xe5, 0x03, 0xe6, 0x03, +0xe7, 0x03, 0xe8, 0x03, 0xca, 0x03, 0xe9, 0x03, 0xea, 0x03, 0xeb, 0x03, 0xec, 0x03, 0xed, 0x03, 0xcf, 0x03, 0xee, 0x03, +0xef, 0x03, 0xf0, 0x03, 0xf1, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0xf4, 0x03, 0xf5, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, +0xf6, 0x03, 0xa9, 0x03, 0xf7, 0x03, 0x92, 0x03, 0xf8, 0x03, 0xf9, 0x03, 0xfa, 0x03, 0xfb, 0x03, 0xfc, 0x03, 0xfd, 0x03, +0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x09, 0x0e, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, +0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, +0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, +0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, +0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, +0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, +0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, +0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, +0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, +0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, +0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, +0x02, 0x00, 0x8c, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xfe, 0x03, 0xff, 0x03, +0x00, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, +0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x01, 0x04, 0x02, 0x00, 0x6c, 0x00, 0x2f, 0x03, 0xbd, 0x1f, 0x00, 0x00, 0xe8, 0x00, +0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, +0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, +0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, +0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, +0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, +0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, +0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, +0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, +0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, +0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, +0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x02, 0x04, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, +0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, +0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xbe, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x03, 0x04, 0xc0, 0x03, 0xa5, 0x03, 0x04, 0x04, 0x05, 0x04, 0x06, 0x04, +0x07, 0x04, 0x08, 0x04, 0x09, 0x04, 0x0a, 0x04, 0xc8, 0x03, 0x0b, 0x04, 0xca, 0x03, 0x0c, 0x04, 0x0d, 0x04, 0x0e, 0x04, +0x0f, 0x04, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0x10, 0x04, 0x11, 0x04, 0xcf, 0x03, 0xd3, 0x03, 0x12, 0x04, 0xa9, 0x03, +0xaa, 0x03, 0xa5, 0x03, 0x13, 0x04, 0xa9, 0x03, 0x14, 0x04, 0xd7, 0x03, 0xa5, 0x03, 0x15, 0x04, 0xd9, 0x03, 0xc8, 0x03, +0xda, 0x03, 0xca, 0x03, 0x16, 0x04, 0x17, 0x04, 0x18, 0x04, 0x19, 0x04, 0x1a, 0x04, 0xe0, 0x03, 0xcf, 0x03, 0x1b, 0x04, +0x1c, 0x04, 0x1d, 0x04, 0x1e, 0x04, 0x1f, 0x04, 0x20, 0x04, 0x21, 0x04, 0x22, 0x04, 0xca, 0x03, 0x23, 0x04, 0x24, 0x04, +0x25, 0x04, 0x26, 0x04, 0xed, 0x03, 0xcf, 0x03, 0x27, 0x04, 0xef, 0x03, 0xf0, 0x03, 0x28, 0x04, 0x29, 0x04, 0x2a, 0x04, +0x2b, 0x04, 0x2c, 0x04, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x2d, 0x04, 0xa9, 0x03, 0x2e, 0x04, 0x2f, 0x04, 0x30, 0x04, +0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x0b, 0x19, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, +0x30, 0x03, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, +0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, +0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, +0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, +0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, +0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, +0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, +0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x9a, 0x03, +0x02, 0x00, 0x9b, 0x03, 0x9c, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x31, 0x04, 0x32, 0x04, 0x33, 0x04, 0x34, 0x04, 0x35, 0x04, +0x36, 0x04, 0x37, 0x04, 0x38, 0x04, 0x39, 0x04, 0x3a, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x04, 0x3e, 0x04, 0x3f, 0x04, +0x05, 0x00, 0x2f, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0xa0, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x86, 0x03, 0x89, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x40, 0x04, 0x02, 0x00, +0x8f, 0x03, 0x41, 0x04, 0x42, 0x04, 0xa4, 0x03, 0xa5, 0x03, 0x43, 0x04, 0x44, 0x04, 0x45, 0x04, 0xa9, 0x03, 0xaa, 0x03, +0xa5, 0x03, 0x46, 0x04, 0xa9, 0x03, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, 0x04, 0xa5, 0x03, 0x4b, 0x04, 0x4c, 0x04, +0xc8, 0x03, 0x4d, 0x04, 0xef, 0x03, 0xd3, 0x03, 0x4e, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, 0x04, 0xc8, 0x03, 0x52, 0x04, +0xd3, 0x03, 0x53, 0x04, 0xc8, 0x03, 0x54, 0x04, 0xd3, 0x03, 0x55, 0x04, 0x56, 0x04, 0x57, 0x04, 0x58, 0x04, 0x59, 0x04, +0xc8, 0x03, 0x5a, 0x04, 0x5b, 0x04, 0xd3, 0x03, 0x53, 0x04, 0xc8, 0x03, 0x5c, 0x04, 0xd3, 0x03, 0x5d, 0x04, 0x5e, 0x04, +0x5f, 0x04, 0xc8, 0x03, 0x60, 0x04, 0xd3, 0x03, 0x53, 0x04, 0xc8, 0x03, 0x61, 0x04, 0xd3, 0x03, 0x62, 0x04, 0x63, 0x04, +0x64, 0x04, 0x65, 0x04, 0x66, 0x04, 0x67, 0x04, 0x68, 0x04, 0x69, 0x04, 0x6a, 0x04, 0x6b, 0x04, 0x99, 0x03, 0x6c, 0x00, +0x2f, 0x03, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, +0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x6c, 0x04, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x6d, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, +0x87, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x6e, 0x04, 0x02, 0x00, 0x8f, 0x03, 0x6f, 0x04, 0x70, 0x04, 0x99, 0x03, 0x6c, 0x00, +0x2f, 0x03, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, +0x85, 0x03, 0x02, 0x00, 0xa0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x71, 0x04, 0x02, 0x00, 0x8f, 0x03, 0x72, 0x04, 0x99, 0x03, +0x6c, 0x00, 0x2f, 0x03, 0xf3, 0x12, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, +0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, +0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, +0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, +0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, +0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, +0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, +0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, +0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, +0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x8d, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x78, 0x04, 0x79, 0x04, 0x92, 0x03, 0x7a, 0x04, 0x7b, 0x04, 0x7c, 0x04, +0x7d, 0x04, 0x7e, 0x04, 0x7f, 0x04, 0x80, 0x04, 0x81, 0x04, 0x82, 0x04, 0x83, 0x04, 0x84, 0x04, 0x85, 0x04, 0x86, 0x04, +0x87, 0x04, 0x88, 0x04, 0x89, 0x04, 0x8a, 0x04, 0x8b, 0x04, 0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, +0x38, 0x24, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, +0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, +0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, +0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, +0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, +0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, +0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, +0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, +0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8e, 0x04, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, +0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, +0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x8d, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xbe, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x8f, 0x04, 0x90, 0x04, 0x91, 0x04, 0xa5, 0x03, 0x92, 0x04, 0x93, 0x04, +0x94, 0x04, 0x95, 0x04, 0x96, 0x04, 0x97, 0x04, 0x98, 0x04, 0xc8, 0x03, 0x99, 0x04, 0xca, 0x03, 0x9a, 0x04, 0x9b, 0x04, +0x9c, 0x04, 0x9d, 0x04, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0x9e, 0x04, 0x9f, 0x04, 0xcf, 0x03, 0xd3, 0x03, 0xa0, 0x04, +0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xa1, 0x04, 0xa9, 0x03, 0xa2, 0x04, 0xa3, 0x04, 0xa5, 0x03, 0xa4, 0x04, 0xd9, 0x03, +0xc8, 0x03, 0xda, 0x03, 0xca, 0x03, 0xa5, 0x04, 0xa6, 0x04, 0xa7, 0x04, 0xa8, 0x04, 0xa9, 0x04, 0xe0, 0x03, 0xcf, 0x03, +0xaa, 0x04, 0xab, 0x04, 0xac, 0x04, 0xad, 0x04, 0xae, 0x04, 0xaf, 0x04, 0xb0, 0x04, 0xb1, 0x04, 0xca, 0x03, 0xb2, 0x04, +0xb3, 0x04, 0xb4, 0x04, 0xb5, 0x04, 0xed, 0x03, 0xcf, 0x03, 0xb6, 0x04, 0xef, 0x03, 0xf0, 0x03, 0xb7, 0x04, 0xb8, 0x04, +0xb9, 0x04, 0xba, 0x04, 0xbb, 0x04, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xbc, 0x04, 0xa9, 0x03, 0xbd, 0x04, 0x92, 0x03, +0xbe, 0x04, 0xbf, 0x04, 0xc0, 0x04, 0xc1, 0x04, 0xc2, 0x04, 0xc3, 0x04, 0xc4, 0x04, 0xc5, 0x04, 0xc6, 0x04, 0xc7, 0x04, +0xc8, 0x04, 0xc9, 0x04, 0xca, 0x04, 0xcb, 0x04, 0xcc, 0x04, 0xcd, 0x04, 0xce, 0x04, 0xcf, 0x04, 0x8c, 0x04, 0x8d, 0x04, +0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0xdf, 0x11, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, +0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, +0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, +0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, +0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, +0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, +0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, +0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, +0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, +0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, +0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, +0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, +0x75, 0x04, 0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xd0, 0x04, 0xd1, 0x04, 0xd2, 0x04, 0xd3, 0x04, 0xd4, 0x04, 0xd5, 0x04, +0xd6, 0x04, 0xd7, 0x04, 0xd8, 0x04, 0xd9, 0x04, 0xda, 0x04, 0xdb, 0x04, 0xdc, 0x04, 0xdd, 0x04, 0xde, 0x04, 0xdf, 0x04, +0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x3f, 0x23, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0x03, +0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, +0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, +0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, +0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, +0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, +0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, +0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, +0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, +0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, +0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, +0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xe0, 0x04, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, +0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, +0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xe1, 0x04, 0xe2, 0x04, +0xe3, 0x04, 0xa5, 0x03, 0xe4, 0x04, 0xe5, 0x04, 0xe6, 0x04, 0xe7, 0x04, 0xe8, 0x04, 0xe9, 0x04, 0xea, 0x04, 0xc8, 0x03, +0xeb, 0x04, 0xca, 0x03, 0xec, 0x04, 0xed, 0x04, 0xee, 0x04, 0xef, 0x04, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0xf0, 0x04, +0xf1, 0x04, 0xcf, 0x03, 0xd3, 0x03, 0xf2, 0x04, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xf3, 0x04, 0xa9, 0x03, 0xf4, 0x04, +0xf5, 0x04, 0xa5, 0x03, 0xf6, 0x04, 0xd9, 0x03, 0xc8, 0x03, 0xda, 0x03, 0xca, 0x03, 0xf7, 0x04, 0xf8, 0x04, 0xf9, 0x04, +0xfa, 0x04, 0xfb, 0x04, 0xe0, 0x03, 0xcf, 0x03, 0xfc, 0x04, 0xfd, 0x04, 0xfe, 0x04, 0xff, 0x04, 0x00, 0x05, 0x01, 0x05, +0x02, 0x05, 0x03, 0x05, 0xca, 0x03, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0xed, 0x03, 0xcf, 0x03, 0x08, 0x05, +0xef, 0x03, 0xf0, 0x03, 0x09, 0x05, 0x0a, 0x05, 0x0b, 0x05, 0x0c, 0x05, 0x0d, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, +0x0e, 0x05, 0xa9, 0x03, 0x0f, 0x05, 0x10, 0x05, 0x11, 0x05, 0x12, 0x05, 0x13, 0x05, 0x14, 0x05, 0x15, 0x05, 0x16, 0x05, +0x17, 0x05, 0x18, 0x05, 0x19, 0x05, 0x1a, 0x05, 0x1b, 0x05, 0x1c, 0x05, 0x1d, 0x05, 0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, +0x6c, 0x00, 0x2f, 0x03, 0x02, 0x0f, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, +0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, +0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, +0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, +0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, +0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, +0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, +0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, +0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, +0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, +0x8c, 0x03, 0x8d, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x1e, 0x05, 0x92, 0x03, +0x1f, 0x05, 0x20, 0x05, 0x21, 0x05, 0x22, 0x05, 0x97, 0x03, 0x98, 0x03, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x55, 0x0c, +0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, +0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, +0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, +0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, +0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, +0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, +0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, +0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, +0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x9a, 0x03, 0x02, 0x00, 0x9b, 0x03, 0x9c, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0xa0, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x89, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xa1, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x23, 0x05, +0xa4, 0x03, 0xa5, 0x03, 0x24, 0x05, 0x25, 0x05, 0x26, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x27, 0x05, 0xa9, 0x03, +0x28, 0x05, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0xb6, 0x20, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, +0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, +0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, +0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, +0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, +0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, +0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, +0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, +0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, +0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, +0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, +0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x29, 0x05, 0x2f, 0x03, 0xb4, 0x03, +0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x8d, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, 0x02, 0x00, +0x8f, 0x03, 0x90, 0x03, 0x2a, 0x05, 0xc0, 0x03, 0xa5, 0x03, 0x2b, 0x05, 0x2c, 0x05, 0x2d, 0x05, 0xd5, 0x03, 0x2e, 0x05, +0x2f, 0x05, 0x30, 0x05, 0xc8, 0x03, 0x31, 0x05, 0xca, 0x03, 0x32, 0x05, 0x33, 0x05, 0x34, 0x05, 0x35, 0x05, 0xcf, 0x03, +0xd0, 0x03, 0xca, 0x03, 0x36, 0x05, 0x37, 0x05, 0xcf, 0x03, 0xd3, 0x03, 0x38, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, +0x39, 0x05, 0xa9, 0x03, 0x3a, 0x05, 0xd7, 0x03, 0xa5, 0x03, 0x3b, 0x05, 0xd9, 0x03, 0xc8, 0x03, 0xda, 0x03, 0xca, 0x03, +0x3c, 0x05, 0x3d, 0x05, 0x3e, 0x05, 0x3f, 0x05, 0x40, 0x05, 0xe0, 0x03, 0xcf, 0x03, 0x41, 0x05, 0x42, 0x05, 0x43, 0x05, +0x44, 0x05, 0x45, 0x05, 0x46, 0x05, 0x47, 0x05, 0x48, 0x05, 0xca, 0x03, 0x49, 0x05, 0x4a, 0x05, 0x4b, 0x05, 0x4c, 0x05, +0xed, 0x03, 0xcf, 0x03, 0x4d, 0x05, 0xef, 0x03, 0xf0, 0x03, 0x08, 0x04, 0x4e, 0x05, 0x4f, 0x05, 0x50, 0x05, 0x51, 0x05, +0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x52, 0x05, 0xa9, 0x03, 0x53, 0x05, 0x92, 0x03, 0x54, 0x05, 0x55, 0x05, 0x56, 0x05, +0x57, 0x05, 0xfc, 0x03, 0xfd, 0x03, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0xbd, 0x1f, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, +0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, +0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, +0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, +0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, +0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, +0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, +0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, +0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, +0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, +0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, +0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xaf, 0x03, +0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x58, 0x05, +0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, 0xba, 0x03, +0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, +0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, +0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x59, 0x05, 0xc0, 0x03, 0xa5, 0x03, 0x5a, 0x05, 0x5b, 0x05, 0x5c, 0x05, 0x13, 0x04, +0x5d, 0x05, 0x5e, 0x05, 0x5f, 0x05, 0xc8, 0x03, 0x60, 0x05, 0xca, 0x03, 0x61, 0x05, 0x62, 0x05, 0x63, 0x05, 0x64, 0x05, +0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0x65, 0x05, 0x66, 0x05, 0xcf, 0x03, 0xd3, 0x03, 0x67, 0x05, 0xa9, 0x03, 0xaa, 0x03, +0xa5, 0x03, 0x68, 0x05, 0xa9, 0x03, 0x69, 0x05, 0xd7, 0x03, 0xa5, 0x03, 0x6a, 0x05, 0xd9, 0x03, 0xc8, 0x03, 0xda, 0x03, +0xca, 0x03, 0x6b, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0x6e, 0x05, 0x6f, 0x05, 0xe0, 0x03, 0xcf, 0x03, 0x70, 0x05, 0x71, 0x05, +0x72, 0x05, 0x73, 0x05, 0x74, 0x05, 0x75, 0x05, 0x76, 0x05, 0x77, 0x05, 0xca, 0x03, 0x78, 0x05, 0x79, 0x05, 0x7a, 0x05, +0x7b, 0x05, 0xed, 0x03, 0xcf, 0x03, 0x7c, 0x05, 0xef, 0x03, 0xf0, 0x03, 0x7d, 0x05, 0x7e, 0x05, 0x7f, 0x05, 0x80, 0x05, +0x81, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x82, 0x05, 0xa9, 0x03, 0x83, 0x05, 0x2f, 0x04, 0x30, 0x04, 0x99, 0x03, +0x6c, 0x00, 0x2f, 0x03, 0x7a, 0x18, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, +0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, +0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, +0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, +0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, +0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, +0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, +0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, +0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x9a, 0x03, 0x02, 0x00, +0x9b, 0x03, 0x9c, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x31, 0x04, 0x32, 0x04, 0x33, 0x04, 0x34, 0x04, 0x35, 0x04, 0x36, 0x04, +0x37, 0x04, 0x38, 0x04, 0x39, 0x04, 0x3a, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x04, 0x3e, 0x04, 0x3f, 0x04, 0x05, 0x00, +0x2f, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0xa0, 0x03, 0x05, 0x00, +0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x86, 0x03, 0x89, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x40, 0x04, 0x02, 0x00, 0x8f, 0x03, +0x84, 0x05, 0xa4, 0x03, 0xa5, 0x03, 0x85, 0x05, 0x86, 0x05, 0x87, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x88, 0x05, +0xa9, 0x03, 0x89, 0x05, 0x48, 0x04, 0x8a, 0x05, 0x8b, 0x05, 0x4a, 0x04, 0xa5, 0x03, 0x4b, 0x04, 0x4c, 0x04, 0xc8, 0x03, +0x8c, 0x05, 0xef, 0x03, 0xd3, 0x03, 0x4e, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x51, 0x04, 0xc8, 0x03, 0x52, 0x04, 0xd3, 0x03, +0x53, 0x04, 0xc8, 0x03, 0x54, 0x04, 0xd3, 0x03, 0x8d, 0x05, 0x8e, 0x05, 0x59, 0x04, 0xc8, 0x03, 0x8f, 0x05, 0x90, 0x05, +0xd3, 0x03, 0x53, 0x04, 0xc8, 0x03, 0x91, 0x05, 0xd3, 0x03, 0x92, 0x05, 0x93, 0x05, 0x5f, 0x04, 0xc8, 0x03, 0x94, 0x05, +0xd3, 0x03, 0x53, 0x04, 0xc8, 0x03, 0x61, 0x04, 0xd3, 0x03, 0x95, 0x05, 0x96, 0x05, 0x65, 0x04, 0x66, 0x04, 0x67, 0x04, +0x68, 0x04, 0x69, 0x04, 0x6a, 0x04, 0x97, 0x05, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0xfe, 0x12, 0x00, 0x00, 0x9a, 0x00, +0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, +0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, +0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, +0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, +0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, +0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, +0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, +0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, +0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, +0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, +0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, +0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, +0x02, 0x00, 0x8c, 0x03, 0x8d, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x98, 0x05, +0x99, 0x05, 0x92, 0x03, 0x9a, 0x05, 0x9b, 0x05, 0x9c, 0x05, 0x9d, 0x05, 0x9e, 0x05, 0x9f, 0x05, 0xa0, 0x05, 0xa1, 0x05, +0xa2, 0x05, 0xa3, 0x05, 0xa4, 0x05, 0xa5, 0x05, 0xa6, 0x05, 0xa7, 0x05, 0xa8, 0x05, 0xa9, 0x05, 0xaa, 0x05, 0xab, 0x05, +0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x98, 0x24, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2d, 0x03, +0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, +0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, +0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, +0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, +0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, +0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, +0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, +0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, +0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, +0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, +0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xac, 0x05, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, +0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, +0x8d, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xad, 0x05, +0xae, 0x05, 0xaf, 0x05, 0xa5, 0x03, 0xb0, 0x05, 0xb1, 0x05, 0xb2, 0x05, 0xb3, 0x05, 0xb4, 0x05, 0xb5, 0x05, 0xb6, 0x05, +0xc8, 0x03, 0xb7, 0x05, 0xca, 0x03, 0xb8, 0x05, 0xb9, 0x05, 0xba, 0x05, 0xbb, 0x05, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, +0xbc, 0x05, 0xbd, 0x05, 0xcf, 0x03, 0xd3, 0x03, 0xbe, 0x05, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0xbf, 0x05, 0xa9, 0x03, +0xc0, 0x05, 0xc1, 0x05, 0xa5, 0x03, 0xc2, 0x05, 0xd9, 0x03, 0xc8, 0x03, 0xda, 0x03, 0xca, 0x03, 0xc3, 0x05, 0xc4, 0x05, +0xc5, 0x05, 0xc6, 0x05, 0xc7, 0x05, 0xe0, 0x03, 0xcf, 0x03, 0xc8, 0x05, 0xc9, 0x05, 0xca, 0x05, 0xcb, 0x05, 0xcc, 0x05, +0xcd, 0x05, 0xce, 0x05, 0xcf, 0x05, 0xca, 0x03, 0xd0, 0x05, 0xd1, 0x05, 0xd2, 0x05, 0xd3, 0x05, 0xed, 0x03, 0xcf, 0x03, +0xd4, 0x05, 0xef, 0x03, 0xf0, 0x03, 0xd5, 0x05, 0xd6, 0x05, 0xd7, 0x05, 0xd8, 0x05, 0xd9, 0x05, 0xa9, 0x03, 0xaa, 0x03, +0xa5, 0x03, 0xda, 0x05, 0xa9, 0x03, 0xdb, 0x05, 0x92, 0x03, 0xdc, 0x05, 0xdd, 0x05, 0xde, 0x05, 0xdf, 0x05, 0xe0, 0x05, +0xe1, 0x05, 0xe2, 0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe6, 0x05, 0xe7, 0x05, 0xe8, 0x05, 0xe9, 0x05, 0xea, 0x05, +0xeb, 0x05, 0xec, 0x05, 0xed, 0x05, 0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, 0x05, 0x12, 0x00, 0x00, +0x94, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, 0x02, 0x00, 0x31, 0x03, +0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x0e, 0x00, 0x0f, 0x00, +0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x73, 0x04, 0x74, 0x04, +0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x41, 0x03, 0x42, 0x03, +0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x4b, 0x03, 0x4c, 0x03, +0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, 0x55, 0x03, 0x56, 0x03, +0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x60, 0x03, +0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, 0x69, 0x03, 0x6a, 0x03, +0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, 0x73, 0x03, 0x74, 0x03, +0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x7e, 0x03, +0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x85, 0x03, 0x02, 0x00, +0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, 0x05, 0x00, 0x2f, 0x03, +0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0x05, 0x00, 0x2f, 0x03, 0x8e, 0x03, 0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0x98, 0x05, +0xee, 0x05, 0xef, 0x05, 0xf0, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0xf3, 0x05, 0xf4, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf7, 0x05, +0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, 0x05, 0xab, 0x05, 0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, +0x9a, 0x23, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x2f, 0x03, 0x06, 0x00, +0x02, 0x00, 0x31, 0x03, 0x32, 0x03, 0x33, 0x03, 0x34, 0x03, 0x35, 0x03, 0x36, 0x03, 0x37, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x38, 0x03, 0x2f, 0x03, 0x39, 0x03, 0x02, 0x00, 0x3a, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x73, 0x04, 0x74, 0x04, 0x2f, 0x03, 0x3b, 0x03, 0x02, 0x00, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x3f, 0x03, 0x40, 0x03, +0x41, 0x03, 0x42, 0x03, 0x43, 0x03, 0x44, 0x03, 0x45, 0x03, 0x46, 0x03, 0x47, 0x03, 0x48, 0x03, 0x49, 0x03, 0x4a, 0x03, +0x4b, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x51, 0x03, 0x52, 0x03, 0x53, 0x03, 0x54, 0x03, +0x55, 0x03, 0x56, 0x03, 0x57, 0x03, 0x58, 0x03, 0x59, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x5e, 0x03, +0x5f, 0x03, 0x60, 0x03, 0x61, 0x03, 0x62, 0x03, 0x63, 0x03, 0x64, 0x03, 0x65, 0x03, 0x66, 0x03, 0x67, 0x03, 0x68, 0x03, +0x69, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x71, 0x03, 0x72, 0x03, +0x73, 0x03, 0x74, 0x03, 0x75, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7c, 0x03, +0x7d, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x81, 0x03, 0x82, 0x03, 0x83, 0x03, 0x84, 0x03, 0x05, 0x00, 0x2f, 0x03, +0xdd, 0x00, 0x02, 0x00, 0xad, 0x03, 0xae, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xaf, 0x03, 0x02, 0x00, 0xb0, 0x03, 0x05, 0x00, +0x2f, 0x03, 0xb1, 0x03, 0x02, 0x00, 0xb2, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xfc, 0x05, 0x2f, 0x03, 0xb4, 0x03, 0xb5, 0x03, +0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xb9, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x05, 0x00, 0x2f, 0x03, +0x85, 0x03, 0x02, 0x00, 0x86, 0x03, 0x87, 0x03, 0x88, 0x03, 0x89, 0x03, 0x8a, 0x03, 0x75, 0x04, 0x76, 0x04, 0x77, 0x04, +0x05, 0x00, 0x2f, 0x03, 0x8b, 0x03, 0x02, 0x00, 0x8c, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0x05, 0x00, 0x2f, 0x03, 0xbe, 0x03, +0x02, 0x00, 0x8f, 0x03, 0x90, 0x03, 0xad, 0x05, 0xfd, 0x05, 0xaf, 0x05, 0xa5, 0x03, 0xfe, 0x05, 0xff, 0x05, 0x00, 0x06, +0x01, 0x06, 0x02, 0x06, 0x03, 0x06, 0x04, 0x06, 0xc8, 0x03, 0x05, 0x06, 0xca, 0x03, 0x06, 0x06, 0x07, 0x06, 0x08, 0x06, +0x09, 0x06, 0xcf, 0x03, 0xd0, 0x03, 0xca, 0x03, 0x0a, 0x06, 0x0b, 0x06, 0xcf, 0x03, 0xd3, 0x03, 0x0c, 0x06, 0xa9, 0x03, +0xaa, 0x03, 0xa5, 0x03, 0x0d, 0x06, 0xa9, 0x03, 0x0e, 0x06, 0xc1, 0x05, 0xa5, 0x03, 0x0f, 0x06, 0xd9, 0x03, 0xc8, 0x03, +0xda, 0x03, 0xca, 0x03, 0x10, 0x06, 0x11, 0x06, 0x12, 0x06, 0x13, 0x06, 0x14, 0x06, 0xe0, 0x03, 0xcf, 0x03, 0x15, 0x06, +0x16, 0x06, 0x17, 0x06, 0x18, 0x06, 0x19, 0x06, 0x1a, 0x06, 0x1b, 0x06, 0x1c, 0x06, 0xca, 0x03, 0x1d, 0x06, 0x1e, 0x06, +0x1f, 0x06, 0x20, 0x06, 0xed, 0x03, 0xcf, 0x03, 0x21, 0x06, 0xef, 0x03, 0xf0, 0x03, 0x22, 0x06, 0x23, 0x06, 0x24, 0x06, +0x25, 0x06, 0x26, 0x06, 0xa9, 0x03, 0xaa, 0x03, 0xa5, 0x03, 0x27, 0x06, 0xa9, 0x03, 0x28, 0x06, 0x29, 0x06, 0x2a, 0x06, +0x2b, 0x06, 0x2c, 0x06, 0x2d, 0x06, 0x2e, 0x06, 0x2f, 0x06, 0x30, 0x06, 0x31, 0x06, 0x32, 0x06, 0x33, 0x06, 0x34, 0x06, +0x35, 0x06, 0xed, 0x05, 0x8c, 0x04, 0x8d, 0x04, 0x99, 0x03, 0x6c, 0x00, 0x2f, 0x03, + +}; + +int UNLIT_UNLIT_OFFSET = 0; +int UNLIT_UNLIT_SIZE = 101394; diff --git a/thermion_dart/native/include/material/unlit.h b/thermion_dart/native/include/material/unlit.h new file mode 100644 index 00000000..04e7a082 --- /dev/null +++ b/thermion_dart/native/include/material/unlit.h @@ -0,0 +1,13 @@ +#ifndef UNLIT_H_ +#define UNLIT_H_ + +#include + +extern "C" { + extern const uint8_t UNLIT_PACKAGE[]; + extern int UNLIT_UNLIT_OFFSET; + extern int UNLIT_UNLIT_SIZE; +} +#define UNLIT_UNLIT_DATA (UNLIT_PACKAGE + UNLIT_UNLIT_OFFSET) + +#endif diff --git a/thermion_dart/native/src/CustomGeometry.cpp b/thermion_dart/native/src/CustomGeometry.cpp new file mode 100644 index 00000000..0736bdaf --- /dev/null +++ b/thermion_dart/native/src/CustomGeometry.cpp @@ -0,0 +1,194 @@ +#include +#include "math.h" +#include +#include +#include +#include +#include +#include +#include + +#include "Log.hpp" +#include "CustomGeometry.hpp" + +namespace thermion_filament { + +using namespace filament; + +CustomGeometry::CustomGeometry( + float* vertices, + uint32_t numVertices, + float* normals, + uint32_t numNormals, + float* uvs, + uint32_t numUvs, + uint16_t* indices, + uint32_t numIndices, + RenderableManager::PrimitiveType primitiveType, + Engine* engine) + : numVertices(numVertices), numIndices(numIndices), _engine(engine) { + this->primitiveType = primitiveType; + this->vertices = new float[numVertices]; + std::memcpy(this->vertices, vertices, numVertices * sizeof(float)); + + if(numNormals > 0) { + Log("numNormals %d", numNormals); + this->normals = new float[numNormals]; + std::memcpy(this->normals, normals, numNormals * sizeof(float)); + } else { + Log("no normals"); + } + + if(numUvs > 0) { + Log("numUvs %d", numUvs); + this->uvs = new float[numUvs]; + std::memcpy(this->uvs, uvs, numUvs * sizeof(float)); + } else { + this->uvs = nullptr; + } + + this->indices = new uint16_t[numIndices]; + std::memcpy(this->indices, indices, numIndices * sizeof(uint16_t)); + + computeBoundingBox(); +} + +IndexBuffer* CustomGeometry::indexBuffer() const { + IndexBuffer::BufferDescriptor::Callback indexCallback = [](void *buf, size_t, + void *data) + { + // free((void *)buf); + }; + + auto indexBuffer = IndexBuffer::Builder() + .indexCount(numIndices) + .bufferType(IndexBuffer::IndexType::USHORT) + .build(*_engine); + + indexBuffer->setBuffer(*_engine, IndexBuffer::BufferDescriptor( + this->indices, indexBuffer->getIndexCount() * sizeof(uint16_t), indexCallback)); + return indexBuffer; +} + +VertexBuffer* CustomGeometry::vertexBuffer() const { + VertexBuffer::BufferDescriptor::Callback vertexCallback = [](void *buf, size_t, + void *data) + { + // free((void *)buf); + }; + + std::vector triangles; + for(int i=0; i < numIndices; i+=3) { + filament::math::ushort3 triangle; + triangle.x = this->indices[i]; + triangle.y = this->indices[i+1]; + triangle.z = this->indices[i+2]; + triangles.push_back(triangle); + } + + // Create a SurfaceOrientation builder + geometry::SurfaceOrientation::Builder builder; + builder.vertexCount(numVertices) + .normals((filament::math::float3*)normals) + .positions((filament::math::float3*)this->vertices) + .triangleCount(triangles.size()) + .triangles(triangles.data()); + + // Build the SurfaceOrientation object + auto orientation = builder.build(); + + // Retrieve the quaternions + auto quats = new std::vector(numVertices); + orientation->getQuats(quats->data(), numVertices); + + // Use provided UVs or create dummy UV data + std::vector* uvData; + if (this->uvs != nullptr) { + uvData = new std::vector((filament::math::float2*)this->uvs, (filament::math::float2*)(this->uvs + numVertices * 2)); + } else { + uvData = new std::vector(numVertices, filament::math::float2{0.0f, 0.0f}); + } + + // Create dummy vertex color data (white color for all vertices) + auto dummyColors = new std::vector(numVertices, filament::math::float4{1.0f, 1.0f, 1.0f, 1.0f}); + + auto vertexBufferBuilder = VertexBuffer::Builder() + .vertexCount(numVertices) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .attribute(VertexAttribute::UV0, 1, VertexBuffer::AttributeType::FLOAT2) + .attribute(VertexAttribute::UV1, 2, VertexBuffer::AttributeType::FLOAT2) + .attribute(VertexAttribute::COLOR, 3, VertexBuffer::AttributeType::FLOAT4); + + if(this->normals) { + vertexBufferBuilder + .bufferCount(5) + .attribute(VertexAttribute::TANGENTS, 4, filament::VertexBuffer::AttributeType::FLOAT4); + } else { + vertexBufferBuilder = vertexBufferBuilder.bufferCount(4); + } + auto vertexBuffer = vertexBufferBuilder + .build(*_engine); + + vertexBuffer->setBufferAt(*_engine, 0, VertexBuffer::BufferDescriptor( + this->vertices, vertexBuffer->getVertexCount() * sizeof(math::float3), vertexCallback)); + + // Set UV0 buffer + vertexBuffer->setBufferAt(*_engine, 1, VertexBuffer::BufferDescriptor( + uvData->data(), uvData->size() * sizeof(math::float2), + [](void* buf, size_t, void* data) { + delete static_cast*>(data); + }, uvData)); + + // Set UV1 buffer (reusing UV0 data) + vertexBuffer->setBufferAt(*_engine, 2, VertexBuffer::BufferDescriptor( + uvData->data(), uvData->size() * sizeof(math::float2), + [](void* buf, size_t, void* data) { + // Do nothing here, as we're reusing the same data as UV0 + }, nullptr)); + + // Set vertex color buffer + vertexBuffer->setBufferAt(*_engine, 3, VertexBuffer::BufferDescriptor( + dummyColors->data(), dummyColors->size() * sizeof(math::float4), + [](void* buf, size_t, void* data) { + delete static_cast*>(data); + }, dummyColors)); + + if(this->normals) { + vertexBuffer->setBufferAt(*_engine, 4, VertexBuffer::BufferDescriptor( + quats->data(), quats->size() * sizeof(math::quatf), [] (void *buf, size_t, + void *data) + { + delete (std::vector*)data; + }, (void*)quats)); + } + return vertexBuffer; +} + +CustomGeometry::~CustomGeometry() { + delete[] vertices; + delete[] indices; + if (normals) delete[] normals; + if (uvs) delete[] uvs; +} + +void CustomGeometry::computeBoundingBox() { + float minX = FLT_MAX, minY = FLT_MAX, minZ = FLT_MAX; + float maxX = -FLT_MAX, maxY = -FLT_MAX, maxZ = -FLT_MAX; + + for (uint32_t i = 0; i < numVertices; i += 3) { + minX = std::min(vertices[i], minX); + minY = std::min(vertices[i + 1], minY); + minZ = std::min(vertices[i + 2], minZ); + maxX = std::max(vertices[i], maxX); + maxY = std::max(vertices[i + 1], maxY); + maxZ = std::max(vertices[i + 2], maxZ); + } + + boundingBox = Box{{minX, minY, minZ}, {maxX, maxY, maxZ}}; +} + +Box CustomGeometry::getBoundingBox() const { + return boundingBox; +} + +} \ No newline at end of file diff --git a/thermion_dart/native/src/FilamentViewer.cpp b/thermion_dart/native/src/FilamentViewer.cpp index 31570388..09ee862e 100644 --- a/thermion_dart/native/src/FilamentViewer.cpp +++ b/thermion_dart/native/src/FilamentViewer.cpp @@ -22,7 +22,7 @@ * limitations under the License. */ #include - +#include #include #include #ifdef __EMSCRIPTEN__ @@ -35,6 +35,7 @@ #endif #include #include +#include #include #include @@ -88,6 +89,7 @@ #include #include #include +#include #include "Log.hpp" @@ -95,7 +97,7 @@ #include "StreamBufferAdapter.hpp" #include "material/image.h" #include "TimeIt.hpp" -#include "ThreadPool.hpp" +#include "UnprojectTexture.hpp" namespace filament { @@ -115,11 +117,7 @@ namespace thermion_filament using std::string; - // const float kAperture = 1.0f; - // const float kShutterSpeed = 1.0f; - // const float kSensitivity = 50.0f; - - static constexpr float4 sFullScreenTriangleVertices[3] = { + static constexpr filament::math::float4 sFullScreenTriangleVertices[3] = { {-1.0f, -1.0f, 1.0f, 1.0f}, {3.0f, -1.0f, 1.0f, 1.0f}, {-1.0f, 3.0f, 1.0f, 1.0f}}; @@ -129,7 +127,7 @@ namespace thermion_filament FilamentViewer::FilamentViewer(const void *sharedContext, const ResourceLoaderWrapperImpl *const resourceLoader, void *const platform, const char *uberArchivePath) : _resourceLoaderWrapper(resourceLoader) { - _context = (void*) sharedContext; + _context = (void *)sharedContext; ASSERT_POSTCONDITION(_resourceLoaderWrapper != nullptr, "Resource loader must be non-null"); #if TARGET_OS_IPHONE @@ -142,18 +140,19 @@ namespace thermion_filament _engine = Engine::create(Engine::Backend::OPENGL, (backend::Platform *)new filament::backend::PlatformWebGL(), (void *)sharedContext, nullptr); #elif defined(_WIN32) Engine::Config config; - config.stereoscopicEyeCount = 1; + config.stereoscopicEyeCount = 1; _engine = Engine::create(Engine::Backend::OPENGL, (backend::Platform *)platform, (void *)sharedContext, &config); #else _engine = Engine::create(Engine::Backend::OPENGL, (backend::Platform *)platform, (void *)sharedContext, nullptr); #endif - Log("Created engine"); _engine->setAutomaticInstancingEnabled(true); _renderer = _engine->createRenderer(); - Log("Created renderer"); + Renderer::ClearOptions clearOptions; + clearOptions.clear = true; + _renderer->setClearOptions(clearOptions); _frameInterval = 1000.0f / 60.0f; @@ -161,15 +160,13 @@ namespace thermion_filament _scene = _engine->createScene(); - Log("Created scene"); - utils::Entity camera = EntityManager::get().create(); _mainCamera = _engine->createCamera(camera); - Log("Created camera"); - _view = _engine->createView(); + _view->setBlendMode(filament::View::BlendMode::TRANSLUCENT); + _view->setStencilBufferEnabled(true); setToneMapping(ToneMapping::ACES); @@ -179,10 +176,10 @@ namespace thermion_filament _view->setAmbientOcclusionOptions({.enabled = false}); _view->setDynamicResolutionOptions({.enabled = false}); - - #if defined(_WIN32) + +#if defined(_WIN32) _view->setStereoscopicOptions({.enabled = true}); - #endif +#endif _view->setDithering(filament::Dithering::NONE); setAntiAliasing(false, false, false); @@ -193,27 +190,18 @@ namespace thermion_filament _view->setScene(_scene); _view->setCamera(_mainCamera); - _cameraFocalLength = 28.0f; - _mainCamera->setLensProjection(_cameraFocalLength, 1.0f, _near, - _far); - // _mainCamera->setExposure(kAperture, kShutterSpeed, kSensitivity); - Log("View created"); const float aperture = _mainCamera->getAperture(); const float shutterSpeed = _mainCamera->getShutterSpeed(); const float sens = _mainCamera->getSensitivity(); - Log("Camera aperture %f shutter %f sensitivity %f", aperture, shutterSpeed, sens); - EntityManager &em = EntityManager::get(); _sceneManager = new SceneManager( + _view, _resourceLoaderWrapper, _engine, _scene, uberArchivePath); - - Log("Created scene maager"); - } void FilamentViewer::setAntiAliasing(bool msaa, bool fxaa, bool taa) @@ -243,22 +231,22 @@ namespace thermion_filament _view->setShadowType(shadowType); } - void FilamentViewer::setSoftShadowOptions(float penumbraScale, float penumbraRatioScale) { + void FilamentViewer::setSoftShadowOptions(float penumbraScale, float penumbraRatioScale) + { SoftShadowOptions opts; opts.penumbraRatioScale = penumbraRatioScale; opts.penumbraScale = penumbraScale; _view->setSoftShadowOptions(opts); } - void FilamentViewer::setBloom(float strength) { - #ifndef __EMSCRIPTEN__ +#ifndef __EMSCRIPTEN__ decltype(_view->getBloomOptions()) opts; opts.enabled = true; opts.strength = strength; _view->setBloomOptions(opts); - #endif +#endif } void FilamentViewer::setToneMapping(ToneMapping toneMapping) @@ -297,61 +285,87 @@ namespace thermion_filament fro.interval = 1; // frameInterval; fro.history = 5; _renderer->setFrameRateOptions(fro); - Log("Set frame interval to %f", frameInterval); } EntityId FilamentViewer::addLight( - LightManager::Type t, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, - float falloffRadius, - float spotLightConeInner, - float spotLightConeOuter, - float sunAngularRadius, - float sunHaloSize, - float sunHaloFallof, - bool shadows) + LightManager::Type t, + float colour, + float intensity, + float posX, + float posY, + float posZ, + float dirX, + float dirY, + float dirZ, + float falloffRadius, + float spotLightConeInner, + float spotLightConeOuter, + float sunAngularRadius, + float sunHaloSize, + float sunHaloFallof, + bool shadows) { auto light = EntityManager::get().create(); - auto &transformManager = _engine->getTransformManager(); - transformManager.create(light); - auto parent = transformManager.getInstance(light); - + auto result = LightManager::Builder(t) - .color(Color::cct(colour)) - .intensity(intensity) - .falloff(falloffRadius) - .spotLightCone(spotLightConeInner, spotLightConeOuter) - .sunAngularRadius(sunAngularRadius) - .sunHaloSize(sunHaloSize) - .sunHaloFalloff(sunHaloFallof) - .position(math::float3(posX, posY, posZ)) - .direction(math::float3(dirX, dirY, dirZ)) - .castShadows(shadows) - .build(*_engine, light); - if(result != LightManager::Builder::Result::Success) { + .color(Color::cct(colour)) + .intensity(intensity) + .falloff(falloffRadius) + .spotLightCone(spotLightConeInner, spotLightConeOuter) + .sunAngularRadius(sunAngularRadius) + .sunHaloSize(sunHaloSize) + .sunHaloFalloff(sunHaloFallof) + .position(filament::math::float3(posX, posY, posZ)) + .direction(filament::math::float3(dirX, dirY, dirZ)) + .castShadows(shadows) + .build(*_engine, light); + if (result != LightManager::Builder::Result::Success) + { Log("ERROR : failed to create light"); - } else { + } + else + { _scene->addEntity(light); _lights.push_back(light); } - auto entityId = Entity::smuggle(light); - auto transformInstance = transformManager.getInstance(light); - transformManager.setTransform(transformInstance, math::mat4::translation(math::float3{posX, posY, posZ})); - // Log("Added light under entity ID %d of type %d with colour %f intensity %f at (%f, %f, %f) with direction (%f, %f, %f) with shadows %d", entityId, t, colour, intensity, posX, posY, posZ, dirX, dirY, dirZ, shadows); - return entityId; + return Entity::smuggle(light); + } + + void FilamentViewer::setLightPosition(EntityId entityId, float x, float y, float z) { + auto light = Entity::import(entityId); + + if(light.isNull()) { + Log("Light not found for entity %d", entityId); + return; + } + + auto& lm = _engine->getLightManager(); + + auto instance = lm.getInstance(light); + + lm.setPosition(instance, filament::math::float3 { x, y, z }); + + } + + void FilamentViewer::setLightDirection(EntityId entityId, float x, float y, float z) { + auto light = Entity::import(entityId); + + if(light.isNull()) { + Log("Light not found for entity %d", entityId); + return; + } + + auto& lm = _engine->getLightManager(); + + auto instance = lm.getInstance(light); + + lm.setDirection(instance, filament::math::float3 { x, y, z }); + } void FilamentViewer::removeLight(EntityId entityId) { - Log("Removing light with entity ID %d", entityId); auto entity = utils::Entity::import(entityId); if (entity.isNull()) { @@ -367,7 +381,6 @@ namespace thermion_filament void FilamentViewer::clearLights() { - Log("Removing all lights"); _scene->removeEntities(_lights.data(), _lights.size()); EntityManager::get().destroy(_lights.size(), _lights.data()); _lights.clear(); @@ -470,8 +483,9 @@ namespace thermion_filament Texture::Type::FLOAT, nullptr, freeCallback, image); _imageTexture->setImage(*_engine, 0, std::move(pbd)); - // we don't need to free the ResourceBuffer in the texture callback because LinearImage takes a copy - // (check if this is correct ? ) + + // don't need to free the ResourceBuffer in the texture callback + // LinearImage takes a copy _resourceLoaderWrapper->free(rb); } @@ -507,23 +521,25 @@ namespace thermion_filament { std::lock_guard lock(_imageMutex); - if(_imageEntity.isNull()) { + if (_imageEntity.isNull()) + { createBackgroundImage(); } _imageMaterial->setDefaultParameter("showImage", 0); - _imageMaterial->setDefaultParameter("backgroundColor", RgbaType::sRGB, float4(r, g, b, a)); + _imageMaterial->setDefaultParameter("backgroundColor", RgbaType::sRGB, filament::math::float4(r, g, b, a)); _imageMaterial->setDefaultParameter("transform", _imageScale); } - void FilamentViewer::createBackgroundImage() { + void FilamentViewer::createBackgroundImage() + { _dummyImageTexture = Texture::Builder() - .width(1) - .height(1) - .levels(0x01) - .format(Texture::InternalFormat::RGB16F) - .sampler(Texture::Sampler::SAMPLER_2D) - .build(*_engine); + .width(1) + .height(1) + .levels(0x01) + .format(Texture::InternalFormat::RGB16F) + .sampler(Texture::Sampler::SAMPLER_2D) + .build(*_engine); try { _imageMaterial = @@ -531,7 +547,7 @@ namespace thermion_filament .package(IMAGE_IMAGE_DATA, IMAGE_IMAGE_SIZE) .build(*_engine); _imageMaterial->setDefaultParameter("showImage", 0); - _imageMaterial->setDefaultParameter("backgroundColor", RgbaType::sRGB, float4(1.0f, 1.0f, 1.0f, 0.0f)); + _imageMaterial->setDefaultParameter("backgroundColor", RgbaType::sRGB, filament::math::float4(1.0f, 1.0f, 1.0f, 0.0f)); _imageMaterial->setDefaultParameter("image", _dummyImageTexture, _imageSampler); } catch (...) @@ -561,13 +577,14 @@ namespace thermion_filament _imageIb->setBuffer(*_engine, {sFullScreenTriangleIndices, sizeof(sFullScreenTriangleIndices)}); - auto & em = EntityManager::get(); + auto &em = EntityManager::get(); _imageEntity = em.create(); RenderableManager::Builder(1) .boundingBox({{}, {1.0f, 1.0f, 1.0f}}) .material(0, _imageMaterial->getDefaultInstance()) .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, _imageVb, _imageIb, 0, 3) + .layerMask(0xFF, 1u << SceneManager::LAYERS::BACKGROUND) .culling(false) .build(*_engine, _imageEntity); _scene->addEntity(_imageEntity); @@ -576,8 +593,9 @@ namespace thermion_filament void FilamentViewer::clearBackgroundImage() { std::lock_guard lock(_imageMutex); - - if(_imageEntity.isNull()) { + + if (_imageEntity.isNull()) + { createBackgroundImage(); } _imageMaterial->setDefaultParameter("image", _dummyImageTexture, _imageSampler); @@ -586,7 +604,6 @@ namespace thermion_filament { _engine->destroy(_imageTexture); _imageTexture = nullptr; - Log("Destroyed background image texture"); } } @@ -595,22 +612,18 @@ namespace thermion_filament std::lock_guard lock(_imageMutex); - if(_imageEntity.isNull()) { + if (_imageEntity.isNull()) + { createBackgroundImage(); } string resourcePathString(resourcePath); - Log("Setting background image to %s", resourcePath); - - clearBackgroundImage(); - loadTextureFromPath(resourcePathString); // This currently just anchors the image at the bottom left of the viewport at its original size // TODO - implement stretch/etc const Viewport &vp = _view->getViewport(); - Log("Image width %d height %d vp width %d height %d", _imageWidth, _imageHeight, vp.width, vp.height); float xScale = float(vp.width) / float(_imageWidth); @@ -629,6 +642,7 @@ namespace thermion_filament _imageMaterial->setDefaultParameter("transform", _imageScale); _imageMaterial->setDefaultParameter("image", _imageTexture, _imageSampler); _imageMaterial->setDefaultParameter("showImage", 1); + } /// @@ -641,7 +655,8 @@ namespace thermion_filament { std::lock_guard lock(_imageMutex); - if(_imageEntity.isNull()) { + if (_imageEntity.isNull()) + { createBackgroundImage(); } @@ -711,7 +726,7 @@ namespace thermion_filament _imageScale[2][0], _imageScale[2][1], _imageScale[2][2], _imageScale[2][3], _imageScale[3][0], _imageScale[3][1], _imageScale[3][2], _imageScale[3][3]); - auto transform = math::mat4f::translation(math::float3(x, y, 0.0f)) * _imageScale; + auto transform = math::mat4f::translation(filament::math::float3(x, y, 0.0f)) * _imageScale; Log("transform %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f ", transform[0][0], transform[0][1], transform[0][2], transform[0][3], transform[1][0], transform[1][1], transform[1][2], transform[1][3], @@ -724,7 +739,8 @@ namespace thermion_filament { clearLights(); destroySwapChain(); - if(!_imageEntity.isNull()) { + if (!_imageEntity.isNull()) + { _engine->destroy(_imageEntity); _engine->destroy(_imageTexture); _engine->destroy(_imageVb); @@ -734,10 +750,11 @@ namespace thermion_filament delete _sceneManager; _engine->destroyCameraComponent(_mainCamera->getEntity()); _mainCamera = nullptr; + _view->setScene(nullptr); _engine->destroy(_view); _engine->destroy(_scene); _engine->destroy(_renderer); - Engine::destroy(&_engine); + Engine::destroy(&_engine); delete _resourceLoaderWrapper; } @@ -756,7 +773,7 @@ namespace thermion_filament else { Log("Created headless swapchain."); - _swapChain = _engine->createSwapChain(width, height, filament::backend::SWAP_CHAIN_CONFIG_TRANSPARENT | filament::backend::SWAP_CHAIN_CONFIG_READABLE); + _swapChain = _engine->createSwapChain(width, height, filament::backend::SWAP_CHAIN_CONFIG_TRANSPARENT | filament::backend::SWAP_CHAIN_CONFIG_READABLE | filament::SwapChain::CONFIG_HAS_STENCIL_BUFFER); } #endif } @@ -776,7 +793,7 @@ namespace thermion_filament .width(width) .height(height) .levels(1) - .usage(filament::Texture::Usage::DEPTH_ATTACHMENT) + .usage(filament::Texture::Usage::DEPTH_ATTACHMENT | filament::Texture::Usage::SAMPLEABLE) .format(filament::Texture::InternalFormat::DEPTH32F) .build(*_engine); _rt = filament::RenderTarget::Builder() @@ -785,6 +802,7 @@ namespace thermion_filament .build(*_engine); _view->setRenderTarget(_rt); + Log("Created render target for texture id %ld (%u x %u)", (long)texture, width, height); } @@ -806,7 +824,11 @@ namespace thermion_filament _swapChain = nullptr; Log("Swapchain destroyed."); } +#ifdef __EMSCRIPTEN__ + _engine->execute(); +#else _engine->flushAndWait(); +#endif } void FilamentViewer::clearEntities() @@ -817,68 +839,12 @@ namespace thermion_filament void FilamentViewer::removeEntity(EntityId asset) { - Log("Removing asset from scene"); - mtx.lock(); // todo - what if we are using a camera from this asset? _sceneManager->remove(asset); mtx.unlock(); } - /// - /// Set the exposure for the current active camera. - /// - void FilamentViewer::setCameraExposure(float aperture, float shutterSpeed, float sensitivity) - { - Camera &cam = _view->getCamera(); - Log("Setting aperture (%03f) shutterSpeed (%03f) and sensitivity (%03f)", aperture, shutterSpeed, sensitivity); - cam.setExposure(aperture, shutterSpeed, sensitivity); - } - - /// - /// Set the focal length of the active camera. - /// - void FilamentViewer::setCameraFocalLength(float focalLength) - { - Camera &cam = _view->getCamera(); - _cameraFocalLength = focalLength; - cam.setLensProjection(_cameraFocalLength, 1.0f, _near, - _far); - } - - /// - /// Set the focal length of the active camera. - /// - void FilamentViewer::setCameraCulling(double near, double far) - { - Camera &cam = _view->getCamera(); - _near = near; - _far = far; - cam.setLensProjection(_cameraFocalLength, 1.0f, _near, _far); - Log("Set lens projection to focal length %f, near %f and far %f", _cameraFocalLength, _near, _far); - } - - double FilamentViewer::getCameraCullingNear() - { - Camera &cam = _view->getCamera(); - return cam.getNear(); - } - double FilamentViewer::getCameraCullingFar() - { - Camera &cam = _view->getCamera(); - return cam.getCullingFar(); - } - - /// - /// Set the focus distance of the active camera. - /// - void FilamentViewer::setCameraFocusDistance(float focusDistance) - { - Camera &cam = _view->getCamera(); - _cameraFocusDistance = focusDistance; - cam.setFocusDistance(_cameraFocusDistance); - } - /// /// /// @@ -1001,11 +967,14 @@ namespace thermion_filament ResourceBuffer* rb = (ResourceBuffer*) vec->at(1); loader->free(*rb); delete rb; - delete vec; - }, + delete vec; }, callbackData); _skybox = - filament::Skybox::Builder().environment(_skyboxTexture).build(*_engine); + filament::Skybox::Builder() + .environment(_skyboxTexture) + .build(*_engine); + + _skybox->setLayerMask(0xFF, 1u << SceneManager::LAYERS::BACKGROUND); _scene->setSkybox(_skybox); } @@ -1043,13 +1012,59 @@ namespace thermion_filament _indirectLight->setRotation(matrix); } + void FilamentViewer::createIbl(float r, float g, float b, float intensity) + { + if (_indirectLight) + { + removeIbl(); + } + + _iblTexture = Texture::Builder() + .width(1) + .height(1) + .levels(0x01) + .format(Texture::InternalFormat::RGB16F) + .sampler(Texture::Sampler::SAMPLER_CUBEMAP) + + .build(*_engine); + // Create a copy of the cubemap data + float *pixelData = new float[18] { + r, g, b, + r, g, b, + r, g, b, + r, g, b, + r, g, b, + r, g, b, + }; + + Texture::PixelBufferDescriptor::Callback freeCallback = [](void *buf, size_t, void *data) + { + delete[] reinterpret_cast(data); + }; + + auto pbd = Texture::PixelBufferDescriptor( + pixelData, + 18 * sizeof(float), + Texture::Format::RGB, + Texture::Type::FLOAT, + freeCallback, + pixelData); + + _iblTexture->setImage(*_engine, 0, std::move(pbd)); + + _indirectLight = IndirectLight::Builder() + .reflections(_iblTexture) + .intensity(intensity) + .build(*_engine); + + _scene->setIndirectLight(_indirectLight); + } + void FilamentViewer::loadIbl(const char *const iblPath, float intensity) { removeIbl(); if (iblPath) { - Log("Loading IBL from %s", iblPath); - // Load IBL. ResourceBuffer iblBuffer = _resourceLoaderWrapper->load(iblPath); // because this will go out of scope before the texture callback is invoked, we need to make a copy to the heap @@ -1064,7 +1079,7 @@ namespace thermion_filament image::Ktx1Bundle *iblBundle = new image::Ktx1Bundle(static_cast(iblBuffer.data), static_cast(iblBuffer.size)); - math::float3 harmonics[9]; + filament::math::float3 harmonics[9]; iblBundle->getSphericalHarmonics(harmonics); std::vector *callbackData = new std::vector{(void *)_resourceLoaderWrapper, iblBufferCopy}; @@ -1091,22 +1106,16 @@ namespace thermion_filament } } - void FilamentViewer::render( + bool FilamentViewer::render( uint64_t frameTimeInNanos, void *pixelBuffer, void (*callback)(void *buf, size_t size, void *data), void *data) { - if (!_view) + if (!_view || !_swapChain) { - Log("No view"); - return; - } - else if (!_swapChain) - { - Log("No swapchain"); - return; + return false; } auto now = std::chrono::high_resolution_clock::now(); @@ -1115,7 +1124,6 @@ namespace thermion_filament if (secsSinceLastFpsCheck >= 1) { auto fps = _frameCount / secsSinceLastFpsCheck; - Log("%ffps (%d skipped)", fps, _skippedFrames); _frameCount = 0; _skippedFrames = 0; _fpsCounterStartTime = now; @@ -1144,12 +1152,11 @@ namespace thermion_filament _skippedFrames++; } - // beginFrame = true; - if (beginFrame) { - + _renderer->render(_view); + _frameCount++; if (_recording) @@ -1181,53 +1188,74 @@ namespace thermion_filament } _renderer->endFrame(); } - #ifdef __EMSCRIPTEN__ - _engine->execute(); - #endif +#ifdef __EMSCRIPTEN__ + _engine->execute(); +#endif + return beginFrame; } - void FilamentViewer::capture(uint8_t *out, void (*onComplete)()) { - - Viewport const &vp = _view->getViewport(); - size_t pixelBufferSize = vp.width * vp.height * 4; - auto *pixelBuffer = new uint8_t[pixelBufferSize]; - auto callback = [](void *buf, size_t size, void *data) - { - - auto frameCallbackData = (std::vector*)data; - uint8_t *out = (uint8_t *)(frameCallbackData->at(0)); - void* callbackPtr = frameCallbackData->at(1); - - void (*callback)(void) = (void (*)(void))callbackPtr; - memcpy(out, buf, size); - delete frameCallbackData; - callback(); - }; - - auto userData = new std::vector { out, (void*)onComplete } ; - - auto pbd = Texture::PixelBufferDescriptor( - pixelBuffer, pixelBufferSize, - Texture::Format::RGBA, - Texture::Type::UBYTE, nullptr, callback, userData); - _renderer->beginFrame(_swapChain, 0); - - _renderer->render(_view); - - if(_rt) { - _renderer->readPixels(_rt, 0, 0, vp.width, vp.height, std::move(pbd)); - } else { - _renderer->readPixels(0, 0, vp.width, vp.height, std::move(pbd)); + class CaptureCallbackHandler : public filament::backend::CallbackHandler { + void post(void* user, Callback callback) { + callback(user); } - _renderer->endFrame(); + }; - #ifdef __EMSCRIPTEN__ - _engine->execute(); - emscripten_webgl_commit_frame(); - #endif + void FilamentViewer::capture(uint8_t *out, bool useFence, void (*onComplete)()) + { + + Viewport const &vp = _view->getViewport(); + size_t pixelBufferSize = vp.width * vp.height * 4; + auto *pixelBuffer = new uint8_t[pixelBufferSize]; + auto callback = [](void *buf, size_t size, void *data) + { + auto frameCallbackData = (std::vector *)data; + uint8_t *out = (uint8_t *)(frameCallbackData->at(0)); + void *callbackPtr = frameCallbackData->at(1); + + memcpy(out, buf, size); + delete frameCallbackData; + if(callbackPtr) { + void (*callback)(void) = (void (*)(void))callbackPtr; + callback(); + } + }; + + // Create a fence + Fence* fence = nullptr; + if(useFence) { + fence = _engine->createFence(); } + auto userData = new std::vector{out, (void *)onComplete}; + auto dispatcher = new CaptureCallbackHandler(); + + auto pbd = Texture::PixelBufferDescriptor( + pixelBuffer, pixelBufferSize, + Texture::Format::RGBA, + Texture::Type::UBYTE, dispatcher, callback, userData); + _renderer->beginFrame(_swapChain, 0); + + _renderer->render(_view); + + if (_rt) + { + _renderer->readPixels(_rt, 0, 0, vp.width, vp.height, std::move(pbd)); + } + else + { + _renderer->readPixels(0, 0, vp.width, vp.height, std::move(pbd)); + } + _renderer->endFrame(); + +#ifdef __EMSCRIPTEN__ + _engine->execute(); + emscripten_webgl_commit_frame(); +#endif + if(fence) { + Fence::waitAndDestroy(fence); + } + } void FilamentViewer::savePng(void *buf, size_t size, int frameNumber) { @@ -1299,154 +1327,21 @@ namespace thermion_filament this->_recording = recording; } - void FilamentViewer::updateViewportAndCameraProjection( - int width, int height, float contentScaleFactor) + Camera* FilamentViewer::getCamera(EntityId entity) { + return _engine->getCameraComponent(Entity::import(entity)); + } + + void FilamentViewer::updateViewport( + uint32_t width, uint32_t height) { - if (!_view || !_mainCamera) - { - Log("Skipping camera update, no view or camrea"); - return; - } - - const uint32_t _width = width * contentScaleFactor; - const uint32_t _height = height * contentScaleFactor; - _view->setViewport({0, 0, _width, _height}); - - const double aspect = (double)width / height; - - Camera &cam = _view->getCamera(); - cam.setLensProjection(_cameraFocalLength, 1.0f, _near, - _far); - - cam.setScaling({1.0 / aspect, 1.0}); - - Log("Set viewport to width: %d height: %d aspect %f scaleFactor : %f", width, height, aspect, - contentScaleFactor); + _view->setViewport({0, 0, width, height}); } void FilamentViewer::setViewFrustumCulling(bool enabled) { _view->setFrustumCullingEnabled(enabled); } - - void FilamentViewer::setCameraFov(double fovInDegrees, double aspect) - { - Camera &cam = _view->getCamera(); - cam.setProjection(fovInDegrees, aspect, _near, _far, Camera::Fov::HORIZONTAL); - Log("Set camera projection fov to %f", fovInDegrees); - } - - void FilamentViewer::setCameraPosition(float x, float y, float z) - { - Camera &cam = _view->getCamera(); - - _cameraPosition = math::mat4f::translation(math::float3(x, y, z)); - cam.setModelMatrix(_cameraRotation * _cameraPosition); - } - - void FilamentViewer::moveCameraToAsset(EntityId entityId) - { - auto asset = _sceneManager->getAssetByEntityId(entityId); - if (!asset) - { - Log("Failed to find asset attached to specified entity id."); - return; - } - - const filament::Aabb bb = asset->getBoundingBox(); - auto corners = bb.getCorners(); - Camera &cam = _view->getCamera(); - auto eye = corners.vertices[0] * 1.5; - auto lookAt = corners.vertices[7]; - cam.lookAt(eye, lookAt); - Log("Moved camera to %f %f %f, lookAt %f %f %f, near %f far %f", eye[0], eye[1], eye[2], lookAt[0], lookAt[1], lookAt[2], cam.getNear(), cam.getCullingFar()); - } - - void FilamentViewer::setCameraRotation(float w, float x, float y, float z) - { - Camera &cam = _view->getCamera(); - _cameraRotation = math::mat4f(math::quatf(w, x, y, z)); - cam.setModelMatrix(_cameraRotation * _cameraPosition); - } - - void FilamentViewer::setCameraModelMatrix(const float *const matrix) - { - Camera &cam = _view->getCamera(); - - mat4 modelMatrix( - matrix[0], - matrix[1], - matrix[2], - matrix[3], - matrix[4], - matrix[5], - matrix[6], - matrix[7], - matrix[8], - matrix[9], - matrix[10], - matrix[11], - matrix[12], - matrix[13], - matrix[14], - matrix[15]); - cam.setModelMatrix(modelMatrix); - } - - void FilamentViewer::setCameraProjectionMatrix(const double *const matrix, double near, double far) - { - Camera &cam = _view->getCamera(); - - mat4 projectionMatrix( - matrix[0], - matrix[1], - matrix[2], - matrix[3], - matrix[4], - matrix[5], - matrix[6], - matrix[7], - matrix[8], - matrix[9], - matrix[10], - matrix[11], - matrix[12], - matrix[13], - matrix[14], - matrix[15]); - cam.setCustomProjection(projectionMatrix, projectionMatrix, near, far); - } - - const math::mat4 FilamentViewer::getCameraModelMatrix() - { - const auto &cam = _view->getCamera(); - return cam.getModelMatrix(); - } - - const math::mat4 FilamentViewer::getCameraViewMatrix() - { - const auto &cam = _view->getCamera(); - return cam.getViewMatrix(); - } - - const math::mat4 FilamentViewer::getCameraProjectionMatrix() - { - const auto &cam = _view->getCamera(); - return cam.getProjectionMatrix(); - } - - const math::mat4 FilamentViewer::getCameraCullingProjectionMatrix() - { - const auto &cam = _view->getCamera(); - return cam.getCullingProjectionMatrix(); - } - - const filament::Frustum FilamentViewer::getCameraFrustum() - { - const auto &cam = _view->getCamera(); - return cam.getFrustum(); - } - + void FilamentViewer::_createManipulator() { Camera &cam = _view->getCamera(); @@ -1456,7 +1351,6 @@ namespace thermion_filament auto fv = cam.getForwardVector(); math::double3 target = home + fv; Viewport const &vp = _view->getViewport(); - // Log("Creating manipulator for viewport size %dx%d at home %f %f %f, fv %f %f %f, up %f %f %f target %f %f %f (norm %f) with _zoomSpeed %f", vp.width, vp.height, home[0], home[1], home[2], fv[0], fv[1], fv[2], up[0], up[1], up[2], target[0], target[1], target[2], norm(home), _zoomSpeed); _manipulator = Manipulator::Builder() .viewport(vp.width, vp.height) @@ -1490,15 +1384,6 @@ namespace thermion_filament { _createManipulator(); } - if (pan) - { - Log("Beginning pan at %f %f", x, y); - } - else - { - Log("Beginning rotate at %f %f", x, y); - } - _manipulator->grabBegin(x, y, pan); } @@ -1568,80 +1453,38 @@ namespace thermion_filament void FilamentViewer::pick(uint32_t x, uint32_t y, void (*callback)(EntityId entityId, int x, int y)) { - _view->pick(x, y, [=](filament::View::PickingQueryResult const &result) - { - if(result.renderable != _imageEntity) { - callback(Entity::smuggle(result.renderable), x, y); - } }); + _view->pick(x, y, [=](filament::View::PickingQueryResult const &result) { + + if(_sceneManager->gizmo->isGizmoEntity(result.renderable)) { + Log("Gizmo entity, ignoring"); + return; + } + std::unordered_set nonPickableEntities = { + _imageEntity, + _sceneManager->_gridOverlay->sphere(), + _sceneManager->_gridOverlay->grid(), + }; + + if (nonPickableEntities.find(result.renderable) == nonPickableEntities.end()) { + callback(Entity::smuggle(result.renderable), x, y); + } + }); } - EntityId FilamentViewer::createGeometry(float *vertices, uint32_t numVertices, uint16_t *indices, uint32_t numIndices, RenderableManager::PrimitiveType primitiveType, const char *materialPath) - { - - float *verticesCopy = (float *)malloc(numVertices * sizeof(float)); - memcpy(verticesCopy, vertices, numVertices * sizeof(float)); - VertexBuffer::BufferDescriptor::Callback vertexCallback = [](void *buf, size_t, - void *data) - { - free((void *)buf); - }; - - uint16_t *indicesCopy = (uint16_t *)malloc(numIndices * sizeof(uint16_t)); - memcpy(indicesCopy, indices, numIndices * sizeof(uint16_t)); - IndexBuffer::BufferDescriptor::Callback indexCallback = [](void *buf, size_t, - void *data) - { - free((void *)buf); - }; - - auto vb = VertexBuffer::Builder().vertexCount(numVertices).bufferCount(1).attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3).build(*_engine); - - vb->setBufferAt(*_engine, 0, VertexBuffer::BufferDescriptor(verticesCopy, vb->getVertexCount() * sizeof(filament::math::float3), 0, vertexCallback)); - - auto ib = IndexBuffer::Builder().indexCount(numIndices).bufferType(IndexBuffer::IndexType::USHORT).build(*_engine); - ib->setBuffer(*_engine, IndexBuffer::BufferDescriptor(indicesCopy, ib->getIndexCount() * sizeof(uint16_t), 0, indexCallback)); - - filament::Material *mat = nullptr; - if (materialPath) - { - auto matData = _resourceLoaderWrapper->load(materialPath); - auto mat = Material::Builder().package(matData.data, matData.size).build(*_engine); - _resourceLoaderWrapper->free(matData); + void FilamentViewer::unprojectTexture(EntityId entityId, uint8_t* input, uint32_t inputWidth, uint32_t inputHeight, uint8_t* out, uint32_t outWidth, uint32_t outHeight) { + const auto * geometry = _sceneManager->getGeometry(entityId); + if(!geometry->uvs) { + Log("No UVS"); + return; } + + UnprojectTexture unproject(geometry, _view->getCamera(), _engine); - float minX, minY, minZ = 0.0f; - float maxX, maxY, maxZ = 0.0f; - - for (int i = 0; i < numVertices; i += 3) - { - minX = std::min(vertices[i], minX); - minY = std::min(vertices[i + 1], minY); - minZ = std::min(vertices[i + 2], minZ); - maxX = std::max(vertices[i], maxX); - maxY = std::max(vertices[i + 1], maxY); - maxZ = std::max(vertices[i + 2], maxZ); - } - - auto renderable = utils::EntityManager::get().create(); - RenderableManager::Builder builder = RenderableManager::Builder(1); - builder - .boundingBox({{minX, minY, minZ}, {maxX, maxY, maxZ}}) - .geometry(0, primitiveType, - vb, ib, 0, numIndices) - .culling(false) - .receiveShadows(false) - .castShadows(false); - if (mat) - { - builder.material(0, mat->getDefaultInstance()).build(*_engine, renderable); - } - auto result = builder.build(*_engine, renderable); - - _scene->addEntity(renderable); - - Log("Created geometry with primitive type %d (result %d)", primitiveType, result); - - return Entity::smuggle(renderable); + // TODO - check that input dimensions match viewport? + + unproject.unproject(utils::Entity::import(entityId), input, out, inputWidth, inputHeight, outWidth, outHeight); } + + } // namespace thermion_filament diff --git a/thermion_dart/native/src/Gizmo.cpp b/thermion_dart/native/src/Gizmo.cpp new file mode 100644 index 00000000..7041c629 --- /dev/null +++ b/thermion_dart/native/src/Gizmo.cpp @@ -0,0 +1,354 @@ +#include "Gizmo.hpp" + +#include +#include +#include +#include +#include +#include +#include "SceneManager.hpp" +#include "material/gizmo.h" +#include "Log.hpp" + +namespace thermion_filament { + +using namespace filament::gltfio; + +Gizmo::Gizmo(Engine &engine, View* view, Scene* scene) : _engine(engine) +{ + + _scene = scene; + _view = view; + _camera = &(_view->getCamera()); + + auto &entityManager = EntityManager::get(); + + auto &transformManager = engine.getTransformManager(); + + _material = + Material::Builder() + .package(GIZMO_GIZMO_DATA, GIZMO_GIZMO_SIZE) + .build(engine); + + // First, create the black cube at the center + // The axes widgets will be parented to this entity + _entities[3] = entityManager.create(); + + _materialInstances[3] = _material->createInstance(); + _materialInstances[3]->setParameter("color", math::float4{0.0f, 0.0f, 0.0f, 1.0f}); // Black color + + // Create center cube vertices + float centerCubeSize = 0.01f; + float *centerCubeVertices = new float[8 * 3]{ + -centerCubeSize, -centerCubeSize, -centerCubeSize, + centerCubeSize, -centerCubeSize, -centerCubeSize, + centerCubeSize, centerCubeSize, -centerCubeSize, + -centerCubeSize, centerCubeSize, -centerCubeSize, + -centerCubeSize, -centerCubeSize, centerCubeSize, + centerCubeSize, -centerCubeSize, centerCubeSize, + centerCubeSize, centerCubeSize, centerCubeSize, + -centerCubeSize, centerCubeSize, centerCubeSize}; + + // Create center cube indices + uint16_t *centerCubeIndices = new uint16_t[36]{ + 0, 1, 2, 2, 3, 0, + 1, 5, 6, 6, 2, 1, + 5, 4, 7, 7, 6, 5, + 4, 0, 3, 3, 7, 4, + 3, 2, 6, 6, 7, 3, + 4, 5, 1, 1, 0, 4}; + + auto centerCubeVb = VertexBuffer::Builder() + .vertexCount(8) + .bufferCount(1) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .build(engine); + + centerCubeVb->setBufferAt(engine, 0, VertexBuffer::BufferDescriptor(centerCubeVertices, 8 * sizeof(filament::math::float3), [](void *buffer, size_t size, void *) + { delete[] static_cast(buffer); })); + + auto centerCubeIb = IndexBuffer::Builder().indexCount(36).bufferType(IndexBuffer::IndexType::USHORT).build(engine); + centerCubeIb->setBuffer(engine, IndexBuffer::BufferDescriptor( + centerCubeIndices, 36 * sizeof(uint16_t), + [](void *buffer, size_t size, void *) + { delete[] static_cast(buffer); })); + + RenderableManager::Builder(1) + .boundingBox({{-centerCubeSize, -centerCubeSize, -centerCubeSize}, + {centerCubeSize, centerCubeSize, centerCubeSize}}) + .material(0, _materialInstances[3]) + .layerMask(0xFF, 1u << SceneManager::LAYERS::OVERLAY) + .priority(7) + .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, centerCubeVb, centerCubeIb, 0, 36) + .culling(false) + .build(engine, _entities[3]); + + auto cubeTransformInstance = transformManager.getInstance(_entities[3]); + math::mat4f cubeTransform; + transformManager.setTransform(cubeTransformInstance, cubeTransform); + + // Line and arrow vertices + float lineLength = 0.6f; + float lineWidth = 0.004f; + float arrowLength = 0.06f; + float arrowWidth = 0.02f; + float *vertices = new float[13 * 3]{ + // Line vertices (8 vertices) + -lineWidth, -lineWidth, 0.0f, + lineWidth, -lineWidth, 0.0f, + lineWidth, lineWidth, 0.0f, + -lineWidth, lineWidth, 0.0f, + -lineWidth, -lineWidth, lineLength, + lineWidth, -lineWidth, lineLength, + lineWidth, lineWidth, lineLength, + -lineWidth, lineWidth, lineLength, + // Arrow vertices (5 vertices) + 0.0f, 0.0f, lineLength + arrowLength, // Tip of the arrow + -arrowWidth, -arrowWidth, lineLength, // Base of the arrow + arrowWidth, -arrowWidth, lineLength, + arrowWidth, arrowWidth, lineLength, + -arrowWidth, arrowWidth, lineLength}; + + // Line and arrow indices + uint16_t *indices = new uint16_t[54]{ + // Line indices (24 indices) + 0, 1, 5, 5, 4, 0, + 1, 2, 6, 6, 5, 1, + 2, 3, 7, 7, 6, 2, + 3, 0, 4, 4, 7, 3, + // Arrow indices (30 indices) + 8, 9, 10, // Front face + 8, 10, 11, // Right face + 8, 11, 12, // Back face + 8, 12, 9, // Left face + 9, 12, 11, 11, 10, 9 // Base of the arrow + }; + + auto vb = VertexBuffer::Builder() + .vertexCount(13) + .bufferCount(1) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .build(engine); + + vb->setBufferAt(engine, 0, VertexBuffer::BufferDescriptor(vertices, 13 * sizeof(filament::math::float3), [](void *buffer, size_t size, void *) + { delete[] static_cast(buffer); })); + + auto ib = IndexBuffer::Builder().indexCount(54).bufferType(IndexBuffer::IndexType::USHORT).build(engine); + ib->setBuffer(engine, IndexBuffer::BufferDescriptor( + indices, 54 * sizeof(uint16_t), + [](void *buffer, size_t size, void *) + { delete[] static_cast(buffer); })); + + // Create the three axes + for (int i = 0; i < 3; i++) + { + _entities[i] = entityManager.create(); + _materialInstances[i] = _material->createInstance(); + + auto baseColor = inactiveColors[i]; + + math::mat4f transform; + + switch (i) + { + case Axis::X: + // _materialInstances[i]->setParameter("axisDirection", math::float3 { 1.0f, 0.0f, 0.0f}); + transform = math::mat4f::rotation(math::F_PI_2, math::float3{0, 1, 0}); + break; + case 1: + // _materialInstances[i]->setParameter("axisDirection", math::float3 { 0.0f, 1.0f, 0.0f}); + transform = math::mat4f::rotation(-math::F_PI_2, math::float3{1, 0, 0}); + break; + case 2: + // _materialInstances[i]->setParameter("axisDirection", math::float3 { 0.0f, 0.0f, 1.0f}); + break; + } + + _materialInstances[i]->setParameter("color", baseColor); + + RenderableManager::Builder(1) + .boundingBox({{-arrowWidth, -arrowWidth, 0}, + {arrowWidth, arrowWidth, lineLength + arrowLength}}) + .material(0, _materialInstances[i]) + .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vb, ib, 0, 54) + .priority(6) + .layerMask(0xFF, 1u << SceneManager::LAYERS::OVERLAY) + .culling(false) + .receiveShadows(false) + .castShadows(false) + .build(engine, _entities[i]); + + + auto instance = transformManager.getInstance(_entities[i]); + transformManager.setTransform(instance, transform); + + // parent the axis to the center cube + transformManager.setParent(instance, cubeTransformInstance); + + } + + createTransparentRectangles(); +} + +Gizmo::~Gizmo() { + _scene->removeEntities(_entities, 7); + + for(int i = 0; i < 7; i++) { + _engine.destroy(_entities[i]); + } + + for(int i = 0; i < 7; i++) { + _engine.destroy(_materialInstances[i]); + } + + _engine.destroy(_material); + +} + +void Gizmo::createTransparentRectangles() +{ + auto &entityManager = EntityManager::get(); + auto &transformManager = _engine.getTransformManager(); + + float volumeWidth = 0.2f; + float volumeLength = 1.2f; + float volumeDepth = 0.2f; + + float *volumeVertices = new float[8 * 3]{ + -volumeWidth / 2, -volumeDepth / 2, 0, + volumeWidth / 2, -volumeDepth / 2, 0, + volumeWidth / 2, -volumeDepth / 2, volumeLength, + -volumeWidth / 2, -volumeDepth / 2, volumeLength, + -volumeWidth / 2, volumeDepth / 2, 0, + volumeWidth / 2, volumeDepth / 2, 0, + volumeWidth / 2, volumeDepth / 2, volumeLength, + -volumeWidth / 2, volumeDepth / 2, volumeLength + }; + + uint16_t *volumeIndices = new uint16_t[36]{ + 0, 1, 2, 2, 3, 0, // Bottom face + 4, 5, 6, 6, 7, 4, // Top face + 0, 4, 7, 7, 3, 0, // Left face + 1, 5, 6, 6, 2, 1, // Right face + 0, 1, 5, 5, 4, 0, // Front face + 3, 2, 6, 6, 7, 3 // Back face + }; + + auto volumeVb = VertexBuffer::Builder() + .vertexCount(8) + .bufferCount(1) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .build(_engine); + + volumeVb->setBufferAt(_engine, 0, VertexBuffer::BufferDescriptor( + volumeVertices, 8 * sizeof(filament::math::float3), + [](void *buffer, size_t size, void *) { delete[] static_cast(buffer); } + )); + + auto volumeIb = IndexBuffer::Builder() + .indexCount(36) + .bufferType(IndexBuffer::IndexType::USHORT) + .build(_engine); + + volumeIb->setBuffer(_engine, IndexBuffer::BufferDescriptor( + volumeIndices, 36 * sizeof(uint16_t), + [](void *buffer, size_t size, void *) { delete[] static_cast(buffer); } + )); + + for (int i = 4; i < 7; i++) + { + _entities[i] = entityManager.create(); + _materialInstances[i] = _material->createInstance(); + + _materialInstances[i]->setParameter("color", math::float4{0.0f, 0.0f, 0.0f, 0.0f}); + + math::mat4f transform; + switch (i-4) + { + case Axis::X: + transform = math::mat4f::rotation(math::F_PI_2, math::float3{0, 1, 0}); + break; + case Axis::Y: + transform = math::mat4f::rotation(-math::F_PI_2, math::float3{1, 0, 0}); + break; + case Axis::Z: + break; + } + + RenderableManager::Builder(1) + .boundingBox({{-volumeWidth / 2, -volumeDepth / 2, 0}, {volumeWidth / 2, volumeDepth / 2, volumeLength}}) + .material(0, _materialInstances[i]) + .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, volumeVb, volumeIb, 0, 36) + .priority(7) + .layerMask(0xFF, 1u << SceneManager::LAYERS::OVERLAY) + .culling(false) + .receiveShadows(false) + .castShadows(false) + .build(_engine, _entities[i]); + + auto instance = transformManager.getInstance(_entities[i]); + transformManager.setTransform(instance, transform); + + // Parent the picking volume to the center cube + transformManager.setParent(instance, transformManager.getInstance(_entities[3])); + } +} + +void Gizmo::highlight(Entity entity) { + auto &rm = _engine.getRenderableManager(); + auto renderableInstance = rm.getInstance(entity); + auto materialInstance = rm.getMaterialInstanceAt(renderableInstance, 0); + + math::float4 baseColor; + if(entity == x()) { + baseColor = activeColors[Axis::X]; + } else if(entity == y()) { + baseColor = activeColors[Axis::Y]; + } else if(entity == z()) { + baseColor = activeColors[Axis::Z]; + } else { + baseColor = math::float4 { 1.0f, 1.0f, 1.0f, 1.0f }; + } + + materialInstance->setParameter("color", baseColor); + +} + +void Gizmo::unhighlight() { + auto &rm = _engine.getRenderableManager(); + + for(int i = 0; i < 3; i++) { + auto renderableInstance = rm.getInstance(_entities[i]); + auto materialInstance = rm.getMaterialInstanceAt(renderableInstance, 0); + + math::float4 baseColor = inactiveColors[i]; + materialInstance->setParameter("color", baseColor); + } +} + +void Gizmo::pick(uint32_t x, uint32_t y, void (*callback)(EntityId entityId, int x, int y)) + { + auto handler = new Gizmo::PickCallbackHandler(this, callback); + _view->pick(x, y, [=](filament::View::PickingQueryResult const &result) { + handler->handle(result); + }); + } + +bool Gizmo::isGizmoEntity(Entity e) { + for(int i = 0; i < 7; i++) { + if(e == _entities[i]) { + return true; + } + } + return false; +} + +void Gizmo::setVisibility(bool visible) { + if(visible) { + _scene->addEntities(_entities, 7); + } else { + _scene->removeEntities(_entities, 7); + } +} +} + diff --git a/thermion_dart/native/src/GridOverlay.cpp b/thermion_dart/native/src/GridOverlay.cpp new file mode 100644 index 00000000..6d3a59a6 --- /dev/null +++ b/thermion_dart/native/src/GridOverlay.cpp @@ -0,0 +1,197 @@ +#include "GridOverlay.hpp" + +#include +#include +#include +#include +#include +#include + +#include "material/grid.h" +#include "SceneManager.hpp" +#include "Log.hpp" + +namespace thermion_filament { + +using namespace filament::gltfio; + +GridOverlay::GridOverlay(Engine &engine) : _engine(engine) +{ + auto &entityManager = EntityManager::get(); + auto &transformManager = engine.getTransformManager(); + + const int gridSize = 100; + const float gridSpacing = 1.0f; + int vertexCount = (gridSize + 1) * 4; // 2 axes, 2 vertices per line + + float* gridVertices = new float[vertexCount * 3]; + int index = 0; + + // Create grid lines + for (int i = 0; i <= gridSize; ++i) { + float pos = i * gridSpacing - (gridSize * gridSpacing / 2); + + // X-axis lines + gridVertices[index++] = pos; + gridVertices[index++] = 0; + gridVertices[index++] = -(gridSize * gridSpacing / 2); + + gridVertices[index++] = pos; + gridVertices[index++] = 0; + gridVertices[index++] = (gridSize * gridSpacing / 2); + + // Z-axis lines + gridVertices[index++] = -(gridSize * gridSpacing / 2); + gridVertices[index++] = 0; + gridVertices[index++] = pos; + + gridVertices[index++] = (gridSize * gridSpacing / 2); + gridVertices[index++] = 0; + gridVertices[index++] = pos; + } + + auto vb = VertexBuffer::Builder() + .vertexCount(vertexCount) + .bufferCount(1) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .build(engine); + + vb->setBufferAt(engine, 0, VertexBuffer::BufferDescriptor( + gridVertices, vertexCount * sizeof(filament::math::float3), + [](void* buffer, size_t size, void*) { delete[] static_cast(buffer); } + )); + + uint32_t* gridIndices = new uint32_t[vertexCount]; + for (uint32_t i = 0; i < vertexCount; ++i) { + gridIndices[i] = i; + } + + auto ib = IndexBuffer::Builder() + .indexCount(vertexCount) + .bufferType(IndexBuffer::IndexType::UINT) + .build(engine); + + ib->setBuffer(engine, IndexBuffer::BufferDescriptor( + gridIndices, vertexCount * sizeof(uint32_t), + [](void* buffer, size_t size, void*) { delete[] static_cast(buffer); } + )); + + _gridEntity = entityManager.create(); + _material = Material::Builder() + .package(GRID_PACKAGE, GRID_GRID_SIZE) + .build(engine); + + _materialInstance = _material->createInstance(); + + _materialInstance->setParameter("maxDistance", 50.0f); // Adjust as needed + _materialInstance->setParameter("color", math::float3{0.5f, 0.5f, 0.5f}); // Gray color for the grid + + + RenderableManager::Builder(1) + .boundingBox({{-gridSize * gridSpacing / 2, 0, -gridSize * gridSpacing / 2}, + {gridSize * gridSpacing / 2, 0, gridSize * gridSpacing / 2}}) + .material(0, _materialInstance) + .geometry(0, RenderableManager::PrimitiveType::LINES, vb, ib, 0, vertexCount) + .priority(6) + .layerMask(0xFF, 1u << SceneManager::LAYERS::OVERLAY) + .culling(false) + .receiveShadows(false) + .castShadows(false) + .build(engine, _gridEntity); +const float sphereRadius = 0.05f; +const int sphereSegments = 16; +const int sphereRings = 16; + +vertexCount = (sphereRings + 1) * (sphereSegments + 1); +int indexCount = sphereRings * sphereSegments * 6; + +math::float3* vertices = new math::float3[vertexCount]; +uint32_t* indices = new uint32_t[indexCount]; + +int vertexIndex = 0; +// Generate sphere vertices +for (int ring = 0; ring <= sphereRings; ++ring) { + float theta = ring * M_PI / sphereRings; + float sinTheta = std::sin(theta); + float cosTheta = std::cos(theta); + + for (int segment = 0; segment <= sphereSegments; ++segment) { + float phi = segment * 2 * M_PI / sphereSegments; + float sinPhi = std::sin(phi); + float cosPhi = std::cos(phi); + + float x = cosPhi * sinTheta; + float y = cosTheta; + float z = sinPhi * sinTheta; + + vertices[vertexIndex++] = {x * sphereRadius, y * sphereRadius, z * sphereRadius}; + } +} + +int indexIndex = 0; +// Generate sphere indices +for (int ring = 0; ring < sphereRings; ++ring) { + for (int segment = 0; segment < sphereSegments; ++segment) { + uint32_t current = ring * (sphereSegments + 1) + segment; + uint32_t next = current + sphereSegments + 1; + + indices[indexIndex++] = current; + indices[indexIndex++] = next; + indices[indexIndex++] = current + 1; + + indices[indexIndex++] = current + 1; + indices[indexIndex++] = next; + indices[indexIndex++] = next + 1; + } +} + +auto sphereVb = VertexBuffer::Builder() + .vertexCount(vertexCount) + .bufferCount(1) + .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) + .build(engine); + +sphereVb->setBufferAt(engine, 0, VertexBuffer::BufferDescriptor( + vertices, vertexCount * sizeof(math::float3), + [](void* buffer, size_t size, void*) { delete[] static_cast(buffer); } +)); + +auto sphereIb = IndexBuffer::Builder() + .indexCount(indexCount) + .bufferType(IndexBuffer::IndexType::UINT) + .build(engine); + +sphereIb->setBuffer(engine, IndexBuffer::BufferDescriptor( + indices, indexCount * sizeof(uint32_t), + [](void* buffer, size_t size, void*) { delete[] static_cast(buffer); } +)); + +_sphereEntity = entityManager.create(); + +RenderableManager::Builder(1) + .boundingBox({{-sphereRadius, -sphereRadius, -sphereRadius}, + {sphereRadius, sphereRadius, sphereRadius}}) + .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, sphereVb, sphereIb, 0, indexCount) + .priority(6) + .layerMask(0xFF, 1u << SceneManager::LAYERS::OVERLAY) + .culling(false) + .receiveShadows(false) + .castShadows(false) + .build(engine, _sphereEntity); + +} + + +void GridOverlay::destroy() +{ + auto &rm = _engine.getRenderableManager(); + auto &tm = _engine.getTransformManager(); + rm.destroy(_sphereEntity); + rm.destroy(_gridEntity); + tm.destroy(_sphereEntity); + tm.destroy(_gridEntity); + _engine.destroy(_sphereEntity); + _engine.destroy(_gridEntity); +} + +} // namespace thermion_filament \ No newline at end of file diff --git a/thermion_dart/native/src/HighlightOverlay.cpp b/thermion_dart/native/src/HighlightOverlay.cpp new file mode 100644 index 00000000..0b0f0f0d --- /dev/null +++ b/thermion_dart/native/src/HighlightOverlay.cpp @@ -0,0 +1,184 @@ +#include +#include +#include + +#include "SceneManager.hpp" + +namespace thermion_filament +{ + + SceneManager::HighlightOverlay::HighlightOverlay( + EntityId entityId, + SceneManager *const sceneManager, + Engine *engine, + float r, + float g, + float b) : _sceneManager(sceneManager), _engine(engine) + { + + auto &rm = engine->getRenderableManager(); + + auto &tm = engine->getTransformManager(); + + // Create the outline/highlight material instance + filament::gltfio::MaterialKey dummyKey; // We're not using the key for this simple material + filament::gltfio::UvMap dummyUvMap; // We're not using UV mapping for this simple material + + auto materialProvider = sceneManager->unlitMaterialProvider(); + + _highlightMaterialInstance = materialProvider->createMaterialInstance(&dummyKey, &dummyUvMap); + _highlightMaterialInstance->setStencilOpStencilFail(filament::backend::StencilOperation::KEEP); + _highlightMaterialInstance->setStencilOpDepthFail(filament::backend::StencilOperation::KEEP); + _highlightMaterialInstance->setStencilOpDepthStencilPass(filament::backend::StencilOperation::REPLACE); + _highlightMaterialInstance->setStencilCompareFunction(filament::backend::SamplerCompareFunc::NE); + _highlightMaterialInstance->setStencilReferenceValue(1); + + _highlightMaterialInstance->setParameter("color", filament::math::float3{r, g, b}); + _highlightMaterialInstance->setParameter("scale", 1.04f); + _highlightMaterialInstance->setCullingMode(filament::backend::CullingMode::FRONT); + + + auto scene = sceneManager->getScene(); + + _isGeometryEntity = sceneManager->isGeometryEntity(entityId); + _isGltfAsset = sceneManager->isGltfAsset(entityId); + + if (!(_isGeometryEntity || _isGltfAsset)) + { + Log("Failed to set stencil outline for entity %d: the entity is a child of another entity. " + "Currently, we only support outlining top-level entities." + "Call getAncestor() to get the ancestor of this entity, then set on that", + entityId); + return; + } + + if (_isGeometryEntity) + { + + Log("Entity %d is geometry", entityId); + + auto geometryEntity = Entity::import(entityId); + auto renderable = rm.getInstance(geometryEntity); + + auto materialInstance = rm.getMaterialInstanceAt(renderable, 0); + + // set stencil write on the existing material + materialInstance->setStencilWrite(true); + materialInstance->setDepthWrite(true); + materialInstance->setStencilReferenceValue(1); + materialInstance->setStencilOpStencilFail(filament::backend::StencilOperation::KEEP); + materialInstance->setStencilOpDepthFail(filament::backend::StencilOperation::KEEP); + materialInstance->setStencilOpDepthStencilPass(filament::backend::StencilOperation::KEEP); + materialInstance->setStencilCompareFunction(filament::backend::SamplerCompareFunc::A); + // materialInstance->setCullingMode(filament::MaterialInstance::CullingMode::BACK); + + auto geometry = sceneManager->getGeometry(entityId); + + _entity = utils::EntityManager::get().create(); + RenderableManager::Builder builder(1); + builder.boundingBox(geometry->getBoundingBox()) + .geometry(0, geometry->primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, geometry->numIndices) + .culling(true) + .material(0, _highlightMaterialInstance) + .priority(0) + .receiveShadows(false) + .castShadows(false); + + builder.build(*engine, _entity); + + scene->addEntity(_entity); + auto outlineTransformInstance = tm.getInstance(_entity); + auto entityTransformInstance = tm.getInstance(geometryEntity); + tm.setParent(outlineTransformInstance, entityTransformInstance); + } + else if (_isGltfAsset) + { + Log("Entity %d is gltf", entityId); + auto *asset = sceneManager->getAssetByEntityId(entityId); + + if (asset) + { + + Log("Found glTF FilamentAsset with %d material instances", asset->getInstance()->getMaterialInstanceCount()); + + auto materialInstance = asset->getInstance()->getMaterialInstances()[0]; + + // set stencil write on the existing material + materialInstance->setStencilWrite(true); + materialInstance->setDepthWrite(true); + materialInstance->setStencilReferenceValue(1); + materialInstance->setStencilOpStencilFail(filament::backend::StencilOperation::KEEP); + materialInstance->setStencilOpDepthFail(filament::backend::StencilOperation::REPLACE); + materialInstance->setStencilOpDepthStencilPass(filament::backend::StencilOperation::REPLACE); + materialInstance->setStencilCompareFunction(filament::backend::SamplerCompareFunc::A); + + _newInstance = sceneManager->createGltfAssetInstance(asset); + + _entity = _newInstance->getRoot(); + + auto newTransformInstance = tm.getInstance(_entity); + + auto entityTransformInstance = tm.getInstance(asset->getRoot()); + tm.setParent(newTransformInstance, entityTransformInstance); + if (!_newInstance) + { + Log("Couldn't create new instance"); + } + else + { + for (int i = 0; i < _newInstance->getEntityCount(); i++) + { + auto entity = _newInstance->getEntities()[i]; + auto renderableInstance = rm.getInstance(entity); + rm.setPriority(renderableInstance, 7); + if (renderableInstance.isValid()) + { + for (int primitiveIndex = 0; primitiveIndex < rm.getPrimitiveCount(renderableInstance); primitiveIndex++) + { + rm.setMaterialInstanceAt(renderableInstance, primitiveIndex, _highlightMaterialInstance); + } + } + else + { + Log("Not renderable, ignoring"); + } + } + scene->addEntities(_newInstance->getEntities(), _newInstance->getEntityCount()); + } + } + else + { + Log("Not FilamentAsset"); + } + } + } + + SceneManager::HighlightOverlay::~HighlightOverlay() + { + if (_entity.isNull()) + { + Log("Null entity"); + return; + } + + if (_isGltfAsset) + { + _sceneManager->getScene()->removeEntities(_newInstance->getEntities(), _newInstance->getEntityCount()); + _newInstance->detachMaterialInstances(); + _engine->destroy(_highlightMaterialInstance); + } + else if (_isGeometryEntity) + { + auto &tm = _engine->getTransformManager(); + auto transformInstance = tm.getInstance(_entity); + _sceneManager->getScene()->remove(_entity); + utils::EntityManager::get().destroy(_entity); + _engine->destroy(_entity); + _engine->destroy(_highlightMaterialInstance); + } + else + { + Log("FATAL: Unknown highlight overlay entity type"); + } + } +} \ No newline at end of file diff --git a/thermion_dart/native/src/SceneManager.cpp b/thermion_dart/native/src/SceneManager.cpp index 7fe0eeea..1b659679 100644 --- a/thermion_dart/native/src/SceneManager.cpp +++ b/thermion_dart/native/src/SceneManager.cpp @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include @@ -18,15 +20,18 @@ #include #include #include - +#include #include #include "material/FileMaterialProvider.hpp" +#include "material/UnlitMaterialProvider.hpp" +#include "material/unlit.h" + #include "StreamBufferAdapter.hpp" #include "Log.hpp" #include "SceneManager.hpp" - -#include "gltfio/materials/uberarchive.h" +#include "CustomGeometry.hpp" +#include "UnprojectTexture.hpp" extern "C" { @@ -43,11 +48,13 @@ namespace thermion_filament using namespace filament::gltfio; using std::unique_ptr; - SceneManager::SceneManager(const ResourceLoaderWrapperImpl *const resourceLoaderWrapper, + SceneManager::SceneManager(View *view, + const ResourceLoaderWrapperImpl *const resourceLoaderWrapper, Engine *engine, Scene *scene, const char *uberArchivePath) - : _resourceLoaderWrapper(resourceLoaderWrapper), + : _view(view), + _resourceLoaderWrapper(resourceLoaderWrapper), _engine(engine), _scene(scene) { @@ -73,12 +80,14 @@ namespace thermion_filament _engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE); } + _unlitMaterialProvider = new UnlitMaterialProvider(_engine, UNLIT_PACKAGE, UNLIT_UNLIT_SIZE); + utils::EntityManager &em = utils::EntityManager::get(); _ncm = new NameComponentManager(em); - + _assetLoader = AssetLoader::create({_engine, _ubershaderProvider, _ncm, &em}); - + _gltfResourceLoader->addTextureProvider("image/ktx2", _ktxDecoder); _gltfResourceLoader->addTextureProvider("image/png", _stbDecoder); _gltfResourceLoader->addTextureProvider("image/jpeg", _stbDecoder); @@ -87,24 +96,27 @@ namespace thermion_filament _collisionComponentManager = new CollisionComponentManager(tm); _animationComponentManager = new AnimationComponentManager(tm, _engine->getRenderableManager()); - - addGizmo(); + + gizmo = new Gizmo(*_engine, _view, _scene); + _gridOverlay = new GridOverlay(*_engine); + + _scene->addEntity(_gridOverlay->sphere()); + _scene->addEntity(_gridOverlay->grid()); + + _view->setLayerEnabled(SceneManager::LAYERS::DEFAULT_ASSETS, true); + _view->setLayerEnabled(SceneManager::LAYERS::BACKGROUND, true); // skybox + image + _view->setLayerEnabled(SceneManager::LAYERS::OVERLAY, false); // world grid + gizmo } SceneManager::~SceneManager() { - + delete gizmo; + _gridOverlay->destroy(); destroyAll(); - - for(int i =0; i < 3; i++) { - _engine->destroy(_gizmo[i]); - _engine->destroy(_gizmoMaterialInstances[i]); - } - - _engine->destroy(_gizmoMaterial); + _gltfResourceLoader->asyncCancelLoad(); _ubershaderProvider->destroyMaterials(); - + delete _animationComponentManager; delete _collisionComponentManager; delete _ncm; @@ -114,7 +126,6 @@ namespace thermion_filament delete _ktxDecoder; delete _ubershaderProvider; AssetLoader::destroy(&_assetLoader); - } int SceneManager::getInstanceCount(EntityId entityId) @@ -144,7 +155,8 @@ namespace thermion_filament } EntityId SceneManager::loadGltf(const char *uri, - const char *relativeResourcePath) + const char *relativeResourcePath, + bool keepData) { ResourceBuffer rbuf = _resourceLoaderWrapper->load(uri); @@ -164,7 +176,6 @@ namespace thermion_filament for (size_t i = 0; i < resourceUriCount; i++) { std::string uri = std::string(relativeResourcePath) + std::string("/") + std::string(resourceUris[i]); - Log("Loading resource URI from relative path %s", resourceUris[i], uri.c_str()); ResourceBuffer buf = _resourceLoaderWrapper->load(uri.c_str()); resourceBuffers.push_back(buf); @@ -208,7 +219,10 @@ namespace thermion_filament inst->getAnimator()->updateBoneMatrices(); inst->recomputeBoundingBoxes(); - asset->releaseSourceData(); + if (!keepData) + { + asset->releaseSourceData(); + } EntityId eid = Entity::smuggle(asset->getRoot()); @@ -225,10 +239,19 @@ namespace thermion_filament return eid; } - EntityId SceneManager::loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances) - { + void SceneManager::setVisibilityLayer(EntityId entityId, int layer) { + auto& rm = _engine->getRenderableManager(); + auto renderable = rm.getInstance(utils::Entity::import(entityId)); + if(!renderable.isValid()) { + Log("Warning: no renderable found"); + } - Log("Loading GLB from buffer of length %d", length); + rm.setLayerMask(renderable, 0xFF, 1u << layer); + + } + + EntityId SceneManager::loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances, bool keepData, int priority, int layer) + { FilamentAsset *asset = nullptr; if (numInstances > 1) @@ -251,6 +274,18 @@ namespace thermion_filament _scene->addEntities(asset->getEntities(), entityCount); + auto & rm = _engine->getRenderableManager(); + + for(int i=0; i < entityCount; i++) { + auto instance = rm.getInstance(asset->getEntities()[i]); + if(!instance.isValid()) { + Log("No valid renderable for entity"); + continue; + } + rm.setPriority(instance, priority); + rm.setLayerMask(instance, 0xFF, 1u << (uint8_t)layer); + } + #ifdef __EMSCRIPTEN__ if (!_gltfResourceLoader->asyncBeginLoad(asset)) { @@ -282,7 +317,10 @@ namespace thermion_filament _instances.emplace(instanceEntityId, inst); } - asset->releaseSourceData(); + if (!keepData) + { + asset->releaseSourceData(); + } EntityId eid = Entity::smuggle(asset->getRoot()); _assets.emplace(eid, asset); @@ -344,18 +382,27 @@ namespace thermion_filament if (pos == _assets.end()) { Log("Couldn't find asset under specified entity id."); - return false; + return 0; } + const auto asset = pos->second; auto instance = _assetLoader->createInstance(asset); - return Entity::smuggle(instance->getRoot()); + if (!instance) + { + Log("Failed to create instance"); + return 0; + } + auto root = instance->getRoot(); + _scene->addEntities(instance->getEntities(), instance->getEntityCount()); + + return Entity::smuggle(root); } - EntityId SceneManager::loadGlb(const char *uri, int numInstances) + EntityId SceneManager::loadGlb(const char *uri, int numInstances, bool keepData) { ResourceBuffer rbuf = _resourceLoaderWrapper->load(uri); - auto entity = loadGlbFromBuffer((const uint8_t *)rbuf.data, rbuf.size, numInstances); + auto entity = loadGlbFromBuffer((const uint8_t *)rbuf.data, rbuf.size, numInstances, keepData); _resourceLoaderWrapper->free(rbuf); return entity; } @@ -454,7 +501,8 @@ namespace thermion_filament for (auto &asset : _assets) { auto numInstances = asset.second->getAssetInstanceCount(); - for(int i = 0; i < numInstances; i++) { + for (int i = 0; i < numInstances; i++) + { auto instance = asset.second->getAssetInstances()[i]; for (int j = 0; j < instance->getEntityCount(); j++) { @@ -476,6 +524,12 @@ namespace thermion_filament asset.second->getLightEntityCount()); _assetLoader->destroyAsset(asset.second); } + for(auto* texture : _textures) { + _engine->destroy(texture); + } + + // TODO - free geometry? + _textures.clear(); _assets.clear(); } @@ -499,21 +553,24 @@ namespace thermion_filament return pos->second; } - math::mat4f SceneManager::getLocalTransform(EntityId entityId) { + math::mat4f SceneManager::getLocalTransform(EntityId entityId) + { auto entity = Entity::import(entityId); - auto& tm = _engine->getTransformManager(); - auto transformInstance = tm.getInstance(entity); + auto &tm = _engine->getTransformManager(); + auto transformInstance = tm.getInstance(entity); return tm.getTransform(transformInstance); } - math::mat4f SceneManager::getWorldTransform(EntityId entityId) { + math::mat4f SceneManager::getWorldTransform(EntityId entityId) + { auto entity = Entity::import(entityId); - auto& tm = _engine->getTransformManager(); - auto transformInstance = tm.getInstance(entity); + auto &tm = _engine->getTransformManager(); + auto transformInstance = tm.getInstance(entity); return tm.getWorldTransform(transformInstance); } - EntityId SceneManager::getBone(EntityId entityId, int skinIndex, int boneIndex) { + EntityId SceneManager::getBone(EntityId entityId, int skinIndex, int boneIndex) + { auto *instance = getInstanceByEntityId(entityId); if (!instance) { @@ -533,7 +590,8 @@ namespace thermion_filament return Entity::smuggle(joint); } - math::mat4f SceneManager::getInverseBindMatrix(EntityId entityId, int skinIndex, int boneIndex) { + math::mat4f SceneManager::getInverseBindMatrix(EntityId entityId, int skinIndex, int boneIndex) + { auto *instance = getInstanceByEntityId(entityId); if (!instance) { @@ -552,7 +610,6 @@ namespace thermion_filament return inverseBindMatrix; } - bool SceneManager::setBoneTransform(EntityId entityId, int32_t skinIndex, int boneIndex, math::mat4f transform) { std::lock_guard lock(_mutex); @@ -579,10 +636,12 @@ namespace thermion_filament void SceneManager::remove(EntityId entityId) { + std::lock_guard lock(_mutex); auto entity = Entity::import(entityId); + if (_animationComponentManager->hasComponent(entity)) { _animationComponentManager->removeComponent(entity); @@ -595,6 +654,10 @@ namespace thermion_filament _scene->remove(entity); + if(isGeometryEntity(entityId)) { + return; + } + const auto *instance = getInstanceByEntityId(entityId); if (instance) @@ -620,7 +683,6 @@ namespace thermion_filament if (!asset) { - Log("ERROR: could not find FilamentInstance or FilamentAsset associated with the given entity id"); return; } _assets.erase(entityId); @@ -781,7 +843,7 @@ namespace thermion_filament return true; } - void SceneManager::clearMorphAnimationBuffer( + void SceneManager::clearMorphAnimationBuffer( EntityId entityId) { std::lock_guard lock(_mutex); @@ -865,12 +927,12 @@ namespace thermion_filament TransformManager &transformManager = _engine->getTransformManager(); // - // To reset the skeleton to its rest pose, we could just call animator->resetBoneMatrices(), - // which sets all bone matrices to the identity matrix. However, any subsequent calls to animator->updateBoneMatrices() - // may result in unexpected poses, because that method uses each bone's transform to calculate + // To reset the skeleton to its rest pose, we could just call animator->resetBoneMatrices(), + // which sets all bone matrices to the identity matrix. However, any subsequent calls to animator->updateBoneMatrices() + // may result in unexpected poses, because that method uses each bone's transform to calculate // the bone matrices (and resetBoneMatrices does not affect this transform). // To "fully" reset the bone, we need to set its local transform (i.e. relative to its parent) - // to its original orientation in rest pose. + // to its original orientation in rest pose. // // This can be calculated as: // @@ -879,7 +941,7 @@ namespace thermion_filament // (where bindMatrix is the inverse of the inverseBindMatrix). // // The only requirement is that parent bone transforms are reset before child bone transforms. - // glTF/Filament does not guarantee that parent bones are listed before child bones under a FilamentInstance. + // glTF/Filament does not guarantee that parent bones are listed before child bones under a FilamentInstance. // We ensure that parents are reset before children by: // - pushing all bones onto a stack // - iterate over the stack @@ -891,16 +953,16 @@ namespace thermion_filament // - pop the bone, reset its transform and mark it as completed for (int skinIndex = 0; skinIndex < skinCount; skinIndex++) { - std::unordered_set joints; - std::unordered_set completed; + std::unordered_set joints; + std::unordered_set completed; std::stack stack; auto transforms = getBoneRestTranforms(entityId, skinIndex); - + for (int i = 0; i < instance->getJointCountAt(skinIndex); i++) { auto restTransform = transforms->at(i); - const auto& joint = instance->getJointsAt(skinIndex)[i]; + const auto &joint = instance->getJointsAt(skinIndex)[i]; auto transformInstance = transformManager.getInstance(joint); transformManager.setTransform(transformInstance, restTransform); } @@ -908,7 +970,8 @@ namespace thermion_filament instance->getAnimator()->updateBoneMatrices(); } - std::unique_ptr> SceneManager::getBoneRestTranforms(EntityId entityId, int skinIndex) { + std::unique_ptr> SceneManager::getBoneRestTranforms(EntityId entityId, int skinIndex) + { auto transforms = std::make_unique>(); @@ -933,12 +996,12 @@ namespace thermion_filament transforms->resize(instance->getJointCountAt(skinIndex)); // - // To reset the skeleton to its rest pose, we could just call animator->resetBoneMatrices(), - // which sets all bone matrices to the identity matrix. However, any subsequent calls to animator->updateBoneMatrices() - // may result in unexpected poses, because that method uses each bone's transform to calculate + // To reset the skeleton to its rest pose, we could just call animator->resetBoneMatrices(), + // which sets all bone matrices to the identity matrix. However, any subsequent calls to animator->updateBoneMatrices() + // may result in unexpected poses, because that method uses each bone's transform to calculate // the bone matrices (and resetBoneMatrices does not affect this transform). // To "fully" reset the bone, we need to set its local transform (i.e. relative to its parent) - // to its original orientation in rest pose. + // to its original orientation in rest pose. // // This can be calculated as: // @@ -947,7 +1010,7 @@ namespace thermion_filament // (where bindMatrix is the inverse of the inverseBindMatrix). // // The only requirement is that parent bone transforms are reset before child bone transforms. - // glTF/Filament does not guarantee that parent bones are listed before child bones under a FilamentInstance. + // glTF/Filament does not guarantee that parent bones are listed before child bones under a FilamentInstance. // We ensure that parents are reset before children by: // - pushing all bones onto a stack // - iterate over the stack @@ -958,22 +1021,23 @@ namespace thermion_filament // - otherwise // - pop the bone, reset its transform and mark it as completed std::vector joints; - std::unordered_set completed; + std::unordered_set completed; std::stack stack; - + for (int i = 0; i < instance->getJointCountAt(skinIndex); i++) { - const auto& joint = instance->getJointsAt(skinIndex)[i]; + const auto &joint = instance->getJointsAt(skinIndex)[i]; joints.push_back(joint); stack.push(joint); } - while(!stack.empty()) + while (!stack.empty()) { - const auto& joint = stack.top(); + const auto &joint = stack.top(); // if we've already handled this node previously (e.g. when we encountered it as a parent), then skip - if(completed.find(joint) != completed.end()) { + if (completed.find(joint) != completed.end()) + { stack.pop(); continue; } @@ -981,23 +1045,25 @@ namespace thermion_filament const auto transformInstance = transformManager.getInstance(joint); auto parent = transformManager.getParent(transformInstance); - // we need to handle parent joints before handling their children - // therefore, if this joint has a parent that hasn't been handled yet, + // we need to handle parent joints before handling their children + // therefore, if this joint has a parent that hasn't been handled yet, // push the parent to the top of the stack and start the loop again - const auto& jointIter = std::find(joints.begin(), joints.end(), joint); + const auto &jointIter = std::find(joints.begin(), joints.end(), joint); auto parentIter = std::find(joints.begin(), joints.end(), parent); - if(parentIter != joints.end() && completed.find(parent) == completed.end()) { + if (parentIter != joints.end() && completed.find(parent) == completed.end()) + { stack.push(parent); continue; } - - // otherwise let's get the inverse bind matrix for the joint + + // otherwise let's get the inverse bind matrix for the joint math::mat4f inverseBindMatrix; bool found = false; for (int i = 0; i < instance->getJointCountAt(skinIndex); i++) { - if(instance->getJointsAt(skinIndex)[i] == joint) { + if (instance->getJointsAt(skinIndex)[i] == joint) + { inverseBindMatrix = instance->getInverseBindMatricesAt(skinIndex)[i]; found = true; break; @@ -1007,7 +1073,8 @@ namespace thermion_filament // now we need to ascend back up the hierarchy to calculate the modelSpaceTransform math::mat4f modelSpaceTransform; - while(parentIter != joints.end()) { + while (parentIter != joints.end()) + { const auto transformInstance = transformManager.getInstance(parent); const auto parentIndex = distance(joints.begin(), parentIter); const auto transform = transforms->at(parentIndex); @@ -1016,9 +1083,9 @@ namespace thermion_filament parentIter = std::find(joints.begin(), joints.end(), parent); } - const auto bindMatrix = inverse(inverseBindMatrix); - - const auto inverseModelSpaceTransform = inverse(modelSpaceTransform); + const auto bindMatrix = inverse(inverseBindMatrix); + + const auto inverseModelSpaceTransform = inverse(modelSpaceTransform); const auto jointIndex = distance(joints.begin(), jointIter); transforms->at(jointIndex) = inverseModelSpaceTransform * bindMatrix; @@ -1028,7 +1095,8 @@ namespace thermion_filament return transforms; } - bool SceneManager::updateBoneMatrices(EntityId entityId) { + bool SceneManager::updateBoneMatrices(EntityId entityId) + { auto *instance = getInstanceByEntityId(entityId); if (!instance) { @@ -1046,11 +1114,13 @@ namespace thermion_filament return true; } - bool SceneManager::setTransform(EntityId entityId, math::mat4f transform) { - auto& tm = _engine->getTransformManager(); - const auto& entity = Entity::import(entityId); + bool SceneManager::setTransform(EntityId entityId, math::mat4f transform) + { + auto &tm = _engine->getTransformManager(); + const auto &entity = Entity::import(entityId); auto transformInstance = tm.getInstance(entity); - if(!transformInstance) { + if (!transformInstance) + { return false; } tm.setTransform(transformInstance, transform); @@ -1059,11 +1129,11 @@ namespace thermion_filament bool SceneManager::addBoneAnimation(EntityId parentEntity, int skinIndex, - int boneIndex, + int boneIndex, const float *const frameData, int numFrames, float frameLengthInMs, - float fadeOutInSecs, + float fadeOutInSecs, float fadeInInSecs, float maxDelta) { @@ -1122,7 +1192,8 @@ namespace thermion_filament animation.fadeInInSecs = fadeInInSecs; animation.maxDelta = maxDelta; animation.skinIndex = skinIndex; - if(!_animationComponentManager->hasComponent(instance->getRoot())) { + if (!_animationComponentManager->hasComponent(instance->getRoot())) + { Log("ERROR: specified entity is not animatable (has no animation component attached)."); return false; } @@ -1135,7 +1206,7 @@ namespace thermion_filament return true; } - + void SceneManager::playAnimation(EntityId entityId, int index, bool loop, bool reverse, bool replaceActive, float crossfade, float startOffset) { std::lock_guard lock(_mutex); @@ -1160,7 +1231,7 @@ namespace thermion_filament } } - if (!_animationComponentManager->hasComponent(instance->getRoot())) + if (!_animationComponentManager->hasComponent(instance->getRoot())) { Log("ERROR: specified entity is not animatable (has no animation component attached)."); return; @@ -1210,13 +1281,16 @@ namespace thermion_filament bool found = false; // don't play the animation if it's already running - for(int i=0; i < animationComponent.gltfAnimations.size(); i++) { - if(animationComponent.gltfAnimations[i].index == index) { + for (int i = 0; i < animationComponent.gltfAnimations.size(); i++) + { + if (animationComponent.gltfAnimations[i].index == index) + { found = true; break; } } - if(!found) { + if (!found) + { animationComponent.gltfAnimations.push_back(animation); } } @@ -1244,85 +1318,107 @@ namespace thermion_filament auto &animationComponent = _animationComponentManager->elementAt<0>(animationComponentInstance); auto erased = std::remove_if(animationComponent.gltfAnimations.begin(), - animationComponent.gltfAnimations.end(), - [=](GltfAnimation &anim) - { return anim.index == index; }); + animationComponent.gltfAnimations.end(), + [=](GltfAnimation &anim) + { return anim.index == index; }); animationComponent.gltfAnimations.erase(erased, animationComponent.gltfAnimations.end()); } - void SceneManager::loadTexture(EntityId entity, const char *resourcePath, int renderableIndex) + Texture *SceneManager::createTexture(const uint8_t *data, size_t length, const char *name) { + using namespace filament; - // const auto &pos = _instances.find(entity); - // if (pos == _instances.end()) - // { - // Log("ERROR: asset not found for entity."); - // return; - // } - // const auto *instance = pos->second; + // Create an input stream from the data + std::istringstream stream(std::string(reinterpret_cast(data), length)); - // Log("Loading texture at %s for renderableIndex %d", resourcePath, renderableIndex); + // Decode the image + image::LinearImage linearImage = image::ImageDecoder::decode(stream, name, image::ImageDecoder::ColorSpace::SRGB); - // string rp(resourcePath); + if (!linearImage.isValid()) + { + Log("Failed to decode image."); + return nullptr; + } - // if (asset.texture) - // { - // _engine->destroy(asset.texture); - // asset.texture = nullptr; - // } + uint32_t w = linearImage.getWidth(); + uint32_t h = linearImage.getHeight(); + uint32_t channels = linearImage.getChannels(); - // ResourceBuffer imageResource = _resourceLoaderWrapper->load(rp.c_str()); + Texture::InternalFormat textureFormat = channels == 3 ? Texture::InternalFormat::RGB16F + : Texture::InternalFormat::RGBA16F; + Texture::Format bufferFormat = channels == 3 ? Texture::Format::RGB + : Texture::Format::RGBA; - // StreamBufferAdapter sb((char *)imageResource.data, (char *)imageResource.data + imageResource.size); + Texture *texture = Texture::Builder() + .width(w) + .height(h) + .levels(1) + .format(textureFormat) + .sampler(Texture::Sampler::SAMPLER_2D) + .build(*_engine); - // istream *inputStream = new std::istream(&sb); + if (!texture) + { + Log("Failed to create texture: "); + return nullptr; + } - // LinearImage *image = new LinearImage(ImageDecoder::decode( - // *inputStream, rp.c_str(), ImageDecoder::ColorSpace::SRGB)); + Texture::PixelBufferDescriptor buffer( + linearImage.getPixelRef(), + size_t(w * h * channels * sizeof(float)), + bufferFormat, + Texture::Type::FLOAT); - // if (!image->isValid()) - // { - // Log("Invalid image : %s", rp.c_str()); - // delete inputStream; - // _resourceLoaderWrapper->free(imageResource); - // return; - // } + texture->setImage(*_engine, 0, std::move(buffer)); - // uint32_t channels = image->getChannels(); - // uint32_t w = image->getWidth(); - // uint32_t h = image->getHeight(); - // asset.texture = Texture::Builder() - // .width(w) - // .height(h) - // .levels(0xff) - // .format(channels == 3 ? Texture::InternalFormat::RGB16F - // : Texture::InternalFormat::RGBA16F) - // .sampler(Texture::Sampler::SAMPLER_2D) - // .build(*_engine); + Log("Created texture: %s (%d x %d, %d channels)", name, w, h, channels); - // Texture::PixelBufferDescriptor::Callback freeCallback = [](void *buf, size_t, - // void *data) - // { - // delete reinterpret_cast(data); - // }; + _textures.insert(texture); - // Texture::PixelBufferDescriptor buffer( - // image->getPixelRef(), size_t(w * h * channels * sizeof(float)), - // channels == 3 ? Texture::Format::RGB : Texture::Format::RGBA, - // Texture::Type::FLOAT, freeCallback); + return texture; + } - // asset.texture->setImage(*_engine, 0, std::move(buffer)); - // MaterialInstance *const *inst = instance->getMaterialInstances(); - // size_t mic = instance->getMaterialInstanceCount(); - // Log("Material instance count : %d", mic); + bool SceneManager::applyTexture(EntityId entityId, Texture *texture, const char* parameterName, int materialIndex) + { + auto entity = Entity::import(entityId); - // auto sampler = TextureSampler(); - // inst[0]->setParameter("baseColorIndex", 0); - // inst[0]->setParameter("baseColorMap", asset.texture, sampler); - // delete inputStream; + if (entity.isNull()) + { + Log("Entity %d is null?", entityId); + return false; + } - // _resourceLoaderWrapper->free(imageResource); + RenderableManager &rm = _engine->getRenderableManager(); + + auto renderable = rm.getInstance(entity); + + if (!renderable.isValid()) + { + Log("Renderable not valid, was the entity id correct (%d)?", entityId); + return false; + } + + MaterialInstance *mi = rm.getMaterialInstanceAt(renderable, materialIndex); + + if (!mi) + { + Log("ERROR: material index must be less than number of material instances"); + return false; + } + + auto sampler = TextureSampler(); + mi->setParameter(parameterName, texture, sampler); + Log("Applied texture to entity %d", entityId); + return true; + } + + void SceneManager::destroyTexture(Texture* texture) { + if(_textures.find(texture) == _textures.end()) { + Log("Warning: couldn't find texture"); + } + _textures.erase(texture); + _engine->destroy(texture); } void SceneManager::setAnimationFrame(EntityId entityId, int animationIndex, int animationFrame) @@ -1391,7 +1487,7 @@ namespace thermion_filament unique_ptr> names = std::make_unique>(); const auto *instance = getInstanceByEntityId(assetEntityId); - + if (!instance) { auto asset = getAssetByEntityId(assetEntityId); @@ -1401,7 +1497,8 @@ namespace thermion_filament return names; } instance = asset->getInstance(); - if(!instance) { + if (!instance) + { Log("Warning - failed to find instance for specified asset. This is unexpected and probably indicates you are passing the wrong entity"); return names; } @@ -1415,7 +1512,7 @@ namespace thermion_filament for (int i = 0; i < asset->getEntityCount(); i++) { - + utils::Entity e = entities[i]; if (e == target) { @@ -1431,7 +1528,8 @@ namespace thermion_filament return names; } - unique_ptr> SceneManager::getBoneNames(EntityId assetEntityId, int skinIndex) { + unique_ptr> SceneManager::getBoneNames(EntityId assetEntityId, int skinIndex) + { unique_ptr> names = std::make_unique>(); @@ -1468,7 +1566,6 @@ namespace thermion_filament return names; } - void SceneManager::transformToUnitCube(EntityId entityId) { const auto *instance = getInstanceByEntityId(entityId); @@ -1496,7 +1593,8 @@ namespace thermion_filament tm.setTransform(tm.getInstance(instance->getRoot()), transform); } - EntityId SceneManager::getParent(EntityId childEntityId) { + EntityId SceneManager::getParent(EntityId childEntityId) + { auto &tm = _engine->getTransformManager(); const auto child = Entity::import(childEntityId); const auto &childInstance = tm.getInstance(child); @@ -1504,7 +1602,28 @@ namespace thermion_filament return Entity::smuggle(parent); } - void SceneManager::setParent(EntityId childEntityId, EntityId parentEntityId) + EntityId SceneManager::getAncestor(EntityId childEntityId) + { + auto &tm = _engine->getTransformManager(); + const auto child = Entity::import(childEntityId); + auto transformInstance = tm.getInstance(child); + Entity parent; + + while (true) + { + auto newParent = tm.getParent(transformInstance); + if (newParent.isNull()) + { + break; + } + parent = newParent; + transformInstance = tm.getInstance(parent); + } + + return Entity::smuggle(parent); + } + + void SceneManager::setParent(EntityId childEntityId, EntityId parentEntityId, bool preserveScaling) { auto &tm = _engine->getTransformManager(); const auto child = Entity::import(childEntityId); @@ -1512,6 +1631,42 @@ namespace thermion_filament const auto &parentInstance = tm.getInstance(parent); const auto &childInstance = tm.getInstance(child); + + if (!parentInstance.isValid()) + { + Log("Parent instance is not valid"); + return; + } + + if (!childInstance.isValid()) + { + Log("Child instance is not valid"); + return; + } + + if (preserveScaling) + { + auto parentTransform = tm.getWorldTransform(parentInstance); + math::float3 parentTranslation; + math::quatf parentRotation; + math::float3 parentScale; + + decomposeMatrix(parentTransform, &parentTranslation, &parentRotation, &parentScale); + + auto childTransform = tm.getTransform(childInstance); + math::float3 childTranslation; + math::quatf childRotation; + math::float3 childScale; + + decomposeMatrix(childTransform, &childTranslation, &childRotation, &childScale); + + childScale = childScale * (1 / parentScale); + + childTransform = composeMatrix(childTranslation, childRotation, childScale); + + tm.setTransform(childInstance, childTransform); + } + tm.setParent(childInstance, parentInstance); } @@ -1751,6 +1906,174 @@ namespace thermion_filament tm.setTransform(transformInstance, newTransform); } + void SceneManager::queueRelativePositionUpdateFromViewportVector(EntityId entityId, float viewportCoordX, float viewportCoordY) + { + // Get the camera and viewport + const auto &camera = _view->getCamera(); + const auto &vp = _view->getViewport(); + + // Convert viewport coordinates to NDC space + float ndcX = (2.0f * viewportCoordX) / vp.width - 1.0f; + float ndcY = 1.0f - (2.0f * viewportCoordY) / vp.height; + + // Get the current position of the entity + auto &tm = _engine->getTransformManager(); + auto entity = Entity::import(entityId); + auto transformInstance = tm.getInstance(entity); + auto currentTransform = tm.getTransform(transformInstance); + + // get entity model origin in camera space + auto entityPositionInCameraSpace = camera.getViewMatrix() * currentTransform * filament::math::float4{0.0f, 0.0f, 0.0f, 1.0f}; + // get entity model origin in clip space + auto entityPositionInClipSpace = camera.getProjectionMatrix() * entityPositionInCameraSpace; + auto entityPositionInNdcSpace = entityPositionInClipSpace / entityPositionInClipSpace.w; + + // Viewport coords in NDC space (use entity position in camera space Z to project onto near plane) + math::float4 ndcNearPlanePos = {ndcX, ndcY, -1.0f, 1.0f}; + math::float4 ndcFarPlanePos = {ndcX, ndcY, 0.99f, 1.0f}; + math::float4 ndcEntityPlanePos = {ndcX, ndcY, entityPositionInNdcSpace.z, 1.0f}; + + // Get viewport coords in clip space + math::float4 nearPlaneInClipSpace = Camera::inverseProjection(camera.getProjectionMatrix()) * ndcNearPlanePos; + auto nearPlaneInCameraSpace = nearPlaneInClipSpace / nearPlaneInClipSpace.w; + math::float4 farPlaneInClipSpace = Camera::inverseProjection(camera.getProjectionMatrix()) * ndcFarPlanePos; + auto farPlaneInCameraSpace = farPlaneInClipSpace / farPlaneInClipSpace.w; + math::float4 entityPlaneInClipSpace = Camera::inverseProjection(camera.getProjectionMatrix()) * ndcEntityPlanePos; + auto entityPlaneInCameraSpace = entityPlaneInClipSpace / entityPlaneInClipSpace.w; + auto entityPlaneInWorldSpace = camera.getModelMatrix() * entityPlaneInCameraSpace; + + // Queue the position update (as a relative movement) + queuePositionUpdate(entityId, entityPlaneInWorldSpace.x, entityPlaneInWorldSpace.y, entityPlaneInWorldSpace.z, false); + } + void SceneManager::queueRelativePositionUpdateWorldAxis(EntityId entity, float viewportCoordX, float viewportCoordY, float x, float y, float z) + { + auto worldAxis = math::float3{x, y, z}; + + // Get the camera + const auto &camera = _view->getCamera(); + const auto &vp = _view->getViewport(); + auto viewMatrix = camera.getViewMatrix(); + + math::float3 cameraPosition = camera.getPosition(); + math::float3 cameraForward = -viewMatrix.upperLeft()[2]; + + // Scale the viewport movement to NDC coordinates view axis + math::float2 viewportMovementNDC(viewportCoordX / (vp.width / 2), viewportCoordY / (vp.height / 2)); + + // calculate the translation axis in view space + math::float3 viewSpaceAxis = viewMatrix.upperLeft() * worldAxis; + + // Apply projection matrix to get clip space axis + math::float4 clipAxis = camera.getProjectionMatrix() * math::float4(viewSpaceAxis, 0.0f); + + // Perform perspective division to get the translation axis in normalized device coordinates (NDC) + math::float2 ndcAxis = (clipAxis.xyz / clipAxis.w).xy; + + const float epsilon = 1e-6f; + bool isAligned = false; + if (std::isnan(ndcAxis.x) || std::isnan(ndcAxis.y) || length(ndcAxis) < epsilon || std::abs(dot(normalize(worldAxis), cameraForward)) > 0.99f) + { + isAligned = true; + // Find a suitable perpendicular axis: + math::float3 perpendicularAxis; + if (std::abs(worldAxis.x) < epsilon && std::abs(worldAxis.z) < epsilon) + { + // If worldAxis is (0, y, 0), use (1, 0, 0) + perpendicularAxis = {1.0f, 0.0f, 0.0f}; + } + else + { + // Otherwise, calculate a perpendicular vector + perpendicularAxis = normalize(cross(cameraForward, worldAxis)); + } + + ndcAxis = (camera.getProjectionMatrix() * math::float4(viewMatrix.upperLeft() * perpendicularAxis, 0.0f)).xy; + + if (std::isnan(ndcAxis.x) || std::isnan(ndcAxis.y)) + { + return; + } + } + + // project the viewport movement (i.e pointer drag) vector onto the translation axis + // this gives the proportion of the pointer drag vector to translate along the translation axis + float projectedMovement = dot(viewportMovementNDC, normalize(ndcAxis)); + auto translationNDC = projectedMovement * normalize(ndcAxis); + + float dotProduct = dot(normalize(worldAxis), cameraForward); + + // Ensure minimum translation and correct direction + const float minTranslation = 0.01f; + if (isAligned || std::abs(projectedMovement) < minTranslation) + { + // Use the dominant component of the viewport movement + float dominantMovement = std::abs(viewportMovementNDC.x) > std::abs(viewportMovementNDC.y) ? viewportMovementNDC.x : viewportMovementNDC.y; + projectedMovement = (std::abs(dominantMovement) < minTranslation) ? minTranslation : std::abs(dominantMovement); + projectedMovement *= (dominantMovement >= 0) ? 1.0f : -1.0f; + translationNDC = projectedMovement * normalize(ndcAxis); + } + + // Log("projectedMovement %f dotProduct %f", projectedMovement, dotProduct); + + // Get the camera's field of view and aspect ratio + float fovY = camera.getFieldOfViewInDegrees(filament::Camera::Fov::VERTICAL); + float fovX = camera.getFieldOfViewInDegrees(filament::Camera::Fov::HORIZONTAL); + + // Convert to radians + fovY = (fovY / 180) * M_PI; + fovX = (fovX / 180) * M_PI; + + float aspectRatio = static_cast(vp.width) / vp.height; + + auto &transformManager = _engine->getTransformManager(); + auto transformInstance = transformManager.getInstance(Entity::import(entity)); + const auto &transform = transformManager.getWorldTransform(transformInstance); + + math::float3 translation; + math::quatf rotation; + math::float3 scale; + + decomposeMatrix(transform, &translation, &rotation, &scale); + + const auto entityWorldPosition = transform * math::float4{0.0f, 0.0f, 0.0f, 1.0f}; + + float distanceToCamera = length(entityWorldPosition.xyz - camera.getPosition()); + + // Calculate the height of the view frustum at the given distance + float frustumHeight = 2.0f * distanceToCamera * tan(fovY * 0.5f); + + // Calculate the width of the view frustum at the given distance + float frustumWidth = frustumHeight * aspectRatio; + + // Convert projected viewport movement to world space distance + float worldDistance = length(math::float2{(translationNDC / 2) * math::float2{frustumWidth, frustumHeight}}); + + // Determine the sign based on the alignment of world axis and camera forward + float sign = (dotProduct >= 0) ? -1.0f : 1.0f; + + // If aligned, use the sign of the projected movement instead + if (isAligned) + { + sign = (projectedMovement >= 0) ? 1.0f : -1.0f; + } + else if (projectedMovement < 0) + { + sign *= -1.0f; + } + + // Flip the sign for the Z-axis + if (std::abs(z) > 0.001) + { + sign *= -1.0f; + } + + worldDistance *= sign; + + auto newWorldTranslation = worldAxis * worldDistance; + + queuePositionUpdate(entity, newWorldTranslation.x, newWorldTranslation.y, newWorldTranslation.z, true); + } + void SceneManager::queuePositionUpdate(EntityId entity, float x, float y, float z, bool relative) { std::lock_guard lock(_mutex); @@ -2008,134 +2331,308 @@ namespace thermion_filament return; } rm.setPriority(renderableInstance, priority); - Log("Set instance renderable priority to %d", priority); } - EntityId SceneManager::addGizmo() + Aabb2 SceneManager::getBoundingBox(EntityId entityId) { - _gizmoMaterial = - Material::Builder() - .package(GIZMO_GIZMO_DATA, GIZMO_GIZMO_SIZE) - .build(*_engine); + const auto &camera = _view->getCamera(); + const auto &viewport = _view->getViewport(); - auto vertexCount = 9; + auto &tcm = _engine->getTransformManager(); + auto &rcm = _engine->getRenderableManager(); - float *vertices = new float[vertexCount * 3]{ - -0.05, 0.0f, 0.05f, - 0.05f, 0.0f, 0.05f, - 0.05f, 0.0f, -0.05f, - -0.05f, 0.0f, -0.05f, - -0.05f, 1.0f, 0.05f, - 0.05f, 1.0f, 0.05f, - 0.05f, 1.0f, -0.05f, - -0.05f, 1.0f, -0.05f, - 0.00f, 1.1f, 0.0f}; + // Get the projection and view matrices + math::mat4 projMatrix = camera.getProjectionMatrix(); + math::mat4 viewMatrix = camera.getViewMatrix(); + math::mat4 vpMatrix = projMatrix * viewMatrix; - VertexBuffer::BufferDescriptor::Callback vertexCallback = [](void *buf, size_t, - void *data) + auto entity = Entity::import(entityId); + + auto renderable = rcm.getInstance(entity); + auto worldTransform = tcm.getWorldTransform(tcm.getInstance(entity)); + + // Get the axis-aligned bounding box in model space + Box aabb = rcm.getAxisAlignedBoundingBox(renderable); + + auto min = aabb.getMin(); + auto max = aabb.getMax(); + + // Transform the 8 corners of the AABB to clip space + std::array corners = { + worldTransform * math::float4(min.x, min.y, min.z, 1.0f), + worldTransform * math::float4(max.x, min.y, min.z, 1.0f), + worldTransform * math::float4(min.x, max.y, min.z, 1.0f), + worldTransform * math::float4(max.x, max.y, min.z, 1.0f), + worldTransform * math::float4(min.x, min.y, max.z, 1.0f), + worldTransform * math::float4(max.x, min.y, max.z, 1.0f), + worldTransform * math::float4(min.x, max.y, max.z, 1.0f), + worldTransform * math::float4(max.x, max.y, max.z, 1.0f)}; + + // Project corners to clip space and convert to viewport space + float minX = std::numeric_limits::max(); + float minY = std::numeric_limits::max(); + float maxX = std::numeric_limits::lowest(); + float maxY = std::numeric_limits::lowest(); + + for (const auto &corner : corners) { - free((void *)buf); - }; - auto indexCount = 42; - uint16_t *indices = new uint16_t[indexCount]{ - // bottom quad - 0, 1, 2, - 0, 2, 3, - // top "cone" - 4, 5, 8, - 5, 6, 8, - 4, 7, 8, - 6, 7, 8, - // front - 0, 1, 4, - 1, 5, 4, - // right - 1, 2, 5, - 2, 6, 5, - // back - 2, 6, 7, - 7, 3, 2, - // left - 0, 4, 7, - 7, 3, 0 + math::float4 clipSpace = vpMatrix * corner; - }; + // Check if the point is behind the camera + if (clipSpace.w <= 0) + { + continue; // Skip this point + } - IndexBuffer::BufferDescriptor::Callback indexCallback = [](void *buf, size_t, - void *data) - { - free((void *)buf); - }; + // Perform perspective division + math::float3 ndcSpace = clipSpace.xyz / clipSpace.w; - auto vb = VertexBuffer::Builder() - .vertexCount(vertexCount) - .bufferCount(1) - .attribute( - VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3) - .build(*_engine); + // Clamp NDC coordinates to [-1, 1] range + ndcSpace.x = std::max(-1.0f, std::min(1.0f, ndcSpace.x)); + ndcSpace.y = std::max(-1.0f, std::min(1.0f, ndcSpace.y)); - vb->setBufferAt( - *_engine, - 0, - VertexBuffer::BufferDescriptor(vertices, vb->getVertexCount() * sizeof(filament::math::float3), 0, vertexCallback)); + // Convert NDC to viewport space + float viewportX = (ndcSpace.x * 0.5f + 0.5f) * viewport.width; + float viewportY = (1.0f - (ndcSpace.y * 0.5f + 0.5f)) * viewport.height; // Flip Y-axis - auto ib = IndexBuffer::Builder().indexCount(indexCount).bufferType(IndexBuffer::IndexType::USHORT).build(*_engine); - ib->setBuffer(*_engine, IndexBuffer::BufferDescriptor(indices, ib->getIndexCount() * sizeof(uint16_t), 0, indexCallback)); + minX = std::min(minX, viewportX); + minY = std::min(minY, viewportY); + maxX = std::max(maxX, viewportX); + maxY = std::max(maxY, viewportY); + } - auto &entityManager = EntityManager::get(); - - _gizmo[1] = entityManager.create(); - _gizmoMaterialInstances[1] = _gizmoMaterial->createInstance(); - _gizmoMaterialInstances[1]->setParameter("color", math::float3{1.0f, 0.0f, 0.0f}); - RenderableManager::Builder(1) - .boundingBox({{}, {1.0f, 1.0f, 1.0f}}) - .material(0, _gizmoMaterialInstances[1]) - .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vb, - ib, 0, indexCount) - .culling(false) - .build(*_engine, _gizmo[1]); - - _gizmo[0] = entityManager.create(); - _gizmoMaterialInstances[0] = _gizmoMaterial->createInstance(); - _gizmoMaterialInstances[0]->setParameter("color", math::float3{0.0f, 1.0f, 0.0f}); - auto xTransform = math::mat4f::translation(math::float3{0.0f, 0.05f, -0.05f}) * math::mat4f::rotation(-math::F_PI_2, math::float3{0, 0, 1}); - auto *instanceBufferX = InstanceBuffer::Builder(1).localTransforms(&xTransform).build(*_engine); - RenderableManager::Builder(1) - .boundingBox({{}, {1.0f, 1.0f, 1.0f}}) - .instances(1, instanceBufferX) - .material(0, _gizmoMaterialInstances[0]) - .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vb, - ib, 0, indexCount) - .culling(false) - .build(*_engine, _gizmo[0]); - - _gizmo[2] = entityManager.create(); - _gizmoMaterialInstances[2] = _gizmoMaterial->createInstance(); - _gizmoMaterialInstances[2]->setParameter("color", math::float3{0.0f, 0.0f, 1.0f}); - auto zTransform = math::mat4f::translation(math::float3{0.0f, 0.05f, -0.05f}) * math::mat4f::rotation(3 * math::F_PI_2, math::float3{1, 0, 0}); - auto *instanceBufferZ = InstanceBuffer::Builder(1).localTransforms(&zTransform).build(*_engine); - RenderableManager::Builder(1) - .boundingBox({{}, {1.0f, 1.0f, 1.0f}}) - .instances(1, instanceBufferZ) - .material(0, _gizmoMaterialInstances[2]) - .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vb, - ib, 0, indexCount) - .culling(false) - .build(*_engine, _gizmo[2]); - - auto &rm = _engine->getRenderableManager(); - rm.setPriority(rm.getInstance(_gizmo[0]), 7); - rm.setPriority(rm.getInstance(_gizmo[1]), 7); - rm.setPriority(rm.getInstance(_gizmo[2]), 7); - return Entity::smuggle(_gizmo[0]); + return Aabb2{minX, minY, maxX, maxY}; } - void SceneManager::getGizmo(EntityId *out) + void SceneManager::setLayerVisibility(LAYERS layer, bool enabled) { - out[0] = Entity::smuggle(_gizmo[0]); - out[1] = Entity::smuggle(_gizmo[1]); - out[2] = Entity::smuggle(_gizmo[2]); + _view->setLayerEnabled(layer, enabled); } + void SceneManager::removeStencilHighlight(EntityId entityId) + { + std::lock_guard lock(_stencilMutex); + auto found = _highlighted.find(entityId); + if (found == _highlighted.end()) + { + Log("Entity %d has no stencil highlight, skipping removal", entityId); + return; + } + Log("Erasing entity id %d from highlighted", entityId); + + _highlighted.erase(entityId); + } + + void SceneManager::setStencilHighlight(EntityId entityId, float r, float g, float b) + { + + std::lock_guard lock(_stencilMutex); + + auto highlightEntity = std::make_unique(entityId, this, _engine, r, g, b); + + if (highlightEntity->isValid()) + { + _highlighted.emplace(entityId, std::move(highlightEntity)); + } + } + +EntityId SceneManager::createGeometry( + float *vertices, + uint32_t numVertices, + float *normals, + uint32_t numNormals, + float *uvs, + uint32_t numUvs, + uint16_t *indices, + uint32_t numIndices, + filament::RenderableManager::PrimitiveType primitiveType, + filament::MaterialInstance* materialInstance, + bool keepData) +{ + auto geometry = std::make_unique(vertices, numVertices, normals, numNormals, uvs, numUvs, indices, numIndices, primitiveType, _engine); + + auto entity = utils::EntityManager::get().create(); + RenderableManager::Builder builder(1); + + builder.boundingBox(geometry->getBoundingBox()) + .geometry(0, primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, numIndices) + .culling(true) + .receiveShadows(true) + .castShadows(true); + + filament::Material *mat = nullptr; + + if (!materialInstance) { + Log("Using default ubershader material"); + filament::gltfio::MaterialKey config; + + memset(&config, 0, sizeof(config)); // Initialize all bits to zero + + config.unlit = false; + config.doubleSided = false; + config.useSpecularGlossiness = false; + config.alphaMode = filament::gltfio::AlphaMode::OPAQUE; + config.hasBaseColorTexture = numUvs > 0; + config.hasClearCoat = false; + config.hasClearCoatNormalTexture = false; + config.hasClearCoatRoughnessTexture = false; + config.hasEmissiveTexture = false; + config.hasIOR = false; + config.hasMetallicRoughnessTexture = false; + config.hasNormalTexture = false; + config.hasOcclusionTexture = false; + config.hasSheen = false; + config.hasSheenColorTexture = false; + config.hasSheenRoughnessTexture = false; + config.hasSpecularGlossinessTexture = false; + config.hasTextureTransforms = false; + config.hasTransmission = false; + config.hasTransmissionTexture = false; + config.hasVolume = false; + config.hasVolumeThicknessTexture = false; + config.baseColorUV = 0; + config.hasVertexColors = false; + config.hasVolume = false; + + materialInstance = createUbershaderMaterialInstance(config); + + if(!materialInstance) { + Log("Failed to create material instance"); + return Entity::smuggle(Entity()); + } + } + + // Set up texture and sampler if UVs are available + if (uvs != nullptr && numUvs > 0) + { + // Create a default white texture + static constexpr uint32_t textureSize = 1; + static constexpr uint32_t white = 0x00ffffff; + Texture* texture = Texture::Builder() + .width(textureSize) + .height(textureSize) + .levels(1) + .format(Texture::InternalFormat::RGBA8) + .build(*_engine); + + _textures.insert(texture); + + filament::backend::PixelBufferDescriptor pbd(&white, 4, Texture::Format::RGBA, Texture::Type::UBYTE); + texture->setImage(*_engine, 0, std::move(pbd)); + + // Create a sampler + TextureSampler sampler(TextureSampler::MinFilter::LINEAR, TextureSampler::MagFilter::LINEAR); + + // Set the texture and sampler to the material instance + materialInstance->setParameter("baseColorMap", texture, sampler); + } + + builder.material(0, materialInstance); + builder.build(*_engine, entity); + + _scene->addEntity(entity); + + auto entityId = Entity::smuggle(entity); + + _geometry.emplace(entityId, std::move(geometry)); + + return entityId; +} + + MaterialInstance* SceneManager::getMaterialInstanceAt(EntityId entityId, int materialIndex) { + auto entity = Entity::import(entityId); + const auto &rm = _engine->getRenderableManager(); + auto renderableInstance = rm.getInstance(entity); + if (!renderableInstance.isValid()) + { + Log("Error retrieving material instance: no renderable found for entity %d"); + return std::nullptr_t(); + } + return rm.getMaterialInstanceAt(renderableInstance, materialIndex); + } + + void SceneManager::setMaterialProperty(EntityId entityId, int materialIndex, const char *property, float value) + { + auto entity = Entity::import(entityId); + const auto &rm = _engine->getRenderableManager(); + auto renderableInstance = rm.getInstance(entity); + if (!renderableInstance.isValid()) + { + Log("Error setting material property for entity %d: no renderable"); + return; + } + auto materialInstance = rm.getMaterialInstanceAt(renderableInstance, materialIndex); + + if (!materialInstance->getMaterial()->hasParameter(property)) + { + Log("Parameter %s not found", property); + return; + } + materialInstance->setParameter(property, value); + } + + void SceneManager::setMaterialProperty(EntityId entityId, int materialIndex, const char *property, int32_t value) + { + auto entity = Entity::import(entityId); + const auto &rm = _engine->getRenderableManager(); + auto renderableInstance = rm.getInstance(entity); + if (!renderableInstance.isValid()) + { + Log("Error setting material property for entity %d: no renderable"); + return; + } + auto materialInstance = rm.getMaterialInstanceAt(renderableInstance, materialIndex); + + if (!materialInstance->getMaterial()->hasParameter(property)) + { + Log("Parameter %s not found", property); + return; + } + materialInstance->setParameter(property, value); + } + + void SceneManager::setMaterialProperty(EntityId entityId, int materialIndex, const char *property, filament::math::float4& value) + { + auto entity = Entity::import(entityId); + const auto &rm = _engine->getRenderableManager(); + auto renderableInstance = rm.getInstance(entity); + if (!renderableInstance.isValid()) + { + Log("Error setting material property for entity %d: no renderable"); + return; + } + auto materialInstance = rm.getMaterialInstanceAt(renderableInstance, materialIndex); + + if (!materialInstance->getMaterial()->hasParameter(property)) + { + Log("Parameter %s not found", property); + return; + } + materialInstance->setParameter(property, filament::math::float4 { value.x, value.y, value.z, value.w }); + } + + void SceneManager::destroy(MaterialInstance* instance) { + _engine->destroy(instance); + } + + MaterialInstance* SceneManager::createUbershaderMaterialInstance(filament::gltfio::MaterialKey config) { + filament::gltfio::UvMap uvmap {}; + auto * materialInstance = _ubershaderProvider->createMaterialInstance(&config, &uvmap); + if(!materialInstance) { + Log("Invalid material configuration"); + return nullptr; + } + materialInstance->setParameter("baseColorFactor", RgbaType::sRGB, filament::math::float4{1.0f, 0.0f, 1.0f, 1.0f}); + materialInstance->setParameter("baseColorIndex", 0); + return materialInstance; + } + + MaterialInstance* SceneManager::createUnlitMaterialInstance() { + UvMap uvmap; + auto instance = _unlitMaterialProvider->createMaterialInstance(nullptr, &uvmap); + return instance; + } + + } // namespace thermion_filament diff --git a/thermion_dart/native/src/ThermionDartApi.cpp b/thermion_dart/native/src/ThermionDartApi.cpp index b72d0c25..234230b0 100644 --- a/thermion_dart/native/src/ThermionDartApi.cpp +++ b/thermion_dart/native/src/ThermionDartApi.cpp @@ -4,7 +4,6 @@ #endif #include "ResourceBuffer.hpp" - #include "FilamentViewer.hpp" #include "filament/LightManager.h" #include "Log.hpp" @@ -13,77 +12,106 @@ #include #include -using namespace thermion_filament; - #ifdef __EMSCRIPTEN__ #include #endif +using namespace thermion_filament; + extern "C" { #include "ThermionDartApi.h" - - EMSCRIPTEN_KEEPALIVE const void *create_filament_viewer(const void *context, const void *const loader, void *const platform, const char *uberArchivePath) + // Helper function to convert filament::math::mat4 to double4x4 + static double4x4 convert_mat4_to_double4x4(const filament::math::mat4 &mat) { - const auto * loaderImpl = new ResourceLoaderWrapperImpl((ResourceLoaderWrapper*)loader); - auto viewer = (const void *)new FilamentViewer(context, loaderImpl, platform, uberArchivePath); - return viewer; + return double4x4{ + {mat[0][0], mat[0][1], mat[0][2], mat[0][3]}, + {mat[1][0], mat[1][1], mat[1][2], mat[1][3]}, + {mat[2][0], mat[2][1], mat[2][2], mat[2][3]}, + {mat[3][0], mat[3][1], mat[3][2], mat[3][3]}, + }; } - EMSCRIPTEN_KEEPALIVE void create_render_target(const void *const viewer, intptr_t texture, uint32_t width, uint32_t height) + // Helper function to convert double4x4 to filament::math::mat4 + static filament::math::mat4 convert_double4x4_to_mat4(const double4x4 &d_mat) + { + return filament::math::mat4{ + filament::math::float4{float(d_mat.col1[0]), float(d_mat.col1[1]), float(d_mat.col1[2]), float(d_mat.col1[3])}, + filament::math::float4{float(d_mat.col2[0]), float(d_mat.col2[1]), float(d_mat.col2[2]), float(d_mat.col2[3])}, + filament::math::float4{float(d_mat.col3[0]), float(d_mat.col3[1]), float(d_mat.col3[2]), float(d_mat.col3[3])}, + filament::math::float4{float(d_mat.col4[0]), float(d_mat.col4[1]), float(d_mat.col4[2]), float(d_mat.col4[3])}}; + } + + EMSCRIPTEN_KEEPALIVE TViewer *create_filament_viewer(const void *context, const void *const loader, void *const platform, const char *uberArchivePath) + { + const auto *loaderImpl = new ResourceLoaderWrapperImpl((ResourceLoaderWrapper *)loader); + auto viewer = new FilamentViewer(context, loaderImpl, platform, uberArchivePath); + return reinterpret_cast(viewer); + } + + EMSCRIPTEN_KEEPALIVE TEngine *Viewer_getEngine(TViewer* viewer) { + auto* engine = reinterpret_cast(viewer)->getEngine(); + return reinterpret_cast(engine); + } + + EMSCRIPTEN_KEEPALIVE void create_render_target(TViewer *viewer, intptr_t texture, uint32_t width, uint32_t height) { ((FilamentViewer *)viewer)->createRenderTarget(texture, width, height); } - EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer(TViewer *viewer) { delete ((FilamentViewer *)viewer); } - EMSCRIPTEN_KEEPALIVE void set_background_color(const void *const viewer, const float r, const float g, const float b, const float a) + EMSCRIPTEN_KEEPALIVE void set_background_color(TViewer *viewer, const float r, const float g, const float b, const float a) { ((FilamentViewer *)viewer)->setBackgroundColor(r, g, b, a); } - EMSCRIPTEN_KEEPALIVE void clear_background_image(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void clear_background_image(TViewer *viewer) { ((FilamentViewer *)viewer)->clearBackgroundImage(); } - EMSCRIPTEN_KEEPALIVE void set_background_image(const void *const viewer, const char *path, bool fillHeight) + EMSCRIPTEN_KEEPALIVE void set_background_image(TViewer *viewer, const char *path, bool fillHeight) { ((FilamentViewer *)viewer)->setBackgroundImage(path, fillHeight); } - EMSCRIPTEN_KEEPALIVE void set_background_image_position(const void *const viewer, float x, float y, bool clamp) + EMSCRIPTEN_KEEPALIVE void set_background_image_position(TViewer *viewer, float x, float y, bool clamp) { ((FilamentViewer *)viewer)->setBackgroundImagePosition(x, y, clamp); } - EMSCRIPTEN_KEEPALIVE void set_tone_mapping(const void *const viewer, int toneMapping) + EMSCRIPTEN_KEEPALIVE void set_tone_mapping(TViewer *viewer, int toneMapping) { ((FilamentViewer *)viewer)->setToneMapping((ToneMapping)toneMapping); } - EMSCRIPTEN_KEEPALIVE void set_bloom(const void *const viewer, float strength) + EMSCRIPTEN_KEEPALIVE void set_bloom(TViewer *viewer, float strength) { - Log("Setting bloom to %f", strength); ((FilamentViewer *)viewer)->setBloom(strength); } - EMSCRIPTEN_KEEPALIVE void load_skybox(const void *const viewer, const char *skyboxPath) + EMSCRIPTEN_KEEPALIVE void load_skybox(TViewer *viewer, const char *skyboxPath) { ((FilamentViewer *)viewer)->loadSkybox(skyboxPath); } - EMSCRIPTEN_KEEPALIVE void load_ibl(const void *const viewer, const char *iblPath, float intensity) + EMSCRIPTEN_KEEPALIVE void create_ibl(TViewer *viewer, float r, float g, float b, float intensity) + { + ((FilamentViewer *)viewer)->createIbl(r, g, b, intensity); + } + + EMSCRIPTEN_KEEPALIVE void load_ibl(TViewer *viewer, const char *iblPath, float intensity) { ((FilamentViewer *)viewer)->loadIbl(iblPath, intensity); } - EMSCRIPTEN_KEEPALIVE void rotate_ibl(const void *const viewer, float *rotationMatrix) + EMSCRIPTEN_KEEPALIVE void rotate_ibl(TViewer *viewer, float *rotationMatrix) { math::mat3f matrix(rotationMatrix[0], rotationMatrix[1], rotationMatrix[2], @@ -97,27 +125,27 @@ extern "C" ((FilamentViewer *)viewer)->rotateIbl(matrix); } - EMSCRIPTEN_KEEPALIVE void remove_skybox(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void remove_skybox(TViewer *viewer) { ((FilamentViewer *)viewer)->removeSkybox(); } - EMSCRIPTEN_KEEPALIVE void remove_ibl(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void remove_ibl(TViewer *viewer) { ((FilamentViewer *)viewer)->removeIbl(); } - EntityId add_light( - const void *const viewer, - uint8_t type, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, + EMSCRIPTEN_KEEPALIVE EntityId add_light( + TViewer *viewer, + uint8_t type, + float colour, + float intensity, + float posX, + float posY, + float posZ, + float dirX, + float dirY, + float dirZ, float falloffRadius, float spotLightConeInner, float spotLightConeOuter, @@ -126,43 +154,37 @@ extern "C" float sunHaloFallof, bool shadows) { - return ((FilamentViewer *)viewer)->addLight( - (LightManager::Type)type, - colour, - intensity, - posX, - posY, - posZ, - dirX, - dirY, - dirZ, - falloffRadius, - spotLightConeInner, - spotLightConeOuter, - sunAngularRadius, - sunHaloSize, - sunHaloFallof, - shadows); + return ((FilamentViewer *)viewer)->addLight((LightManager::Type)type, colour, intensity, posX, posY, posZ, dirX, dirY, dirZ, falloffRadius, spotLightConeInner, spotLightConeOuter, sunAngularRadius, sunHaloSize, sunHaloFallof, shadows); } - EMSCRIPTEN_KEEPALIVE void remove_light(const void *const viewer, int32_t entityId) + EMSCRIPTEN_KEEPALIVE void set_light_position(TViewer *viewer, int32_t entityId, float x, float y, float z) + { + ((FilamentViewer *)viewer)->setLightPosition(entityId, x, y, z); + } + + EMSCRIPTEN_KEEPALIVE void set_light_direction(TViewer *viewer, int32_t entityId, float x, float y, float z) + { + ((FilamentViewer *)viewer)->setLightDirection(entityId, x, y, z); + } + + EMSCRIPTEN_KEEPALIVE void remove_light(TViewer *viewer, int32_t entityId) { ((FilamentViewer *)viewer)->removeLight(entityId); } - EMSCRIPTEN_KEEPALIVE void clear_lights(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void clear_lights(TViewer *viewer) { ((FilamentViewer *)viewer)->clearLights(); } - EMSCRIPTEN_KEEPALIVE EntityId load_glb(void *sceneManager, const char *assetPath, int numInstances) + EMSCRIPTEN_KEEPALIVE EntityId load_glb(void *sceneManager, const char *assetPath, int numInstances, bool keepData) { - return ((SceneManager *)sceneManager)->loadGlb(assetPath, numInstances); + return ((SceneManager *)sceneManager)->loadGlb(assetPath, numInstances, keepData); } - EMSCRIPTEN_KEEPALIVE EntityId load_glb_from_buffer(void *sceneManager, const void *const data, size_t length) + EMSCRIPTEN_KEEPALIVE EntityId load_glb_from_buffer(void *sceneManager, const void *const data, size_t length, bool keepData, int priority, int layer) { - return ((SceneManager *)sceneManager)->loadGlbFromBuffer((const uint8_t *)data, length); + return ((SceneManager *)sceneManager)->loadGlbFromBuffer((const uint8_t *)data, length, 1, keepData, priority, layer); } EMSCRIPTEN_KEEPALIVE EntityId create_instance(void *sceneManager, EntityId entityId) @@ -180,86 +202,104 @@ extern "C" return ((SceneManager *)sceneManager)->getInstances(entityId, out); } - EMSCRIPTEN_KEEPALIVE EntityId load_gltf(void *sceneManager, const char *assetPath, const char *relativePath) + EMSCRIPTEN_KEEPALIVE EntityId load_gltf(void *sceneManager, const char *assetPath, const char *relativePath, bool keepData) { - return ((SceneManager *)sceneManager)->loadGltf(assetPath, relativePath); + return ((SceneManager *)sceneManager)->loadGltf(assetPath, relativePath, keepData); } - EMSCRIPTEN_KEEPALIVE void set_main_camera(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void set_main_camera(TViewer *viewer) { return ((FilamentViewer *)viewer)->setMainCamera(); } - EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(const void *const viewer) + EMSCRIPTEN_KEEPALIVE EntityId get_main_camera(TViewer *viewer) { return ((FilamentViewer *)viewer)->getMainCamera(); } - EMSCRIPTEN_KEEPALIVE bool set_camera(const void *const viewer, EntityId asset, const char *nodeName) + EMSCRIPTEN_KEEPALIVE bool set_camera(TViewer *viewer, EntityId asset, const char *nodeName) { return ((FilamentViewer *)viewer)->setCamera(asset, nodeName); } - EMSCRIPTEN_KEEPALIVE void set_camera_fov(const void *const viewer, float fovInDegrees, float aspect) + EMSCRIPTEN_KEEPALIVE float get_camera_fov(TCamera *camera, bool horizontal) { - return ((FilamentViewer *)viewer)->setCameraFov(double(fovInDegrees), double(aspect)); + auto cam = reinterpret_cast(camera); + return cam->getFieldOfViewInDegrees(horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL); } - const double *const get_camera_model_matrix(const void *const viewer) + EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(TCamera *const camera) { - const auto &modelMatrix = ((FilamentViewer *)viewer)->getCameraModelMatrix(); - double *array = (double *)calloc(16, sizeof(double)); - memcpy(array, modelMatrix.asArray(), 16 * sizeof(double)); - return array; + auto cam = reinterpret_cast(camera); + return cam->getFocalLength(); } - const double *const get_camera_view_matrix(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal) { - const auto &matrix = ((FilamentViewer *)viewer)->getCameraViewMatrix(); - double *array = (double *)calloc(16, sizeof(double)); - memcpy(array, matrix.asArray(), 16 * sizeof(double)); - return array; + auto cam = reinterpret_cast(camera); + cam->setProjection(fovInDegrees, aspect, near, far, horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL); } - const double *const get_camera_projection_matrix(const void *const viewer) + EMSCRIPTEN_KEEPALIVE TCamera *get_camera(TViewer *viewer, EntityId entity) { - const auto &matrix = ((FilamentViewer *)viewer)->getCameraProjectionMatrix(); - double *array = (double *)calloc(16, sizeof(double)); - memcpy(array, matrix.asArray(), 16 * sizeof(double)); - return array; + auto filamentCamera = ((FilamentViewer *)viewer)->getCamera(entity); + return reinterpret_cast(filamentCamera); } - const double *const get_camera_culling_projection_matrix(const void *const viewer) + double4x4 get_camera_model_matrix(TCamera *camera) { - const auto &matrix = ((FilamentViewer *)viewer)->getCameraCullingProjectionMatrix(); - double *array = (double *)calloc(16, sizeof(double)); - memcpy(array, matrix.asArray(), 16 * sizeof(double)); - return array; + const auto &mat = reinterpret_cast(camera)->getModelMatrix(); + return convert_mat4_to_double4x4(mat); } - void set_camera_projection_matrix(const void *const viewer, const double *const matrix, double near, double far) + double4x4 get_camera_view_matrix(TCamera *camera) { - ((FilamentViewer *)viewer)->setCameraProjectionMatrix(matrix, near, far); + const auto &mat = reinterpret_cast(camera)->getViewMatrix(); + return convert_mat4_to_double4x4(mat); } - void set_camera_culling(const void *const viewer, double near, double far) + double4x4 get_camera_projection_matrix(TCamera *camera) { - ((FilamentViewer *)viewer)->setCameraCulling(near, far); + const auto &mat = reinterpret_cast(camera)->getProjectionMatrix(); + return convert_mat4_to_double4x4(mat); } - double get_camera_culling_near(const void *const viewer) + double4x4 get_camera_culling_projection_matrix(TCamera *camera) { - return ((FilamentViewer *)viewer)->getCameraCullingNear(); + const auto &mat = reinterpret_cast(camera)->getCullingProjectionMatrix(); + return convert_mat4_to_double4x4(mat); } - double get_camera_culling_far(const void *const viewer) + void set_camera_projection_matrix(TCamera *camera, double4x4 matrix, double near, double far) { - return ((FilamentViewer *)viewer)->getCameraCullingFar(); + auto cam = reinterpret_cast(camera); + const auto &mat = convert_double4x4_to_mat4(matrix); + cam->setCustomProjection(mat, near, far); } - const double *const get_camera_frustum(const void *const viewer) + void set_camera_lens_projection(TCamera *camera, double near, double far, double aspect, double focalLength) { - const auto frustum = ((FilamentViewer *)viewer)->getCameraFrustum(); + auto cam = reinterpret_cast(camera); + cam->setLensProjection(focalLength, aspect, near, far); + } + + double get_camera_near(TCamera *camera) + { + auto cam = reinterpret_cast(camera); + return cam->getNear(); + } + + double get_camera_culling_far(TCamera *camera) + { + auto cam = reinterpret_cast(camera); + return cam->getCullingFar(); + } + + const double *const get_camera_frustum(TCamera *camera) + { + + const auto frustum = reinterpret_cast(camera)->getFrustum(); + const math::float4 *planes = frustum.getNormalizedPlanes(); double *array = (double *)calloc(24, sizeof(double)); for (int i = 0; i < 6; i++) @@ -274,121 +314,111 @@ extern "C" return array; } - EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(const void *const viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed) + EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(TViewer *viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed) { ((FilamentViewer *)viewer)->setCameraManipulatorOptions((filament::camutils::Mode)mode, orbitSpeedX, orbitSpeedY, zoomSpeed); } - EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(const void *const viewer, bool enabled) + EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(TViewer *viewer, bool enabled) { ((FilamentViewer *)viewer)->setViewFrustumCulling(enabled); } - EMSCRIPTEN_KEEPALIVE void move_camera_to_asset(const void *const viewer, EntityId asset) + EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(TCamera *camera, float distance) { - ((FilamentViewer *)viewer)->moveCameraToAsset(asset); + auto *cam = reinterpret_cast(camera); + cam->setFocusDistance(distance); } - EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(const void *const viewer, float distance) + EMSCRIPTEN_KEEPALIVE void set_camera_exposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity) { - ((FilamentViewer *)viewer)->setCameraFocusDistance(distance); + auto *cam = reinterpret_cast(camera); + cam->setExposure(aperture, shutterSpeed, sensitivity); } - EMSCRIPTEN_KEEPALIVE void set_camera_exposure(const void *const viewer, float aperture, float shutterSpeed, float sensitivity) + EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(TCamera *camera, double4x4 matrix) { - ((FilamentViewer *)viewer)->setCameraExposure(aperture, shutterSpeed, sensitivity); + auto *cam = reinterpret_cast(camera); + const filament::math::mat4 &mat = convert_double4x4_to_mat4(matrix); + cam->setModelMatrix(mat); } - EMSCRIPTEN_KEEPALIVE void set_camera_position(const void *const viewer, float x, float y, float z) - { - ((FilamentViewer *)viewer)->setCameraPosition(x, y, z); - } - - EMSCRIPTEN_KEEPALIVE void set_camera_rotation(const void *const viewer, float w, float x, float y, float z) - { - ((FilamentViewer *)viewer)->setCameraRotation(w, x, y, z); - } - - EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(const void *const viewer, const float *const matrix) - { - ((FilamentViewer *)viewer)->setCameraModelMatrix(matrix); - } - - EMSCRIPTEN_KEEPALIVE void set_camera_focal_length(const void *const viewer, float focalLength) - { - ((FilamentViewer *)viewer)->setCameraFocalLength(focalLength); - } - - EMSCRIPTEN_KEEPALIVE void render( - const void *const viewer, + EMSCRIPTEN_KEEPALIVE bool render( + TViewer *viewer, uint64_t frameTimeInNanos, void *pixelBuffer, void (*callback)(void *buf, size_t size, void *data), void *data) { - ((FilamentViewer *)viewer)->render(frameTimeInNanos, pixelBuffer, callback, data); + return ((FilamentViewer *)viewer)->render(frameTimeInNanos, pixelBuffer, callback, data); } EMSCRIPTEN_KEEPALIVE void capture( - const void *const viewer, - uint8_t *pixelBuffer, - void (*callback)(void)) { - ((FilamentViewer *)viewer)->capture(pixelBuffer, callback); - }; + TViewer *viewer, + uint8_t *pixelBuffer, + void (*callback)(void)) + { +#ifdef __EMSCRIPTEN__ + bool useFence = true; +#else + bool useFence = false; +#endif + ((FilamentViewer *)viewer)->capture(pixelBuffer, useFence, callback); + }; EMSCRIPTEN_KEEPALIVE void set_frame_interval( - const void *const viewer, + TViewer *viewer, float frameInterval) { ((FilamentViewer *)viewer)->setFrameInterval(frameInterval); } - EMSCRIPTEN_KEEPALIVE void destroy_swap_chain(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void destroy_swap_chain(TViewer *viewer) { ((FilamentViewer *)viewer)->destroySwapChain(); } - EMSCRIPTEN_KEEPALIVE void create_swap_chain(const void *const viewer, const void *const window, uint32_t width, uint32_t height) + EMSCRIPTEN_KEEPALIVE void create_swap_chain(TViewer *viewer, const void *const window, uint32_t width, uint32_t height) { ((FilamentViewer *)viewer)->createSwapChain(window, width, height); } - EMSCRIPTEN_KEEPALIVE void update_viewport_and_camera_projection(const void *const viewer, uint32_t width, uint32_t height, float scaleFactor) + EMSCRIPTEN_KEEPALIVE void update_viewport(TViewer *viewer, uint32_t width, uint32_t height) { - return ((FilamentViewer *)viewer)->updateViewportAndCameraProjection(width, height, scaleFactor); + return ((FilamentViewer *)viewer)->updateViewport(width, height); } - EMSCRIPTEN_KEEPALIVE void scroll_update(const void *const viewer, float x, float y, float delta) + EMSCRIPTEN_KEEPALIVE void scroll_update(TViewer *viewer, float x, float y, float delta) { ((FilamentViewer *)viewer)->scrollUpdate(x, y, delta); } - EMSCRIPTEN_KEEPALIVE void scroll_begin(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void scroll_begin(TViewer *viewer) { ((FilamentViewer *)viewer)->scrollBegin(); } - EMSCRIPTEN_KEEPALIVE void scroll_end(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void scroll_end(TViewer *viewer) { ((FilamentViewer *)viewer)->scrollEnd(); } - EMSCRIPTEN_KEEPALIVE void grab_begin(const void *const viewer, float x, float y, bool pan) + EMSCRIPTEN_KEEPALIVE void grab_begin(TViewer *viewer, float x, float y, bool pan) { ((FilamentViewer *)viewer)->grabBegin(x, y, pan); } - EMSCRIPTEN_KEEPALIVE void grab_update(const void *const viewer, float x, float y) + EMSCRIPTEN_KEEPALIVE void grab_update(TViewer *viewer, float x, float y) { ((FilamentViewer *)viewer)->grabUpdate(x, y); } - EMSCRIPTEN_KEEPALIVE void grab_end(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void grab_end(TViewer *viewer) { ((FilamentViewer *)viewer)->grabEnd(); } - EMSCRIPTEN_KEEPALIVE void *get_scene_manager(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void *get_scene_manager(TViewer *viewer) { return (void *)((FilamentViewer *)viewer)->getSceneManager(); } @@ -425,7 +455,8 @@ extern "C" return result; } - EMSCRIPTEN_KEEPALIVE void clear_morph_animation(void* sceneManager, EntityId asset) { + EMSCRIPTEN_KEEPALIVE void clear_morph_animation(void *sceneManager, EntityId asset) + { ((SceneManager *)sceneManager)->clearMorphAnimationBuffer(asset); } @@ -449,40 +480,42 @@ extern "C" ((SceneManager *)sceneManager)->addBoneAnimation(asset, skinIndex, boneIndex, frameData, numFrames, frameLengthInMs, fadeOutInSecs, fadeInInSecs, maxDelta); } - EMSCRIPTEN_KEEPALIVE void set_post_processing(void *const viewer, bool enabled) + EMSCRIPTEN_KEEPALIVE void set_post_processing(TViewer *viewer, bool enabled) { ((FilamentViewer *)viewer)->setPostProcessing(enabled); } - EMSCRIPTEN_KEEPALIVE void set_shadows_enabled(void *const viewer, bool enabled) + EMSCRIPTEN_KEEPALIVE void set_shadows_enabled(TViewer *viewer, bool enabled) { ((FilamentViewer *)viewer)->setShadowsEnabled(enabled); } - EMSCRIPTEN_KEEPALIVE void set_shadow_type(void *const viewer, int shadowType) + EMSCRIPTEN_KEEPALIVE void set_shadow_type(TViewer *viewer, int shadowType) { ((FilamentViewer *)viewer)->setShadowType((ShadowType)shadowType); } - EMSCRIPTEN_KEEPALIVE void set_soft_shadow_options(void *const viewer, float penumbraScale, float penumbraRatioScale) + EMSCRIPTEN_KEEPALIVE void set_soft_shadow_options(TViewer *viewer, float penumbraScale, float penumbraRatioScale) { ((FilamentViewer *)viewer)->setSoftShadowOptions(penumbraScale, penumbraRatioScale); } - EMSCRIPTEN_KEEPALIVE void set_antialiasing(void *const viewer, bool msaa, bool fxaa, bool taa) + EMSCRIPTEN_KEEPALIVE void set_antialiasing(TViewer *viewer, bool msaa, bool fxaa, bool taa) { ((FilamentViewer *)viewer)->setAntiAliasing(msaa, fxaa, taa); } EMSCRIPTEN_KEEPALIVE EntityId get_bone(void *sceneManager, - EntityId entityId, - int skinIndex, - int boneIndex) { - return ((SceneManager*)sceneManager)->getBone(entityId, skinIndex, boneIndex); + EntityId entityId, + int skinIndex, + int boneIndex) + { + return ((SceneManager *)sceneManager)->getBone(entityId, skinIndex, boneIndex); } EMSCRIPTEN_KEEPALIVE void get_world_transform(void *sceneManager, - EntityId entityId, float* const out) { - auto transform = ((SceneManager*)sceneManager)->getWorldTransform(entityId); + EntityId entityId, float *const out) + { + auto transform = ((SceneManager *)sceneManager)->getWorldTransform(entityId); out[0] = transform[0][0]; out[1] = transform[0][1]; out[2] = transform[0][2]; @@ -502,8 +535,9 @@ extern "C" } EMSCRIPTEN_KEEPALIVE void get_local_transform(void *sceneManager, - EntityId entityId, float* const out) { - auto transform = ((SceneManager*)sceneManager)->getLocalTransform(entityId); + EntityId entityId, float *const out) + { + auto transform = ((SceneManager *)sceneManager)->getLocalTransform(entityId); out[0] = transform[0][0]; out[1] = transform[0][1]; out[2] = transform[0][2]; @@ -523,26 +557,32 @@ extern "C" } EMSCRIPTEN_KEEPALIVE void get_rest_local_transforms(void *sceneManager, - EntityId entityId, int skinIndex, float* const out, int numBones) { - const auto transforms = ((SceneManager*)sceneManager)->getBoneRestTranforms(entityId, skinIndex); + EntityId entityId, int skinIndex, float *const out, int numBones) + { + const auto transforms = ((SceneManager *)sceneManager)->getBoneRestTranforms(entityId, skinIndex); auto numTransforms = transforms->size(); - if(numTransforms != numBones) { + if (numTransforms != numBones) + { Log("Error - %d bone transforms available but you only specified %d.", numTransforms, numBones); return; } - for(int boneIndex = 0; boneIndex < numTransforms; boneIndex++) { + for (int boneIndex = 0; boneIndex < numTransforms; boneIndex++) + { const auto transform = transforms->at(boneIndex); - for(int colNum = 0; colNum < 4; colNum++) { - for(int rowNum = 0; rowNum < 4; rowNum++) { + for (int colNum = 0; colNum < 4; colNum++) + { + for (int rowNum = 0; rowNum < 4; rowNum++) + { out[(boneIndex * 16) + (colNum * 4) + rowNum] = transform[colNum][rowNum]; } } - } + } } - + EMSCRIPTEN_KEEPALIVE void get_inverse_bind_matrix(void *sceneManager, - EntityId entityId, int skinIndex, int boneIndex, float* const out) { - auto transform = ((SceneManager*)sceneManager)->getInverseBindMatrix(entityId, skinIndex, boneIndex); + EntityId entityId, int skinIndex, int boneIndex, float *const out) + { + auto transform = ((SceneManager *)sceneManager)->getInverseBindMatrix(entityId, skinIndex, boneIndex); out[0] = transform[0][0]; out[1] = transform[0][1]; out[2] = transform[0][2]; @@ -632,21 +672,25 @@ extern "C" strcpy(outPtr, name.c_str()); } - EMSCRIPTEN_KEEPALIVE int get_bone_count(void *sceneManager, EntityId assetEntity, int skinIndex) { + EMSCRIPTEN_KEEPALIVE int get_bone_count(void *sceneManager, EntityId assetEntity, int skinIndex) + { auto names = ((SceneManager *)sceneManager)->getBoneNames(assetEntity, skinIndex); return names->size(); } - EMSCRIPTEN_KEEPALIVE void get_bone_names(void *sceneManager, EntityId assetEntity, const char** out, int skinIndex) { + EMSCRIPTEN_KEEPALIVE void get_bone_names(void *sceneManager, EntityId assetEntity, const char **out, int skinIndex) + { auto names = ((SceneManager *)sceneManager)->getBoneNames(assetEntity, skinIndex); - for(int i = 0; i < names->size(); i++) { + for (int i = 0; i < names->size(); i++) + { auto name_c = names->at(i).c_str(); - memcpy((void*)out[i], name_c, strlen(name_c) + 1); + memcpy((void *)out[i], name_c, strlen(name_c) + 1); } } - EMSCRIPTEN_KEEPALIVE bool set_transform(void* sceneManager, EntityId entityId, const float* const transform) { - auto matrix = math::mat4f( + EMSCRIPTEN_KEEPALIVE bool set_transform(void *sceneManager, EntityId entityId, const float *const transform) + { + auto matrix = math::mat4f( transform[0], transform[1], transform[2], transform[3], transform[4], @@ -661,11 +705,12 @@ extern "C" transform[13], transform[14], transform[15]); - return ((SceneManager*)sceneManager)->setTransform(entityId, matrix); + return ((SceneManager *)sceneManager)->setTransform(entityId, matrix); } - EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(void* sceneManager, EntityId entityId) { - return ((SceneManager*)sceneManager)->updateBoneMatrices(entityId); + EMSCRIPTEN_KEEPALIVE bool update_bone_matrices(void *sceneManager, EntityId entityId) + { + return ((SceneManager *)sceneManager)->updateBoneMatrices(entityId); } EMSCRIPTEN_KEEPALIVE int get_morph_target_name_count(void *sceneManager, EntityId assetEntity, EntityId childEntity) @@ -681,12 +726,12 @@ extern "C" strcpy(outPtr, name.c_str()); } - EMSCRIPTEN_KEEPALIVE void remove_entity(const void *const viewer, EntityId asset) + EMSCRIPTEN_KEEPALIVE void remove_entity(TViewer *viewer, EntityId asset) { ((FilamentViewer *)viewer)->removeEntity(asset); } - EMSCRIPTEN_KEEPALIVE void clear_entities(const void *const viewer) + EMSCRIPTEN_KEEPALIVE void clear_entities(TViewer *viewer) { ((FilamentViewer *)viewer)->clearEntities(); } @@ -721,11 +766,21 @@ extern "C" ((SceneManager *)sceneManager)->queuePositionUpdate(asset, x, y, z, relative); } + EMSCRIPTEN_KEEPALIVE void queue_relative_position_update_world_axis(void *sceneManager, EntityId entity, float viewportX, float viewportY, float x, float y, float z) + { + ((SceneManager *)sceneManager)->queueRelativePositionUpdateWorldAxis(entity, viewportX, viewportY, x, y, z); + } + EMSCRIPTEN_KEEPALIVE void queue_rotation_update(void *sceneManager, EntityId asset, float rads, float x, float y, float z, float w, bool relative) { ((SceneManager *)sceneManager)->queueRotationUpdate(asset, rads, x, y, z, w, relative); } + EMSCRIPTEN_KEEPALIVE void queue_position_update_from_viewport_coords(void *sceneManager, EntityId entity, float viewportX, float viewportY) + { + ((SceneManager *)sceneManager)->queueRelativePositionUpdateFromViewportVector(entity, viewportX, viewportY); + } + EMSCRIPTEN_KEEPALIVE void stop_animation(void *sceneManager, EntityId asset, int index) { ((SceneManager *)sceneManager)->stopAnimation(asset, index); @@ -741,7 +796,7 @@ extern "C" return ((SceneManager *)sceneManager)->reveal(asset, meshName); } - EMSCRIPTEN_KEEPALIVE void filament_pick(void *const viewer, int x, int y, void (*callback)(EntityId entityId, int x, int y)) + EMSCRIPTEN_KEEPALIVE void filament_pick(TViewer *viewer, int x, int y, void (*callback)(EntityId entityId, int x, int y)) { ((FilamentViewer *)viewer)->pick(static_cast(x), static_cast(y), callback); } @@ -766,12 +821,12 @@ extern "C" return ((SceneManager *)sceneManager)->getEntityNameAt(target, index, renderableOnly); } - EMSCRIPTEN_KEEPALIVE void set_recording(void *const viewer, bool recording) + EMSCRIPTEN_KEEPALIVE void set_recording(TViewer *viewer, bool recording) { ((FilamentViewer *)viewer)->setRecording(recording); } - EMSCRIPTEN_KEEPALIVE void set_recording_output_directory(void *const viewer, const char *outputDirectory) + EMSCRIPTEN_KEEPALIVE void set_recording_output_directory(TViewer *viewer, const char *outputDirectory) { ((FilamentViewer *)viewer)->setRecordingOutputDirectory(outputDirectory); } @@ -800,15 +855,27 @@ extern "C" { return ((SceneManager *)sceneManager)->addAnimationComponent(entityId); } - + EMSCRIPTEN_KEEPALIVE void remove_animation_component(void *const sceneManager, EntityId entityId) { ((SceneManager *)sceneManager)->removeAnimationComponent(entityId); } - EMSCRIPTEN_KEEPALIVE EntityId create_geometry(void *const viewer, float *vertices, int numVertices, uint16_t *indices, int numIndices, int primitiveType, const char *materialPath) + EMSCRIPTEN_KEEPALIVE EntityId create_geometry( + void *const sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData) { - return ((FilamentViewer *)viewer)->createGeometry(vertices, (uint32_t)numVertices, indices, numIndices, (filament::RenderableManager::PrimitiveType)primitiveType, materialPath); + return ((SceneManager *)sceneManager)->createGeometry(vertices, (uint32_t)numVertices, normals, (uint32_t)numNormals, uvs, numUvs, indices, numIndices, (filament::RenderableManager::PrimitiveType)primitiveType, reinterpret_cast(materialInstance), keepData); } EMSCRIPTEN_KEEPALIVE EntityId find_child_entity_by_name(void *const sceneManager, const EntityId parent, const char *name) @@ -822,9 +889,14 @@ extern "C" return ((SceneManager *)sceneManager)->getParent(child); } - EMSCRIPTEN_KEEPALIVE void set_parent(void *const sceneManager, EntityId child, EntityId parent) + EMSCRIPTEN_KEEPALIVE EntityId get_ancestor(void *const sceneManager, EntityId child) { - ((SceneManager *)sceneManager)->setParent(child, parent); + return ((SceneManager *)sceneManager)->getAncestor(child); + } + + EMSCRIPTEN_KEEPALIVE void set_parent(void *const sceneManager, EntityId child, EntityId parent, bool preserveScaling) + { + ((SceneManager *)sceneManager)->setParent(child, parent, preserveScaling); } EMSCRIPTEN_KEEPALIVE void test_collisions(void *const sceneManager, EntityId entity) @@ -839,6 +911,166 @@ extern "C" EMSCRIPTEN_KEEPALIVE void get_gizmo(void *const sceneManager, EntityId *out) { - return ((SceneManager *)sceneManager)->getGizmo(out); + auto gizmo = ((SceneManager *)sceneManager)->gizmo; + out[0] = Entity::smuggle(gizmo->x()); + out[1] = Entity::smuggle(gizmo->y()); + out[2] = Entity::smuggle(gizmo->z()); + out[3] = Entity::smuggle(gizmo->center()); } + + EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(void *const sceneManager, EntityId entity) + { + return ((SceneManager *)sceneManager)->getBoundingBox(entity); + } + + EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(void *const sceneManager, EntityId entity, float *minX, float *minY, float *maxX, float *maxY) + { + auto box = ((SceneManager *)sceneManager)->getBoundingBox(entity); + *minX = box.minX; + *minY = box.minY; + *maxX = box.maxX; + *maxY = box.maxY; + } + + EMSCRIPTEN_KEEPALIVE void set_visibility_layer(void *const sceneManager, EntityId entity, int layer) { + ((SceneManager*)sceneManager)->setVisibilityLayer(entity, layer); + } + + + EMSCRIPTEN_KEEPALIVE void set_layer_visibility(void *const sceneManager, int layer, bool visible) + { + ((SceneManager *)sceneManager)->setLayerVisibility((SceneManager::LAYERS)layer, visible); + } + + EMSCRIPTEN_KEEPALIVE void thermion_flutter_free(void *ptr) + { + free(ptr); + } + + EMSCRIPTEN_KEEPALIVE void pick_gizmo(void *const sceneManager, int x, int y, void (*callback)(EntityId entityId, int x, int y)) + { + ((SceneManager *)sceneManager)->gizmo->pick(x, y, callback); + } + + EMSCRIPTEN_KEEPALIVE void set_gizmo_visibility(void *const sceneManager, bool visible) + { + ((SceneManager *)sceneManager)->gizmo->setVisibility(visible); + } + + EMSCRIPTEN_KEEPALIVE void set_stencil_highlight(void *const sceneManager, EntityId entityId, float r, float g, float b) + { + ((SceneManager *)sceneManager)->setStencilHighlight(entityId, r, g, b); + } + + EMSCRIPTEN_KEEPALIVE void remove_stencil_highlight(void *const sceneManager, EntityId entityId) + { + ((SceneManager *)sceneManager)->removeStencilHighlight(entityId); + } + + EMSCRIPTEN_KEEPALIVE void set_material_property_float(void *const sceneManager, EntityId entity, int materialIndex, const char *property, float value) + { + ((SceneManager *)sceneManager)->setMaterialProperty(entity, materialIndex, property, value); + } + + EMSCRIPTEN_KEEPALIVE TMaterialInstance* get_material_instance_at(void *const sceneManager, EntityId entity, int materialIndex) { + auto instance = ((SceneManager *)sceneManager)->getMaterialInstanceAt(entity, materialIndex); + return reinterpret_cast(instance); + } + + EMSCRIPTEN_KEEPALIVE void set_material_property_int(void *const sceneManager, EntityId entity, int materialIndex, const char *property, int32_t value) + { + ((SceneManager *)sceneManager)->setMaterialProperty(entity, materialIndex, property, value); + } + + EMSCRIPTEN_KEEPALIVE void set_material_property_float4(void *const sceneManager, EntityId entity, int materialIndex, const char *property, double4 value) + { + filament::math::float4 filamentValue; + filamentValue.x = static_cast(value.x); + filamentValue.y = static_cast(value.y); + filamentValue.z = static_cast(value.z); + filamentValue.w = static_cast(value.w); + ((SceneManager *)sceneManager)->setMaterialProperty(entity, materialIndex, property, filamentValue); + } + + EMSCRIPTEN_KEEPALIVE void unproject_texture(TViewer *viewer, EntityId entity, uint8_t* input, uint32_t inputWidth, uint32_t inputHeight, uint8_t *out, uint32_t outWidth, uint32_t outHeight) + { + ((FilamentViewer *)viewer)->unprojectTexture(entity, input, inputWidth, inputHeight, out, outWidth, outHeight); + } + + EMSCRIPTEN_KEEPALIVE void *const create_texture(void *const sceneManager, uint8_t *data, size_t length) + { + return (void *const)((SceneManager *)sceneManager)->createTexture(data, length, "SOMETEXTURE"); + } + + EMSCRIPTEN_KEEPALIVE void apply_texture_to_material(void *const sceneManager, EntityId entity, void *const texture, const char *parameterName, int materialIndex) + { + ((SceneManager *)sceneManager)->applyTexture(entity, reinterpret_cast(texture), parameterName, materialIndex); + } + + EMSCRIPTEN_KEEPALIVE void destroy_texture(void *const sceneManager, void *const texture) + { + ((SceneManager *)sceneManager)->destroyTexture(reinterpret_cast(texture)); + } + + + EMSCRIPTEN_KEEPALIVE TMaterialInstance* create_material_instance(void *const sceneManager, TMaterialKey materialConfig) +{ + + filament::gltfio::MaterialKey config; + memset(&config, 0, sizeof(MaterialKey)); + + // Set and log each field + config.unlit = materialConfig.unlit; + config.doubleSided = materialConfig.doubleSided; + config.useSpecularGlossiness = materialConfig.useSpecularGlossiness; + config.alphaMode = static_cast(materialConfig.alphaMode); + config.hasBaseColorTexture = materialConfig.hasBaseColorTexture; + config.hasClearCoat = materialConfig.hasClearCoat; + config.hasClearCoatNormalTexture = materialConfig.hasClearCoatNormalTexture; + config.hasClearCoatRoughnessTexture = materialConfig.hasClearCoatRoughnessTexture; + config.hasEmissiveTexture = materialConfig.hasEmissiveTexture; + config.hasIOR = materialConfig.hasIOR; + config.hasMetallicRoughnessTexture = materialConfig.hasMetallicRoughnessTexture; + config.hasNormalTexture = materialConfig.hasNormalTexture; + config.hasOcclusionTexture = materialConfig.hasOcclusionTexture; + config.hasSheen = materialConfig.hasSheen; + config.hasSheenColorTexture = materialConfig.hasSheenColorTexture; + config.hasSheenRoughnessTexture = materialConfig.hasSheenRoughnessTexture; + config.hasTextureTransforms = materialConfig.hasTextureTransforms; + config.hasTransmission = materialConfig.hasTransmission; + config.hasTransmissionTexture = materialConfig.hasTransmissionTexture; + config.hasVolume = materialConfig.hasVolume; + config.hasVolumeThicknessTexture = materialConfig.hasVolumeThicknessTexture; + config.baseColorUV = materialConfig.baseColorUV; + config.hasVertexColors = materialConfig.hasVertexColors; + auto materialInstance = ((SceneManager *)sceneManager)->createUbershaderMaterialInstance(config); + return reinterpret_cast(materialInstance); +} + +EMSCRIPTEN_KEEPALIVE TMaterialInstance *create_unlit_material_instance(void *const sceneManager) { + auto * instance = ((SceneManager*)sceneManager)->createUnlitMaterialInstance(); + return reinterpret_cast(instance); +} + +EMSCRIPTEN_KEEPALIVE void destroy_material_instance(void *const sceneManager, TMaterialInstance *instance) { + ((SceneManager *)sceneManager)->destroy(reinterpret_cast(instance)); +} + +EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthWrite(TMaterialInstance* materialInstance, bool enabled) { + reinterpret_cast(materialInstance)->setDepthWrite(enabled); +} +EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthCulling(TMaterialInstance* materialInstance, bool enabled) { + reinterpret_cast(materialInstance)->setDepthCulling(enabled); +} + +EMSCRIPTEN_KEEPALIVE void Camera_setCustomProjectionWithCulling(TCamera* tCamera, double4x4 projectionMatrix, double near, double far) { + auto * camera = reinterpret_cast(tCamera); + camera->setCustomProjection(convert_double4x4_to_mat4(projectionMatrix), near, far); +} + +EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine* tEngine, EntityId entityId) { + auto * engine = reinterpret_cast(tEngine); + auto * camera = engine->getCameraComponent(utils::Entity::import(entityId)); + return reinterpret_cast(camera); +} } diff --git a/thermion_dart/native/src/ThermionDartFFIApi.cpp b/thermion_dart/native/src/ThermionDartFFIApi.cpp deleted file mode 100644 index d6bf72d2..00000000 --- a/thermion_dart/native/src/ThermionDartFFIApi.cpp +++ /dev/null @@ -1,879 +0,0 @@ -#ifdef __EMSCRIPTEN__ -#define GL_GLEXT_PROTOTYPES -#include -#include - -#include -#include -#include -#include -#include - -extern "C" -{ - extern EMSCRIPTEN_KEEPALIVE EMSCRIPTEN_WEBGL_CONTEXT_HANDLE thermion_dart_web_create_gl_context(); -} -#endif - -#include "ThermionDartFFIApi.h" -#include "FilamentViewer.hpp" -#include "Log.hpp" -#include "ThreadPool.hpp" -#include "filament/LightManager.h" - -#include -#include -#include -#include - -using namespace thermion_filament; -using namespace std::chrono_literals; -#include - -class RenderLoop -{ -public: - explicit RenderLoop() - { - srand(time(NULL)); - #ifdef __EMSCRIPTEN__ - pthread_attr_t attr; - pthread_attr_init(&attr); - emscripten_pthread_attr_settransferredcanvases(&attr, "canvas"); - pthread_create(&t, &attr, &RenderLoop::startHelper, this); - #else - t = new std::thread([this]() { - start(); - }); - #endif - } - - ~RenderLoop() - { - _stop = true; - #ifdef __EMSCRIPTEN__ - pthread_join(t, NULL); - #else - t->join(); - #endif - Log("Render loop killed"); - } - - static void mainLoop(void* arg) { - ((RenderLoop*)arg)->iter(); - } - - static void *startHelper(void * parm) { - #ifdef __EMSCRIPTEN__ - emscripten_set_main_loop_arg(&RenderLoop::mainLoop, parm, 0, true); - #else - ((RenderLoop*)parm)->start(); - #endif - return nullptr; - } - - void start() { - while (!_stop) { - iter(); - } - } - - void iter() { - - auto frameStart = std::chrono::high_resolution_clock::now(); - if (_rendering) { - doRender(); - } - - auto now = std::chrono::high_resolution_clock::now(); - - auto elapsed = std::chrono::duration_cast(now - frameStart).count(); - - std::function task; - - std::unique_lock lock(_access); - while(true) { - now = std::chrono::high_resolution_clock::now(); - elapsed = std::chrono::duration_cast(now - frameStart).count(); - if(elapsed >= _frameIntervalInMicroseconds) { - break; - } - if(!_tasks.empty()) { - task = std::move(_tasks.front()); - _tasks.pop_front(); - task(); - } else { - _cond.wait_for(lock, std::chrono::duration(1)); - } - } - } - - void createViewer(void *const context, - void *const platform, - const char *uberArchivePath, - const ResourceLoaderWrapper *const loader, - void (*renderCallback)(void *), - void *const owner, - void (*callback)(void *const)) - { - _renderCallback = renderCallback; - _renderCallbackOwner = owner; - std::packaged_task lambda([=]() mutable - { -#ifdef __EMSCRIPTEN__ - _context = thermion_dart_web_create_gl_context(); - - auto success = emscripten_webgl_make_context_current((EMSCRIPTEN_WEBGL_CONTEXT_HANDLE)_context); - if(success != EMSCRIPTEN_RESULT_SUCCESS) { - std::cout << "Failed to make context current." << std::endl; - return; - } - glClearColor(0.0, 0.5, 0.5, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - // emscripten_webgl_commit_frame(); - - _viewer = (FilamentViewer*) create_filament_viewer((void* const) _context, loader, platform, uberArchivePath); - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0, $1); - }, callback, _viewer); -#else - _viewer = (FilamentViewer*)create_filament_viewer(context, loader, platform, uberArchivePath); - callback(_viewer); -#endif - }); - auto fut = add_task(lambda); - } - - void destroyViewer(FilamentViewer* viewer) - { - std::packaged_task lambda([=]() mutable { - _rendering = false; - _viewer = nullptr; - destroy_filament_viewer(viewer); - }); - auto fut = add_task(lambda); - } - - void setRendering(bool rendering, void(*callback)()) - { - std::packaged_task lambda( - [=]() mutable - { - this->_rendering = rendering; - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = add_task(lambda); - } - - void doRender() - { - #ifdef __EMSCRIPTEN__ - if(emscripten_is_webgl_context_lost(_context) == EM_TRUE) { - Log("Context lost"); - auto sleepFor = std::chrono::seconds(1); - std::this_thread::sleep_for(sleepFor); - return; - } - #endif - render(_viewer, 0, nullptr, nullptr, nullptr); - if (_renderCallback) - { - _renderCallback(_renderCallbackOwner); - } -#ifdef __EMSCRIPTEN__ - // emscripten_webgl_commit_frame(); -#endif - } - - void setFrameIntervalInMilliseconds(float frameIntervalInMilliseconds) - { - _frameIntervalInMicroseconds = static_cast(1000.0f * frameIntervalInMilliseconds); - } - - template - auto add_task(std::packaged_task &pt) -> std::future - { - std::unique_lock lock(_access); - auto ret = pt.get_future(); - _tasks.push_back([pt = std::make_shared>( - std::move(pt))] - { (*pt)(); }); - _cond.notify_one(); - return ret; - } - - bool _stop = false; - bool _rendering = false; - int _frameIntervalInMicroseconds = 1000000.0 / 60.0; - std::mutex _access; - void (*_renderCallback)(void *const) = nullptr; - void *_renderCallbackOwner = nullptr; - - - std::condition_variable _cond; - std::deque> _tasks; - FilamentViewer* _viewer = nullptr; - #ifdef __EMSCRIPTEN__ - pthread_t t; - EMSCRIPTEN_WEBGL_CONTEXT_HANDLE _context; - int _frameNum = 0; - #else - std::thread *t = nullptr; - #endif -}; - -extern "C" -{ - - static RenderLoop *_rl; - - EMSCRIPTEN_KEEPALIVE void create_filament_viewer_ffi( - void *const context, void *const platform, const char *uberArchivePath, - const void *const loader, - void (*renderCallback)(void *const renderCallbackOwner), - void *const renderCallbackOwner, - void (*callback)(void *const)) - { - - if (!_rl) - { - _rl = new RenderLoop(); - } - _rl->createViewer(context, platform, uberArchivePath, (const ResourceLoaderWrapper *const)loader, - renderCallback, renderCallbackOwner, callback); - } - - EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer_ffi(void *const viewer) - { - _rl->destroyViewer((FilamentViewer*)viewer); - delete _rl; - _rl = nullptr; - } - - EMSCRIPTEN_KEEPALIVE void create_swap_chain_ffi(void *const viewer, - void *const surface, - uint32_t width, - uint32_t height, - void (*onComplete)()) - { - Log("Creating swapchain %dx%d with viewer %lu & surface %lu", width, height, viewer, surface); - std::packaged_task lambda( - [=]() mutable - { - create_swap_chain(viewer, surface, width, height); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, onComplete); - #else - onComplete(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void destroy_swap_chain_ffi(void *const viewer, void (*onComplete)()) - { - Log("Destroying swapchain"); - std::packaged_task lambda( - [=]() mutable - { - destroy_swap_chain(viewer); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, onComplete); - #else - onComplete(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void create_render_target_ffi(void *const viewer, - intptr_t nativeTextureId, - uint32_t width, - uint32_t height, - void (*onComplete)()) - { - std::packaged_task lambda([=]() mutable - { - create_render_target(viewer, nativeTextureId, width, height); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, onComplete); - #else - onComplete(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void update_viewport_and_camera_projection_ffi( - void *const viewer, const uint32_t width, const uint32_t height, - const float scaleFactor, - void (*onComplete)()) - { - Log("Update viewport %dx%d", width, height); - std::packaged_task lambda([=]() mutable - { - update_viewport_and_camera_projection(viewer, width, height, scaleFactor); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, onComplete); - #else - onComplete(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_rendering_ffi(void *const viewer, - bool rendering, void (*callback)()) - { - if (!_rl) - { - Log("No render loop!"); // PANIC? - } - else - { - _rl->setRendering(rendering, callback); - if (rendering) - { - Log("Set rendering to true"); - } - else - { - Log("Set rendering to false"); - } - } - } - - EMSCRIPTEN_KEEPALIVE void - set_frame_interval_ffi(void* const viewer, float frameIntervalInMilliseconds) - { - _rl->setFrameIntervalInMilliseconds(frameIntervalInMilliseconds); - std::packaged_task lambda([=]() mutable - { ((FilamentViewer*)viewer)->setFrameInterval(frameIntervalInMilliseconds); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void render_ffi(void *const viewer) - { - std::packaged_task lambda([=]() mutable - { _rl->doRender(); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void capture_ffi(void *const viewer, uint8_t* pixelBuffer, void (*onComplete)()) { - std::packaged_task lambda([=]() mutable - { capture(viewer, pixelBuffer, onComplete); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void - set_background_color_ffi(void *const viewer, const float r, const float g, - const float b, const float a) - { - std::packaged_task lambda( - [=]() mutable - { set_background_color(viewer, r, g, b, a); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void load_gltf_ffi(void *const sceneManager, - const char *path, - const char *relativeResourcePath, - void (*callback)(EntityId)) - { - std::packaged_task lambda([=]() mutable - { - auto entity = load_gltf(sceneManager, path, relativeResourcePath); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0, $1); - }, callback, entity); - #else - callback(entity); - #endif - return entity; }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void load_glb_ffi(void *const sceneManager, - const char *path, int numInstances, void (*callback)(EntityId)) - { - std::packaged_task lambda( - [=]() mutable - { - auto entity = load_glb(sceneManager, path, numInstances); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0, $1); - }, callback, entity); - #else - callback(entity); - #endif - return entity; - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void load_glb_from_buffer_ffi(void *const sceneManager, - const void *const data, size_t length, int numInstances, void (*callback)(EntityId)) - { - std::packaged_task lambda( - [=]() mutable - { - auto entity = load_glb_from_buffer(sceneManager, data, length); - callback(entity); - return entity; - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void clear_background_image_ffi(void *const viewer) - { - std::packaged_task lambda([=] - { clear_background_image(viewer); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_background_image_ffi(void *const viewer, - const char *path, - bool fillHeight, void (*callback)()) - { - std::packaged_task lambda( - [=] - { - set_background_image(viewer, path, fillHeight); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void set_background_image_position_ffi(void *const viewer, - float x, float y, - bool clamp) - { - std::packaged_task lambda( - [=] - { set_background_image_position(viewer, x, y, clamp); }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void set_tone_mapping_ffi(void *const viewer, - int toneMapping) - { - std::packaged_task lambda( - [=] - { set_tone_mapping(viewer, toneMapping); }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void set_bloom_ffi(void *const viewer, float strength) - { - std::packaged_task lambda([=] - { set_bloom(viewer, strength); }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void load_skybox_ffi(void *const viewer, - const char *skyboxPath, - void (*onComplete)()) - { - std::packaged_task lambda([=] - { - load_skybox(viewer, skyboxPath); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, onComplete); - #else - onComplete(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void load_ibl_ffi(void *const viewer, const char *iblPath, - float intensity) - { - std::packaged_task lambda( - [=] - { load_ibl(viewer, iblPath, intensity); }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void remove_skybox_ffi(void *const viewer) - { - std::packaged_task lambda([=] - { remove_skybox(viewer); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void remove_ibl_ffi(void *const viewer) - { - std::packaged_task lambda([=] - { remove_ibl(viewer); }); - auto fut = _rl->add_task(lambda); - } - - void add_light_ffi( - void *const viewer, - uint8_t type, - float colour, - float intensity, - float posX, - float posY, - float posZ, - float dirX, - float dirY, - float dirZ, - float falloffRadius, - float spotLightConeInner, - float spotLightConeOuter, - float sunAngularRadius, - float sunHaloSize, - float sunHaloFallof, - bool shadows, - void (*callback)(EntityId)) - { - std::packaged_task lambda([=] - { - auto entity = add_light( - viewer, - type, - colour, - intensity, - posX, - posY, - posZ, - dirX, - dirY, - dirZ, - falloffRadius, - spotLightConeInner, - spotLightConeOuter, - sunAngularRadius, - sunHaloSize, - sunHaloFallof, - shadows); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0, $1); - }, callback, entity); - #else - callback(entity); - #endif - - return entity; }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void remove_light_ffi(void *const viewer, - EntityId entityId) - { - std::packaged_task lambda([=] - { remove_light(viewer, entityId); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void clear_lights_ffi(void *const viewer) - { - std::packaged_task lambda([=] - { clear_lights(viewer); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void remove_entity_ffi(void *const viewer, - EntityId asset, void (*callback)()) - { - std::packaged_task lambda([=] - { - remove_entity(viewer, asset); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void clear_entities_ffi(void *const viewer, void (*callback)()) - { - std::packaged_task lambda([=] - { - clear_entities(viewer); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_camera_ffi(void *const viewer, EntityId asset, - const char *nodeName, void (*callback)(bool)) - { - std::packaged_task lambda( - [=] - { - auto success = set_camera(viewer, asset, nodeName); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, success); - #else - callback(success); - #endif - return success; - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void - get_morph_target_name_ffi(void *sceneManager, EntityId assetEntity, - EntityId childEntity, char *const outPtr, int index, void (*callback)()) - { - std::packaged_task lambda([=] - { - get_morph_target_name(sceneManager, assetEntity, childEntity, outPtr, index); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void - get_morph_target_name_count_ffi(void *sceneManager, EntityId assetEntity, - EntityId childEntity, void (*callback)(int)) - { - std::packaged_task lambda([=] - { - auto count = get_morph_target_name_count(sceneManager, assetEntity, childEntity); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, count); - #else - callback(count); - #endif - return count; }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_animation_frame_ffi(void *const sceneManager, - EntityId asset, - int animationIndex, - int animationFrame) - { - std::packaged_task lambda([=] - { set_animation_frame(sceneManager, asset, animationIndex, animationFrame); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void stop_animation_ffi(void *const sceneManager, - EntityId asset, int index) - { - std::packaged_task lambda( - [=] - { stop_animation(sceneManager, asset, index); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void get_animation_count_ffi(void *const sceneManager, - EntityId asset, - void (*callback)(int)) - { - std::packaged_task lambda( - [=] - { - auto count = get_animation_count(sceneManager, asset); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, count); - #else - callback(count); - #endif - return count; - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void get_animation_name_ffi(void *const sceneManager, - EntityId asset, - char *const outPtr, - int index, - void (*callback)()) - { - std::packaged_task lambda( - [=] - { - get_animation_name(sceneManager, asset, outPtr, index); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_post_processing_ffi(void *const viewer, - bool enabled) - { - std::packaged_task lambda( - [=] - { set_post_processing(viewer, enabled); }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void - get_name_for_entity_ffi(void *const sceneManager, const EntityId entityId, void (*callback)(const char *)) - { - std::packaged_task lambda( - [=] - { - auto name = get_name_for_entity(sceneManager, entityId); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, name); - #else - callback(name); - #endif - return name; - }); - auto fut = _rl->add_task(lambda); - } - - void set_morph_target_weights_ffi(void *const sceneManager, - EntityId asset, - const float *const morphData, - int numWeights, - void (*callback)(bool)) - { - std::packaged_task lambda( - [=] - { - auto result = set_morph_target_weights(sceneManager, asset, morphData, numWeights); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, result); - #else - callback(result); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void set_bone_transform_ffi( - void *sceneManager, - EntityId asset, - int skinIndex, - int boneIndex, - const float *const transform, - void (*callback)(bool)) - { - std::packaged_task lambda( - [=] - { - auto success = set_bone_transform(sceneManager, asset, skinIndex, boneIndex, transform); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, success); - #else - callback(success); - #endif - return success; - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void update_bone_matrices_ffi(void *sceneManager, - EntityId entity, void(*callback)(bool)) { - std::packaged_task lambda( - [=] - { - auto success = update_bone_matrices(sceneManager, entity); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback, success); - #else - callback(success); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void reset_to_rest_pose_ffi(void *const sceneManager, EntityId entityId, void(*callback)()) - { - std::packaged_task lambda( - [=] - { - reset_to_rest_pose(sceneManager, entityId); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0); - }, callback); - #else - callback(); - #endif - }); - auto fut = _rl->add_task(lambda); - } - - EMSCRIPTEN_KEEPALIVE void create_geometry_ffi( - void *const viewer, - float *vertices, - int numVertices, - uint16_t *indices, - int numIndices, - int primitiveType, - const char *materialPath, - void (*callback)(EntityId)) - { - std::packaged_task lambda( - [=] - { - auto entity = create_geometry(viewer, vertices, numVertices, indices, numIndices, primitiveType, materialPath); - #ifdef __EMSCRIPTEN__ - MAIN_THREAD_EM_ASM({ - moduleArg.dartFilamentResolveCallback($0,$1); - }, callback, entity); - #else - callback(entity); - #endif - return entity; - }); - auto fut = _rl->add_task(lambda); - } - -} diff --git a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp new file mode 100644 index 00000000..23a7676a --- /dev/null +++ b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp @@ -0,0 +1,848 @@ +#ifdef __EMSCRIPTEN__ +#define GL_GLEXT_PROTOTYPES +#include +#include + +#include +#include +#include +#include +#include + +extern "C" +{ + extern EMSCRIPTEN_KEEPALIVE EMSCRIPTEN_WEBGL_CONTEXT_HANDLE thermion_dart_web_create_gl_context(); +} +#endif + +#include "ThermionDartRenderThreadApi.h" +#include "FilamentViewer.hpp" +#include "Log.hpp" +#include "ThreadPool.hpp" +#include "filament/LightManager.h" + +#include +#include +#include +#include + +using namespace thermion_filament; +using namespace std::chrono_literals; +#include + +class RenderLoop +{ +public: + explicit RenderLoop() + { + srand(time(NULL)); +#ifdef __EMSCRIPTEN__ + pthread_attr_t attr; + pthread_attr_init(&attr); + emscripten_pthread_attr_settransferredcanvases(&attr, "canvas"); + pthread_create(&t, &attr, &RenderLoop::startHelper, this); +#else + t = new std::thread([this]() + { start(); }); +#endif + } + + ~RenderLoop() + { + _render = false; + _stop = true; + _cv.notify_one(); +#ifdef __EMSCRIPTEN__ + pthread_join(t, NULL); +#else + t->join(); +#endif + } + + static void mainLoop(void *arg) + { + ((RenderLoop *)arg)->iter(); + } + + static void *startHelper(void *parm) + { +#ifdef __EMSCRIPTEN__ + emscripten_set_main_loop_arg(&RenderLoop::mainLoop, parm, 0, true); +#else + ((RenderLoop *)parm)->start(); +#endif + return nullptr; + } + + void start() + { + while (!_stop) + { + iter(); + } + } + + void requestFrame() + { + this->_render = true; + } + + void iter() + { + std::unique_lock lock(_mutex); + if (_render) + { + doRender(); + _render = false; + + // Calculate and print FPS + auto currentTime = std::chrono::high_resolution_clock::now(); + float deltaTime = std::chrono::duration(currentTime - _lastFrameTime).count(); + _lastFrameTime = currentTime; + + _frameCount++; + _accumulatedTime += deltaTime; + + if (_accumulatedTime >= 1.0f) // Update FPS every second + { + _fps = _frameCount / _accumulatedTime; + std::cout << "FPS: " << _fps << std::endl; + _frameCount = 0; + _accumulatedTime = 0.0f; + } + } + if (!_tasks.empty()) + { + auto task = std::move(_tasks.front()); + _tasks.pop_front(); + lock.unlock(); + task(); + lock.lock(); + } + + _cv.wait_for(lock, std::chrono::microseconds(1000), [this] + { return !_tasks.empty() || _stop || _render; }); + + if (_stop) + return; + } + + void createViewer(void *const context, + void *const platform, + const char *uberArchivePath, + const ResourceLoaderWrapper *const loader, + void (*renderCallback)(void *), + void *const owner, + void (*callback)(TViewer*)) + { + _renderCallback = renderCallback; + _renderCallbackOwner = owner; + std::packaged_task lambda([=]() mutable + { +#ifdef __EMSCRIPTEN__ + _context = thermion_dart_web_create_gl_context(); + + auto success = emscripten_webgl_make_context_current((EMSCRIPTEN_WEBGL_CONTEXT_HANDLE)_context); + if (success != EMSCRIPTEN_RESULT_SUCCESS) + { + std::cout << "Failed to make context current." << std::endl; + return; + } + glClearColor(0.0, 0.5, 0.5, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + // emscripten_webgl_commit_frame(); + + _viewer = (FilamentViewer *)create_filament_viewer((void *const)_context, loader, platform, uberArchivePath); + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, _viewer); +#else + auto viewer = (FilamentViewer *)create_filament_viewer(context, loader, platform, uberArchivePath); + _viewer = reinterpret_cast(viewer); + callback(_viewer); +#endif + }); + auto fut = add_task(lambda); + } + + void destroyViewer(FilamentViewer *viewer) + { + std::packaged_task lambda([=]() mutable + { + _render = false; + _viewer = nullptr; + destroy_filament_viewer(reinterpret_cast(viewer)); }); + auto fut = add_task(lambda); + fut.wait(); + } + + bool doRender() + { +#ifdef __EMSCRIPTEN__ + if (emscripten_is_webgl_context_lost(_context) == EM_TRUE) + { + Log("Context lost"); + auto sleepFor = std::chrono::seconds(1); + std::this_thread::sleep_for(sleepFor); + return; + } +#endif + auto rendered = render(_viewer, 0, nullptr, nullptr, nullptr); + if (_renderCallback) + { + _renderCallback(_renderCallbackOwner); + } + return rendered; +#ifdef __EMSCRIPTEN__ + // emscripten_webgl_commit_frame(); +#endif + } + + void setFrameIntervalInMilliseconds(float frameIntervalInMilliseconds) + { + std::unique_lock lock(_mutex); + _frameIntervalInMicroseconds = static_cast(1000.0f * frameIntervalInMilliseconds); + } + + template + auto add_task(std::packaged_task &pt) -> std::future + { + std::unique_lock lock(_mutex); + auto ret = pt.get_future(); + _tasks.push_back([pt = std::make_shared>( + std::move(pt))] + { (*pt)(); }); + _cv.notify_one(); + return ret; + } + +private: + bool _stop = false; + bool _render = false; + int _frameIntervalInMicroseconds = 1000000 / 60; + std::mutex _mutex; + std::condition_variable _cv; + void (*_renderCallback)(void *const) = nullptr; + void *_renderCallbackOwner = nullptr; + std::deque> _tasks; + TViewer *_viewer = nullptr; + std::chrono::high_resolution_clock::time_point _lastFrameTime; + int _frameCount = 0; + float _accumulatedTime = 0.0f; + float _fps = 0.0f; + +#ifdef __EMSCRIPTEN__ + pthread_t t; + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE _context; +#else + std::thread *t = nullptr; +#endif +}; + +extern "C" +{ + + static RenderLoop *_rl; + + EMSCRIPTEN_KEEPALIVE void create_filament_viewer_render_thread( + void *const context, void *const platform, const char *uberArchivePath, + const void *const loader, + void (*renderCallback)(void *const renderCallbackOwner), + void *const renderCallbackOwner, + void (*callback)(TViewer *)) + { + + if (!_rl) + { + _rl = new RenderLoop(); + } + _rl->createViewer(context, platform, uberArchivePath, (const ResourceLoaderWrapper *const)loader, + renderCallback, renderCallbackOwner, callback); + } + + EMSCRIPTEN_KEEPALIVE void destroy_filament_viewer_render_thread(TViewer *viewer) + { + _rl->destroyViewer((FilamentViewer *)viewer); + delete _rl; + _rl = nullptr; + } + + EMSCRIPTEN_KEEPALIVE void create_swap_chain_render_thread(TViewer *viewer, + void *const surface, + uint32_t width, + uint32_t height, + void (*onComplete)()) + { + std::packaged_task lambda( + [=]() mutable + { + create_swap_chain(viewer, surface, width, height); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, onComplete); +#else + onComplete(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void destroy_swap_chain_render_thread(TViewer *viewer, void (*onComplete)()) + { + std::packaged_task lambda( + [=]() mutable + { + destroy_swap_chain(viewer); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, onComplete); +#else + onComplete(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void create_render_target_render_thread(TViewer *viewer, + intptr_t nativeTextureId, + uint32_t width, + uint32_t height, + void (*onComplete)()) + { + std::packaged_task lambda([=]() mutable + { + create_render_target(viewer, nativeTextureId, width, height); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, onComplete); +#else + onComplete(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void request_frame_render_thread(TViewer *viewer) + { + if (!_rl) + { + Log("No render loop!"); // PANIC? + } + else + { + _rl->requestFrame(); + } + } + + EMSCRIPTEN_KEEPALIVE void + set_frame_interval_render_thread(TViewer *viewer, float frameIntervalInMilliseconds) + { + _rl->setFrameIntervalInMilliseconds(frameIntervalInMilliseconds); + std::packaged_task lambda([=]() mutable + { ((FilamentViewer *)viewer)->setFrameInterval(frameIntervalInMilliseconds); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void render_render_thread(TViewer *viewer) + { + std::packaged_task lambda([=]() mutable + { _rl->doRender(); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void capture_render_thread(TViewer *viewer, uint8_t *pixelBuffer, void (*onComplete)()) + { + std::packaged_task lambda([=]() mutable + { capture(viewer, pixelBuffer, onComplete); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void + set_background_color_render_thread(TViewer *viewer, const float r, const float g, + const float b, const float a) + { + std::packaged_task lambda( + [=]() mutable + { set_background_color(viewer, r, g, b, a); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void load_gltf_render_thread(void *const sceneManager, + const char *path, + const char *relativeResourcePath, + bool keepData, + void (*callback)(EntityId)) + { + std::packaged_task lambda([=]() mutable + { + auto entity = load_gltf(sceneManager, path, relativeResourcePath, keepData); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ + moduleArg.dartFilamentResolveCallback($0, $1); + }, callback, entity); +#else + callback(entity); +#endif + return entity; }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void load_glb_render_thread(void *const sceneManager, + const char *path, + int numInstances, + bool keepData, + void (*callback)(EntityId)) + { + std::packaged_task lambda( + [=]() mutable + { + auto entity = load_glb(sceneManager, path, numInstances, keepData); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, entity); +#else + callback(entity); +#endif + return entity; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void load_glb_from_buffer_render_thread(void *const sceneManager, + const uint8_t *const data, + size_t length, + int numInstances, + bool keepData, + int priority, + int layer, + void (*callback)(EntityId)) + { + std::packaged_task lambda( + [=]() mutable + { + auto entity = load_glb_from_buffer(sceneManager, data, length, keepData, priority, layer); + callback(entity); + return entity; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void clear_background_image_render_thread(TViewer *viewer) + { + std::packaged_task lambda([=] + { clear_background_image(viewer); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void set_background_image_render_thread(TViewer *viewer, + const char *path, + bool fillHeight, void (*callback)()) + { + std::packaged_task lambda( + [=] + { + set_background_image(viewer, path, fillHeight); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void set_background_image_position_render_thread(TViewer *viewer, + float x, float y, + bool clamp) + { + std::packaged_task lambda( + [=] + { set_background_image_position(viewer, x, y, clamp); }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void set_tone_mapping_render_thread(TViewer *viewer, + int toneMapping) + { + std::packaged_task lambda( + [=] + { set_tone_mapping(viewer, toneMapping); }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void set_bloom_render_thread(TViewer *viewer, float strength) + { + std::packaged_task lambda([=] + { set_bloom(viewer, strength); }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void load_skybox_render_thread(TViewer *viewer, + const char *skyboxPath, + void (*onComplete)()) + { + std::packaged_task lambda([=] + { + load_skybox(viewer, skyboxPath); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, onComplete); +#else + onComplete(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void load_ibl_render_thread(TViewer *viewer, const char *iblPath, + float intensity) + { + std::packaged_task lambda( + [=] + { load_ibl(viewer, iblPath, intensity); }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void remove_skybox_render_thread(TViewer *viewer) + { + std::packaged_task lambda([=] + { remove_skybox(viewer); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void remove_ibl_render_thread(TViewer *viewer) + { + std::packaged_task lambda([=] + { remove_ibl(viewer); }); + auto fut = _rl->add_task(lambda); + } + + void add_light_render_thread( + TViewer *viewer, + uint8_t type, + float colour, + float intensity, + float posX, + float posY, + float posZ, + float dirX, + float dirY, + float dirZ, + float falloffRadius, + float spotLightConeInner, + float spotLightConeOuter, + float sunAngularRadius, + float sunHaloSize, + float sunHaloFallof, + bool shadows, + void (*callback)(EntityId)) + { + std::packaged_task lambda([=] + { + auto entity = add_light( + viewer, + type, + colour, + intensity, + posX, + posY, + posZ, + dirX, + dirY, + dirZ, + falloffRadius, + spotLightConeInner, + spotLightConeOuter, + sunAngularRadius, + sunHaloSize, + sunHaloFallof, + shadows); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ + moduleArg.dartFilamentResolveCallback($0, $1); + }, callback, entity); +#else + callback(entity); +#endif + + return entity; }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void remove_light_render_thread(TViewer *viewer, + EntityId entityId) + { + std::packaged_task lambda([=] + { remove_light(viewer, entityId); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void clear_lights_render_thread(TViewer *viewer) + { + std::packaged_task lambda([=] + { clear_lights(viewer); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void remove_entity_render_thread(TViewer *viewer, + EntityId asset, void (*callback)()) + { + std::packaged_task lambda([=] + { + remove_entity(viewer, asset); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void clear_entities_render_thread(TViewer *viewer, void (*callback)()) + { + std::packaged_task lambda([=] + { + clear_entities(viewer); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void set_camera_render_thread(TViewer *viewer, EntityId asset, + const char *nodeName, void (*callback)(bool)) + { + std::packaged_task lambda( + [=] + { + auto success = set_camera(viewer, asset, nodeName); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, success); +#else + callback(success); +#endif + return success; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void + get_morph_target_name_render_thread(void *sceneManager, EntityId assetEntity, + EntityId childEntity, char *const outPtr, int index, void (*callback)()) + { + std::packaged_task lambda([=] + { + get_morph_target_name(sceneManager, assetEntity, childEntity, outPtr, index); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void + get_morph_target_name_count_render_thread(void *sceneManager, EntityId assetEntity, + EntityId childEntity, void (*callback)(int)) + { + std::packaged_task lambda([=] + { + auto count = get_morph_target_name_count(sceneManager, assetEntity, childEntity); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ + moduleArg.dartFilamentResolveCallback($0,$1); + }, callback, count); +#else + callback(count); +#endif + return count; }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void set_animation_frame_render_thread(void *const sceneManager, + EntityId asset, + int animationIndex, + int animationFrame) + { + std::packaged_task lambda([=] + { set_animation_frame(sceneManager, asset, animationIndex, animationFrame); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void stop_animation_render_thread(void *const sceneManager, + EntityId asset, int index) + { + std::packaged_task lambda( + [=] + { stop_animation(sceneManager, asset, index); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void get_animation_count_render_thread(void *const sceneManager, + EntityId asset, + void (*callback)(int)) + { + std::packaged_task lambda( + [=] + { + auto count = get_animation_count(sceneManager, asset); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, count); +#else + callback(count); +#endif + return count; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void get_animation_name_render_thread(void *const sceneManager, + EntityId asset, + char *const outPtr, + int index, + void (*callback)()) + { + std::packaged_task lambda( + [=] + { + get_animation_name(sceneManager, asset, outPtr, index); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void set_post_processing_render_thread(TViewer *viewer, + bool enabled) + { + std::packaged_task lambda( + [=] + { set_post_processing(viewer, enabled); }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void + get_name_for_entity_render_thread(void *const sceneManager, const EntityId entityId, void (*callback)(const char *)) + { + std::packaged_task lambda( + [=] + { + auto name = get_name_for_entity(sceneManager, entityId); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, name); +#else + callback(name); +#endif + return name; + }); + auto fut = _rl->add_task(lambda); + } + + void set_morph_target_weights_render_thread(void *const sceneManager, + EntityId asset, + const float *const morphData, + int numWeights, + void (*callback)(bool)) + { + std::packaged_task lambda( + [=] + { + auto result = set_morph_target_weights(sceneManager, asset, morphData, numWeights); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, result); +#else + callback(result); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void set_bone_transform_render_thread( + void *sceneManager, + EntityId asset, + int skinIndex, + int boneIndex, + const float *const transform, + void (*callback)(bool)) + { + std::packaged_task lambda( + [=] + { + auto success = set_bone_transform(sceneManager, asset, skinIndex, boneIndex, transform); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, success); +#else + callback(success); +#endif + return success; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void update_bone_matrices_render_thread(void *sceneManager, + EntityId entity, void (*callback)(bool)) + { + std::packaged_task lambda( + [=] + { + auto success = update_bone_matrices(sceneManager, entity); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback, success); +#else + callback(success); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void reset_to_rest_pose_render_thread(void *const sceneManager, EntityId entityId, void (*callback)()) + { + std::packaged_task lambda( + [=] + { + reset_to_rest_pose(sceneManager, entityId); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0); }, callback); +#else + callback(); +#endif + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void create_geometry_render_thread( + void *const sceneManager, + float *vertices, + int numVertices, + float *normals, + int numNormals, + float *uvs, + int numUvs, + uint16_t *indices, + int numIndices, + int primitiveType, + TMaterialInstance *materialInstance, + bool keepData, + void (*callback)(EntityId)) + { + std::packaged_task lambda( + [=] + { + auto entity = create_geometry(sceneManager, vertices, numVertices, normals, numNormals, uvs, numUvs, indices, numIndices, primitiveType, materialInstance, keepData); +#ifdef __EMSCRIPTEN__ + MAIN_THREAD_EM_ASM({ moduleArg.dartFilamentResolveCallback($0, $1); }, callback, entity); +#else + callback(entity); +#endif + return entity; + }); + auto fut = _rl->add_task(lambda); + } + + EMSCRIPTEN_KEEPALIVE void unproject_texture_render_thread(TViewer* viewer, EntityId entity, uint8_t *input, uint32_t inputWidth, uint32_t inputHeight, uint8_t *out, uint32_t outWidth, uint32_t outHeight, void (*callback)()) + { + std::packaged_task lambda( + [=] + { + unproject_texture(viewer, entity, input, inputWidth, inputHeight, out, outWidth, outHeight); + callback(); + }); + auto fut = _rl->add_task(lambda); + } +} diff --git a/thermion_dart/native/src/UnprojectTexture.cpp b/thermion_dart/native/src/UnprojectTexture.cpp new file mode 100644 index 00000000..0f576c70 --- /dev/null +++ b/thermion_dart/native/src/UnprojectTexture.cpp @@ -0,0 +1,211 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Log.hpp" +#include +#include + +#include + +#include "CustomGeometry.hpp" +#include "UnprojectTexture.hpp" + +namespace thermion_filament +{ + + bool UnprojectTexture::isInsideTriangle(const math::float2 &p, const math::float2 &a, const math::float2 &b, const math::float2 &c) + { + float d1 = (p.x - b.x) * (a.y - b.y) - (a.x - b.x) * (p.y - b.y); + float d2 = (p.x - c.x) * (b.y - c.y) - (b.x - c.x) * (p.y - c.y); + float d3 = (p.x - a.x) * (c.y - a.y) - (c.x - a.x) * (p.y - a.y); + return (d1 >= 0 && d2 >= 0 && d3 >= 0) || (d1 <= 0 && d2 <= 0 && d3 <= 0); + } + + math::float3 UnprojectTexture::barycentric(const math::float2 &p, const math::float2 &a, const math::float2 &b, const math::float2 &c) + { + math::float2 v0 = b - a; + math::float2 v1 = c - a; + math::float2 v2 = p - a; + + float d00 = dot(v0, v0); + float d01 = dot(v0, v1); + float d11 = dot(v1, v1); + float d20 = dot(v2, v0); + float d21 = dot(v2, v1); + + float denom = d00 * d11 - d01 * d01; + + float v = (d11 * d20 - d01 * d21) / denom; + float w = (d00 * d21 - d01 * d20) / denom; + float u = 1.0f - v - w; + + return math::float3(u, v, w); + } + + void UnprojectTexture::unproject(utils::Entity entity, const uint8_t *inputTexture, uint8_t *outputTexture, + uint32_t inputWidth, uint32_t inputHeight, + uint32_t outputWidth, uint32_t outputHeight) + { + + auto &rm = _engine->getRenderableManager(); + + auto &tm = _engine->getTransformManager(); + + math::mat4 invViewProj = Camera::inverseProjection(_camera.getProjectionMatrix()) * _camera.getModelMatrix(); + + auto ti = tm.getInstance(entity); + math::mat4f worldTransform = tm.getWorldTransform(ti); + auto inverseWorldTransform = inverse(worldTransform); + + const float *vertices = _geometry->vertices; + const float *uvs = _geometry->uvs; + const uint16_t *indices = _geometry->indices; + uint32_t numIndices = _geometry->numIndices; + + // Create a depth buffer + std::vector depthBuffer(inputWidth * inputHeight, std::numeric_limits::infinity()); + + // Create a buffer to store the triangle index for each pixel + std::vector triangleIndexBuffer(inputWidth * inputHeight, -1); + + auto max = 0.0f; + auto min = 99.0f; + + // Depth pre-pass + for (size_t i = 0; i < numIndices; i += 3) + { + math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); + math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); + math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); + + math::float2 uv0(uvs[(indices[i] * 2)], uvs[(indices[i] * 2) + 1]); + math::float2 uv1(uvs[(indices[i + 1] * 2)], uvs[(indices[i + 1] * 2) + 1]); + math::float2 uv2(uvs[(indices[i + 2] * 2)], uvs[(indices[i + 2] * 2) + 1]); + + // Transform vertices to world space + v0 = (worldTransform * math::float4(v0, 1.0f)).xyz; + v1 = (worldTransform * math::float4(v1, 1.0f)).xyz; + v2 = (worldTransform * math::float4(v2, 1.0f)).xyz; + + // Project vertices to screen space + math::float4 clipPos0 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v0, 1.0f); + math::float4 clipPos1 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v1, 1.0f); + math::float4 clipPos2 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v2, 1.0f); + + math::float3 ndcPos0 = clipPos0.xyz / clipPos0.w; + math::float3 ndcPos1 = clipPos1.xyz / clipPos1.w; + math::float3 ndcPos2 = clipPos2.xyz / clipPos2.w; + + // Convert NDC to screen coordinates + math::float2 screenPos0((ndcPos0.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos0.y * 0.5f + 0.5f)) * inputHeight); + math::float2 screenPos1((ndcPos1.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos1.y * 0.5f + 0.5f)) * inputHeight); + math::float2 screenPos2((ndcPos2.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos2.y * 0.5f + 0.5f)) * inputHeight); + + // Compute bounding box of the triangle + int minX = std::max(0, static_cast(std::min({screenPos0.x, screenPos1.x, screenPos2.x}))); + int maxX = std::min(static_cast(inputWidth) - 1, static_cast(std::max({screenPos0.x, screenPos1.x, screenPos2.x}))); + int minY = std::max(0, static_cast(std::min({screenPos0.y, screenPos1.y, screenPos2.y}))); + int maxY = std::min(static_cast(inputHeight) - 1, static_cast(std::max({screenPos0.y, screenPos1.y, screenPos2.y}))); + + // Iterate over the bounding box + for (int y = minY; y <= maxY; ++y) + { + for (int x = minX; x <= maxX; ++x) + { + math::float2 pixelPos(x + 0.5f, y + 0.5f); + + if (isInsideTriangle(pixelPos, screenPos0, screenPos1, screenPos2)) + { + math::float3 bary = barycentric(pixelPos, screenPos0, screenPos1, screenPos2); + + // Interpolate depth + float depth = bary.x * ndcPos0.z + bary.y * ndcPos1.z + bary.z * ndcPos2.z; + + // Depth test + if (depth < depthBuffer[y * inputWidth + x]) + { + + if (depth > max) + { + max = depth; + } + if (depth < min) + { + min = depth; + } + depthBuffer[y * inputWidth + x] = depth; + triangleIndexBuffer[y * inputWidth + x] = i / 3; // Store triangle index + } + } + } + } + } + + for (uint32_t y = 0; y < outputHeight; ++y) + { + for (uint32_t x = 0; x < outputWidth; ++x) + { + + math::float2 uv(static_cast(x) / outputWidth, static_cast(y) / outputHeight); + + // Use the UV coordinates to get the corresponding 3D position on the renderable + math::float3 objectPos; + math::float2 interpolatedUV; + bool found = false; + + // Iterate over triangles to find which one contains this UV coordinate + for (size_t i = 0; i < numIndices; i += 3) + { + math::float2 uv0 = *(math::float2 *)&uvs[indices[i] * 2]; + math::float2 uv1 = *(math::float2 *)&uvs[indices[i + 1] * 2]; + math::float2 uv2 = *(math::float2 *)&uvs[indices[i + 2] * 2]; + + if (isInsideTriangle(uv, uv0, uv1, uv2)) + { + // Compute barycentric coordinates in UV space + math::float3 bary = barycentric(uv, uv0, uv1, uv2); + + // Interpolate 3D position + math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); + math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); + math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); + + objectPos = v0 * bary.x + v1 * bary.y + v2 * bary.z; + interpolatedUV = uv; + + // Find the screen coordinates on the input texture + math::float3 worldPos = (worldTransform * math::float4(objectPos, 1.0f)).xyz; + // Project the world position to screen space + math::float4 clipPos = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(worldPos, 1.0f); + math::float3 ndcPos = clipPos.xyz / clipPos.w; + // Convert NDC to screen coordinates + uint32_t screenX = (ndcPos.x * 0.5f + 0.5f) * inputWidth; + uint32_t screenY = (1.0f - (ndcPos.y * 0.5f + 0.5f)) * inputHeight; + + if (triangleIndexBuffer[(screenY * inputWidth) + screenX] == i / 3) + { + if (screenX >= 0 && screenX < inputWidth && screenY >= 0 && screenY < inputHeight) + { + int inputIndex = (screenY * inputWidth + screenX) * 4; + int outputIndex = (y * outputWidth + x) * 4; + std::copy_n(&inputTexture[inputIndex], 4, &outputTexture[outputIndex]); + } + } + } + } + } + } + } + +} // namespace thermion_filament + diff --git a/thermion_dart/native/web/CMakeLists.txt b/thermion_dart/native/web/CMakeLists.txt index af98c836..8ff7af04 100644 --- a/thermion_dart/native/web/CMakeLists.txt +++ b/thermion_dart/native/web/CMakeLists.txt @@ -55,6 +55,8 @@ add_executable(${MODULE_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/../src/FilamentViewer.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/ThermionDartApi.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/ThermionDartFFIApi.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/../src/Gizmo.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/../src/GridOverlay.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/StreamBufferAdapter.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/TimeIt.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/camutils/Manipulator.cpp" diff --git a/thermion_dart/pubspec.yaml b/thermion_dart/pubspec.yaml index 6625a16e..6342fb30 100644 --- a/thermion_dart/pubspec.yaml +++ b/thermion_dart/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion environment: - sdk: ">=3.3.0 <4.0.0" + sdk: ">=3.5.0 <4.0.0" dependencies: vector_math: ^2.1.2 @@ -21,3 +21,4 @@ dependencies: dev_dependencies: ffigen: ^12.0.0 test: + image: \ No newline at end of file diff --git a/thermion_dart/test/cube.glb b/thermion_dart/test/cube.glb new file mode 100644 index 00000000..41825792 Binary files /dev/null and b/thermion_dart/test/cube.glb differ diff --git a/thermion_dart/test/cube_texture_512x512.png b/thermion_dart/test/cube_texture_512x512.png new file mode 100644 index 00000000..73347254 Binary files /dev/null and b/thermion_dart/test/cube_texture_512x512.png differ diff --git a/thermion_dart/test/helpers.dart b/thermion_dart/test/helpers.dart new file mode 100644 index 00000000..76a366e8 --- /dev/null +++ b/thermion_dart/test/helpers.dart @@ -0,0 +1,484 @@ +import 'dart:ffi'; +import 'dart:io'; +import 'dart:math'; +import 'package:image/image.dart' as img; +import 'dart:typed_data'; +import 'package:ffi/ffi.dart'; +import 'package:thermion_dart/thermion_dart.dart'; +import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart'; +import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart'; +import 'package:vector_math/vector_math_64.dart'; + +/// Test files are run in a variety of ways, find this package root in all. +/// +/// Test files can be run from source from any working directory. The Dart SDK +/// `tools/test.py` runs them from the root of the SDK for example. +/// +/// Test files can be run from dill from the root of package. `package:test` +/// does this. +Uri findPackageRoot(String packageName) { + final script = Platform.script; + final fileName = script.name; + if (fileName.endsWith('_test.dart')) { + // We're likely running from source. + var directory = script.resolve('.'); + while (true) { + final dirName = directory.name; + if (dirName == packageName) { + return directory; + } + final parent = directory.resolve('..'); + if (parent == directory) break; + directory = parent; + } + } else if (fileName.endsWith('.dill')) { + final cwd = Directory.current.uri; + final dirName = cwd.name; + if (dirName == packageName) { + return cwd; + } + } + throw StateError("Could not find package root for package '$packageName'. " + 'Tried finding the package root via Platform.script ' + "'${Platform.script.toFilePath()}' and Directory.current " + "'${Directory.current.uri.toFilePath()}'."); +} + +extension on Uri { + String get name => pathSegments.where((e) => e != '').last; +} + +late String testDir; + +Future savePixelBufferToBmp( + Uint8List pixelBuffer, int width, int height, String outputPath) async { + var data = await pixelBufferToBmp(pixelBuffer, width, height); + File(outputPath).writeAsBytesSync(data); + print("Wrote bitmap to ${outputPath}"); + return data; +} + +Future pixelBufferToBmp( + Uint8List pixelBuffer, int width, int height) async { + final rowSize = (width * 3 + 3) & ~3; + final padding = rowSize - (width * 3); + final fileSize = 54 + rowSize * height; + + final data = Uint8List(fileSize); + final buffer = data.buffer; + final bd = ByteData.view(buffer); + + // BMP file header (14 bytes) + bd.setUint16(0, 0x4D42, Endian.little); // 'BM' + bd.setUint32(2, fileSize, Endian.little); + bd.setUint32(10, 54, Endian.little); // Offset to pixel data + + // BMP info header (40 bytes) + bd.setUint32(14, 40, Endian.little); // Info header size + bd.setInt32(18, width, Endian.little); + bd.setInt32(22, -height, Endian.little); // Negative for top-down + bd.setUint16(26, 1, Endian.little); // Number of color planes + bd.setUint16(28, 24, Endian.little); // Bits per pixel (RGB) + bd.setUint32(30, 0, Endian.little); // No compression + bd.setUint32(34, rowSize * height, Endian.little); // Image size + bd.setInt32(38, 2835, Endian.little); // X pixels per meter + bd.setInt32(42, 2835, Endian.little); // Y pixels per meter + + // Pixel data (BMP stores in BGR format) + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + final srcIndex = (y * width + x) * 4; // RGBA format + final dstIndex = 54 + y * rowSize + x * 3; // BGR format + data[dstIndex] = pixelBuffer[srcIndex + 2]; // Blue + data[dstIndex + 1] = pixelBuffer[srcIndex + 1]; // Green + data[dstIndex + 2] = pixelBuffer[srcIndex]; // Red + // Alpha channel is discarded + } + // Add padding to the end of each row + for (var p = 0; p < padding; p++) { + data[54 + y * rowSize + width * 3 + p] = 0; + } + } + + return data; +} + +Future pixelsToPng(Uint8List pixelBuffer, int width, int height, + {bool linearToSrgb = false}) async { + final image = img.Image(width: width, height: height); + + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + final int pixelIndex = (y * width + x) * 4; + double r = pixelBuffer[pixelIndex] / 255.0; + double g = pixelBuffer[pixelIndex + 1] / 255.0; + double b = pixelBuffer[pixelIndex + 2] / 255.0; + int a = pixelBuffer[pixelIndex + 3]; + + // Apply inverse ACES tone mapping + bool invertAces = false; + if (invertAces) { + r = _inverseACESToneMapping(r); + g = _inverseACESToneMapping(g); + b = _inverseACESToneMapping(b); + } + + if (linearToSrgb) { + // Convert from linear to sRGB + + image.setPixel( + x, + y, + img.ColorUint8(4) + ..setRgba( + _linearToSRGB(r), _linearToSRGB(g), _linearToSRGB(b), 1.0)); + } else { + image.setPixel( + x, + y, + img.ColorUint8(4) + ..setRgba((r * 255).toInt(), (g * 255).toInt(), (b * 255).toInt(), + 1.0)); + } + } + } + + return img.encodePng(image); +} + +double _inverseACESToneMapping(double x) { + const double a = 2.51; + const double b = 0.03; + const double c = 2.43; + const double d = 0.59; + const double e = 0.14; + + // Ensure x is in the valid range [0, 1] + x = x.clamp(0.0, 1.0); + + // Inverse ACES filmic tone mapping function + return (x * (x * a + b)) / (x * (x * c + d) + e); +} + +int _linearToSRGB(double linearValue) { + if (linearValue <= 0.0031308) { + return (linearValue * 12.92 * 255.0).round().clamp(0, 255); + } else { + return ((1.055 * pow(linearValue, 1.0 / 2.4) - 0.055) * 255.0) + .round() + .clamp(0, 255); + } +} + +Future createViewer( + {img.Color? bg, + Vector3? cameraPosition, + viewportDimensions = (width: 500, height: 500)}) async { + final packageUri = findPackageRoot('thermion_dart'); + + final lib = ThermionDartTexture1(DynamicLibrary.open( + '${packageUri.toFilePath()}/native/lib/macos/swift/libthermion_swift.dylib')); + final object = ThermionDartTexture.new1(lib); + object.initWithWidth_height_( + viewportDimensions.width, viewportDimensions.height); + + final resourceLoader = calloc(1); + var loadToOut = NativeCallable< + Void Function(Pointer, + Pointer)>.listener(DartResourceLoader.loadResource); + + resourceLoader.ref.loadToOut = loadToOut.nativeFunction; + var freeResource = NativeCallable.listener( + DartResourceLoader.freeResource); + resourceLoader.ref.freeResource = freeResource.nativeFunction; + + var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast()); + + await viewer.initialized; + await viewer.createSwapChain(viewportDimensions.width.toDouble(), + viewportDimensions.height.toDouble()); + await viewer.createRenderTarget(viewportDimensions.width.toDouble(), + viewportDimensions.height.toDouble(), object.metalTextureAddress); + await viewer.updateViewportAndCameraProjection( + viewportDimensions.width.toDouble(), + viewportDimensions.height.toDouble()); + if (bg != null) { + await viewer.setBackgroundColor( + bg.r.toDouble(), bg.g.toDouble(), bg.b.toDouble(), bg.a.toDouble()); + } + + if (cameraPosition != null) { + await viewer.setCameraPosition( + cameraPosition.x, cameraPosition.y, cameraPosition.z); + } + return viewer; +} + +Uint8List poissonBlend(List textures, int width, int height) { + final int numTextures = textures.length; + final int size = width * height; + + // Initialize the result + List result = List.generate(size, (_) => Vector4(0, 0, 0, 0)); + List validPixel = List.generate(size, (_) => false); + + // Compute gradients and perform simplified Poisson blending + for (int y = 1; y < height - 1; y++) { + for (int x = 1; x < width - 1; x++) { + int index = y * width + x; + Vector4 gradX = Vector4(0, 0, 0, 0); + Vector4 gradY = Vector4(0, 0, 0, 0); + bool hasValidData = false; + + for (int t = 0; t < numTextures; t++) { + int i = index * 4; + if (textures[t][i] == 0 && + textures[t][i + 1] == 0 && + textures[t][i + 2] == 0 && + textures[t][i + 3] == 0) { + continue; // Skip this texture if the pixel is empty + } + + hasValidData = true; + int iLeft = (y * width + x - 1) * 4; + int iRight = (y * width + x + 1) * 4; + int iUp = ((y - 1) * width + x) * 4; + int iDown = ((y + 1) * width + x) * 4; + + Vector4 gx = Vector4( + (textures[t][iRight] - textures[t][iLeft]) / 2, + (textures[t][iRight + 1] - textures[t][iLeft + 1]) / 2, + (textures[t][iRight + 2] - textures[t][iLeft + 2]) / 2, + (textures[t][iRight + 3] - textures[t][iLeft + 3]) / 2); + + Vector4 gy = Vector4( + (textures[t][iDown] - textures[t][iUp]) / 2, + (textures[t][iDown + 1] - textures[t][iUp + 1]) / 2, + (textures[t][iDown + 2] - textures[t][iUp + 2]) / 2, + (textures[t][iDown + 3] - textures[t][iUp + 3]) / 2); + + // Select the gradient with larger magnitude + double magX = gx.r * gx.r + gx.g * gx.g + gx.b * gx.b + gx.a * gx.a; + double magY = gy.r * gy.r + gy.g * gy.g + gy.b * gy.b + gy.a * gy.a; + + if (magX > + gradX.r * gradX.r + + gradX.g * gradX.g + + gradX.b * gradX.b + + gradX.a * gradX.a) { + gradX = gx; + } + if (magY > + gradY.r * gradY.r + + gradY.g * gradY.g + + gradY.b * gradY.b + + gradY.a * gradY.a) { + gradY = gy; + } + } + + if (hasValidData) { + validPixel[index] = true; + // Simplified Poisson equation solver (Jacobi iteration) + result[index].r = (result[index - 1].r + + result[index + 1].r + + result[index - width].r + + result[index + width].r + + gradX.r - + gradY.r) / + 4; + result[index].g = (result[index - 1].g + + result[index + 1].g + + result[index - width].g + + result[index + width].g + + gradX.g - + gradY.g) / + 4; + result[index].b = (result[index - 1].b + + result[index + 1].b + + result[index - width].b + + result[index + width].b + + gradX.b - + gradY.b) / + 4; + result[index].a = (result[index - 1].a + + result[index + 1].a + + result[index - width].a + + result[index + width].a + + gradX.a - + gradY.a) / + 4; + } + } + } + + // Fill in gaps and normalize + Uint8List finalResult = Uint8List(size * 4); + for (int i = 0; i < size; i++) { + if (validPixel[i]) { + finalResult[i * 4] = (result[i].r.clamp(0, 255)).toInt(); + finalResult[i * 4 + 1] = (result[i].g.clamp(0, 255)).toInt(); + finalResult[i * 4 + 2] = (result[i].b.clamp(0, 255)).toInt(); + finalResult[i * 4 + 3] = (result[i].a.clamp(0, 255)).toInt(); + } else { + // For invalid pixels, try to interpolate from neighbors + List validNeighbors = []; + if (i > width && validPixel[i - width]) validNeighbors.add(i - width); + if (i < size - width && validPixel[i + width]) + validNeighbors.add(i + width); + if (i % width > 0 && validPixel[i - 1]) validNeighbors.add(i - 1); + if (i % width < width - 1 && validPixel[i + 1]) validNeighbors.add(i + 1); + + if (validNeighbors.isNotEmpty) { + double r = 0, g = 0, b = 0, a = 0; + for (int neighbor in validNeighbors) { + r += result[neighbor].r; + g += result[neighbor].g; + b += result[neighbor].b; + a += result[neighbor].a; + } + finalResult[i * 4] = (r / validNeighbors.length).clamp(0, 255).toInt(); + finalResult[i * 4 + 1] = + (g / validNeighbors.length).clamp(0, 255).toInt(); + finalResult[i * 4 + 2] = + (b / validNeighbors.length).clamp(0, 255).toInt(); + finalResult[i * 4 + 3] = + (a / validNeighbors.length).clamp(0, 255).toInt(); + } else { + // If no valid neighbors, set to transparent black + finalResult[i * 4] = 0; + finalResult[i * 4 + 1] = 0; + finalResult[i * 4 + 2] = 0; + finalResult[i * 4 + 3] = 0; + } + } + } + + return finalResult; +} + +Uint8List medianImages(List images) { + if (images.isEmpty) { + return Uint8List(0); + } + + int imageSize = images[0].length; + Uint8List result = Uint8List(imageSize); + int numImages = images.length; + + for (int i = 0; i < imageSize; i++) { + List pixelValues = []; + for (int j = 0; j < numImages; j++) { + pixelValues.add(images[j][i]); + } + + pixelValues.sort(); + int medianIndex = numImages ~/ 2; + result[i] = pixelValues[medianIndex]; + } + + return result; +} + +Uint8List maxIntensityProjection( + List textures, int width, int height) { + final int numTextures = textures.length; + final int size = width * height; + + // Initialize the result with the first texture + Uint8List result = Uint8List.fromList(textures[0]); + + // Iterate through all textures and perform max intensity projection + for (int t = 1; t < numTextures; t++) { + for (int i = 0; i < size * 4; i += 4) { + // Calculate intensity (using luminance formula) + double intensityCurrent = + 0.299 * result[i] + 0.587 * result[i + 1] + 0.114 * result[i + 2]; + double intensityNew = 0.299 * textures[t][i] + + 0.587 * textures[t][i + 1] + + 0.114 * textures[t][i + 2]; + + // If the new texture has higher intensity, use its values + if (intensityNew > intensityCurrent) { + result[i] = textures[t][i]; // R + result[i + 1] = textures[t][i + 1]; // G + result[i + 2] = textures[t][i + 2]; // B + result[i + 3] = textures[t][i + 3]; // A + } + } + } + + return result; +} + +// Helper function to blend MIP result with Poisson blending +Uint8List blendMIPWithPoisson( + Uint8List mipResult, Uint8List poissonResult, double alpha) { + final int size = mipResult.length; + Uint8List blendedResult = Uint8List(size); + + for (int i = 0; i < size; i++) { + blendedResult[i] = (mipResult[i] * (1 - alpha) + poissonResult[i] * alpha) + .round() + .clamp(0, 255); + } + + return blendedResult; +} + +Uint8List pngToPixelBuffer(Uint8List pngData) { + // Decode the PNG image + final image = img.decodePng(pngData); + + if (image == null) { + throw Exception('Failed to decode PNG image'); + } + + // Create a buffer for the raw pixel data + final rawPixels = Uint8List(image.width * image.height * 4); + + // Convert the image to RGBA format + for (int y = 0; y < image.height; y++) { + for (int x = 0; x < image.width; x++) { + final pixel = image.getPixel(x, y); + final i = (y * image.width + x) * 4; + rawPixels[i] = pixel.r.toInt(); // Red + rawPixels[i + 1] = pixel.g.toInt(); // Green + rawPixels[i + 2] = pixel.b.toInt(); // Blue + rawPixels[i + 3] = pixel.a.toInt(); // Alpha + } + } + + return rawPixels; +} + +Uint8List medianBlending(List textures, int width, int height) { + final int numTextures = textures.length; + final int size = width * height; + + Uint8List result = Uint8List(size * 4); + + for (int i = 0; i < size; i++) { + List values = []; + for (int t = 0; t < numTextures; t++) { + if (textures[t][i * 4] != 0 || + textures[t][i * 4 + 1] != 0 || + textures[t][i * 4 + 2] != 0 || + textures[t][i * 4 + 3] != 0) { + values.addAll(textures[t].sublist(i * 4, i * 4 + 4)); + } + } + + if (values.isNotEmpty) { + values.sort(); + result[i] = values[values.length ~/ 2]; + } else { + result[i] = 0; // If no valid data, set to transparent + } + } + + return result; +} diff --git a/thermion_dart/test/integration_test.dart b/thermion_dart/test/integration_test.dart index eaab19fb..511316f6 100644 --- a/thermion_dart/test/integration_test.dart +++ b/thermion_dart/test/integration_test.dart @@ -1,128 +1,1078 @@ +import 'dart:async'; import 'dart:io'; -import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart'; -import 'package:thermion_dart/thermion_dart/thermion_viewer_ffi.dart'; -import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart'; -import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:image/image.dart'; +import 'package:thermion_dart/thermion_dart.dart'; import 'package:test/test.dart'; import 'package:animation_tools_dart/animation_tools_dart.dart'; +import 'package:path/path.dart' as p; +import 'package:thermion_dart/thermion_dart/utils/geometry.dart'; +import 'package:thermion_dart/thermion_dart/viewer/events.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart'; +import 'package:vector_math/vector_math_64.dart'; -/// Test files are run in a variety of ways, find this package root in all. -/// -/// Test files can be run from source from any working directory. The Dart SDK -/// `tools/test.py` runs them from the root of the SDK for example. -/// -/// Test files can be run from dill from the root of package. `package:test` -/// does this. -Uri findPackageRoot(String packageName) { - final script = Platform.script; - final fileName = script.name; - if (fileName.endsWith('_test.dart')) { - // We're likely running from source. - var directory = script.resolve('.'); - while (true) { - final dirName = directory.name; - if (dirName == packageName) { - return directory; - } - final parent = directory.resolve('..'); - if (parent == directory) break; - directory = parent; - } - } else if (fileName.endsWith('.dill')) { - final cwd = Directory.current.uri; - final dirName = cwd.name; - if (dirName == packageName) { - return cwd; - } - } - throw StateError("Could not find package root for package '$packageName'. " - 'Tried finding the package root via Platform.script ' - "'${Platform.script.toFilePath()}' and Directory.current " - "'${Directory.current.uri.toFilePath()}'."); -} +import 'helpers.dart'; -extension on Uri { - String get name => pathSegments.where((e) => e != '').last; -} +Color kWhite = ColorFloat32(4)..setRgba(1.0, 1.0, 1.0, 1.0); +Color kRed = ColorFloat32(4)..setRgba(1.0, 0.0, 0.0, 1.0); -late String testDir; void main() async { final packageUri = findPackageRoot('thermion_dart'); testDir = Directory("${packageUri.toFilePath()}/test").path; - final lib = ThermionDartTexture1(DynamicLibrary.open( - '${packageUri.toFilePath()}/native/lib/macos/swift/libdartfilamenttexture.dylib')); - final object = ThermionDartTexture.new1(lib); - object.initWithWidth_height_(500, 500); - final resourceLoader = calloc(1); - var loadToOut = NativeCallable< - Void Function(Pointer, - Pointer)>.listener(DartResourceLoader.loadResource); + var outDir = Directory("$testDir/output"); - resourceLoader.ref.loadToOut = loadToOut.nativeFunction; - var freeResource = NativeCallable.listener( - DartResourceLoader.freeResource); - resourceLoader.ref.freeResource = freeResource.nativeFunction; + // outDir.deleteSync(recursive: true); + outDir.createSync(); - var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast()); + Future _capture(ThermionViewer viewer, String outputFilename) async { + await Future.delayed(Duration(milliseconds: 10)); + var outPath = p.join(outDir.path, "$outputFilename.bmp"); + var pixelBuffer = await viewer.capture(); + await savePixelBufferToBmp( + pixelBuffer, + viewer.viewportDimensions.$1.toInt(), + viewer.viewportDimensions.$2.toInt(), + outPath); + return pixelBuffer; + } - await viewer.initialized; - await viewer.createSwapChain(500, 500); - await viewer.createRenderTarget(500, 500, object.metalTextureAddress); - await viewer.updateViewportAndCameraProjection(500, 500); + group('camera', () { + test('getCameraModelMatrix, getCameraPosition, rotation', () async { + var viewer = await createViewer(); + var matrix = await viewer.getCameraModelMatrix(); + expect(matrix.trace(), 4); + await viewer.setCameraPosition(2.0, 2.0, 2.0); + matrix = await viewer.getCameraModelMatrix(); + var position = matrix.getColumn(3).xyz; + expect(position.x, 2.0); + expect(position.y, 2.0); + expect(position.z, 2.0); + + position = await viewer.getCameraPosition(); + expect(position.x, 2.0); + expect(position.y, 2.0); + expect(position.z, 2.0); + }); + + test('getCameraViewMatrix', () async { + var viewer = await createViewer(); + + var modelMatrix = await viewer.getCameraModelMatrix(); + var viewMatrix = await viewer.getCameraViewMatrix(); + + // The view matrix should be the inverse of the model matrix + var identity = modelMatrix * viewMatrix; + expect(identity.isIdentity(), isTrue); + + // Check that moving the camera affects the view matrix + await viewer.setCameraPosition(3.0, 4.0, 5.0); + viewMatrix = await viewer.getCameraViewMatrix(); + var invertedView = viewMatrix.clone()..invert(); + var position = invertedView.getColumn(3).xyz; + expect(position.x, closeTo(3.0, 1e-6)); + expect(position.y, closeTo(4.0, 1e-6)); + expect(position.z, closeTo(5.0, 1e-6)); + }); + + test('getCameraProjectionMatrix', () async { + var viewer = await createViewer(); + var projectionMatrix = await viewer.getCameraProjectionMatrix(); + print(projectionMatrix); + }); + + test('getCameraCullingProjectionMatrix', () async { + var viewer = await createViewer(); + var matrix = await viewer.getCameraCullingProjectionMatrix(); + print(matrix); + throw Exception("TODO"); + }); + + test('getCameraFrustum', () async { + var viewer = await createViewer(); + var frustum = await viewer.getCameraFrustum(); + print(frustum.plane5.normal); + print(frustum.plane5.constant); + + await viewer.setCameraLensProjection( + near: 10.0, far: 1000.0, aspect: 1.0, focalLength: 28.0); + frustum = await viewer.getCameraFrustum(); + print(frustum.plane5.normal); + print(frustum.plane5.constant); + }); + + test('set custom projection/culling matrix', () async { + var viewer = await createViewer(bg:kRed, cameraPosition:Vector3(0,0,4)); + var camera = await viewer.getMainCamera(); + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + + // cube is visible when inside the frustum, cube is visible + var projectionMatrix = + makeOrthographicMatrix(-10.0, 10.0, -10.0, 10.0, 0.05, 10000); + await camera.setProjectionMatrixWithCulling( + projectionMatrix, 0.05, 10000); + await _capture(viewer, "camera_projection_culling_matrix_object_in_frustum"); + + // cube no longer visible when the far plane is moved closer to camera so cube is outside + projectionMatrix = + makeOrthographicMatrix(-10.0, 10.0, -10.0, 10.0, 0.05, 1); + await camera.setProjectionMatrixWithCulling( + projectionMatrix, 0.05, 1); + await _capture(viewer, "camera_projection_culling_matrix_object_outside_frustum"); + }); + }); group('background', () { - test('set background color', () async { - var outDir = Directory("$testDir/bgcolor"); - outDir.createSync(); - await viewer.setRecordingOutputDirectory(outDir.path); + test('set background color to solid green', () async { + var viewer = await createViewer(); await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); - await viewer.setRecording(true); - await viewer.render(); - await viewer.render(); - await viewer.render(); + await _capture(viewer, "set_background_color_to_solid_green"); + await viewer.dispose(); + }); + + test('set background color to full transparency', () async { + var viewer = await createViewer(); + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 0.0); + await _capture(viewer, "set_background_color_to_transparent_green"); + await viewer.dispose(); }); test('load skybox', () async { - var outDir = Directory("$testDir/skybox"); - outDir.createSync(); - await viewer.setRecordingOutputDirectory(outDir.path); - await viewer.setRecording(true); + var viewer = await createViewer(); await viewer.loadSkybox( "file:///$testDir/../../examples/assets/default_env/default_env_skybox.ktx"); - await viewer.render(); - await viewer.render(); - await viewer.setRecording(false); + await Future.delayed(Duration(seconds: 1)); + await _capture(viewer, "skybox"); + }); + + test('set background image', () async { + var viewer = await createViewer(); + await viewer + .setBackgroundImage("file:///$testDir/cube_texture_512x512.png"); + await viewer.setPostProcessing(true); + await viewer.setToneMapping(ToneMapper.LINEAR); + await _capture(viewer, "set_background_image"); + await viewer.dispose(); }); }); - group('Skinning & animations', () { - test('get bone names', () async { - var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); - var names = await viewer.getBoneNames(model); - expect(names.first, "Bone"); + group("gltf", () { + test('load glb from file', () async { + var viewer = await createViewer(); + var model = await viewer.loadGlb("file://$testDir/cube.glb"); + await viewer.transformToUnitCube(model); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + await viewer.setCameraPosition(0, 1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + await _capture(viewer, "load_glb_from_file"); }); - test('reset bones', () async { - var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); - await viewer.resetBones(model); - }); - test('set from BVH', () async { - var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); - var animation = BVHParser.parse( - File("$testDir/assets/animation.bvh").readAsStringSync(), - boneRegex: RegExp(r"Bone$")); - await viewer.addBoneAnimation(model, animation); + test('load glb from buffer', () async { + var viewer = await createViewer(); + var buffer = File("$testDir/cube.glb").readAsBytesSync(); + var model = await viewer.loadGlbFromBuffer(buffer); + await viewer.transformToUnitCube(model); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + await viewer.setCameraPosition(0, 1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + await _capture(viewer, "load_glb_from_buffer"); }); - test('fade in/out', () async { - var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); - var animation = BVHParser.parse( - File("$testDir/assets/animation.bvh").readAsStringSync(), - boneRegex: RegExp(r"Bone$")); - await viewer.addBoneAnimation(model, animation, - fadeInInSecs: 0.5, fadeOutInSecs: 0.5); - await Future.delayed(Duration(seconds: 1)); + test('load glb from buffer with priority', () async { + var viewer = await createViewer(); + await viewer.addDirectLight(DirectLight.sun()); + await viewer.setBackgroundColor(1.0, 1.0, 1.0, 1.0); + await viewer.setCameraPosition(0, 3, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var buffer = File("$testDir/cube.glb").readAsBytesSync(); + var model1 = await viewer.loadGlbFromBuffer(buffer, priority: 7); + var model2 = await viewer.loadGlbFromBuffer(buffer, priority: 0); + + for (final entity in await viewer.getChildEntities(model1, true)) { + await viewer.setMaterialPropertyFloat4( + entity, "baseColorFactor", 0, 0, 0, 1.0, 1.0); + } + for (final entity in await viewer.getChildEntities(model2, true)) { + await viewer.setMaterialPropertyFloat4( + entity, "baseColorFactor", 0, 0, 1.0, 0.0, 1.0); + } + await _capture(viewer, "load_glb_from_buffer_with_priority"); }); }); + + group("scene update events", () { + test('add light fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + + final success = Completer(); + var light = DirectLight( + type: LightType.POINT, + color: 6500, + intensity: 1000000, + position: Vector3(0, 0.6, 0.6), + direction: Vector3(0, 0, 0), + falloffRadius: 2.0); + + late StreamSubscription listener; + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityAdded && + updateEvent.addedEntityType == EntityType.DirectLight && + updateEvent.getDirectLight() == light; + success.complete(wasSuccess); + listener.cancel(); + }); + await viewer.addDirectLight(light); + expect(await success.future, true); + }); + + test('remove light fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + + final success = Completer(); + var light = await viewer.addDirectLight(DirectLight.point()); + + late StreamSubscription listener; + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityRemoved && + updateEvent.entity == light; + success.complete(wasSuccess); + listener.cancel(); + }); + + await viewer.removeLight(light); + + expect(await success.future, true); + }); + + test('add geometry fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + + final success = Completer(); + var geometry = GeometryHelper.cube(); + + late StreamSubscription listener; + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityAdded && + updateEvent.addedEntityType == EntityType.Geometry && + updateEvent.getAsGeometry() == geometry; + success.complete(wasSuccess); + listener.cancel(); + }); + await viewer.createGeometry(geometry); + expect(await success.future, true); + }); + + test('remove geometry fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + var geometry = await viewer.createGeometry(GeometryHelper.cube()); + final success = Completer(); + + late StreamSubscription listener; + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityRemoved && + updateEvent.entity == geometry; + success.complete(wasSuccess); + listener.cancel(); + }); + + await viewer.removeEntity(geometry); + + expect(await success.future, true); + }); + + test('loadGlb fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + + final success = Completer(); + + late StreamSubscription listener; + + final uri = "$testDir/cube.glb"; + + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityAdded && + updateEvent.addedEntityType == EntityType.Gltf && + updateEvent.getAsGLTF().uri == uri; + success.complete(wasSuccess); + listener.cancel(); + }); + await viewer.loadGlb(uri, keepData: false); + expect(await success.future, true); + }); + + test('remove glb fires SceneUpdateEvent', () async { + var viewer = await createViewer(); + final uri = "$testDir/cube.glb"; + var entity = await viewer.loadGlb(uri, keepData: false); + + final success = Completer(); + + late StreamSubscription listener; + listener = viewer.sceneUpdated.listen((updateEvent) { + var wasSuccess = updateEvent.eventType == EventType.EntityRemoved && + updateEvent.entity == entity; + success.complete(wasSuccess); + listener.cancel(); + }); + await viewer.removeEntity(entity); + expect(await success.future, true); + }); + }); + + group("custom geometry", () { + test('create cube (no uvs/normals)', () async { + var viewer = await createViewer(); + await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 1.0, 1.0, 1.0); + await viewer + .createGeometry(GeometryHelper.cube(normals: false, uvs: false)); + + await _capture(viewer, "geometry_cube_no_uv_no_normal"); + }); + + test('create cube (no normals)', () async { + var viewer = await createViewer(); + var light = await viewer.addLight( + LightType.POINT, 6500, 10000000, 0, 2, 0, 0, 0, 0, + falloffRadius: 100.0); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 0.0, 1.0, 1.0); + await viewer + .createGeometry(GeometryHelper.cube(normals: false, uvs: false)); + await _capture(viewer, "geometry_cube_no_normals"); + }); + + test('create cube (with normals)', () async { + var viewer = await createViewer(); + + var light = await viewer.addLight( + LightType.POINT, 6500, 10000000, 0, 2, 0, 0, 0, 0, + falloffRadius: 100.0); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 1.0, 1.0, 1.0); + await viewer + .createGeometry(GeometryHelper.cube(normals: true, uvs: false)); + await _capture(viewer, "geometry_cube_with_normals"); + }); + + test('create cube with custom ubershader material instance (color)', + () async { + var viewer = await createViewer(); + await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 0.0, 1.0, 1.0); + + var materialInstance = + await viewer.createUbershaderMaterialInstance(unlit: true); + final cube = await viewer.createGeometry( + GeometryHelper.cube(uvs: false, normals: true), + materialInstance: materialInstance); + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 0.0); + await _capture(viewer, "geometry_cube_with_custom_material_ubershader"); + await viewer.removeEntity(cube); + await viewer.destroyMaterialInstance(materialInstance); + }); + + test('create cube with custom ubershader material instance (texture)', + () async { + var viewer = await createViewer(); + await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 0.0, 0.0, 1.0); + + var materialInstance = await viewer.createUbershaderMaterialInstance(); + final cube = await viewer.createGeometry( + GeometryHelper.cube(uvs: true, normals: true), + materialInstance: materialInstance); + var textureData = + File("$testDir/cube_texture_512x512.png").readAsBytesSync(); + var texture = await viewer.createTexture(textureData); + await viewer.applyTexture(texture as ThermionFFITexture, cube); + await _capture( + viewer, "geometry_cube_with_custom_material_ubershader_texture"); + await viewer.removeEntity(cube); + await viewer.destroyMaterialInstance(materialInstance); + await viewer.destroyTexture(texture); + }); + + test('create cube with custom material instance (unlit)', () async { + var viewer = await createViewer(); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setBackgroundColor(1.0, 0.0, 0.0, 1.0); + await viewer.setPostProcessing(true); + await viewer.setToneMapping(ToneMapper.LINEAR); + + var materialInstance = await viewer.createUnlitMaterialInstance(); + var cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: materialInstance); + + var textureData = + File("$testDir/cube_texture_512x512.png").readAsBytesSync(); + var texture = await viewer.createTexture(textureData); + await viewer.applyTexture(texture, cube); + await _capture( + viewer, "geometry_cube_with_custom_material_unlit_texture_only"); + await viewer.removeEntity(cube); + + cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: materialInstance); + // reusing same material instance, so set baseColorIndex to -1 to disable the texture + await viewer.setMaterialPropertyInt(cube, "baseColorIndex", 0, -1); + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 1.0); + await _capture( + viewer, "geometry_cube_with_custom_material_unlit_color_only"); + await viewer.removeEntity(cube); + + cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: materialInstance); + // now set baseColorIndex to 0 to enable the texture and the base color + await viewer.setMaterialPropertyInt(cube, "baseColorIndex", 0, 0); + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 0.5); + await viewer.applyTexture(texture, cube); + + await _capture( + viewer, "geometry_cube_with_custom_material_unlit_color_and_texture"); + + await viewer.removeEntity(cube); + + await viewer.destroyTexture(texture); + await viewer.destroyMaterialInstance(materialInstance); + await viewer.dispose(); + }); + + test('create sphere (no normals)', () async { + var viewer = await createViewer(); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + await viewer.setCameraPosition(0, 0, 6); + await viewer + .createGeometry(GeometryHelper.sphere(normals: false, uvs: false)); + await _capture(viewer, "geometry_sphere_no_normals"); + }); + }); + + group("MaterialInstance", () { + test('disable depth write', () async { + var viewer = await createViewer(); + await viewer.setBackgroundColor(1.0, 0.0, 0.0, 1.0); + await viewer.setCameraPosition(0, 0, 6); + await viewer.addDirectLight( + DirectLight.sun(direction: Vector3(0, 0, -1)..normalize())); + + final cube1 = await viewer.createGeometry(GeometryHelper.cube()); + var materialInstance = await viewer.getMaterialInstanceAt(cube1, 0); + + final cube2 = await viewer.createGeometry(GeometryHelper.cube()); + await viewer.setMaterialPropertyFloat4( + cube2, "baseColorFactor", 0, 0, 1, 0, 1); + await viewer.setPosition(cube2, 1.0, 0.0, -1.0); + + expect(materialInstance, isNotNull); + + // with depth write enabled on both materials, cube2 renders behind the white cube + await _capture(viewer, "material_instance_depth_write_enabled"); + + // if we disable depth write on cube1, then cube2 will always appear in front + // (relying on insertion order) + materialInstance!.setDepthWriteEnabled(false); + await _capture(viewer, "material_instance_depth_write_disabled"); + + // set priority for the cube1 cube to 7 (render) last, cube1 renders in front + await viewer.setPriority(cube1, 7); + await _capture( + viewer, "material_instance_depth_write_disabled_with_priority"); + }); + }); + + // test('create instance from glb when keepData is true', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb", keepData: true); + // await viewer.transformToUnitCube(model); + // var instance = await viewer.createInstance(model); + // await viewer.setPosition(instance, 0.5, 0.5, -0.5); + // await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + // await viewer.setCameraPosition(0, 1, 5); + // await viewer + // .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + // await viewer.setRendering(true); + // await _capture(viewer, "glb_create_instance"); + // await viewer.setRendering(false); + // }); + + // test('create instance from glb fails when keepData is false', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb", keepData: false); + // bool thrown = false; + // try { + // await viewer.createInstance(model); + // } catch (err) { + // thrown = true; + // } + // expect(thrown, true); + // }); + // }); + + // group('Skinning & animations', () { + // test('get bone names', () async { + // var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + // var names = await viewer.getBoneNames(model); + // expect(names.first, "Bone"); + // }); + + // test('reset bones', () async { + // var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + // await viewer.resetBones(model); + // }); + // test('set from BVH', () async { + // var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + // var animation = BVHParser.parse( + // File("$testDir/assets/animation.bvh").readAsStringSync(), + // boneRegex: RegExp(r"Bone$")); + // await viewer.addBoneAnimation(model, animation); + // }); + + // test('fade in/out', () async { + // var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + // var animation = BVHParser.parse( + // File("$testDir/assets/animation.bvh").readAsStringSync(), + // boneRegex: RegExp(r"Bone$")); + // await viewer.addBoneAnimation(model, animation, + // fadeInInSecs: 0.5, fadeOutInSecs: 0.5); + // await Future.delayed(Duration(seconds: 1)); + // }); + + group("materials", () { + test('set float4 material property for custom geometry', () async { + var viewer = await createViewer(); + + await viewer.setCameraPosition(0, 0, 6); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + var light = await viewer.addLight( + LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + await _capture(viewer, "set_material_float4_pre"); + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 1.0); + await _capture(viewer, "set_material_float4_post"); + }); + test('set float material property for custom geometry', () async { + var viewer = await createViewer(); + + await viewer.setCameraPosition(0, 0, 6); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + var light = await viewer.addLight( + LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + // this won't actually do anything because the default ubershader doesn't use specular/glossiness + // but we can at least check that the call succeeds + await _capture(viewer, "set_material_specular_pre"); + await viewer.setMaterialPropertyFloat(cube, "specularFactor", 0, 0.0); + await _capture(viewer, "set_material_specular_post"); + }); + + test('set float material property (roughness) for custom geometry', + () async { + var viewer = await createViewer(); + + await viewer.setCameraPosition(0, 0, 6); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + var light = await viewer.addLight( + LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); + + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + // this won't actually do anything because the default ubershader doesn't use specular/glossiness + // but we can at least check that the call succeeds + await _capture(viewer, "set_material_roughness_pre"); + + await viewer.setMaterialPropertyFloat(cube, "metallicFactor", 0, 0.0); + await viewer.setMaterialPropertyFloat(cube, "roughnessFactor", 0, 0.0); + await _capture(viewer, "set_material_roughness_post"); + }); + }); + + group("transforms & parenting", () { + test('getParent and getAncestor both return null when entity has no parent', + () async { + var viewer = await createViewer(); + + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + expect(await viewer.getParent(cube), isNull); + expect(await viewer.getAncestor(cube), isNull); + }); + + test( + 'getParent returns the parent entity after one has been set via setParent', + () async { + var viewer = await createViewer(); + + final cube1 = await viewer.createGeometry(GeometryHelper.cube()); + + final cube2 = await viewer.createGeometry(GeometryHelper.cube()); + + await viewer.setParent(cube1, cube2); + + final parent = await viewer.getParent(cube1); + + expect(parent, cube2); + }); + + test('getAncestor returns the ultimate parent entity', () async { + var viewer = await createViewer(); + + final grandparent = await viewer.createGeometry(GeometryHelper.cube()); + final parent = await viewer.createGeometry(GeometryHelper.cube()); + final child = await viewer.createGeometry(GeometryHelper.cube()); + + await viewer.setParent(child, parent); + await viewer.setParent(parent, grandparent); + + expect(await viewer.getAncestor(child), grandparent); + }); + + test('set position based on screenspace coord', () async { + var viewer = await createViewer(); + print(await viewer.getCameraFov(true)); + await viewer.createIbl(1.0, 1.0, 1.0, 1000); + await viewer.setCameraPosition(0, 0, 6); + await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0); + // Create the cube geometry + final cube = await viewer.createGeometry(GeometryHelper.cube()); + // await viewer.setPosition(cube, -0.05, 0.04, 5.9); + // await viewer.setPosition(cube, -2.54, 2.54, 0); + await viewer.queuePositionUpdateFromViewportCoords(cube, 0, 0); + + // we need an explicit render call here to process the transform queue + await viewer.render(); + + await _capture(viewer, "set_position_from_viewport_coords"); + }); + }); + + group("layers & overlays", () { + test('enable grid overlay', () async { + var viewer = await createViewer(); + await viewer.setBackgroundColor(0, 0, 0, 1); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + await viewer.setCameraPosition(0, 2, 0); + await _capture(viewer, "grid_overlay_default"); + await viewer.setLayerVisibility(7, true); + await _capture(viewer, "grid_overlay_enabled"); + await viewer.setLayerVisibility(7, false); + await _capture(viewer, "grid_overlay_disabled"); + }); + + test('load glb from buffer with layer', () async { + var viewer = await createViewer(); + + await viewer.setBackgroundColor(1, 0, 1, 1); + await viewer.setCameraPosition(0, 2, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var buffer = File("$testDir/cube.glb").readAsBytesSync(); + var model = await viewer.loadGlbFromBuffer(buffer, layer: 1); + await _capture(viewer, "load_glb_from_buffer_with_layer_disabled"); + await viewer.setLayerVisibility(1, true); + await _capture(viewer, "load_glb_from_buffer_with_layer_enabled"); + }); + + test('change layer visibility at runtime', () async { + var viewer = await createViewer(); + + await viewer.setBackgroundColor(1, 0, 1, 1); + await viewer.setCameraPosition(0, 2, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var cube = await viewer.createGeometry(GeometryHelper.cube()); + await _capture(viewer, "change_layer_visibility_at_runtime_default"); + + // all entities set to layer 0 by default, so this should now be invisible + await viewer.setLayerVisibility(0, false); + await _capture( + viewer, "change_layer_visibility_at_runtime_layer0_invisible"); + + // now change the visibility layer to 5, should be invisible + await viewer.setVisibilityLayer(cube, 5); + await _capture( + viewer, "change_layer_visibility_at_runtime_layer5_invisible"); + + // now toggle layer 5 visibility, cube should now be visible + await viewer.setLayerVisibility(5, true); + await _capture( + viewer, "change_layer_visibility_at_runtime_layer5_visible"); + }); + }); + + // test('point light', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb"); + // await viewer.transformToUnitCube(model); + // var light = await viewer.addLight( + // LightType.POINT, 6500, 1000000, 0, 2, 0, 0, -1, 0, + // falloffRadius: 10.0); + // await viewer.setBackgroundColor(0.0, 0.0, 0.0, 1.0); + // await viewer.setCameraPosition(0, 1, 5); + // await viewer + // .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + // await viewer.setRendering(true); + // await _capture(viewer, "point_light"); + // await viewer.setRendering(false); + // }); + + // test('set point light position', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb"); + // await viewer.transformToUnitCube(model); + // var light = await viewer.addLight( + // LightType.POINT, 6500, 1000000, 0, 2, 0, 0, -1, 0, + // falloffRadius: 10.0); + // await viewer.setLightPosition(light, 0.5, 2, 0); + // await viewer.setBackgroundColor(0.0, 0.0, 0.0, 1.0); + // await viewer.setCameraPosition(0, 1, 5); + // await viewer + // .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + // await viewer.setRendering(true); + // await _capture(viewer, "move_point_light"); + // await viewer.setRendering(false); + // }); + + // test('directional light', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb"); + // await viewer.transformToUnitCube(model); + // var light = await viewer.addLight( + // LightType.SUN, 6500, 1000000, 0, 0, 0, 0, -1, 0); + // await viewer.setBackgroundColor(0.0, 0.0, 0.0, 1.0); + // await viewer.setCameraPosition(0, 1, 5); + // await viewer + // .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + // await viewer.setRendering(true); + // await _capture(viewer, "directional_light"); + // await viewer.setRendering(false); + // }); + + // test('set directional light direction', () async { + // var model = await viewer.loadGlb("$testDir/cube.glb"); + // await viewer.transformToUnitCube(model); + // var light = await viewer.addLight( + // LightType.SUN, 6500, 1000000, 0, 0, 0, 0, -1, 0); + // await viewer.setLightDirection(light, Vector3(-1, -1, -1)); + // await viewer.setBackgroundColor(0.0, 0.0, 0.0, 1.0); + // await viewer.setCameraPosition(0, 1, 5); + // await viewer + // .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + // await viewer.setRendering(true); + // await _capture(viewer, "set_directional_light_direction"); + // await viewer.setRendering(false); + // }); + + group("stencil", () { + test('set stencil highlight for glb', () async { + final viewer = await createViewer(); + var model = await viewer.loadGlb("$testDir/cube.glb", keepData: true); + await viewer.setPostProcessing(true); + + var light = await viewer.addLight( + LightType.SUN, 6500, 1000000, 0, 0, 0, 0, -1, 0); + await viewer.setLightDirection(light, Vector3(0, 1, -1)); + + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); + await viewer.setCameraPosition(0, -1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), pi / 8)); + await viewer.setStencilHighlight(model); + await _capture(viewer, "stencil_highlight_glb"); + }); + + test('set stencil highlight for geometry', () async { + var viewer = await createViewer(); + await viewer.setPostProcessing(true); + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); + await viewer.setCameraPosition(0, 2, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var cube = await viewer.createGeometry(GeometryHelper.cube()); + await viewer.setStencilHighlight(cube); + + await _capture(viewer, "stencil_highlight_geometry"); + + await viewer.removeStencilHighlight(cube); + + await _capture(viewer, "stencil_highlight_geometry_remove"); + }); + + test('set stencil highlight for gltf asset', () async { + var viewer = await createViewer(); + await viewer.setPostProcessing(true); + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); + await viewer.setCameraPosition(0, 1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var cube1 = await viewer.loadGlb("$testDir/cube.glb", keepData: true); + await viewer.transformToUnitCube(cube1); + + await viewer.setStencilHighlight(cube1); + + await _capture(viewer, "stencil_highlight_gltf"); + + await viewer.removeStencilHighlight(cube1); + + await _capture(viewer, "stencil_highlight_gltf_removed"); + }); + + test('set stencil highlight for multiple geometry ', () async { + var viewer = await createViewer(); + await viewer.setPostProcessing(true); + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); + await viewer.setCameraPosition(0, 1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var cube1 = await viewer.createGeometry(GeometryHelper.cube()); + var cube2 = await viewer.createGeometry(GeometryHelper.cube()); + await viewer.setPosition(cube2, 0.5, 0.5, 0); + await viewer.setStencilHighlight(cube1); + await viewer.setStencilHighlight(cube2, r: 0.0, g: 0.0, b: 1.0); + + await _capture(viewer, "stencil_highlight_multiple_geometry"); + + await viewer.removeStencilHighlight(cube1); + await viewer.removeStencilHighlight(cube2); + + await _capture(viewer, "stencil_highlight_multiple_geometry_removed"); + }); + + test('set stencil highlight for multiple gltf assets ', () async { + var viewer = await createViewer(); + await viewer.setPostProcessing(true); + await viewer.setBackgroundColor(0.0, 1.0, 0.0, 1.0); + await viewer.setCameraPosition(0, 1, 5); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5)); + + var cube1 = await viewer.loadGlb("$testDir/cube.glb", keepData: true); + await viewer.transformToUnitCube(cube1); + var cube2 = await viewer.loadGlb("$testDir/cube.glb", keepData: true); + await viewer.transformToUnitCube(cube2); + await viewer.setPosition(cube2, 0.5, 0.5, 0); + await viewer.setStencilHighlight(cube1); + await viewer.setStencilHighlight(cube2, r: 0.0, g: 0.0, b: 1.0); + + await _capture(viewer, "stencil_highlight_multiple_geometry"); + + await viewer.removeStencilHighlight(cube1); + await viewer.removeStencilHighlight(cube2); + + await _capture(viewer, "stencil_highlight_multiple_geometry_removed"); + }); + }); + + group("texture", () { + test("create/apply/dispose texture", () async { + var viewer = await createViewer(); + + var textureData = + File("$testDir/cube_texture_512x512.png").readAsBytesSync(); + + var texture = await viewer.createTexture(textureData); + await viewer.setBackgroundColor(0.0, 0.0, 0.0, 1.0); + await viewer.addDirectLight( + DirectLight.sun(direction: Vector3(0, -10, -1)..normalize())); + await viewer.addDirectLight(DirectLight.spot( + intensity: 1000000, + position: Vector3(0, 0, 1.5), + direction: Vector3(0, 0, -1)..normalize(), + falloffRadius: 10, + spotLightConeInner: 1, + spotLightConeOuter: 1)); + await viewer.setCameraPosition(0, 2, 6); + await viewer + .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); + var materialInstance = + await viewer.createUbershaderMaterialInstance(unlit: true); + var cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: materialInstance); + + await viewer.setPostProcessing(true); + await viewer.setToneMapping(ToneMapper.LINEAR); + + await viewer.applyTexture(texture, cube, + materialIndex: 0, parameterName: "baseColorMap"); + + await _capture(viewer, "texture_applied_to_geometry"); + + await viewer.removeEntity(cube); + await viewer.destroyTexture(texture); + }); + }); + + group("render thread", () { + test("request frame on render thread", () async { + var viewer = await createViewer(); + viewer.requestFrame(); + + await Future.delayed(Duration(milliseconds: 20)); + await viewer.dispose(); + }); + }); + + group("unproject", () { + test("unproject", () async { + final dimensions = (width: 1280, height: 768); + + var viewer = await createViewer(viewportDimensions: dimensions); + await viewer.setPostProcessing(false); + // await viewer.setToneMapping(ToneMapper.LINEAR); + await viewer.setBackgroundColor(1.0, 1.0, 1.0, 1.0); + // await viewer.createIbl(1.0, 1.0, 1.0, 100000); + await viewer.addLight(LightType.SUN, 6500, 100000, -2, 0, 0, 1, -1, 0); + await viewer.addLight(LightType.SPOT, 6500, 500000, 0, 0, 2, 0, 0, -1, + falloffRadius: 10, spotLightConeInner: 1.0, spotLightConeOuter: 2.0); + + await viewer.setCameraPosition(-3, 4, 6); + await viewer.setCameraRotation( + Quaternion.axisAngle(Vector3(0, 1, 0), -pi / 8) * + Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 6)); + var cube = + await viewer.createGeometry(GeometryHelper.cube(), keepData: true); + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 1.0, 1.0, 1.0, 1.0); + var textureData = + File("$testDir/cube_texture_512x512.png").readAsBytesSync(); + var texture = await viewer.createTexture(textureData); + await viewer.applyTexture(texture, cube, + materialIndex: 0, parameterName: "baseColorMap"); + + var numFrames = 60; + + // first do the render + for (int i = 0; i < numFrames; i++) { + await viewer.setCameraPosition(-3 + (i / numFrames * 2), 4, 6); + + await viewer.setCameraRotation( + Quaternion.axisAngle(Vector3(0, 1, 0), -pi / 8) * + Quaternion.axisAngle( + Vector3(1, 0, 0), -pi / 6 - (i / numFrames * pi / 6))); + + var rendered = await _capture(viewer, "unproject_render$i"); + var renderPng = + await pixelsToPng(rendered, dimensions.width, dimensions.height); + + File("${outDir.path}/unproject_render${i}.png") + .writeAsBytesSync(renderPng); + } + + // then go off and convert the video + + // now unproject the render back onto the geometry + final textureSize = (width: 1280, height: 768); + var pixels = []; + // note we skip the first frame + for (int i = 0; i < numFrames; i++) { + await viewer.setCameraPosition(-3 + (i / numFrames * 2), 4, 6); + + await viewer.setCameraRotation( + Quaternion.axisAngle(Vector3(0, 1, 0), -pi / 8) * + Quaternion.axisAngle( + Vector3(1, 0, 0), -pi / 6 - (i / numFrames * pi / 6))); + + var input = pngToPixelBuffer(File( + "${outDir.path}/a8c317af-6081-4848-8a06-f6b69bc57664_${i + 1}.png") + .readAsBytesSync()); + var pixelBuffer = await (await viewer as ThermionViewerFFI).unproject( + cube, + input, + dimensions.width, + dimensions.height, + textureSize.width, + textureSize.height); + + // var png = await pixelsToPng(Uint8List.fromList(pixelBuffer), + // dimensions.width, dimensions.height); + + await savePixelBufferToBmp( + pixelBuffer, + textureSize.width, + textureSize.height, + p.join(outDir.path, "unprojected_texture${i}.bmp")); + + pixels.add(pixelBuffer); + + if (i > 10) { + break; + } + } + + // } + + final aggregatePixelBuffer = medianImages(pixels); + await savePixelBufferToBmp(aggregatePixelBuffer, textureSize.width, + textureSize.height, "unproject_texture.bmp"); + var pixelBufferPng = await pixelsToPng( + Uint8List.fromList(aggregatePixelBuffer), + dimensions.width, + dimensions.height); + File("${outDir.path}/unproject_texture.png") + .writeAsBytesSync(pixelBufferPng); + + await viewer.setPostProcessing(true); + await viewer.setToneMapping(ToneMapper.LINEAR); + + final unlit = await viewer.createUnlitMaterialInstance(); + await viewer.removeEntity(cube); + cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: unlit); + var reconstructedTexture = await viewer.createTexture(pixelBufferPng); + await viewer.applyTexture(reconstructedTexture, cube); + + await viewer.setCameraRotation( + Quaternion.axisAngle(Vector3(0, 1, 0), -pi / 8) * + Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 6)); + await _capture(viewer, "unproject_reconstruct"); + + // now re-render + for (int i = 0; i < numFrames; i++) { + await viewer.setCameraPosition(-3 + (i / numFrames * 2), 4, 6); + + await viewer.setCameraRotation( + Quaternion.axisAngle(Vector3(0, 1, 0), -pi / 8) * + Quaternion.axisAngle( + Vector3(1, 0, 0), -pi / 6 - (i / numFrames * pi / 6))); + + var rendered = await _capture(viewer, "unproject_rerender$i"); + var renderPng = + await pixelsToPng(rendered, dimensions.width, dimensions.height); + + File("${outDir.path}/unproject_rerender${i}.png") + .writeAsBytesSync(renderPng); + } + }, timeout: Timeout(Duration(minutes: 2))); + }); } diff --git a/thermion_dart/test/viewport_gizmo.dart b/thermion_dart/test/viewport_gizmo.dart new file mode 100644 index 00000000..34c32ead --- /dev/null +++ b/thermion_dart/test/viewport_gizmo.dart @@ -0,0 +1,85 @@ +import 'dart:ffi'; +import 'dart:io'; +import 'dart:math'; +import 'package:ffi/ffi.dart'; +import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; + +import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart'; + +import 'package:test/test.dart'; +import 'package:animation_tools_dart/animation_tools_dart.dart'; +import 'package:thermion_dart/thermion_dart/utils/geometry.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart'; +import 'package:vector_math/vector_math_64.dart'; + +/// Test files are run in a variety of ways, find this package root in all. +/// +/// Test files can be run from source from any working directory. The Dart SDK +/// `tools/test.py` runs them from the root of the SDK for example. +/// +/// Test files can be run from dill from the root of package. `package:test` +/// does this. +Uri findPackageRoot(String packageName) { + final script = Platform.script; + final fileName = script.name; + + // We're likely running from source. + var directory = script.resolve('.'); + while (true) { + final dirName = directory.name; + if (dirName == packageName) { + return directory; + } + final parent = directory.resolve('..'); + if (parent == directory) break; + directory = parent; + } + + throw StateError("Could not find package root for package '$packageName'. " + 'Tried finding the package root via Platform.script ' + "'${Platform.script.toFilePath()}' and Directory.current " + "'${Directory.current.uri.toFilePath()}'."); +} + +extension on Uri { + String get name => pathSegments.where((e) => e != '').last; +} + +late String testDir; +void main() async { + final packageUri = findPackageRoot('thermion_dart'); + testDir = Directory("${packageUri.toFilePath()}/test").path; + final lib = ThermionDartTexture1(DynamicLibrary.open( + '${packageUri.toFilePath()}/native/lib/macos/swift/libthermion_swift.dylib')); + final object = ThermionDartTexture.new1(lib); + object.initWithWidth_height_(500, 500); + + final resourceLoader = calloc(1); + var loadToOut = NativeCallable< + Void Function(Pointer, + Pointer)>.listener(DartResourceLoader.loadResource); + + resourceLoader.ref.loadToOut = loadToOut.nativeFunction; + var freeResource = NativeCallable.listener( + DartResourceLoader.freeResource); + resourceLoader.ref.freeResource = freeResource.nativeFunction; + + var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast()); + + await viewer.initialized; + await viewer.createSwapChain(500, 500); + await viewer.createRenderTarget(500, 500, object.metalTextureAddress); + await viewer.updateViewportAndCameraProjection(500, 500); + + group('viewport', () { + test('viewport', () async { + var entity = await viewer.createGeometry(GeometryHelper.cube()); + await viewer.setCameraPosition(0.0, 0.0, 4.0); + await viewer.setCameraRotation(Quaternion.axisAngle(Vector3(0,0,1), pi/2)); + await viewer.queueRelativePositionUpdateWorldAxis( + entity, 250.0, 250.0, 1, 0, 0); + }); + }); +} diff --git a/thermion_dart/test/viewport_grid.dart b/thermion_dart/test/viewport_grid.dart new file mode 100644 index 00000000..1131c4ee --- /dev/null +++ b/thermion_dart/test/viewport_grid.dart @@ -0,0 +1,76 @@ +import 'dart:ffi'; +import 'dart:io'; +import 'dart:math'; +import 'package:ffi/ffi.dart'; +import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; + +import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart'; + +import 'package:test/test.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_dart.g.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart'; + +import 'package:vector_math/vector_math_64.dart'; + +/// Test files are run in a variety of ways, find this package root in all. +/// +/// Test files can be run from source from any working directory. The Dart SDK +/// `tools/test.py` runs them from the root of the SDK for example. +/// +/// Test files can be run from dill from the root of package. `package:test` +/// does this. +Uri findPackageRoot(String packageName) { + final script = Platform.script; + final fileName = script.name; + + // We're likely running from source. + var directory = script.resolve('.'); + while (true) { + final dirName = directory.name; + if (dirName == packageName) { + return directory; + } + final parent = directory.resolve('..'); + if (parent == directory) break; + directory = parent; + } + + throw StateError("Could not find package root for package '$packageName'. " + 'Tried finding the package root via Platform.script ' + "'${Platform.script.toFilePath()}' and Directory.current " + "'${Directory.current.uri.toFilePath()}'."); +} + +extension on Uri { + String get name => pathSegments.where((e) => e != '').last; +} + +late String testDir; +void main() async { + final packageUri = findPackageRoot('thermion_dart'); + testDir = Directory("${packageUri.toFilePath()}/test").path; + final lib = ThermionDartTexture1(DynamicLibrary.open( + '${packageUri.toFilePath()}/native/lib/macos/swift/libthermion_swift.dylib')); + final object = ThermionDartTexture.new1(lib); + object.initWithWidth_height_(500, 500); + + final resourceLoader = calloc(1); + var loadToOut = NativeCallable< + Void Function(Pointer, + Pointer)>.listener(DartResourceLoader.loadResource); + + resourceLoader.ref.loadToOut = loadToOut.nativeFunction; + var freeResource = NativeCallable.listener( + DartResourceLoader.freeResource); + resourceLoader.ref.freeResource = freeResource.nativeFunction; + + var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast()); + + await viewer.initialized; + await viewer.createSwapChain(500, 500); + await viewer.createRenderTarget(500, 500, object.metalTextureAddress); + await viewer.updateViewportAndCameraProjection(500, 500); + + +} diff --git a/thermion_flutter/thermion_flutter/android/build.gradle b/thermion_flutter/thermion_flutter/android/build.gradle index c456547c..8563c70f 100644 --- a/thermion_flutter/thermion_flutter/android/build.gradle +++ b/thermion_flutter/thermion_flutter/android/build.gradle @@ -1,4 +1,4 @@ -group 'app.polyvox.filament' +group 'dev.thermion.android' version '1.0-SNAPSHOT' buildscript { @@ -25,6 +25,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { + namespace 'dev.thermion.android' compileSdkVersion 33 ndkVersion '25.2.9519653' compileOptions { diff --git a/thermion_flutter/thermion_flutter/android/src/main/AndroidManifest.xml b/thermion_flutter/thermion_flutter/android/src/main/AndroidManifest.xml index e3327c11..399379b9 100644 --- a/thermion_flutter/thermion_flutter/android/src/main/AndroidManifest.xml +++ b/thermion_flutter/thermion_flutter/android/src/main/AndroidManifest.xml @@ -1,3 +1,3 @@ + package="dev.thermion.android"> diff --git a/thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt b/thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/FilamentInterop.kt similarity index 97% rename from thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt rename to thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/FilamentInterop.kt index 8430b593..044f039d 100644 --- a/thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt +++ b/thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/FilamentInterop.kt @@ -1,4 +1,4 @@ -package app.polyvox.filament +package dev.thermion.android import com.sun.jna.ptr.PointerByReference import com.sun.jna.ptr.IntByReference diff --git a/thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/HotReloadPathHelper.kt b/thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/HotReloadPathHelper.kt similarity index 100% rename from thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/HotReloadPathHelper.kt rename to thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/HotReloadPathHelper.kt diff --git a/thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/ThermionFlutterPlugin.kt b/thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/ThermionFlutterPlugin.kt similarity index 99% rename from thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/ThermionFlutterPlugin.kt rename to thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/ThermionFlutterPlugin.kt index ec922948..e039d05d 100644 --- a/thermion_flutter/thermion_flutter/android/src/main/kotlin/app/polyvox/filament/ThermionFlutterPlugin.kt +++ b/thermion_flutter/thermion_flutter/android/src/main/kotlin/dev/thermion/android/ThermionFlutterPlugin.kt @@ -1,4 +1,4 @@ -package app.polyvox.filament +package dev.thermion.android import HotReloadPathHelper diff --git a/thermion_flutter/thermion_flutter/lib/thermion/thermion_flutter_plugin.dart b/thermion_flutter/thermion_flutter/lib/thermion/thermion_flutter_plugin.dart index 3c784cc9..eba560cc 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/thermion_flutter_plugin.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/thermion_flutter_plugin.dart @@ -9,10 +9,8 @@ import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dar /// surface in a Flutter application and lifecycle listeners to pause rendering /// when the app is inactive or in the background. /// Call [createViewer] to create an instance of [ThermionViewer]. -/// This is a lightweight singleton that /// class ThermionFlutterPlugin { - ThermionFlutterPlugin._(); static AppLifecycleListener? _appLifecycleListener; @@ -62,13 +60,35 @@ class ThermionFlutterPlugin { } } + @Deprecated("Use createViewerWithOptions") static Future createViewer({String? uberArchivePath}) async { if (_initializing) { throw Exception("Existing call to createViewer has not completed."); } _initializing = true; + _viewer = await ThermionFlutterPlatform.instance - .createViewer(uberArchivePath: uberArchivePath); + .createViewer(uberarchivePath: uberArchivePath); + _appLifecycleListener = AppLifecycleListener( + onStateChange: _handleStateChange, + ); + _viewer!.onDispose(() async { + _viewer = null; + _appLifecycleListener?.dispose(); + _appLifecycleListener = null; + }); + _initializing = false; + return _viewer!; + } + + static Future createViewerWithOptions( + {ThermionFlutterOptions options = const ThermionFlutterOptions.empty()}) async { + if (_initializing) { + throw Exception("Existing call to createViewer has not completed."); + } + _initializing = true; + _viewer = + await ThermionFlutterPlatform.instance.createViewerWithOptions(options); _appLifecycleListener = AppLifecycleListener( onStateChange: _handleStateChange, ); @@ -82,9 +102,13 @@ class ThermionFlutterPlugin { } static Future createTexture( - int width, int height, int offsetLeft, int offsetRight) async { + double width, + double height, + double offsetLeft, + double offsetTop, + double pixelRatio) async { return ThermionFlutterPlatform.instance - .createTexture(width, height, offsetLeft, offsetRight); + .createTexture(width, height, offsetLeft, offsetTop, pixelRatio); } static Future destroyTexture(ThermionFlutterTexture texture) async { @@ -92,9 +116,14 @@ class ThermionFlutterPlugin { } @override - static Future resizeTexture(ThermionFlutterTexture texture, - int width, int height, int offsetLeft, int offsetRight) async { - return ThermionFlutterPlatform.instance - .resizeTexture(texture, width, height, offsetLeft, offsetRight); + static Future resizeTexture( + ThermionFlutterTexture texture, + int width, + int height, + int offsetLeft, + int offsetTop, + double pixelRatio) async { + return ThermionFlutterPlatform.instance.resizeTexture( + texture, width, height, offsetLeft, offsetTop, pixelRatio); } } diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_options_widget.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_options_widget.dart index b962c674..b3d543f4 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_options_widget.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_options_widget.dart @@ -1,10 +1,9 @@ import 'package:thermion_dart/thermion_dart/thermion_viewer.dart';import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import '../../utils/camera_orientation.dart'; import 'dart:math'; -import 'package:vector_math/vector_math_64.dart' as v64; + class CameraOptionsWidget extends StatefulWidget { final ThermionViewer controller; @@ -82,19 +81,19 @@ class _CameraOptionsWidgetState extends State { child: Container( decoration: BoxDecoration(color: Colors.white.withOpacity(0.5)), child: SliderTheme( - data: SliderThemeData( + data: const SliderThemeData( showValueIndicator: ShowValueIndicator.always, valueIndicatorTextStyle: TextStyle(color: Colors.black)), child: Column(mainAxisSize: MainAxisSize.min, children: [ Row(children: [ - Text("Aperture"), + const Text("Aperture"), Expanded( child: TextField( controller: _apertureController, )), - Text("Speed"), + const Text("Speed"), Expanded(child: TextField(controller: _speedController)), - Text("Sensitivity"), + const Text("Sensitivity"), Expanded( child: TextField(controller: _sensitivityController)), ]), @@ -112,7 +111,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("Focal length"), + const Text("Focal length"), Slider( label: _focalLength.toString(), value: _focalLength, @@ -127,7 +126,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("X"), + const Text("X"), Slider( label: widget.cameraOrientation.position.x.toString(), value: widget.cameraOrientation.position.x, @@ -141,7 +140,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("Y"), + const Text("Y"), Slider( label: widget.cameraOrientation.position.y.toString(), value: widget.cameraOrientation.position.y, @@ -155,7 +154,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("Z"), + const Text("Z"), Slider( label: widget.cameraOrientation.position.z.toString(), value: widget.cameraOrientation.position.z, @@ -169,7 +168,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("ROTX"), + const Text("ROTX"), Slider( label: widget.cameraOrientation.rotationX.toString(), value: widget.cameraOrientation.rotationX, @@ -183,7 +182,7 @@ class _CameraOptionsWidgetState extends State { }) ]), Row(children: [ - Text("ROTY"), + const Text("ROTY"), Slider( label: widget.cameraOrientation.rotationY.toString(), value: widget.cameraOrientation.rotationY, @@ -197,7 +196,7 @@ class _CameraOptionsWidgetState extends State { }), ]), Row(children: [ - Text("ROTZ"), + const Text("ROTZ"), Slider( label: widget.cameraOrientation.rotationZ.toString(), value: widget.cameraOrientation.rotationZ, @@ -213,7 +212,7 @@ class _CameraOptionsWidgetState extends State { Wrap( children: [ GestureDetector( - child: Text("Main "), + child: const Text("Main "), onTap: () { widget.controller.setMainCamera(); }, diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_orientation_widget.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_orientation_widget.dart new file mode 100644 index 00000000..4c052b84 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/camera_orientation_widget.dart @@ -0,0 +1,94 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:thermion_flutter/thermion_flutter.dart'; +import 'package:vector_math/vector_math_64.dart' as v64; + +class CameraOrientationWidget extends StatefulWidget { + final ThermionViewer viewer; + + const CameraOrientationWidget({Key? key, required this.viewer}) : super(key: key); + + @override + _CameraOrientationWidgetState createState() => _CameraOrientationWidgetState(); +} + +class _CameraOrientationWidgetState extends State with SingleTickerProviderStateMixin { + late AnimationController _controller; + v64.Vector3? _position; + v64.Matrix3? _rotation; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 16), // ~60 FPS + )..repeat(); + + _controller.addListener(_updateCameraInfo); + } + + void _updateCameraInfo() async { + final position = await widget.viewer.getCameraPosition(); + final rotation = await widget.viewer.getCameraRotation(); + setState(() { + _position = position; + _rotation = rotation; + }); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.7), + borderRadius: BorderRadius.circular(8.0), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Position: ${_formatVector(_position)}', + style: const TextStyle(color: Colors.white), + ), + const SizedBox(height: 4), + Text( + 'Rotation: ${_formatMatrix(_rotation)}', + style: const TextStyle(color: Colors.white), + ), + ], + ), + ); + } + + String _formatVector(v64.Vector3? vector) { + if (vector == null) return 'N/A'; + return '(${vector.x.toStringAsFixed(2)}, ${vector.y.toStringAsFixed(2)}, ${vector.z.toStringAsFixed(2)})'; + } + + String _formatMatrix(v64.Matrix3? matrix) { + if (matrix == null) return 'N/A'; + return 'Yaw: ${_getYaw(matrix).toStringAsFixed(2)}°, Pitch: ${_getPitch(matrix).toStringAsFixed(2)}°, Roll: ${_getRoll(matrix).toStringAsFixed(2)}°'; + } + + double _getYaw(v64.Matrix3 matrix) { + return -atan2(matrix[2], matrix[0]) * 180 / pi; + } + + double _getPitch(v64.Matrix3 matrix) { + return -asin(matrix[5]) * 180 / pi; + } + + double _getRoll(v64.Matrix3 matrix) { + return atan2(matrix[3], matrix[4]) * 180 / pi; + } +} \ No newline at end of file diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/picking_camera_gesture_handler.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/picking_camera_gesture_handler.dart new file mode 100644 index 00000000..09f723cf --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/picking_camera_gesture_handler.dart @@ -0,0 +1,231 @@ +import 'dart:async'; + +import 'package:flutter/gestures.dart'; +import 'package:flutter/services.dart'; +import 'package:logging/logging.dart'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'dart:ui'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/thermion_gesture_handler.dart'; + +// Renamed implementation +class PickingCameraGestureHandler implements ThermionGestureHandler { + final ThermionViewer viewer; + final bool enableCamera; + final bool enablePicking; + final Logger _logger = Logger("PickingCameraGestureHandler"); + + ThermionGestureState _currentState = ThermionGestureState.NULL; + AbstractGizmo? _gizmo; + Timer? _scrollTimer; + ThermionEntity? _highlightedEntity; + StreamSubscription? _pickResultSubscription; + + bool _gizmoAttached = false; + + PickingCameraGestureHandler({ + required this.viewer, + this.enableCamera = true, + this.enablePicking = true, + }) { + try { + _gizmo = viewer.gizmo; + } catch (err) { + _logger.warning( + "Failed to get gizmo. If you are running on WASM, this is expected"); + } + + _pickResultSubscription = viewer.pickResult.listen(_onPickResult); + + // Add keyboard listener + RawKeyboard.instance.addListener(_handleKeyEvent); + } + + @override + ThermionGestureState get currentState => _currentState; + + void _handleKeyEvent(RawKeyEvent event) { + if (event is RawKeyDownEvent && + event.logicalKey == LogicalKeyboardKey.escape) { + _resetToNullState(); + } + } + + void _resetToNullState() async { + _currentState = ThermionGestureState.NULL; + if (_highlightedEntity != null) { + await viewer.removeStencilHighlight(_highlightedEntity!); + _highlightedEntity = null; + } + } + + void _onPickResult(FilamentPickResult result) async { + var targetEntity = await viewer.getAncestor(result.entity) ?? result.entity; + + if (_highlightedEntity != targetEntity) { + if (_highlightedEntity != null) { + await viewer.removeStencilHighlight(_highlightedEntity!); + } + + _highlightedEntity = targetEntity; + if (_highlightedEntity != null) { + await viewer.setStencilHighlight(_highlightedEntity!); + _gizmo?.attach(_highlightedEntity!); + } + } + } + + @override + Future onPointerHover(Offset localPosition, Offset delta) async { + if (_gizmoAttached) { + _gizmo?.checkHover(localPosition.dx, localPosition.dy); + } + + if (_highlightedEntity != null) { + await viewer.queuePositionUpdateFromViewportCoords( + _highlightedEntity!, + localPosition.dx, + localPosition.dy, + ); + } + } + + @override + Future onPointerScroll(Offset localPosition, double scrollDelta) async { + if (!enableCamera) { + return; + } + if (_currentState == ThermionGestureState.NULL || + _currentState == ThermionGestureState.ZOOMING) { + await _zoom(localPosition, scrollDelta); + } + } + + @override + Future onPointerDown(Offset localPosition, int buttons) async { + if (_highlightedEntity != null) { + _resetToNullState(); + return; + } + + if (enablePicking && buttons != kMiddleMouseButton) { + viewer.pick(localPosition.dx.toInt(), localPosition.dy.toInt()); + } + + if (buttons == kMiddleMouseButton && enableCamera) { + await viewer.rotateStart(localPosition.dx, localPosition.dy); + _currentState = ThermionGestureState.ROTATING; + } else if (buttons == kPrimaryMouseButton && enableCamera) { + await viewer.panStart(localPosition.dx, localPosition.dy); + _currentState = ThermionGestureState.PANNING; + } + } + + @override + Future onPointerMove( + Offset localPosition, Offset delta, int buttons) async { + if (_highlightedEntity != null) { + await _handleEntityHighlightedMove(localPosition); + return; + } + + switch (_currentState) { + case ThermionGestureState.NULL: + break; + + case ThermionGestureState.ROTATING: + if (enableCamera) { + await viewer.rotateUpdate(localPosition.dx, localPosition.dy); + } + break; + case ThermionGestureState.PANNING: + if (enableCamera) { + await viewer.panUpdate(localPosition.dx, localPosition.dy); + } + break; + case ThermionGestureState.ZOOMING: + // ignore + break; + } + } + + @override + Future onPointerUp(int buttons) async { + switch (_currentState) { + case ThermionGestureState.ROTATING: + await viewer.rotateEnd(); + _currentState = ThermionGestureState.NULL; + break; + case ThermionGestureState.PANNING: + await viewer.panEnd(); + _currentState = ThermionGestureState.NULL; + break; + default: + break; + } + } + + Future _handleEntityHighlightedMove(Offset localPosition) async { + if (_highlightedEntity != null) { + await viewer.queuePositionUpdateFromViewportCoords( + _highlightedEntity!, + localPosition.dx, + localPosition.dy, + ); + } + } + + Future _zoom(Offset localPosition, double scrollDelta) async { + _scrollTimer?.cancel(); + _currentState = ThermionGestureState.ZOOMING; + await viewer.zoomBegin(); + await viewer.zoomUpdate( + localPosition.dx, localPosition.dy, scrollDelta > 0 ? 1 : -1); + + _scrollTimer = Timer(const Duration(milliseconds: 100), () async { + await viewer.zoomEnd(); + _currentState = ThermionGestureState.NULL; + }); + } + + @override + void dispose() { + _pickResultSubscription?.cancel(); + if (_highlightedEntity != null) { + viewer.removeStencilHighlight(_highlightedEntity!); + } + RawKeyboard.instance.removeListener(_handleKeyEvent); + } + + @override + Future get initialized => viewer.initialized; + + @override + GestureAction getActionForType(GestureType type) { + // TODO: implement getActionForType + throw UnimplementedError(); + } + + @override + Future onScaleEnd() { + // TODO: implement onScaleEnd + throw UnimplementedError(); + } + + @override + Future onScaleStart() { + // TODO: implement onScaleStart + throw UnimplementedError(); + } + + @override + Future onScaleUpdate() { + // TODO: implement onScaleUpdate + throw UnimplementedError(); + } + + @override + void setActionForType(GestureType type, GestureAction action) { + // TODO: implement setActionForType + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector.dart index 566d828e..ae20650f 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector.dart @@ -1,16 +1,10 @@ -import 'dart:io'; - import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'thermion_gesture_detector_desktop.dart'; -import 'thermion_gesture_detector_mobile.dart'; - -enum GestureType { rotateCamera, panCamera, panBackground } /// /// A widget that translates finger/mouse gestures to zoom/pan/rotate actions. /// +@Deprecated("Use ThermionListenerWidget instead") class ThermionGestureDetector extends StatelessWidget { /// /// The content to display below the gesture detector/listener widget. @@ -51,7 +45,7 @@ class ThermionGestureDetector extends StatelessWidget { this.child, this.showControlOverlay = false, this.enableCamera = true, - this.enablePicking = true, + this.enablePicking = false, this.onScaleStart, this.onScaleUpdate, this.onScaleEnd}) @@ -59,33 +53,34 @@ class ThermionGestureDetector extends StatelessWidget { @override Widget build(BuildContext context) { - return FutureBuilder( - future: controller.initialized, - builder: (_, initialized) { - if (initialized.data != true) { - return child ?? Container(); - } - if (kIsWeb || Platform.isLinux || - Platform.isWindows || - Platform.isMacOS) { - return ThermionGestureDetectorDesktop( - controller: controller, - child: child, - showControlOverlay: showControlOverlay, - enableCamera: enableCamera, - enablePicking: enablePicking, - ); - } else { - return ThermionGestureDetectorMobile( - controller: controller, - child: child, - showControlOverlay: showControlOverlay, - enableCamera: enableCamera, - enablePicking: enablePicking, - onScaleStart: onScaleStart, - onScaleUpdate: onScaleUpdate, - onScaleEnd: onScaleEnd); - } - }); + throw Exception("TODO"); + // return FutureBuilder( + // future: controller.initialized, + // builder: (_, initialized) { + // if (initialized.data != true) { + // return child ?? Container(); + // } + // if (kIsWeb || Platform.isLinux || + // Platform.isWindows || + // Platform.isMacOS) { + // return ThermionGestureDetectorDesktop( + // controller: controller, + // child: child, + // showControlOverlay: showControlOverlay, + // enableCamera: enableCamera, + // enablePicking: enablePicking, + // ); + // } else { + // return ThermionGestureDetectorMobile( + // controller: controller, + // child: child, + // showControlOverlay: showControlOverlay, + // enableCamera: enableCamera, + // enablePicking: enablePicking, + // onScaleStart: onScaleStart, + // onScaleUpdate: onScaleUpdate, + // onScaleEnd: onScaleEnd); + // } + // }); } } diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_desktop.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_desktop.dart index e01e96b3..aa766ab4 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_desktop.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_desktop.dart @@ -1,50 +1,28 @@ import 'dart:async'; import 'package:logging/logging.dart'; +import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart'; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; + import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/thermion_gesture_handler.dart'; +import 'package:vector_math/vector_math_64.dart' as v64; -/// -/// A widget that translates finger/mouse gestures to zoom/pan/rotate actions. -/// class ThermionGestureDetectorDesktop extends StatefulWidget { - /// - /// The content to display below the gesture detector/listener widget. - /// This will usually be a ThermionWidget (so you can navigate by directly interacting with the viewport), but this is not necessary. - /// It is equally possible to render the viewport/gesture controls elsewhere in the widget hierarchy. The only requirement is that they share the same [FilamentController]. - /// final Widget? child; - - /// - /// The [controller] attached to the [ThermionWidget] you wish to control. - /// - final ThermionViewer controller; - - /// - /// If true, an overlay will be shown with buttons to toggle whether pointer movements are interpreted as: - /// 1) rotate or a pan (mobile only), - /// 2) moving the camera or the background image (TODO). - /// + final ThermionGestureHandler gestureHandler; final bool showControlOverlay; - - /// - /// If false, gestures will not manipulate the active camera. - /// final bool enableCamera; - - /// - /// If false, pointer down events will not trigger hit-testing (picking). - /// final bool enablePicking; - const ThermionGestureDetectorDesktop( - {Key? key, - required this.controller, - this.child, - this.showControlOverlay = false, - this.enableCamera = true, - this.enablePicking = true}) - : super(key: key); + const ThermionGestureDetectorDesktop({ + Key? key, + required this.gestureHandler, + this.child, + this.showControlOverlay = false, + this.enableCamera = true, + this.enablePicking = true, + }) : super(key: key); @override State createState() => _ThermionGestureDetectorDesktopState(); @@ -52,140 +30,27 @@ class ThermionGestureDetectorDesktop extends StatefulWidget { class _ThermionGestureDetectorDesktopState extends State { - final _logger = Logger("_ThermionGestureDetectorDesktopState"); - - /// - /// - // ignore: unused_field - final bool _scaling = false; - - bool _pointerMoving = false; - - AbstractGizmo? _gizmo; - - @override - void initState() { - super.initState(); - try { - _gizmo = widget.controller.gizmo; - } catch (err) { - _logger.warning( - "Failed to get gizmo. If you are running on WASM, this is expected"); - } - } - - @override - void didUpdateWidget(ThermionGestureDetectorDesktop oldWidget) { - if (widget.showControlOverlay != oldWidget.showControlOverlay || - widget.enableCamera != oldWidget.enableCamera || - widget.enablePicking != oldWidget.enablePicking) { - setState(() {}); - } - - super.didUpdateWidget(oldWidget); - } - - Timer? _scrollTimer; - - /// - /// Scroll-wheel on desktop, interpreted as zoom - /// - void _zoom(PointerScrollEvent pointerSignal) async { - _scrollTimer?.cancel(); - await widget.controller.zoomBegin(); - await widget.controller.zoomUpdate( - pointerSignal.localPosition.dx, - pointerSignal.localPosition.dy, - pointerSignal.scrollDelta.dy > 0 ? 1 : -1); - - // we don't want to end the zoom in the same frame, because this will destroy the camera manipulator (and cancel the zoom update). - // here, we just defer calling [zoomEnd] for 100ms to ensure the update is propagated through. - _scrollTimer = Timer(const Duration(milliseconds: 100), () async { - await widget.controller.zoomEnd(); - }); - } - - Timer? _pickTimer; - + @override Widget build(BuildContext context) { return Listener( - // onPointerHover: (event) async { - // if (_gizmo.isActive) { - // return; - // } - // _pickTimer?.cancel(); - // _pickTimer = Timer(const Duration(milliseconds: 100), () async { - // widget.controller - // .pick(event.position.dx.toInt(), event.position.dy.toInt()); - // }); - // }, - onPointerSignal: (PointerSignalEvent pointerSignal) async { - if (pointerSignal is PointerScrollEvent) { - if (widget.enableCamera) { - _zoom(pointerSignal); - } - } else { - throw Exception("TODO"); - } - }, - onPointerPanZoomStart: (pzs) { - throw Exception("TODO - is this a pinch zoom on laptop trackpad?"); - }, - onPointerDown: (d) async { - if (_gizmo?.isActive == true) { - return; - } - if (d.buttons != kTertiaryButton && widget.enablePicking) { - widget.controller - .pick(d.localPosition.dx.toInt(), d.localPosition.dy.toInt()); - } - _pointerMoving = false; - }, - // holding/moving the left mouse button is interpreted as a pan, middle mouse button as a rotate - onPointerMove: (PointerMoveEvent d) async { - if (_gizmo?.isActive == true) { - _gizmo!.translate(d.delta.dx, d.delta.dy); - return; - } - // if this is the first move event, we need to call rotateStart/panStart to set the first coordinates - if (!_pointerMoving) { - if (d.buttons == kTertiaryButton && widget.enableCamera) { - widget.controller - .rotateStart(d.localPosition.dx, d.localPosition.dy); - } else if (widget.enableCamera) { - widget.controller - .panStart(d.localPosition.dx, d.localPosition.dy); - } - } - // set the _pointerMoving flag so we don't call rotateStart/panStart on future move events - _pointerMoving = true; - if (d.buttons == kTertiaryButton && widget.enableCamera) { - widget.controller - .rotateUpdate(d.localPosition.dx, d.localPosition.dy); - } else if (widget.enableCamera) { - widget.controller.panUpdate(d.localPosition.dx, d.localPosition.dy); - } - }, - // when the left mouse button is released: - // 1) if _pointerMoving is true, this completes the pan - // 2) if _pointerMoving is false, this is interpreted as a pick - // same applies to middle mouse button, but this is ignored as a pick - onPointerUp: (PointerUpEvent d) async { - if (_gizmo?.isActive == true) { - _gizmo!.reset(); - return; - } - - if (d.buttons == kTertiaryButton && widget.enableCamera) { - widget.controller.rotateEnd(); - } else { - if (_pointerMoving && widget.enableCamera) { - widget.controller.panEnd(); - } - } - _pointerMoving = false; - }, - child: widget.child); + onPointerHover: (event) => + widget.gestureHandler.onPointerHover(event.localPosition, event.delta), + onPointerSignal: (PointerSignalEvent pointerSignal) { + if (pointerSignal is PointerScrollEvent) { + widget.gestureHandler.onPointerScroll( + pointerSignal.localPosition, pointerSignal.scrollDelta.dy); + } + }, + onPointerPanZoomStart: (pzs) { + throw Exception("TODO - is this a pinch zoom on laptop trackpad?"); + }, + onPointerDown: (d) => + widget.gestureHandler.onPointerDown(d.localPosition, d.buttons), + onPointerMove: (d) => + widget.gestureHandler.onPointerMove(d.localPosition, d.delta, d.buttons), + onPointerUp: (d) => widget.gestureHandler.onPointerUp(d.buttons), + child: widget.child, + ); } } diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_mobile.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_mobile.dart index e44195e0..efc4bfc8 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_mobile.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_detector_mobile.dart @@ -11,14 +11,14 @@ class ThermionGestureDetectorMobile extends StatefulWidget { /// /// The content to display below the gesture detector/listener widget. /// This will usually be a ThermionWidget (so you can navigate by directly interacting with the viewport), but this is not necessary. - /// It is equally possible to render the viewport/gesture controls elsewhere in the widget hierarchy. The only requirement is that they share the same [FilamentController]. + /// It is equally possible to render the viewport/gesture controls elsewhere in the widget hierarchy. The only requirement is that they share the same [Filamentviewer]. /// final Widget? child; /// - /// The [controller] attached to the [ThermionWidget] you wish to control. + /// The [viewer] attached to the [ThermionWidget] you wish to control. /// - final ThermionViewer controller; + final ThermionViewer viewer; /// /// If true, an overlay will be shown with buttons to toggle whether pointer movements are interpreted as: @@ -45,7 +45,7 @@ class ThermionGestureDetectorMobile extends StatefulWidget { const ThermionGestureDetectorMobile( {Key? key, - required this.controller, + required this.viewer, this.child, this.showControlOverlay = false, this.enableCamera = true, @@ -98,14 +98,14 @@ class _ThermionGestureDetectorMobileState void _setFunction() { switch (gestureType) { case GestureType.rotateCamera: - _functionStart = widget.controller.rotateStart; - _functionUpdate = widget.controller.rotateUpdate; - _functionEnd = widget.controller.rotateEnd; + _functionStart = widget.viewer.rotateStart; + _functionUpdate = widget.viewer.rotateUpdate; + _functionEnd = widget.viewer.rotateEnd; break; case GestureType.panCamera: - _functionStart = widget.controller.panStart; - _functionUpdate = widget.controller.panUpdate; - _functionEnd = widget.controller.panEnd; + _functionStart = widget.viewer.panStart; + _functionUpdate = widget.viewer.panUpdate; + _functionEnd = widget.viewer.panEnd; break; // TODO case GestureType.panBackground: @@ -143,7 +143,7 @@ class _ThermionGestureDetectorMobileState return; } - widget.controller.pick( + widget.viewer.pick( d.globalPosition.dx.toInt(), d.globalPosition.dy.toInt()); }, onDoubleTap: () { @@ -158,13 +158,13 @@ class _ThermionGestureDetectorMobileState } if (d.pointerCount == 2 && widget.enableCamera) { _scaling = true; - await widget.controller.zoomBegin(); + await widget.viewer.zoomBegin(); } else if (!_scaling && widget.enableCamera) { if (_rotateOnPointerMove) { - widget.controller.rotateStart( + widget.viewer.rotateStart( d.localFocalPoint.dx, d.localFocalPoint.dy); } else { - widget.controller + widget.viewer .panStart(d.localFocalPoint.dx, d.localFocalPoint.dy); } } @@ -176,7 +176,7 @@ class _ThermionGestureDetectorMobileState } if (d.pointerCount == 2 && widget.enableCamera) { if (d.horizontalScale != _lastScale) { - widget.controller.zoomUpdate( + widget.viewer.zoomUpdate( d.localFocalPoint.dx, d.localFocalPoint.dy, d.horizontalScale > _lastScale ? 0.1 : -0.1); @@ -184,10 +184,10 @@ class _ThermionGestureDetectorMobileState } } else if (!_scaling && widget.enableCamera) { if (_rotateOnPointerMove) { - widget.controller + widget.viewer .rotateUpdate(d.focalPoint.dx, d.focalPoint.dy); } else { - widget.controller + widget.viewer .panUpdate(d.focalPoint.dx, d.focalPoint.dy); } } @@ -199,12 +199,12 @@ class _ThermionGestureDetectorMobileState } if (d.pointerCount == 2 && widget.enableCamera) { - widget.controller.zoomEnd(); + widget.viewer.zoomEnd(); } else if (!_scaling && widget.enableCamera) { if (_rotateOnPointerMove) { - widget.controller.rotateEnd(); + widget.viewer.rotateEnd(); } else { - widget.controller.panEnd(); + widget.viewer.panEnd(); } } _scaling = false; diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_handler.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_handler.dart new file mode 100644 index 00000000..867921f1 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_gesture_handler.dart @@ -0,0 +1,54 @@ +import 'dart:async'; + +import 'package:flutter/gestures.dart'; +import 'package:flutter/services.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; + +enum GestureType { + LMB_DOWN, + LMB_HOLD_AND_MOVE, + LMB_UP, + LMB_HOVER, + MMB_DOWN, + MMB_HOLD_AND_MOVE, + MMB_UP, + MMB_HOVER, + SCALE1, + SCALE2, + SCROLLWHEEL, + POINTER_MOVE, + KEYDOWN +} + +enum GestureAction { + PAN_CAMERA, + ROTATE_CAMERA, + ZOOM_CAMERA, + TRANSLATE_ENTITY, + ROTATE_ENTITY, + PICK_ENTITY, + NONE +} + +enum ThermionGestureState { + NULL, + ROTATING, + PANNING, + ZOOMING, // aka SCROLL +} + +abstract class ThermionGestureHandler { + Future onPointerHover(Offset localPosition, Offset delta); + Future onPointerScroll(Offset localPosition, double scrollDelta); + Future onPointerDown(Offset localPosition, int buttons); + Future onPointerMove(Offset localPosition, Offset delta, int buttons); + Future onPointerUp(int buttons); + Future onScaleStart(); + Future onScaleUpdate(); + Future onScaleEnd(); + Future get initialized; + void dispose(); + + void setActionForType(GestureType gestureType, GestureAction gestureAction); + GestureAction? getActionForType(GestureType gestureType); +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_listener_widget.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_listener_widget.dart new file mode 100644 index 00000000..0dcb1642 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/thermion_listener_widget.dart @@ -0,0 +1,132 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/thermion_gesture_handler.dart'; + +/// +/// A widget that captures swipe/pointer events. +/// This is a dumb listener; events are forwarded to a [ThermionGestureHandler]. +/// +class ThermionListenerWidget extends StatelessWidget { + /// + /// The content to display below the gesture detector/listener widget. + /// This will usually be a ThermionWidget (so you can navigate by directly interacting with the viewport), but this is not necessary. + /// It is equally possible to render the viewport/gesture controls elsewhere in the widget hierarchy. The only requirement is that they share the same [FilamentViewer]. + /// + final Widget? child; + + /// + /// The handler to use for interpreting gestures/pointer movements. + /// + final ThermionGestureHandler gestureHandler; + + const ThermionListenerWidget({ + Key? key, + required this.gestureHandler, + this.child, + }) : super(key: key); + + bool get isDesktop => + kIsWeb || Platform.isLinux || Platform.isWindows || Platform.isMacOS; + + Widget _desktop() { + return Listener( + onPointerHover: (event) => + gestureHandler.onPointerHover(event.localPosition, event.delta), + onPointerSignal: (PointerSignalEvent pointerSignal) { + if (pointerSignal is PointerScrollEvent) { + gestureHandler.onPointerScroll( + pointerSignal.localPosition, pointerSignal.scrollDelta.dy); + } + }, + onPointerPanZoomStart: (pzs) { + throw Exception("TODO - is this a pinch zoom on laptop trackpad?"); + }, + onPointerDown: (d) => + gestureHandler.onPointerDown(d.localPosition, d.buttons), + onPointerMove: (d) => + gestureHandler.onPointerMove(d.localPosition, d.delta, d.buttons), + onPointerUp: (d) => gestureHandler.onPointerUp(d.buttons), + child: child, + ); + } + + Widget _mobile() { + return _MobileListenerWidget( + gestureHandler: gestureHandler); + } + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: gestureHandler.initialized, + builder: (_, initialized) { + if (initialized.data != true) { + return child ?? Container(); + } + return Stack(children: [ + if (child != null) Positioned.fill(child: child!), + if (isDesktop) + Positioned.fill( + child: _desktop()), + if (!isDesktop) + Positioned.fill( + child: _mobile()) + ]); + }); + } +} + + +class _MobileListenerWidget extends StatefulWidget { + final ThermionGestureHandler gestureHandler; + + const _MobileListenerWidget( + {Key? key, required this.gestureHandler}) + : super(key: key); + + @override + State createState() => _MobileListenerWidgetState(); +} + +class _MobileListenerWidgetState + extends State<_MobileListenerWidget> { + GestureAction current = GestureAction.PAN_CAMERA; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + behavior: HitTestBehavior.translucent, + onTapDown: (details) => + widget.gestureHandler.onPointerDown(details.localPosition, 0), + onDoubleTap: () { + if (current == GestureAction.PAN_CAMERA) { + widget.gestureHandler.setActionForType( + GestureType.SCALE1, GestureAction.ROTATE_CAMERA); + current = GestureAction.ROTATE_CAMERA; + } else { + widget.gestureHandler.setActionForType( + GestureType.SCALE1, GestureAction.PAN_CAMERA); + current = GestureAction.PAN_CAMERA; + } + }, + onScaleStart: (details) async { + await widget.gestureHandler.onScaleStart(); + }, + onScaleUpdate: (details) async { + await widget.gestureHandler.onScaleUpdate(); + }, + onScaleEnd: (details) async { + await widget.gestureHandler.onScaleUpdate(); + }, + ); + + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_keyboard_camera_flight_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_keyboard_camera_flight_delegate.dart new file mode 100644 index 00000000..4630acbc --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_keyboard_camera_flight_delegate.dart @@ -0,0 +1,87 @@ +import 'dart:async'; +import 'dart:ui'; + +import 'package:flutter/services.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class DefaultKeyboardCameraFlightDelegate + { + final ThermionViewer viewer; + + static const double _panSensitivity = 0.005; + static const double _keyMoveSensitivity = 0.1; + + final Map _pressedKeys = {}; + Timer? _moveTimer; + + DefaultKeyboardCameraFlightDelegate(this.viewer) { + _startMoveLoop(); + } + + @override + Future panCamera(Offset delta, Vector2? velocity) async { + double deltaX = delta.dx; + double deltaY = delta.dy; + deltaX *= _panSensitivity * viewer.pixelRatio; + deltaY *= _panSensitivity * viewer.pixelRatio; + + await _moveCamera(deltaX, deltaY, 0); + } + + @override + Future onKeypress(PhysicalKeyboardKey key) async { + _pressedKeys[key] = true; + } + + // New method to handle key release + Future onKeyRelease(PhysicalKeyboardKey key) async { + _pressedKeys.remove(key); + } + + void _startMoveLoop() { + _moveTimer = Timer.periodic( + Duration(milliseconds: 16), (_) => _processKeyboardInput()); + } + + Future _processKeyboardInput() async { + double dx = 0, dy = 0, dz = 0; + + if (_pressedKeys[PhysicalKeyboardKey.keyW] == true) + dz += _keyMoveSensitivity; + if (_pressedKeys[PhysicalKeyboardKey.keyS] == true) + dz -= _keyMoveSensitivity; + if (_pressedKeys[PhysicalKeyboardKey.keyA] == true) + dx -= _keyMoveSensitivity; + if (_pressedKeys[PhysicalKeyboardKey.keyD] == true) + dx += _keyMoveSensitivity; + + if (dx != 0 || dy != 0 || dz != 0) { + await _moveCamera(dx, dy, dz); + } + // Removed _pressedKeys.clear(); from here + } + + Future _moveCamera(double dx, double dy, double dz) async { + Matrix4 currentModelMatrix = await viewer.getCameraModelMatrix(); + Vector3 currentPosition = currentModelMatrix.getTranslation(); + Quaternion currentRotation = + Quaternion.fromRotation(currentModelMatrix.getRotation()); + + Vector3 forward = Vector3(0, 0, -1)..applyQuaternion(currentRotation); + Vector3 right = Vector3(1, 0, 0)..applyQuaternion(currentRotation); + Vector3 up = Vector3(0, 1, 0)..applyQuaternion(currentRotation); + + Vector3 moveOffset = right * dx + up * dy + forward * dz; + Vector3 newPosition = currentPosition + moveOffset; + + Matrix4 newModelMatrix = + Matrix4.compose(newPosition, currentRotation, Vector3(1, 1, 1)); + await viewer.setCameraModelMatrix4(newModelMatrix); + } + + void dispose() { + _moveTimer?.cancel(); + } +} \ No newline at end of file diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pan_camera_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pan_camera_delegate.dart new file mode 100644 index 00000000..a9d05751 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pan_camera_delegate.dart @@ -0,0 +1,35 @@ +// import 'dart:ui'; + +// import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +// import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +// import 'package:vector_math/vector_math_64.dart'; + +// class DefaultPanCameraDelegate implements PanCameraDelegate { +// final ThermionViewer viewer; + +// static const double _panSensitivity = 0.005; + +// DefaultPanCameraDelegate(this.viewer); +// static const double _panSensitivity = 0.005; + +// @override +// Future panCamera(Offset delta, Vector2? velocity) async { +// double deltaX = delta.dx; +// double deltaY = delta.dy; +// deltaX *= _panSensitivity * viewer.pixelRatio; +// deltaY *= _panSensitivity * viewer.pixelRatio; + +// Matrix4 currentModelMatrix = await viewer.getCameraModelMatrix(); +// Vector3 currentPosition = currentModelMatrix.getTranslation(); +// Quaternion currentRotation = Quaternion.fromRotation(currentModelMatrix.getRotation()); + +// Vector3 right = Vector3(1, 0, 0)..applyQuaternion(currentRotation); +// Vector3 up = Vector3(0, 1, 0)..applyQuaternion(currentRotation); + +// Vector3 panOffset = right * -deltaX + up * deltaY; +// Vector3 newPosition = currentPosition + panOffset; + +// Matrix4 newModelMatrix = Matrix4.compose(newPosition, currentRotation, Vector3(1, 1, 1)); +// await viewer.setCameraModelMatrix4(newModelMatrix); +// } +// } \ No newline at end of file diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pick_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pick_delegate.dart new file mode 100644 index 00000000..6d3ab24c --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_pick_delegate.dart @@ -0,0 +1,15 @@ +import 'dart:ui'; + +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; + +class DefaultPickDelegate extends PickDelegate { + final ThermionViewer _viewer; + + const DefaultPickDelegate(this._viewer); + + @override + void pick(Offset location) { + _viewer.pick(location.dx.toInt(), location.dy.toInt()); + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_velocity_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_velocity_delegate.dart new file mode 100644 index 00000000..a25eb0c6 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_velocity_delegate.dart @@ -0,0 +1,46 @@ +import 'dart:async'; +import 'dart:ui'; + +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class DefaultVelocityDelegate extends VelocityDelegate { + Vector2? _velocity; + Timer? _decelerationTimer; + final double _decelerationFactor = 0.95; + final double _minVelocity = 0.01; + + Vector2? get velocity => _velocity; + + @override + void updateVelocity(Offset delta) { + _velocity = Vector2(delta.dx, delta.dy); + } + + @override + void startDeceleration() { + if (_velocity != null && _velocity!.length > _minVelocity) { + _decelerationTimer = Timer.periodic(Duration(milliseconds: 16), (timer) { + if (_velocity == null || _velocity!.length <= _minVelocity) { + stopDeceleration(); + return; + } + + _velocity = _velocity! * _decelerationFactor; + + }); + } + } + + @override + void stopDeceleration() { + _decelerationTimer?.cancel(); + _decelerationTimer = null; + _velocity = null; + } + + @override + void dispose() { + stopDeceleration(); + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_zoom_camera_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_zoom_camera_delegate.dart new file mode 100644 index 00000000..a8571173 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/default_zoom_camera_delegate.dart @@ -0,0 +1,47 @@ +import 'dart:math'; + +import 'package:flutter/widgets.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class DefaultZoomCameraDelegate { + final ThermionViewer viewer; + final double zoomSensitivity; + + final double? Function(Vector3 cameraPosition)? getDistanceToTarget; + + DefaultZoomCameraDelegate(this.viewer, + {this.zoomSensitivity = 0.005, this.getDistanceToTarget}); + + /// + /// Converts the given [scrollDelta] (usually somewhere between 1 and -1) to + /// a percentage of the current camera distance (either to the origin, + /// or to a custom target) along its forward vector. + /// In other words, "shift " + /// + double calculateZoomFactor( + double scrollDelta, Vector2? velocity) { + double zoomFactor = scrollDelta * zoomSensitivity; + if (zoomFactor.abs() < 0.0001) { + zoomFactor = scrollDelta * zoomSensitivity; + } + return zoomFactor; + } + + @override + Future zoom(double scrollDelta, Vector2? velocity) async { + Matrix4 currentModelMatrix = await viewer.getCameraModelMatrix(); + final cameraRotation = currentModelMatrix.getRotation(); + final cameraPosition = currentModelMatrix.getTranslation(); + + Vector3 forwardVector = cameraRotation.getColumn(2); + forwardVector.normalize(); + + var zoomDistance = + calculateZoomFactor(scrollDelta, velocity); + + Vector3 newPosition = cameraPosition + (forwardVector * zoomDistance); + await viewer.setCameraPosition(newPosition.x, newPosition.y, newPosition.z); + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegate_gesture_handler.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegate_gesture_handler.dart new file mode 100644 index 00000000..dcd7f15f --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegate_gesture_handler.dart @@ -0,0 +1,245 @@ +import 'dart:async'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/scheduler.dart'; +import 'package:flutter/services.dart'; +import 'package:logging/logging.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/default_pick_delegate.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/default_velocity_delegate.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/fixed_orbit_camera_rotation_delegate.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/free_flight_camera_delegate.dart'; +import 'package:thermion_flutter/thermion_flutter.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class DelegateGestureHandler implements ThermionGestureHandler { + final ThermionViewer viewer; + final Logger _logger = Logger("CustomGestureHandler"); + + CameraDelegate? cameraDelegate; + VelocityDelegate? velocityDelegate; + PickDelegate? pickDelegate; + + Ticker? _ticker; + + Map _accumulatedDeltas = {}; + double _accumulatedScrollDelta = 0.0; + int _activePointers = 0; + bool _isMiddleMouseButtonPressed = false; + + VoidCallback? _keyboardListenerDisposer; + + final Map _actions = { + GestureType.LMB_HOLD_AND_MOVE: GestureAction.PAN_CAMERA, + GestureType.MMB_HOLD_AND_MOVE: GestureAction.ROTATE_CAMERA, + GestureType.SCROLLWHEEL: GestureAction.ZOOM_CAMERA, + GestureType.POINTER_MOVE: GestureAction.NONE, + }; + + DelegateGestureHandler({ + required this.viewer, + required this.cameraDelegate, + required this.velocityDelegate, + this.pickDelegate, + Map? actions, + }) { + _initializeKeyboardListener(); + if (actions != null) { + _actions.addAll(actions); + } + _initializeAccumulatedDeltas(); + } + + factory DelegateGestureHandler.fixedOrbit(ThermionViewer viewer, + {double minimumDistance = 10.0, + double? Function(Vector3)? getDistanceToTarget, + PickDelegate? pickDelegate}) => + DelegateGestureHandler( + viewer: viewer, + pickDelegate: pickDelegate, + cameraDelegate: FixedOrbitRotateCameraDelegate(viewer, + getDistanceToTarget: getDistanceToTarget, + minimumDistance: minimumDistance), + velocityDelegate: DefaultVelocityDelegate(), + actions: {GestureType.MMB_HOLD_AND_MOVE:GestureAction.ROTATE_CAMERA} + ); + + factory DelegateGestureHandler.flight(ThermionViewer viewer, + {PickDelegate? pickDelegate}) => + DelegateGestureHandler( + viewer: viewer, + pickDelegate: pickDelegate, + cameraDelegate: FreeFlightCameraDelegate(viewer), + velocityDelegate: DefaultVelocityDelegate(), + actions: {GestureType.POINTER_MOVE: GestureAction.ROTATE_CAMERA}, + ); + + void _initializeAccumulatedDeltas() { + for (var gestureType in GestureType.values) { + _accumulatedDeltas[gestureType] = Offset.zero; + } + } + + Future _applyAccumulatedUpdates() async { + for (var gestureType in GestureType.values) { + Offset delta = _accumulatedDeltas[gestureType] ?? Offset.zero; + if (delta != Offset.zero) { + velocityDelegate?.updateVelocity(delta); + + var action = _actions[gestureType]; + switch (action) { + case GestureAction.PAN_CAMERA: + await cameraDelegate?.pan(delta, velocityDelegate?.velocity); + break; + case GestureAction.ROTATE_CAMERA: + await cameraDelegate?.rotate(delta, velocityDelegate?.velocity); + break; + case GestureAction.NONE: + // Do nothing + break; + default: + _logger.warning( + "Unsupported gesture action: $action for type: $gestureType"); + break; + } + + _accumulatedDeltas[gestureType] = Offset.zero; + } + } + + if (_accumulatedScrollDelta != 0.0) { + await cameraDelegate?.zoom( + _accumulatedScrollDelta, velocityDelegate?.velocity); + _accumulatedScrollDelta = 0.0; + } + } + + @override + Future onPointerDown(Offset localPosition, int buttons) async { + velocityDelegate?.stopDeceleration(); + _activePointers++; + if (buttons & kMiddleMouseButton != 0) { + _isMiddleMouseButtonPressed = true; + } + if (buttons & kPrimaryButton != 0) { + final action = _actions[GestureType.LMB_DOWN]; + switch (action) { + case GestureAction.PICK_ENTITY: + pickDelegate?.pick(localPosition); + default: + // noop + } + } + await _applyAccumulatedUpdates(); + } + + @override + Future onPointerMove( + Offset localPosition, Offset delta, int buttons) async { + GestureType gestureType = _getGestureTypeFromButtons(buttons); + if (gestureType == GestureType.MMB_HOLD_AND_MOVE || + (_actions[GestureType.POINTER_MOVE] == GestureAction.ROTATE_CAMERA && + gestureType == GestureType.POINTER_MOVE)) { + _accumulatedDeltas[GestureType.MMB_HOLD_AND_MOVE] = + (_accumulatedDeltas[GestureType.MMB_HOLD_AND_MOVE] ?? Offset.zero) + + delta; + } else { + _accumulatedDeltas[gestureType] = + (_accumulatedDeltas[gestureType] ?? Offset.zero) + delta; + } + await _applyAccumulatedUpdates(); + } + + @override + Future onPointerUp(int buttons) async { + _activePointers--; + if (_activePointers == 0) { + velocityDelegate?.startDeceleration(); + } + if (buttons & kMiddleMouseButton != 0) { + _isMiddleMouseButtonPressed = false; + } + } + + GestureType _getGestureTypeFromButtons(int buttons) { + if (buttons & kPrimaryMouseButton != 0) { + return GestureType.LMB_HOLD_AND_MOVE; + } + if (buttons & kMiddleMouseButton != 0 || _isMiddleMouseButtonPressed) { + return GestureType.MMB_HOLD_AND_MOVE; + } + return GestureType.POINTER_MOVE; + } + + @override + Future onPointerHover(Offset localPosition, Offset delta) async { + if (_actions[GestureType.POINTER_MOVE] == GestureAction.ROTATE_CAMERA) { + _accumulatedDeltas[GestureType.POINTER_MOVE] = + (_accumulatedDeltas[GestureType.POINTER_MOVE] ?? Offset.zero) + delta; + } + } + + @override + Future onPointerScroll(Offset localPosition, double scrollDelta) async { + if (_actions[GestureType.SCROLLWHEEL] != GestureAction.ZOOM_CAMERA) { + throw Exception( + "Unsupported action: ${_actions[GestureType.SCROLLWHEEL]}"); + } + + try { + _accumulatedScrollDelta += scrollDelta; + } catch (e) { + _logger.warning("Error during scroll accumulation: $e"); + } + await _applyAccumulatedUpdates(); + } + + @override + void dispose() { + velocityDelegate?.dispose(); + _keyboardListenerDisposer?.call(); + _ticker?.dispose(); + } + + @override + Future get initialized => viewer.initialized; + + @override + Future onScaleEnd() async {} + + @override + Future onScaleStart() async {} + + @override + Future onScaleUpdate() async {} + + @override + void setActionForType(GestureType gestureType, GestureAction gestureAction) { + _actions[gestureType] = gestureAction; + } + + @override + GestureAction? getActionForType(GestureType gestureType) { + return _actions[gestureType]; + } + + void _initializeKeyboardListener() { + HardwareKeyboard.instance.addHandler(_handleKeyEvent); + _keyboardListenerDisposer = () { + HardwareKeyboard.instance.removeHandler(_handleKeyEvent); + }; + } + + bool _handleKeyEvent(KeyEvent event) { + if (_actions[GestureType.KEYDOWN] == GestureAction.NONE) { + return false; + } + if (event is KeyDownEvent || event is KeyRepeatEvent) { + cameraDelegate?.onKeypress(event.physicalKey); + return true; + } else if (event is KeyUpEvent) { + cameraDelegate?.onKeyRelease(event.physicalKey); + return true; + } + return false; + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegates.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegates.dart new file mode 100644 index 00000000..e90eedb7 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/delegates.dart @@ -0,0 +1,30 @@ +import 'dart:ui'; +import 'package:flutter/services.dart'; +import 'package:vector_math/vector_math_64.dart'; + +abstract class CameraDelegate { + Future rotate(Offset delta, Vector2? velocity); + Future pan(Offset delta, Vector2? velocity); + Future zoom(double yScrollDeltaInPixels, Vector2? velocity); + Future onKeypress(PhysicalKeyboardKey key); + Future onKeyRelease(PhysicalKeyboardKey key); +} + +abstract class VelocityDelegate { + Vector2? get velocity; + + void updateVelocity(Offset delta); + + void startDeceleration(); + + void stopDeceleration(); + + void dispose() { + stopDeceleration(); + } +} + +abstract class PickDelegate { + const PickDelegate(); + void pick(Offset location); +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/fixed_orbit_camera_rotation_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/fixed_orbit_camera_rotation_delegate.dart new file mode 100644 index 00000000..76bcc717 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/fixed_orbit_camera_rotation_delegate.dart @@ -0,0 +1,150 @@ +import 'dart:async'; +import 'dart:math'; +import 'package:flutter/services.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:vector_math/vector_math_64.dart'; + +/// A camera delegate that rotates the camera around the origin. +/// Panning is not permitted; zooming is permitted (up to a minimum distance) +/// +/// The rotation sensitivity will be automatically adjusted so that +/// 100 horizontal pixels equates to a geodetic distance of 1m when the camera +/// is 1m from the surface (denoted by distanceToSurface). This scales to 10m +/// geodetic distance when the camera is 100m from the surface, 100m when the +/// camera is 1000m from the surface, and so on. +/// +/// +class FixedOrbitRotateCameraDelegate implements CameraDelegate { + final ThermionViewer viewer; + final double minimumDistance; + double? Function(Vector3)? getDistanceToTarget; + + Offset _accumulatedRotationDelta = Offset.zero; + double _accumulatedZoomDelta = 0.0; + + static final _up = Vector3(0, 1, 0); + Timer? _updateTimer; + + FixedOrbitRotateCameraDelegate( + this.viewer, { + this.getDistanceToTarget, + this.minimumDistance = 10.0, + }); + + void dispose() { + _updateTimer?.cancel(); + } + + @override + Future rotate(Offset delta, Vector2? velocity) async { + _accumulatedRotationDelta += delta; + await _applyAccumulatedUpdates(); + } + + @override + Future pan(Offset delta, Vector2? velocity) { + throw UnimplementedError("Not supported in fixed orbit mode"); + } + + @override + Future zoom(double yScrollDeltaInPixels, Vector2? velocity) async { + _accumulatedZoomDelta += yScrollDeltaInPixels > 0 ? 1 : -1; + await _applyAccumulatedUpdates(); + } + + Future _applyAccumulatedUpdates() async { + if (_accumulatedRotationDelta.distanceSquared == 0.0 && + _accumulatedZoomDelta == 0.0) { + return; + } + + var viewMatrix = await viewer.getCameraViewMatrix(); + var modelMatrix = await viewer.getCameraModelMatrix(); + var projectionMatrix = await viewer.getCameraProjectionMatrix(); + var inverseProjectionMatrix = projectionMatrix.clone()..invert(); + Vector3 currentPosition = modelMatrix.getTranslation(); + + Vector3 forward = -currentPosition.normalized(); + Vector3 right = _up.cross(forward).normalized(); + Vector3 up = forward.cross(right); + + // first, we find the point in the sphere that intersects with the camera + // forward vector + double radius = 0.0; + double? distanceToTarget = getDistanceToTarget?.call(currentPosition); + if (distanceToTarget != null) { + radius = currentPosition.length - distanceToTarget; + } else { + radius = 1.0; + } + Vector3 intersection = (-forward).scaled(radius); + + // next, calculate the depth value at that intersection point + final intersectionInViewSpace = viewMatrix * + Vector4(intersection.x, intersection.y, intersection.z, 1.0); + final intersectionInClipSpace = projectionMatrix * intersectionInViewSpace; + final intersectionInNdcSpace = + intersectionInClipSpace / intersectionInClipSpace.w; + + // using that depth value, find the world space position of the mouse + // note we flip the signs of the X and Y values + + final ndcX = 2 * + ((-_accumulatedRotationDelta.dx * viewer.pixelRatio) / + viewer.viewportDimensions.$1); + final ndcY = 2 * + ((_accumulatedRotationDelta.dy * viewer.pixelRatio) / + viewer.viewportDimensions.$2); + final ndc = Vector4(ndcX, ndcY, intersectionInNdcSpace.z, 1.0); + + var clipSpace = Vector4( + ndc.x * intersectionInClipSpace.w, + ndcY * intersectionInClipSpace.w, + ndc.z * intersectionInClipSpace.w, + intersectionInClipSpace.w); + Vector4 cameraSpace = inverseProjectionMatrix * clipSpace; + Vector4 worldSpace = modelMatrix * cameraSpace; + + // the new camera world space position will be that position, + // scaled to the camera's current distance + var worldSpace3 = worldSpace.xyz.normalized() * currentPosition.length; + currentPosition = worldSpace3; + + // Apply zoom + if (_accumulatedZoomDelta != 0.0) { + // double zoomFactor = 1.0 + (); + Vector3 toSurface = currentPosition - intersection; + currentPosition = currentPosition + toSurface.scaled(_accumulatedZoomDelta * 0.1); + _accumulatedZoomDelta = 0.0; + } + + // Ensure minimum distance + if (currentPosition.length < radius + minimumDistance) { + currentPosition = + (currentPosition.normalized() * (radius + minimumDistance)); + } + + // Calculate view matrix + forward = -currentPosition.normalized(); + right = _up.cross(forward).normalized(); + up = forward.cross(right); + + Matrix4 newViewMatrix = makeViewMatrix(currentPosition, Vector3.zero(), up); + newViewMatrix.invert(); + + // Set the camera model matrix + await viewer.setCameraModelMatrix4(newViewMatrix); + _accumulatedRotationDelta = Offset.zero; + } + + @override + Future onKeyRelease(PhysicalKeyboardKey key) async { + // Ignore + } + + @override + Future onKeypress(PhysicalKeyboardKey key) async { + // Ignore + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/free_flight_camera_delegate.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/free_flight_camera_delegate.dart new file mode 100644 index 00000000..3ae4512c --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/free_flight_camera_delegate.dart @@ -0,0 +1,206 @@ +import 'dart:async'; +import 'dart:ui'; + +import 'package:flutter/scheduler.dart'; +import 'package:flutter/services.dart'; +import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/v2/delegates.dart'; +import 'package:vector_math/vector_math_64.dart'; + +class FreeFlightCameraDelegate implements CameraDelegate { + final ThermionViewer viewer; + + final Vector3? minBounds; + final Vector3? maxBounds; + + final double rotationSensitivity; + final double movementSensitivity; + final double zoomSensitivity; + final double panSensitivity; + final double keyMoveSensitivity; + + static final _up = Vector3(0, 1, 0); + static final _forward = Vector3(0, 0, -1); + static final Vector3 _right = Vector3(1, 0, 0); + + Offset _accumulatedRotation = Offset.zero; + Offset _accumulatedPan = Offset.zero; + double _accumulatedZoom = 0.0; + Vector2? _lastVelocity; + + Ticker? _ticker; + Timer? _moveTimer; + final Map _pressedKeys = {}; + + FreeFlightCameraDelegate( + this.viewer, { + this.minBounds, + this.maxBounds, + this.rotationSensitivity = 0.001, + this.movementSensitivity = 0.1, + this.zoomSensitivity = 0.1, + this.panSensitivity = 0.01, + this.keyMoveSensitivity = 0.1, + }) { + _initializeTicker(); + _startMoveLoop(); + } + + void _initializeTicker() { + _ticker = Ticker(_onTick); + _ticker!.start(); + } + + void _startMoveLoop() { + _moveTimer = Timer.periodic( + Duration(milliseconds: 16), (_) => _processKeyboardInput()); + } + + void _onTick(Duration elapsed) { + _applyAccumulatedUpdates(); + } + + Future _applyAccumulatedUpdates() async { + if (_accumulatedRotation != Offset.zero || + _accumulatedPan != Offset.zero || + _accumulatedZoom != 0.0) { + Matrix4 currentModelMatrix = await viewer.getCameraModelMatrix(); + Vector3 currentPosition = currentModelMatrix.getTranslation(); + Quaternion currentRotation = + Quaternion.fromRotation(currentModelMatrix.getRotation()); + + // Apply rotation + if (_accumulatedRotation != Offset.zero) { + double deltaX = _accumulatedRotation.dx * rotationSensitivity * viewer.pixelRatio; + double deltaY = _accumulatedRotation.dy * rotationSensitivity * viewer.pixelRatio; + double deltaZ = (_accumulatedRotation.dx + _accumulatedRotation.dy) * rotationSensitivity * 0.5 * viewer.pixelRatio; + + Quaternion yawRotation = Quaternion.axisAngle(_up, -deltaX); + Quaternion pitchRotation = Quaternion.axisAngle(_right, -deltaY); + Quaternion rollRotation = Quaternion.axisAngle(_forward, deltaZ); + + currentRotation = currentRotation * rollRotation * pitchRotation * yawRotation ; + currentRotation.normalize(); + + _accumulatedRotation = Offset.zero; + } + + // Apply pan + if (_accumulatedPan != Offset.zero) { + Vector3 right = _right.clone()..applyQuaternion(currentRotation); + Vector3 up = _up.clone()..applyQuaternion(currentRotation); + + double deltaX = _accumulatedPan.dx * panSensitivity * viewer.pixelRatio; + double deltaY = _accumulatedPan.dy * panSensitivity * viewer.pixelRatio; + + Vector3 newPosition = currentPosition + right * -deltaX + up * deltaY; + newPosition = _constrainPosition(newPosition); + + currentPosition = newPosition; + + _accumulatedPan = Offset.zero; + } + + // Apply zoom + if (_accumulatedZoom != 0.0) { + Vector3 forward = _forward.clone()..applyQuaternion(currentRotation); + Vector3 newPosition = currentPosition + forward * _accumulatedZoom * zoomSensitivity; + newPosition = _constrainPosition(newPosition); + + currentPosition = newPosition; + _accumulatedZoom = 0.0; + } + + Matrix4 newModelMatrix = + Matrix4.compose(currentPosition, currentRotation, Vector3(1, 1, 1)); + await viewer.setCameraModelMatrix4(newModelMatrix); + } + } + + Vector3 _constrainPosition(Vector3 position) { + if (minBounds != null) { + position.x = position.x.clamp(minBounds!.x, double.infinity); + position.y = position.y.clamp(minBounds!.y, double.infinity); + position.z = position.z.clamp(minBounds!.z, double.infinity); + } + if (maxBounds != null) { + position.x = position.x.clamp(double.negativeInfinity, maxBounds!.x); + position.y = position.y.clamp(double.negativeInfinity, maxBounds!.y); + position.z = position.z.clamp(double.negativeInfinity, maxBounds!.z); + } + return position; + } + + @override + Future rotate(Offset delta, Vector2? velocity) async { + _accumulatedRotation += delta; + _lastVelocity = velocity; + } + + @override + Future pan(Offset delta, Vector2? velocity) async { + _accumulatedPan += delta; + _lastVelocity = velocity; + } + + @override + Future zoom(double scrollDelta, Vector2? velocity) async { + _accumulatedZoom -= scrollDelta; + _lastVelocity = velocity; + } + + @override + Future onKeypress(PhysicalKeyboardKey key) async { + _pressedKeys[key] = true; + } + + @override + Future onKeyRelease(PhysicalKeyboardKey key) async { + _pressedKeys.remove(key); + } + + Future _processKeyboardInput() async { + double dx = 0, dy = 0, dz = 0; + + if (_pressedKeys[PhysicalKeyboardKey.keyW] == true) { + dz += keyMoveSensitivity; + } + if (_pressedKeys[PhysicalKeyboardKey.keyS] == true) { + dz -= keyMoveSensitivity; + } + if (_pressedKeys[PhysicalKeyboardKey.keyA] == true) { + dx -= keyMoveSensitivity; + } + if (_pressedKeys[PhysicalKeyboardKey.keyD] == true) { + dx += keyMoveSensitivity; + } + + if (dx != 0 || dy != 0 || dz != 0) { + await _moveCamera(dx, dy, dz); + } + } + + Future _moveCamera(double dx, double dy, double dz) async { + Matrix4 currentModelMatrix = await viewer.getCameraModelMatrix(); + Vector3 currentPosition = currentModelMatrix.getTranslation(); + Quaternion currentRotation = + Quaternion.fromRotation(currentModelMatrix.getRotation()); + + Vector3 forward = Vector3(0, 0, -1)..applyQuaternion(currentRotation); + Vector3 right = Vector3(1, 0, 0)..applyQuaternion(currentRotation); + Vector3 up = Vector3(0, 1, 0)..applyQuaternion(currentRotation); + + Vector3 moveOffset = right * dx + up * dy + forward * dz; + Vector3 newPosition = currentPosition + moveOffset; + newPosition = _constrainPosition(newPosition); + + Matrix4 newModelMatrix = + Matrix4.compose(newPosition, currentRotation, Vector3(1, 1, 1)); + await viewer.setCameraModelMatrix4(newModelMatrix); + } + + void dispose() { + _ticker?.dispose(); + _moveTimer?.cancel(); + } +} \ No newline at end of file diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/mobile_gesture_handler_selector_widget.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/mobile_gesture_handler_selector_widget.dart new file mode 100644 index 00000000..210ee718 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/camera/gestures/v2/mobile_gesture_handler_selector_widget.dart @@ -0,0 +1,28 @@ +import 'package:flutter/widgets.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/gestures/thermion_gesture_handler.dart'; + +class MobileGestureHandlerSelectorWidget extends StatelessWidget { + final ThermionGestureHandler handler; + + const MobileGestureHandlerSelectorWidget({super.key, required this.handler}); + @override + Widget build(BuildContext context) { + throw Exception("TODO"); + // return GestureDetector( + // onTap: () { + + // var curIdx = + // GestureType.values.indexOf(handler.gestureType); + // var nextIdx = + // curIdx == GestureType.values.length - 1 ? 0 : curIdx + 1; + // handler.setGestureType(GestureType.values[nextIdx]); + // }); + // }, + // child: Container( + // padding: const EdgeInsets.all(50), + // child: Icon(_icons[widget.gestureHandler.gestureType], + // color: Colors.green), + // ), + // ); + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/lights/light_slider.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/lights/light_slider.dart index a355b29f..10ca8d82 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/lights/light_slider.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/lights/light_slider.dart @@ -1,194 +1,194 @@ -import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; -import 'package:thermion_dart/thermion_dart/utils/light_options.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; +// import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; +// import 'package:thermion_dart/thermion_dart/utils/light_options.dart'; +// import 'package:flutter/material.dart'; +// import 'package:flutter/widgets.dart'; -import 'package:vector_math/vector_math_64.dart' as v; +// import 'package:vector_math/vector_math_64.dart' as v; -class LightSliderWidget extends StatefulWidget { - final ThermionViewer controller; +// class LightSliderWidget extends StatefulWidget { +// final ThermionViewer controller; - final LightOptions options; - final bool showControls; +// final LightOptions options; +// final bool showControls; - LightSliderWidget( - {super.key, - required this.controller, - this.showControls = false, - required this.options}); - @override - State createState() => _LightSliderWidgetState(); -} +// LightSliderWidget( +// {super.key, +// required this.controller, +// this.showControls = false, +// required this.options}); +// @override +// State createState() => _LightSliderWidgetState(); +// } -class _LightSliderWidgetState extends State { - ThermionEntity? _light; +// class _LightSliderWidgetState extends State { +// ThermionEntity? _light; - @override - void initState() { - _set(); - super.initState(); - } +// @override +// void initState() { +// _set(); +// super.initState(); +// } - Future _set() async { - await widget.controller.clearLights(); +// Future _set() async { +// await widget.controller.clearLights(); - if (widget.options.iblPath != null) { - _light = await widget.controller.loadIbl(widget.options.iblPath!, - intensity: widget.options.iblIntensity); - } +// if (widget.options.iblPath != null) { +// _light = await widget.controller.loadIbl(widget.options.iblPath!, +// intensity: widget.options.iblIntensity); +// } - _light = await widget.controller.addLight( - LightType.values[ - widget.options.directionalType], - widget.options.directionalColor, - widget.options.directionalIntensity, - widget.options.directionalPosition.x, - widget.options.directionalPosition.y, - widget.options.directionalPosition.z, - widget.options.directionalDirection.x, - widget.options.directionalDirection.y, - widget.options.directionalDirection.z, - castShadows:widget.options.directionalCastShadows); +// _light = await widget.controller.addLight( +// LightType.values[ +// widget.options.directionalType], +// widget.options.directionalColor, +// widget.options.directionalIntensity, +// widget.options.directionalPosition.x, +// widget.options.directionalPosition.y, +// widget.options.directionalPosition.z, +// widget.options.directionalDirection.x, +// widget.options.directionalDirection.y, +// widget.options.directionalDirection.z, +// castShadows:widget.options.directionalCastShadows); - setState(() {}); - } +// setState(() {}); +// } - @override - Widget build(BuildContext context) { - if (_light == null || !widget.showControls) { - return Container(); - } - return Theme( - data: ThemeData(platform: TargetPlatform.android), - child: Container( - decoration: BoxDecoration(color: Colors.white.withOpacity(0.5)), - child: SliderTheme( - data: const SliderThemeData( - showValueIndicator: ShowValueIndicator.always, - valueIndicatorTextStyle: TextStyle(color: Colors.black)), - child: Column(mainAxisSize: MainAxisSize.min, children: [ - Text("Directional"), - Row(children: [ - Expanded( - child: Slider( - label: - "POSX ${widget.options.directionalPosition.x}", - value: widget.options.directionalPosition.x, - min: -10.0, - max: 10.0, - onChanged: (value) { - widget.options.directionalPosition.x = value; - _set(); - })), - Expanded( - child: Slider( - label: - "POSY ${widget.options.directionalPosition.y}", - value: widget.options.directionalPosition.y, - min: -100.0, - max: 100.0, - onChanged: (value) { - widget.options.directionalPosition.y = value; - _set(); - })), - Expanded( - child: Slider( - label: - "POSZ ${widget.options.directionalPosition.z}", - value: widget.options.directionalPosition.z, - min: -100.0, - max: 100.0, - onChanged: (value) { - widget.options.directionalPosition.z = value; - _set(); - })) - ]), - Row(children: [ - Expanded( - child: Slider( - label: "DIRX", - value: widget.options.directionalDirection.x, - min: -1.0, - max: 1.0, - onChanged: (value) { - widget.options.directionalDirection.x = value; - _set(); - })), - Expanded( - child: Slider( - label: "DIRY", - value: widget.options.directionalDirection.y, - min: -1.0, - max: 1.0, - onChanged: (value) { - widget.options.directionalDirection.y = value; - _set(); - })), - Expanded( - child: Slider( - label: "DIRZ", - value: widget.options.directionalDirection.z, - min: -1.0, - max: 1.0, - onChanged: (value) { - widget.options.directionalDirection.z = value; - _set(); - })) - ]), - Slider( - label: "Color", - value: widget.options.directionalColor, - min: 0, - max: 16000, - onChanged: (value) { - widget.options.directionalColor = value; - _set(); - }), - Slider( - label: "Intensity ${widget.options.directionalIntensity}", - value: widget.options.directionalIntensity, - min: 0, - max: 1000000, - onChanged: (value) { - widget.options.directionalIntensity = value; - _set(); - }), - DropdownButton( - onChanged: (v) { - this.widget.options.directionalType = v; - _set(); - }, - value: this.widget.options.directionalType, - items: List.generate( - 5, - (idx) => DropdownMenuItem( - value: idx, - child: Text("$idx"), - ))), - Row(children: [ - Text( - "Shadows: ${this.widget.options.directionalCastShadows}"), - Checkbox( - value: widget.options.directionalCastShadows, - onChanged: (v) { - this.widget.options.directionalCastShadows = v!; - _set(); - }) - ]), - Text("Indirect"), - Row(children: [ - Expanded( - child: Slider( - label: "Intensity ${widget.options.iblIntensity}", - value: widget.options.iblIntensity, - min: 0.0, - max: 200000, - onChanged: (value) { - widget.options.iblIntensity = value; - _set(); - })), - ]) - ])))); - } -} +// @override +// Widget build(BuildContext context) { +// if (_light == null || !widget.showControls) { +// return Container(); +// } +// return Theme( +// data: ThemeData(platform: TargetPlatform.android), +// child: Container( +// decoration: BoxDecoration(color: Colors.white.withOpacity(0.5)), +// child: SliderTheme( +// data: const SliderThemeData( +// showValueIndicator: ShowValueIndicator.always, +// valueIndicatorTextStyle: TextStyle(color: Colors.black)), +// child: Column(mainAxisSize: MainAxisSize.min, children: [ +// Text("Directional"), +// Row(children: [ +// Expanded( +// child: Slider( +// label: +// "POSX ${widget.options.directionalPosition.x}", +// value: widget.options.directionalPosition.x, +// min: -10.0, +// max: 10.0, +// onChanged: (value) { +// widget.options.directionalPosition.x = value; +// _set(); +// })), +// Expanded( +// child: Slider( +// label: +// "POSY ${widget.options.directionalPosition.y}", +// value: widget.options.directionalPosition.y, +// min: -100.0, +// max: 100.0, +// onChanged: (value) { +// widget.options.directionalPosition.y = value; +// _set(); +// })), +// Expanded( +// child: Slider( +// label: +// "POSZ ${widget.options.directionalPosition.z}", +// value: widget.options.directionalPosition.z, +// min: -100.0, +// max: 100.0, +// onChanged: (value) { +// widget.options.directionalPosition.z = value; +// _set(); +// })) +// ]), +// Row(children: [ +// Expanded( +// child: Slider( +// label: "DIRX", +// value: widget.options.directionalDirection.x, +// min: -1.0, +// max: 1.0, +// onChanged: (value) { +// widget.options.directionalDirection.x = value; +// _set(); +// })), +// Expanded( +// child: Slider( +// label: "DIRY", +// value: widget.options.directionalDirection.y, +// min: -1.0, +// max: 1.0, +// onChanged: (value) { +// widget.options.directionalDirection.y = value; +// _set(); +// })), +// Expanded( +// child: Slider( +// label: "DIRZ", +// value: widget.options.directionalDirection.z, +// min: -1.0, +// max: 1.0, +// onChanged: (value) { +// widget.options.directionalDirection.z = value; +// _set(); +// })) +// ]), +// Slider( +// label: "Color", +// value: widget.options.directionalColor, +// min: 0, +// max: 16000, +// onChanged: (value) { +// widget.options.directionalColor = value; +// _set(); +// }), +// Slider( +// label: "Intensity ${widget.options.directionalIntensity}", +// value: widget.options.directionalIntensity, +// min: 0, +// max: 1000000, +// onChanged: (value) { +// widget.options.directionalIntensity = value; +// _set(); +// }), +// DropdownButton( +// onChanged: (v) { +// this.widget.options.directionalType = v; +// _set(); +// }, +// value: this.widget.options.directionalType, +// items: List.generate( +// 5, +// (idx) => DropdownMenuItem( +// value: idx, +// child: Text("$idx"), +// ))), +// Row(children: [ +// Text( +// "Shadows: ${this.widget.options.directionalCastShadows}"), +// Checkbox( +// value: widget.options.directionalCastShadows, +// onChanged: (v) { +// this.widget.options.directionalCastShadows = v!; +// _set(); +// }) +// ]), +// Text("Indirect"), +// Row(children: [ +// Expanded( +// child: Slider( +// label: "Intensity ${widget.options.iblIntensity}", +// value: widget.options.iblIntensity, +// min: 0.0, +// max: 200000, +// onChanged: (value) { +// widget.options.iblIntensity = value; +// _set(); +// })), +// ]) +// ])))); +// } +// } diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget.dart index e69d2eb1..c0d0eff4 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget.dart @@ -2,14 +2,19 @@ import 'dart:io'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:thermion_flutter/thermion/widgets/thermion_widget_web.dart'; +import 'package:thermion_flutter/thermion/widgets/transparent_filament_widget.dart'; +import 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart'; import 'dart:async'; import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dart'; import 'package:thermion_flutter/thermion_flutter.dart'; +import 'package:thermion_flutter_web/thermion_flutter_web_options.dart'; import 'resize_observer.dart'; class ThermionWidget extends StatefulWidget { final ThermionViewer viewer; + final ThermionFlutterOptions? options; /// /// The content to render before the texture widget is available. @@ -17,7 +22,8 @@ class ThermionWidget extends StatefulWidget { /// final Widget? initial; - const ThermionWidget({Key? key, this.initial, required this.viewer}) + const ThermionWidget( + {Key? key, this.initial, required this.viewer, this.options}) : super(key: key); @override @@ -42,24 +48,33 @@ class _ThermionWidgetState extends State { } }); var dpr = MediaQuery.of(context).devicePixelRatio; + var size = ((context.findRenderObject()) as RenderBox).size; - var width = (dpr * size.width).ceil(); - var height = (dpr * size.height).ceil(); - _texture = await ThermionFlutterPlugin.createTexture(width, height, 0, 0); + _texture = await ThermionFlutterPlugin.createTexture( + size.width, size.height, 0, 0, dpr); if (mounted) { setState(() {}); } + + _requestFrame(); }); super.initState(); } + void _requestFrame() { + WidgetsBinding.instance.scheduleFrameCallback((d) { + widget.viewer.requestFrame(); + _requestFrame(); + }); + } + bool _resizing = false; Timer? _resizeTimer; Future _resizeTexture(Size newSize) async { _resizeTimer?.cancel(); - _resizeTimer = Timer(Duration(milliseconds: 500), () async { + _resizeTimer = Timer(const Duration(milliseconds: 500), () async { if (_resizing || !mounted) { return; } @@ -73,8 +88,8 @@ class _ThermionWidgetState extends State { var dpr = MediaQuery.of(context).devicePixelRatio; - _texture = await ThermionFlutterPlugin.resizeTexture(oldTexture!, - (dpr * newSize.width).ceil(), (dpr * newSize.height).ceil(), 0, 0); + _texture = await ThermionFlutterPlugin.resizeTexture( + oldTexture!, newSize.width.ceil(), newSize.height.ceil(), 0, 0, dpr); setState(() {}); _resizing = false; }); @@ -82,17 +97,29 @@ class _ThermionWidgetState extends State { @override Widget build(BuildContext context) { + if (kIsWeb) { + if (_texture == null || _resizing) { + return widget.initial ?? Container(color: Colors.red); + } + return ResizeObserver( + onResized: _resizeTexture, + child: ThermionWidgetWeb( + options: widget.options as ThermionFlutterWebOptions?)); + } + if (_texture?.usesBackingWindow == true) { return ResizeObserver( - onResized: _resizeTexture, - child: Stack(children: [ - Positioned.fill(child: CustomPaint(painter: TransparencyPainter())) - ])); + onResized: _resizeTexture, + child: Stack(children: [ + Positioned.fill(child: CustomPaint(painter: TransparencyPainter())) + ])); } if (_texture == null || _resizing) { return widget.initial ?? - Container(color: kIsWeb ? Colors.transparent : Colors.red); + Container( + color: + kIsWeb ? const Color.fromARGB(0, 170, 129, 129) : Colors.red); } var textureWidget = Texture( @@ -116,18 +143,3 @@ class _ThermionWidgetState extends State { ])); } } - -class TransparencyPainter extends CustomPainter { - @override - void paint(Canvas canvas, Size size) { - canvas.drawRect( - Rect.fromLTWH(0, 0, size.width, size.height), - Paint() - ..blendMode = BlendMode.clear - ..color = const Color(0x00000000), - ); - } - - @override - bool shouldRepaint(covariant CustomPainter oldDelegate) => false; -} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web.dart new file mode 100644 index 00000000..1b72c757 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web.dart @@ -0,0 +1,3 @@ +export 'thermion_widget_web_stub.dart' + if (dart.library.js_interop) 'thermion_widget_web_impl.dart'; + diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_impl.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_impl.dart new file mode 100644 index 00000000..41de0593 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_impl.dart @@ -0,0 +1,62 @@ +import 'dart:js_util'; +import 'dart:ui' as ui; +import 'dart:ui_web' as ui_web; +import 'package:thermion_flutter_web/thermion_flutter_web_options.dart'; +import 'package:web/web.dart'; +import 'package:flutter/widgets.dart'; + +class ThermionWidgetWeb extends StatelessWidget { + final ThermionFlutterWebOptions options; + + const ThermionWidgetWeb( + {super.key, + this.options = + const ThermionFlutterWebOptions.empty()}); + + @override + Widget build(BuildContext context) { + if (options?.importCanvasAsWidget == true) { + return _ImageCopyingWidget(); + } + return Container(color: const Color(0x00000000)); + } +} + +class _ImageCopyingWidget extends StatefulWidget { + @override + State createState() { + return _ImageCopyingWidgetState(); + } +} + +class _ImageCopyingWidgetState extends State<_ImageCopyingWidget> { + ui.Image? _img; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + capture(); + }); + } + + Future capture() async { + try { + final ImageBitmap newSource = await promiseToFuture( + window.createImageBitmap( + document.getElementById("canvas") as HTMLCanvasElement)); + _img = await ui_web.createImageFromImageBitmap(newSource); + setState(() {}); + WidgetsBinding.instance.addPostFrameCallback((_) { + capture(); + }); + } catch (err) { + print(err); + } + } + + @override + Widget build(BuildContext context) { + return RawImage(image: _img!); + } +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_stub.dart b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_stub.dart new file mode 100644 index 00000000..01514bb8 --- /dev/null +++ b/thermion_flutter/thermion_flutter/lib/thermion/widgets/thermion_widget_web_stub.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:thermion_flutter_ffi/thermion_flutter_ffi.dart'; +import 'package:thermion_flutter_web/thermion_flutter_web_options.dart'; + +class ThermionWidgetWeb extends StatefulWidget { + final ThermionFlutterWebOptions? options; + + const ThermionWidgetWeb({super.key, required this.options}); + + @override + State createState() => throw Exception(); +} diff --git a/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart b/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart index d48d5747..0620499c 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart @@ -3,5 +3,9 @@ library thermion_flutter; export 'thermion/thermion_flutter_plugin.dart'; export 'thermion/widgets/thermion_widget.dart'; export 'thermion/widgets/camera/gestures/thermion_gesture_detector.dart'; +export 'thermion/widgets/camera/gestures/thermion_gesture_handler.dart'; +export 'thermion/widgets/camera/gestures/v2/delegate_gesture_handler.dart'; +export 'thermion/widgets/camera/camera_orientation_widget.dart'; +export 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart'; export 'package:thermion_dart/thermion_dart.dart'; diff --git a/thermion_flutter/thermion_flutter/pubspec.yaml b/thermion_flutter/thermion_flutter/pubspec.yaml index 737bbdcb..cedf8501 100644 --- a/thermion_flutter/thermion_flutter/pubspec.yaml +++ b/thermion_flutter/thermion_flutter/pubspec.yaml @@ -33,7 +33,7 @@ flutter: platforms: android: pluginClass: ThermionFlutterPlugin - package: app.polyvox.filament + package: dev.thermion.android ios: pluginClass: SwiftThermionFlutterPlugin macos: diff --git a/thermion_flutter/thermion_flutter_ffi/lib/thermion_flutter_ffi.dart b/thermion_flutter/thermion_flutter_ffi/lib/thermion_flutter_ffi.dart index 805fe622..900df23b 100644 --- a/thermion_flutter/thermion_flutter_ffi/lib/thermion_flutter_ffi.dart +++ b/thermion_flutter/thermion_flutter_ffi/lib/thermion_flutter_ffi.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:flutter/services.dart'; import 'dart:ffi'; import 'package:thermion_dart/thermion_dart.dart'; -import 'package:thermion_dart/thermion_dart/thermion_viewer_ffi.dart'; +import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart'; import 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart'; import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dart'; import 'package:logging/logging.dart'; @@ -26,7 +26,12 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { final _textures = {}; - Future createViewer({String? uberArchivePath}) async { + Future createViewerWithOptions( + ThermionFlutterOptions options) async { + return createViewer(uberarchivePath: options.uberarchivePath); + } + + Future createViewer({String? uberarchivePath}) async { var resourceLoader = Pointer.fromAddress( await _channel.invokeMethod("getResourceLoaderWrapper")); @@ -58,7 +63,7 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { renderCallbackOwner: renderCallbackOwner, driver: driverPtr, sharedContext: sharedContextPtr, - uberArchivePath: uberArchivePath); + uberArchivePath: uberarchivePath); await _viewer!.initialized; return _viewer!; } @@ -98,8 +103,10 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { /// The current design doesn't accommodate this (for example, it seems we can /// only create a single native window from a Surface at any one time). /// - Future createTexture( - int width, int height, int offsetLeft, int offsetRight) async { + Future createTexture(double width, double height, + double offsetLeft, double offsetRight, double pixelRatio) async { + final physicalWidth = (width * pixelRatio).ceil(); + final physicalHeight = (height * pixelRatio).ceil(); // when a ThermionWidget is inserted, disposed then immediately reinserted // into the widget hierarchy (e.g. rebuilding due to setState(() {}) being called in an ancestor widget) // the first call to createTexture may not have completed before the second. @@ -113,7 +120,8 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { if (_textures.length > 1) { throw Exception("Multiple textures not yet supported"); } else if (_textures.length == 1) { - if (_textures.first.height == height && _textures.first.width == width) { + if (_textures.first.height == physicalHeight && + _textures.first.width == physicalWidth) { return _textures.first; } else { await _viewer!.setRendering(false); @@ -125,8 +133,8 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { _creatingTexture = true; - var result = await _channel - .invokeMethod("createTexture", [width, height, offsetLeft, offsetLeft]); + var result = await _channel.invokeMethod("createTexture", + [physicalWidth, physicalHeight, offsetLeft, offsetLeft]); if (result == null || (result[0] == -1)) { throw Exception("Failed to create texture"); @@ -138,12 +146,14 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { _logger.info( "Created texture with flutter texture id ${flutterTextureId}, hardwareTextureId $hardwareTextureId and surfaceAddress $surfaceAddress"); - _viewer?.viewportDimensions = (width.toDouble(), height.toDouble()); + _viewer?.viewportDimensions = + (physicalWidth.toDouble(), physicalHeight.toDouble()); - final texture = ThermionFlutterTexture( - flutterTextureId, hardwareTextureId, width, height, surfaceAddress); + final texture = ThermionFlutterTexture(flutterTextureId, hardwareTextureId, + physicalWidth, physicalHeight, surfaceAddress); - await _viewer?.createSwapChain(width.toDouble(), height.toDouble(), + await _viewer?.createSwapChain( + physicalWidth.toDouble(), physicalHeight.toDouble(), surface: texture.surfaceAddress == null ? nullptr : Pointer.fromAddress(texture.surfaceAddress!)); @@ -151,11 +161,13 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { if (texture.hardwareTextureId != null) { // ignore: unused_local_variable var renderTarget = await _viewer?.createRenderTarget( - width.toDouble(), height.toDouble(), texture.hardwareTextureId!); + physicalWidth.toDouble(), + physicalHeight.toDouble(), + texture.hardwareTextureId!); } await _viewer?.updateViewportAndCameraProjection( - width.toDouble(), height.toDouble()); + physicalWidth.toDouble(), physicalHeight.toDouble()); _viewer?.render(); _creatingTexture = false; @@ -184,12 +196,20 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform { /// Called by [ThermionWidget] to resize a texture. Don't call this yourself. /// @override - Future resizeTexture(ThermionFlutterTexture texture, - int width, int height, int offsetLeft, int offsetRight) async { + Future resizeTexture( + ThermionFlutterTexture texture, + int width, + int height, + int offsetLeft, + int offsetTop, + double pixelRatio) async { if (_resizing) { throw Exception("Resize underway"); } + width = (width * pixelRatio).ceil(); + height = (height * pixelRatio).ceil(); + if ((width - _viewer!.viewportDimensions.$1).abs() < 0.001 || (height - _viewer!.viewportDimensions.$2).abs() < 0.001) { return texture; diff --git a/thermion_flutter/thermion_flutter_platform_interface/lib/thermion_flutter_platform_interface.dart b/thermion_flutter/thermion_flutter_platform_interface/lib/thermion_flutter_platform_interface.dart index 1ba13a90..03f81098 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/lib/thermion_flutter_platform_interface.dart +++ b/thermion_flutter/thermion_flutter_platform_interface/lib/thermion_flutter_platform_interface.dart @@ -4,6 +4,14 @@ import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'thermion_flutter_texture.dart'; +class ThermionFlutterOptions { + final String? uberarchivePath; + + ThermionFlutterOptions({this.uberarchivePath}); + const ThermionFlutterOptions.empty() : uberarchivePath = null; + +} + abstract class ThermionFlutterPlatform extends PlatformInterface { ThermionFlutterPlatform() : super(token: _token); @@ -17,14 +25,17 @@ abstract class ThermionFlutterPlatform extends PlatformInterface { _instance = instance; } - Future createViewer({String? uberArchivePath}); + Future createViewerWithOptions( + covariant ThermionFlutterOptions options); - Future createTexture( - int width, int height, int offsetLeft, int offsetRight); + @deprecated + Future createViewer({String? uberarchivePath}); + + Future createTexture(double width, double height, + double offsetLeft, double offsetTop, double pixelRatio); Future destroyTexture(ThermionFlutterTexture texture); Future resizeTexture(ThermionFlutterTexture texture, - int width, int height, int offsetLeft, int offsetRight); - + int width, int height, int offsetTop, int offsetRight, double pixelRatio); } diff --git a/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web.dart b/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web.dart index 765c5dc2..fef48ccc 100644 --- a/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web.dart +++ b/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web.dart @@ -3,9 +3,8 @@ import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; import 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart'; import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; +import 'package:thermion_flutter_web/thermion_flutter_web_options.dart'; import 'package:web/web.dart'; -import 'dart:js_interop'; -import 'dart:js_interop_unsafe'; class ThermionFlutterWebPlugin extends ThermionFlutterPlatform { ThermionViewerWasm? _viewer; @@ -15,8 +14,25 @@ class ThermionFlutterWebPlugin extends ThermionFlutterPlatform { } @override - Future createTexture( - int width, int height, int offsetLeft, int offsetRight) async { + Future createTexture(double width, double height, + double offsetLeft, double offsetTop, double pixelRatio) async { + await _viewer!.destroySwapChain(); + await _viewer!.createSwapChain(width.ceil(), height.ceil()); + + final canvas = document.getElementById("canvas") as HTMLCanvasElement; + canvas.width = (width * pixelRatio).ceil(); + canvas.height = (height * pixelRatio).ceil(); + + (canvas as HTMLElement).style.position = "fixed"; + (canvas as HTMLElement).style.zIndex = "-1"; + (canvas as HTMLElement).style.left = + (offsetLeft * pixelRatio).ceil().toString(); + (canvas as HTMLElement).style.top = + (offsetTop * pixelRatio).ceil().toString(); + + _viewer! + .updateViewportAndCameraProjection(width.ceil(), height.ceil(), 1.0); + return ThermionFlutterTexture(null, null, 0, 0, null); } @@ -27,27 +43,42 @@ class ThermionFlutterWebPlugin extends ThermionFlutterPlatform { @override Future resizeTexture(ThermionFlutterTexture texture, - int width, int height, int offsetLeft, int offsetRight) async { + int width, int height, int offsetLeft, int offsetTop, double pixelRatio) async { final canvas = document.getElementById("canvas") as HTMLCanvasElement; canvas.width = width; canvas.height = height; - + (canvas as HTMLElement).style.position = "fixed"; + (canvas as HTMLElement).style.zIndex = "-1"; + (canvas as HTMLElement).style.left = + (offsetLeft * pixelRatio).ceil().toString(); + (canvas as HTMLElement).style.top = + (offsetTop * pixelRatio).ceil().toString(); _viewer!.updateViewportAndCameraProjection(width, height, 1.0); - - print("Resized canvas to ${canvas.width}x${canvas.height}"); return ThermionFlutterTexture(null, null, 0, 0, null); } - Future createViewer({String? uberArchivePath}) async { - final canvas = document.getElementById("canvas") as HTMLCanvasElement; - canvas.width = window.innerWidth; - canvas.height = window.innerHeight; - - var width = window.innerWidth; - var height = window.innerHeight; - + Future createViewerWithOptions( + ThermionFlutterWebOptions options) async { _viewer = ThermionViewerWasm(assetPathPrefix: "/assets/"); - await _viewer!.initialize(width, height, uberArchivePath: uberArchivePath); + + final canvas = options.createCanvas + ? document.createElement("canvas") as HTMLCanvasElement? + : document.getElementById("canvas") as HTMLCanvasElement?; + if (canvas == null) { + throw Exception("Could not locate or create canvas"); + } + canvas.id = "canvas"; + document.body!.appendChild(canvas); + canvas.style.display = 'none'; + final pixelRatio = window.devicePixelRatio; + + await _viewer! + .initialize(1, 1, pixelRatio, uberArchivePath: options.uberarchivePath); return _viewer!; } + + @override + Future createViewer({String? uberarchivePath}) { + throw Exception("Use createViewerWithOptions instead"); + } } diff --git a/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web_options.dart b/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web_options.dart new file mode 100644 index 00000000..ade9f7d0 --- /dev/null +++ b/thermion_flutter/thermion_flutter_web/lib/thermion_flutter_web_options.dart @@ -0,0 +1,19 @@ +import 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart'; + +class ThermionFlutterWebOptions extends ThermionFlutterOptions { + + final bool createCanvas; + final bool importCanvasAsWidget; + + ThermionFlutterWebOptions( + {this.importCanvasAsWidget = false, + this.createCanvas = true, + String? uberarchivePath}) + : super(uberarchivePath: uberarchivePath); + + const ThermionFlutterWebOptions.empty( + {this.importCanvasAsWidget = false, + this.createCanvas = true, + String? uberarchivePath}) + : super.empty(); +} diff --git a/thermion_flutter/thermion_flutter_web/pubspec.yaml b/thermion_flutter/thermion_flutter_web/pubspec.yaml index 15dbc120..d6aa7ef3 100644 --- a/thermion_flutter/thermion_flutter_web/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_web/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - web: ^0.5.1 + web: ^1.0.0 thermion_dart: ^0.1.3 thermion_flutter_platform_interface: ^0.1.0+11 flutter_web_plugins: